School of Information Communication Technology,

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
คณิตคิดเร็วโดยใช้นิ้วมือ
Advertisements

ที่ โรงเรียน เฉลี่ย 1 บ้านหนองหว้า บ้านสะเดาหวาน
แบบรูปและความสัมพันธ์
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
ยินดีต้อน เข้าสู่ โครงงาน.
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
พลังงานในกระบวนการทางความร้อน : กฎข้อที่หนึ่งของอุณหพลศาสตร์
การซ้อนทับกัน และคลื่นนิ่ง
การบวก จำนวนเต็มบวก กับ จำนวนเต็มบวก
แนวทางการยกระดับผลสัมฤทธิ์ทางการเรียน ผลการทดสอบระดับชาติ (o – net) ปีการศึกษา 2554 โรงเรียนสรวงสุทธาวิทยา สำนักงานเขตพื้นที่การศึกษามัธยมศึกษา เขต.
วิชาเศรษฐศาสตร์ รศ.ดร. ชวินทร์ ลีนะบรรจง.
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
AVL Tree.
การเลื่อนเงินเดือนข้าราชการ
สำเร็จการศึกษาในเวลา 4 ปี
จำนวนนับใดๆ ที่หารจำนวนนับที่กำหนดให้ได้ลงตัว เรียกว่า ตัวประกอบของจำนวนนับ จำนวนนับ สามารถเรียกอีกอย่างว่า จำนวนเต็มบวก หรือจำนวนธรรมชาติ ซึ่งเราสามารถนำจำนวนนับเหล่านี้มา.
Naming and Physical & Chemical Properties of Organic Chemistry
การขอเบิกเงินนอกงบประมาณ
เป้าเบิกจ่าย งบรวม เป้าเบิกจ่าย งบลงทุน งบรวม เบิกจ่าย.
จำนวนทั้งหมด ( Whole Numbers )
การบ้าน แซมเปิลสเปซ.
Kampol chanchoengpan it สถาปัตยกรรมคอมพิวเตอร์ Arithmetic and Logic Unit 1.
การดำเนินงานอาชีวเวชศาสตร์: แพทย์ที่ผ่านการอบรม
Office of information technology
พ.ร.บ.วิธีพิจารณาคดีผู้บริโภค พ.ศ. ...
สำนักงานสถิติแห่งชาติ กระทรวงเทคโนโลยีสารสนเทศและการสื่อสาร
สรุปผลการสำรวจ ความต้องการของประชาชนเกี่ยวกับ
สรุปผลการสำรวจ ความคิดเห็นของประชาชนเกี่ยวกับ กองทุนหมู่บ้านและชุมชนเมือง พ.ศ สำนักงานสถิติแห่งชาติกระทรวงเทคโนโลยีสารสนเทศและการสื่อสาร สิงหาคม.
ข้อมูลเศรษฐกิจการค้า
1 การสัมมนาผู้ตรวจ ประเมินคุณภาพภายใน ปีการศึกษา 2552 วันพฤหัสบดีที่ 21 ตุลาคม 2553 ณ ห้องประชุม 3222 อาคารสิริคุณากร.
การเลื่อนเงินเดือนในระบบใหม่
สำนักวิชาการและแผนงาน
ความก้าวหน้าระดับความสำเร็จ การปฏิบัติราชการของปฏิรูปที่ดิน จังหวัด 5 ครั้ง ณ 30 มิถุนายน 2555 สำนักวิชาการและ แผนงาน.
ความก้าวหน้าระดับความสำเร็จ การปฏิบัติราชการของปฏิรูปที่ดิน จังหวัด 5 ครั้ง ณ 31 พฤษภาคม 2555.
ความก้าวหน้าระดับความสำเร็จ การปฏิบัติราชการของปฏิรูปที่ดิน จังหวัด 5 ครั้ง ณ 15 มิถุนายน 2555.
การดำเนินงานตามแผนปฏิบัติการ โครงการที่ได้รับ
ณัฏฐวุฒิ เอี่ยมอินทร์
ภาพรวมเศรษฐกิจไทยล่าสุด (ณ เดือนตุลาคม) และแนวโน้มไตรมาส 3/50 และ 4/50
การเข้า E-Conference จากทุกหน่วยงานประชุมศูนย์ ปฏิบัติการการเงินการคลัง กลุ่มประกันสุขภาพ 2554.
การแจกแจงปกติ.
วิชาคณิตศาสตร์ ชั้นประถมศึกษาปีที่6
ความคิดเห็นของประชาชนเกี่ยวกับเกมออนไลน์ ในเขตกรุงเทพมหานคร
โรคทางระบาดวิทยาที่มีอัตราป่วยสูง 10 ลำดับแรกของจังหวัดเลย สะสมตั้งแต่วันที่ 1 มกราคม – 29 เมษายน 2555.
F M B N สมบัติของจำนวนนับ ตัวคูณร่วมน้อย (ค.ร.น.).
สรุปสถิติ ค่ากลาง ค่าเฉลี่ยเลขคณิต เรียงข้อมูล ตำแหน่งกลาง มัธยฐาน
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
คณิตศาสตร์ (ค33101) หน่วยการเรียนรู้ที่ 7 เรื่อง สถิติ
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
การลงข้อมูลแผนการสอน
วิวัฒน์ ชินนาทศิริกุล
การเรียงข้อมูล 1. Bubble Sort 2. Insertion Sort 3. Heap Sort
ต้นไม้ Tree (2) ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
Lecture9 Tree อ. วรวิทย์ วีระพันธุ์ เรียบเรียงโดย อ
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
สรุปผลการสำรวจ ความคิดเห็นของประชาชนเกี่ยวกับ การป้องกันและปราบปรามยาเสพติด (ก่อนและหลัง การประกาศสงครามขั้นแตกหักเพื่อเอาชนะยาเสพติด) พ.ศ สำนักงานสถิติแห่งชาติ
ผลการทดสอบทางการศึกษาระดับชาติขั้นพื้นฐาน
การค้นในปริภูมิสถานะ
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
กราฟเบื้องต้น.
รายละเอียด ระดับความพึงพอใจ มาก ที่สุด (5) มาก (4) ปาน กลาง (3) น้อย (2) น้อย ที่สุด (1) ค่าเฉลี่ ย 1. ผู้เรียนชอบทำงานร่วมกับเพื่อ เมื่อเรียนวิชาระบบเครือข่าย.
โครงสร้างข้อมูลแบบ สแตก (stack)
ต้นไม้ Tree [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การค้นในปริภูมิสถานะ
กราฟเบื้องต้น.
ผลการประเมิน คุณภาพการศึกษาขั้นพื้นฐาน ปีการศึกษา
1 LAN Implementation Sanchai Yeewiyom School of Information & Communication Technology Naresuan University, Phayao Campus.
ใบสำเนางานนำเสนอ:

School of Information Communication Technology, Chapter 5 Tree Part 2 WATTANAPONG SUTTAPAK Software Engineering, School of Information Communication Technology, University of PHAYAO

จุดประสงค์ บทเรียนที่ 5 มีความรู้ความเข้าใจเรื่องการท่องไบนารี่ทรีทั้ง 3 แบบ สามารถเขียนโปรแกรมเพิ่ม ลบ ค้นหา และแสดงผลไบนารี่ทรีได้ มีความรู้ความเข้าใจในเรื่องเอวีแอลทรีได้ มีความรู้ความเข้าใจในเรื่องการปรับโหนดของเอวีแอลทรี สามารถเพิ่ม ลบ ค้นหา และแสดงผลเอวีแอลทรีได้

TREE TRAVERSAL

Tree Traversal Tree traversal ชื่อภาษาไทย การท่องโหนด แบ่งเป็น 3 ประเภทคือ inorder preorder postorder โดยแต่ละประเภทมีลักษณะดังต่อไปนี้

Tree Traversal inorder เป็นการเข้าเข้าถึงโหนดแบบ ascending order นั่นคือเข้าตามลำดับจากน้อยไปหามาก หรือตามลำดับก่อนหลัง(เช่นตัวอักษรก่อนไปหลัง) การเข้าถึงโหนดวิธีนี้มีลำดับการเข้าถึงตามลำดับความสำคัญคือ โหนดซ้าย โหนดพ่อแม่ โหนดขวา ประโยชน์ของการท่องโหนดแบบ inorder เช่น การเรียงลำดับข้อมูล การหาค่ามากสุด น้อยสุด ค่ากลาง เป็นต้น

Tree Traversal inorder step 1. start at root node ,set root to c-node 2. check c-node has L-child? 2.1 Y : change L-child to c-node then go to 2 2.2 N : print c-node check c-node has R-child? 2.2.1 Y: set R-child to c-node then go to 2. 2.2.2 N: return;

Tree Traversal inorder Ex1 6 4 8 2 5 7 11 1 3 1 2 3 4 5 6 7 8 11

Tree Traversal จะเห็นว่า inorder เราจะสามารถตอบได้ทันที inorder Ex2 จะเห็นว่า inorder เราจะสามารถตอบได้ทันที นั่นคือลำดับน้อยไปหามาก แต่ในการใช้งานจริง (coding) จะไม่เห็นตัวเลข ดังนั้นจึงต้องใช้ อัลกอริทึมดังที่กล่าวมา 6 4 9 5 8 11 7 13 4 5 6 7 8 9 11 13

Tree Traversal กรณีข้อมูลเป็นคลาส และมีการลำดับ attribute s1 s2 s3 s5 inorder Ex3 สมมติ s เป็น class student เก็บ id, name เรียงลำดับ id s1 s2 s3 s5 s4 s8 s6 s7 s2 s5 s1 s6 s4 s3 s8 s7

Tree Traversal preorder เป็นการเข้าถึงโหนด โดยจุดประสงค์ในการเข้าถึงยังไม่แน่ชัดแตกต่างจาก inorder ที่มีจุดประสงค์ชัดเจน โดยการเข้าถึงโหนดวิธีนี้มีลำดับการเข้าถึงตามลำดับความสำคัญคือ โหนดพ่อแม่ โหนดซ้าย โหนดขวา ตัวอย่างการประยุกต์ใช้ ได้แก่ การแปลงเป็น prefix

Tree Traversal preorder step start at root node , set root to c-node print c-node check c-node has L-child? 3.1 Y : change L-child to c-node then go to 2 3.2 N : check c-node has R-child? 3.2.1 Y: set R-child to c-node then go to 2. 3.2.2 N: return;

Tree Traversal จะสังเกตุเห็นว่าเมื่อนำข้อมูล ที่ได้จาก preorder ไป insert จะได้ลักษณะตาม tree preorder Ex1 6 4 8 2 7 11 5 1 3 6 4 2 1 3 5 8 7 11

Tree Traversal * / + 7 1 4 3 * / + 1 3 4 + 7 1 preorder Ex2 ((1+3)/4)*(7+1) * / + 7 1 4 3 * / + 1 3 4 + 7 1

Tree Traversal postorder เป็นการเข้าถึงโหนด ที่จุดประสงค์ไม่ชัดเจนเช่นกัน(เหมือน preorder) โดยการเข้าถึงโหนดวิธีนี้มีลำดับการเข้าถึงตามลำดับความสำคัญคือ โหนดซ้าย โหนดขวา โหนดพ่อแม่ ตัวอย่างการประยุกต์ใช้ ได้แก่ การแปลงเป็น postfix

Tree Traversal postorder step start at root node , set root to c-node check c-node has L-child? 3.1 Y : change L-child to c-node then go to 2 3.2 N : check c-node has R-child? 3.2.1 Y: set R-child to c-node then go to 2. 3.2.2 N: print L-child , return;

Tree Traversal จะสังเกตุเห็นว่าเมื่อนำข้อมูล ที่ได้จาก postorder (จากหลังไปหน้า) นำไป insert จะได้ลักษณะตาม tree postorder Ex1 6 4 8 2 7 11 5 1 3 1 3 2 5 4 7 11 8 6

Tree Traversal * / + 7 1 4 3 1 3 + 4 / 7 1 + * postorder Ex2 ((1+3)/4)*(7+1) * / + 7 1 4 3 1 3 + 4 / 7 1 + *

DELETION NODE

Deletion node กระบวนการลบโหนด มีความซับซ้อนกว่าการเพิ่ม การอ่านและการค้นหา เนื่องจากเมื่อลบแล้ว ต้องพิจารณาโหนดที่มาแทนที่โหนดที่ลบ ขั้นตอนการลบโหนด ถ้าโหนดที่ลบไม่มี leaf node ไม่ต้องหาโหนดมาแทน ถ้าโหนดที่ลบมีเพียง 1 leaf node ให้นำ leaf node นั้นมาแทนที่ได้เลย ถ้าโหนดที่ลบมี 2 leaf node ให้แทนที่ด้วยโหนดด้านซ้ายที่มีค่ามากที่สุดหรือโหนดด้านขวาที่มีค่าน้อยที่สุด

Deletion node deletion node Ex1 ลบ โหนด 5 6 4 8 2 5 7 11 1 3

Deletion node deletion node Ex2 ลบ โหนด 11 6 4 8 2 5 7 11 1 3 14 13 15

Deletion node deletion node Ex2 ลบ โหนด 11 6 4 8 2 5 7 14 1 3 13 15

Deletion node deletion node Ex3 ลบ โหนด 4 6 4 8 2 7 11 5 1 3

Deletion node deletion node Ex3 ลบ โหนด 4 วิธีที่ 1 6 3 8 2 5 7 11 1

Deletion node deletion node Ex3 ลบ โหนด 4 วิธีที่ 2 6 4 8 2 7 11 5 1 3

Deletion node deletion node Ex3 ลบ โหนด 4 วิธีที่ 2 6 5 8 2 7 11 1 3

AVL TREE

AVL Tree 3 6 5 5 6 3 เป็น tree (Adel’son-Vel’ski and Landis) พัฒนาความสามารถของ binary search tree(b-s-tree ) รูปแบบโหนดขึ้นกับการลำดับการเพิ่มข้อมูล ทำให้จำนวนโหนดมีโอกาสจัดเรียงเป็น L-node ทั้งหมดหรือ R-node ทั้งหมด ทำให้การค้นหาเกิดเป็น worst case(O(n)) เช่น 6 5 3 6 5 3

AVL Tree 6 5 8 1 6 5 8 9 1 2 6 5 3 1 2 โดยต้องมีคุณสมบัติดังต่อไปนี้ เป็น binary search tree มีเงื่อนไขสมดุล(balance) ของ tree นั่นคือ P-node มี level ของ L-child และ R-child มีความแตกต่างไม่เกิน 1 6 5 8 1 6 5 8 9 1 2 6 5 3 1 2

AVL Tree 44 17 62 50 78 1 32 48 54 64 88 35 46 49 51 56 81 91 h = 1 h = 2 h = 3 h = 4

AVL Tree 6 5 8 3 9 6 4 8 3 9 5 7 6 4 8 3 9 5 11 โหนด 8 ความสูงต่างกัน 0 กับ 2

AVL Tree 6 5 8 2 1 Insertion Ex1 ต้องการเพิ่ม 6 5 8 2 1 3 ทำการเพิ่มข้อมูลเหมือน binary search tree 6 5 8 2 1

AVL Tree 6 5 8 2 1 1 สมดุลแต่ผิดกฏของ balance search tree ดังนั้นจึงต้อง rebalance tree ด้วยวิธีการหมุน

AVL Tree Rotation เป็นการปรับสมดุลของ AVL Tree แบ่งเป็น 2 วิธีคือ 1. หมุนครั้งเดียว 2. หมุนสองครั้ง

a b single rotation b a c c b c single rotation a c b a

AVL Tree 6 5 8 2 1

AVL Tree 6 8 5 2 1

AVL Tree 6 8 2 1 5

AVL Tree 6 8 2 1 5

b c a a c b double rotation a b c c b a c a b double rotation a b c

4 rotations

a b T0 T1 T2 T3 single rotation b a c c T0 T1 T2 T3

a b c T0 T1 T2 T3 b single rotation a c T0 T1 T2 T3

a b c T0 T1 T2 T3 a c b T0 T3 T1 T2 double rotation a b c T0 T1 T2 T3

a b c T0 T1 T2 T3 a c b T0 T3 T1 T2 double rotation a b c T0 T1 T2 T3

AVL Tree Exercise เพิ่มโหนดใน AVL Tree ของค่าต่อไปนี้ 1 22 10 9 8 5 4 15 6 7 3 ลบโหนดต่อไปนี้จาก AVL Tree ด้านบน 7 9 15

AVL Tree 1 22 10 double rotation 1 22 10 9 8 5 4 15 6 7 3

AVL Tree 10 22 1 9 8 double rotation 1 22 10 9 8 5 4 15 6 7 3

AVL Tree 10 8 22 1 9 5 a b c single rotation 1 22 10 9 8 5 4 15 6 7 3

AVL Tree 8 1 10 5 9 22 4 1 22 10 9 8 5 4 15 6 7 3

AVL Tree 8 4 10 1 5 9 22 1 22 10 9 8 5 4 15 6 7 3

AVL Tree 8 4 10 1 5 9 22 6 15 7 1 22 10 9 8 5 4 15 6 7 3

AVL Tree 8 4 10 1 6 9 22 3 5 7 15 1 22 10 9 8 5 4 15 6 7 3

AVL Tree Ex 2 8 4 10 1 6 9 22 3 5 7 15 ลบโหนด 7 9 15

AVL Tree Ex 2 8 4 15 1 6 10 22 3 5 ลบโหนด 7 9 15

AVL Tree Ex 2 8 4 10 1 6 22 3 5 ลบโหนด 7 9 15

AVL Tree Ex 2 8 4 22 1 6 10 3 5 ลบโหนด 7 9 15

AVL Tree Ex 3 4 44 2 3 17 62 1 2 2 1 50 1 78 1 18 1 48 54 64 88 19 46 49 51 56 81 91

AVL Tree Ex 3 44 1 3 T0 17 62 2 2 T1 1 50 1 78 1 18 1 48 54 T2 64 T3 88 46 49 51 56 81 91

AVL Tree 44 62 78 T0 T1 T2 T3 44 62 78 T0 T1 T2 T3 reconstruction

AVL Tree 44 17 62 1 50 78 18 48 46 49 54 51 56 64 88 81 91 T0 T1 T2 T3 T0 T1 T2 T3 ?

4 rotation types

4 rotation types b=y a=z a=z b=y c=x single rotation c=x a b c เรียงตามลำดับซ้ายไปขวา หรือ a<b<c x y z เรียงตามลำดับบนลงล่าง

4 rotation types c=z b=y b=y a=x c=z single rotation a=x a b c เรียงตามลำดับซ้ายไปขวา หรือ a<b<c x y z เรียงตามลำดับบนลงล่าง

4 rotation types a=z b=x c=y a=z c=y double rotation b=x a b c เรียงตามลำดับซ้ายไปขวา หรือ a<b<c x y z เรียงตามลำดับบนลงล่าง

4 rotation types b=x c=z a=y a=y c=z double rotation b=x a b c เรียงตามลำดับซ้ายไปขวา หรือ a<b<c x y z เรียงตามลำดับบนลงล่าง

อัลกอริทึมการเพิ่ม ลบ โหนด เพื่อปรับโครงสร้าง set add or delete node to c-node c-node is root then exit c-node is balance ? 3.1 c-node is balance 3.1.1 set parent node of c-node to c-node 3.1.2 go to 2 3.2 c-node is not balance 3.2.1 set c-node to z node 3.2.2 set y to longest node : child L or R of z node (equal set R) 3.2.3 set x to longest node : child L or R of y node (equal set R) 3.2.4 check 4 reconstruction similar with a,b,c and x,y,z

AVL Tree z 44 y 1 3 T0 17 62 x 2 2 T1 1 50 78 1 18 1 1 48 54 T2 64 T3 88 46 49 51 56 81 91

AVL Tree y 44 17 62 1 50 78 18 48 46 49 54 51 56 64 88 81 91 T0 T1 T2 T3 z x

Another Tree splay tree 2-4 tree or 2-3-4 tree Red Black tree