1 / 60

Trees

Trees. Introduction to Trees. ต้นไม้ ( tree ) สามารถใช้จำลองโครงสร้างต่างๆได้ เช่นโครงสร้างของสารประกอบอิ่มตัว โครงสร้างขององค์กร ระบบแฟ้มในคอมพิวเตอร์ เป็นต้น ต้นไม้( tree ) คือกราฟเชื่อมต่อแบบไม่มีทิศทาง( connected undirected graph ) ที่ไม่มีวงจร

Download Presentation

Trees

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Trees Department of Computer Science, BUU

  2. Introduction to Trees • ต้นไม้ (tree) สามารถใช้จำลองโครงสร้างต่างๆได้ เช่นโครงสร้างของสารประกอบอิ่มตัว โครงสร้างขององค์กร ระบบแฟ้มในคอมพิวเตอร์ เป็นต้น • ต้นไม้(tree)คือกราฟเชื่อมต่อแบบไม่มีทิศทาง(connected undirected graph)ที่ไม่มีวงจร • Theorem: มีทางเดินอย่างง่ายเพียงเส้นทางเดียวระหว่างสองโหนด(จุด)ใดๆ • ป่า(forest)คือเซตของต้นไม้ที่ไม่มีโหนด(จุด)ร่วมกัน • จุดใบไม้(leaf)ในต้นไม้หรือป่า เป็นจุดที่เป็น pendant หรือจุดสันโดษ(isolated)จุดภายใน(internal)คือจุดใดๆที่ไม่ใช่จุดใบ (ดังนั้นจุดภายในมีดีกรี≥ ___ ) 2 Department of Computer Science, BUU

  3. กราฟรูปใดต่อไปนี้เป็นต้นไม้กราฟรูปใดต่อไปนี้เป็นต้นไม้ Department of Computer Science, BUU

  4. Forest Department of Computer Science, BUU

  5. Basic Definition • ในวิชาเคมี ใช้กราฟแทนโมเลกุล • จุดยอดของกราฟแทนอะตอม • แต่ละด้านแทนพันธะ(bond) ระหว่างอะตอม Department of Computer Science, BUU

  6. Rooted Trees • ต้นไม้ที่มีราก(rooted tree)คือ ต้นไม้ที่มีการระบุให้จุดใดจุดหนึ่งเป็นราก(root)โดยทุกๆด้านจะมีทิศทางออกจากจุดราก เมื่อกำหนดให้จุดๆ หนึ่งเป็นรากของต้นไม้แล้ว เราสามารถจะกำหนดทางเดินที่เฉพาะเจาะจง(unique) จากรากไปยังจุดยอดอื่น ๆ ในต้นไม้ได้เสมอ • สังเกตว่าต้นไม้ที่ไม่มีรากที่มีnโหนด จะสามารถสร้างเป็นต้นไม้ที่มีรากได้n ต้นที่แตกต่างกัน ต้นไม้เดียวกันแต่ เลือกจุดรากคนละจุดกัน root root จุดใบแทนด้วยจุดสีเขียว จุดภายในแทนด้วยจุดสีน้ำตาล Department of Computer Science, BUU

  7. Rooted Trees • Example Department of Computer Science, BUU

  8. คำศัพท์ที่เกี่ยวข้องกับต้นไม้คำศัพท์ที่เกี่ยวข้องกับต้นไม้ พ่อ/แม่ (Parent) ถ้า T เป็นต้นไม้แบบมีราก และ v เป็นบัพใน T ที่ไม่ใช่ราก แล้วพ่อ/แม่ของบัพ v คือ บัพ u เมื่อมีทางเดินจากบัพ u ลงมาหาบัพ v โดย u และ v ประชิดกัน และ u อยู่ใกล้รากมากกว่า v ลูก (Child) เมื่อ u เป็นพ่อ/แม่ของ v แล้วเราเรียก v ว่าลูกของ u พี่น้องกัน (Siblings) จุด 2 จุดหรือมากกว่า 2 จุด ที่มีพ่อ/แม่เดียวกันเรียกว่าพี่น้อง Department of Computer Science, BUU

  9. คำศัพท์ที่เกี่ยวข้องกับต้นไม้คำศัพท์ที่เกี่ยวข้องกับต้นไม้ บรรพบุรุษ (Ancestor) บรรพบุรุษของจุดใด ๆ ที่มี ไม่ใช่รากของต้นไม้ คือจุดทุกจุดที่อยู่บนวิถีจากรากจนถึงจุดนั้น ลูกหลาน (Descendant) ลูกหลานของจุด v คือ จุดทุก ๆ จุดที่มี v เป็นบรรพบุรุษ ใบ (Leaf) จุดใด ๆ ที่ไม่มีลูก เรียกว่าใบ จุดภายใน (Internal vertex/nodes) จุดทุกจุดที่มีลูก คือจุดภายในหรือเราอาจกล่าวได้ว่า จุดภายในคือจุดที่ไม่เป็นใบ Department of Computer Science, BUU

  10. root node a internal vertex parent of g c b d e f g leaf siblings h i Rooted-Tree Terminology Example Department of Computer Science, BUU

  11. a c b d e f g h i Rooted-Tree Terminology Example ancestors of h and i Department of Computer Science, BUU

  12. Rooted-Tree Terminology Exercise c • จงหาจุด parent,children, siblings,ancestors, และdescendants ของโหนด f o n h r g k, l a, c d m b l, k, q root a c g e q i f l p j k Department of Computer Science, BUU

  13. n-ary trees • ต้นไม้ที่มีราก จะเรียกว่าn ภาค(n-ary tree) ถ้าทุกๆจุดมีลูก(children)ไม่มากกว่าnจุด และ เรียกว่าต้นไม้ nภาคเต็มต้น(fulln-ary tree)ถ้าทุกๆจุดภายในมีลูกเท่ากับnจุด • ต้นไม้ 2-ary(มีลูกไม่เกิน 2 จุด) จะเรียกว่าต้นไม้ทวิภาค(binary tree) • ทฤษฎี:ต้นไม้ที่มีรากเป็น binary tree ก็ต่อเมื่อทุกๆจุด(ยกเว้นจุดราก) มีดีกรี≤ ___, และจุดรากมีดีกรี ≤ ___ 3 2 Department of Computer Science, BUU

  14. ต้นใดเป็นต้นไม้แบบ mภาคเต็มต้น? Full 3–ary tree Full 2–ary tree Full 5–ary tree Not full 3–ary tree Department of Computer Science, BUU

  15. Some Tree Theorems • ทฤษฎีบท 1 ต้นไม้ที่มีทั้งหมดnจุด จะมีจำนวนกิ่ง(ด้าน)e =n−1ด้าน Department of Computer Science, BUU

  16. Some Tree Theorems • ทฤษฎีบท 2 ต้นไม้ mภาคเต็มต้น(full m-ary tree) ที่มีจุดภายในจำนวนiจุด จะมีจำนวนจุดทั้งหมดn=mi+1จุด และมีจุดใบ=(m−1)i+1จุด Department of Computer Science, BUU

  17. Some Tree Theorems • ทฤษฎีบท 3 ต้นไม้แบบ mภาคที่มีจุดทั้งหมด nจุดและมีจุดภายในจำนวน iจุดและมีจุดใบจำนวน จุด จะได้ว่า • i = (n-1)/mและ = [(m-1)n+1]/m • n = mi + 1จุดและ = (m-1)i + 1 • n = (m- 1)/(m-1) และ i = ( -1)/(m-1) Department of Computer Science, BUU

  18. ตัวอย่าง • นางสาวตะวันฉายเป็นผู้เริ่มส่งจดหมายลูกโซ่อวยพรวันเกิดออกไปยังเพื่อน ๆ และขอร้องว่าให้แต่ละคนที่ได้รับจดหมายส่งจดหมายต่อไปถึงคนอื่น ๆ อีก 4 คน อยากทราบว่าจะมีคนทั้งหมดกี่คนที่ได้อ่านจดหมายฉบับนี้รวมทั้งนางสาวตะวันฉาย ถ้ากำหนดว่าไม่มีใครได้รับจดหมายเกินหนึ่งฉบับ และเมื่อกระบวนการส่งจดหมายลูกโซ่สิ้นสุดลง มีทั้งหมด 100 คนที่ได้อ่านจดหมายนี้แต่ไม่ยอมส่งจดหมายต่อ Department of Computer Science, BUU

  19. ตัวอย่าง กระบวนการส่งจดหมายลูกโซ่เปรียบได้กับต้นไม้ 4 ภาค และจุดภายในคือ คนที่ส่งจดหมายต่อในขณะที่ใบคือผู้ที่ได้รับจดหมายแล้วไม่ส่งต่อ ให้ i แทนจำนวนจุดภายใน และ n แทนจำนวนคนทั้งหมด ในที่นี้ m = 4 จากทฤษฎี จะได้ว่า n = (mk-1)/m-1 = [(4  100)-1]/(4-1) = 133 ดังนั้นมีผู้ได้รับจดหมายทั้งหมด 133 คน และ i = (k-1)/(m-1) = (100-1)/(4-1) = 33 ดังนั้นจำนวนคนที่ส่งจดหมายต่อมีทั้งหมด 33 คน Department of Computer Science, BUU

  20. level 3 Some More Tree Theorems • นิยาม:ระดับ(level)ของจุดคือความยาวของทางเดินอย่างง่ายจากราก(root)ไปยังจุดนั้น level 2 Department of Computer Science, BUU

  21. Some More Tree Theorems • ความสูง(height)ของต้นไม้ คือระดับของจุดที่มากที่สุด ระดับของราก (จุด a) = 0 ระดับของบัพ b, j, k = 1 ระดับของบัพ c, e, f, l = 2 ระดับของบัพ d, g, i, m, n = 3 ระดับของบัพ h = 4 ดังนั้น ความสูงของต้นไม้ T = 4 Department of Computer Science, BUU

  22. Some More Tree Theorems • ต้นไม้ mภาค(m-arytree) ที่มีรากที่มีความสูงhเรียกว่าต้นไม้สมดุล(balanced)ถ้าจุดใบทุกจุดอยู่ที่ระดับhหรือh−1 • ทฤษฎีบท: มีจำนวนใบอย่างมากที่สุดmhใบ ในต้นไม้ mภาค(m-ary tree)ที่มีความสูงh • ทฤษฎีบทย่อย :ต้นไม้ m-ary ที่มีจุดใบ ใบมีความสูงh≥logm ถ้าเป็นต้นไม้เต็มกิ่ง(full m-ary)และสมดุลความสูงh=logm Department of Computer Science, BUU

  23. Applications of TreesBinary Search Tree Format • ข้อมูลแต่ละตัวจะถูกเก็บลงในจุดของต้นไม้ โดยการจัดเรียงข้อมูลในต้นไม้สำหรับทุกๆค่าx คือ, • ทุกๆจุดที่อยู่ในต้นไม้ย่อยด้านซ้าย(left subtree)ของx จะมีค่าน้อยกว่าx • ทุกๆจุดที่อยู่ในต้นไม้ย่อยด้านขวา(right subtree)ของx จะมีค่ามากกว่าx ตัวอย่าง: 7 3 12 1 5 9 15 0 2 8 11 Department of Computer Science, BUU

  24. Applications of Trees :Codes Codes That Can Be Decoded Fixed-length codes: • Every character is encoded using the same number of bits. • To determine the boundaries between characters, we form groups of w bits, where w is the length of a character. • Examples: • ASCII Prefix codes: • No character is the prefix of another character. • Examples: • Fixed-length codes • Huffman codes Department of Computer Science, BUU

  25. Why Prefix Codes ? • พิจารณาการกำหนดรหัสซึ่งไม่เป็น a prefix code:a = 01 m = 10 n = 111 o = 0 r = 11 s = 1 t = 0011 • ดังนั้นถ้าท่านส่งข้อความ “You are a star.”ไปให้เพื่อนโดยท่านกำหนดรหัสของ“star”คือ “1 0011 01 11” • เมื่อเพื่อนท่านได้รับข้อความและเกิดถอดรหัส(decodes)โดยใช้การกำหนดรหัสข้างต้น อาจถอดรหัสเป็นดังนี้:100110111 = 10 0 11 0 111 = “moron” Department of Computer Science, BUU

  26. Representing a Prefix-Code Dictionary Our example :‹space› = 000 A = 0010 E = 0011 s = 010 c = 0110 g = 0111 h = 1000 i = 1001 l = 1010 t = 1011 e = 110 n = 111 1 0 0 1 0 1 0 1 0 1 0 1 0 1 s n e ‹spc› 1 0 1 0 0 1 0 1 g t c h i l A E Department of Computer Science, BUU

  27. Huffman code เป็นรหัสที่มีความยาวไม่คงที่และมีน้ำหนักน้อยที่สุดในบรรดารหัสprefix code ขั้นตอนวิธีของการสร้าง Huffman code โดยใช้ต้นไม้ทวิภาคมีดังนี้ 1. เขียนตัวอักษรและความถี่กำกับจุดยอดแต่ละจุดแล้วเรียงความถี่จากน้อยไปหามาก 2. เชื่อมจุดยอดทางซ้าย 2 จุดกับจุดยอดใหม่ กำกับจุดยอดใหม่ด้วยผลบวกของความถี่ 3. เรียงความถี่จากน้อยไปหามาก 4. ทำขั้นตอนที่2 และ 3 ซ้ำไปเรื่อยๆจนจุดยอดทั้งหมดเชื่อมกันเป็นกราฟต้นไม้ทวิภาค 5. ลบความถี่ออก แล้วเขียน 0 กำกับด้านเอียงขึ้นและเขียนเลข 1 กำกับด้านเอียงลง(ความเอียงของด้านคิดจากซ้ายไปขวา) ผลที่ได้คือ Huffman tree Department of Computer Science, BUU

  28. f:5 e:9 c:12 b:13 d:16 a:45 Applications of Trees • Q: Use Huffman coding to encode the following five symbols with given frequencies: A: 45 , B: 13 ,C: 12 , D: 16 , E: 9, F: 5 Department of Computer Science, BUU

  29. 14 f:5 e:9 c:12 b:13 d:16 a:45 Huffman’s Algorithm Department of Computer Science, BUU

  30. 14 c:12 a:45 b:13 d:16 f:5 e:9 Huffman’s Algorithm Department of Computer Science, BUU

  31. 25 14 c:12 a:45 b:13 d:16 f:5 e:9 Huffman’s Algorithm Department of Computer Science, BUU

  32. 14 25 d:16 a:45 f:5 c:12 b:13 e:9 Huffman’s Algorithm Department of Computer Science, BUU

  33. 30 14 25 d:16 a:45 f:5 c:12 b:13 e:9 Huffman’s Algorithm Department of Computer Science, BUU

  34. 25 30 a:45 14 b:13 d:16 c:12 f:5 e:9 Huffman’s Algorithm Department of Computer Science, BUU

  35. 55 25 30 a:45 14 b:13 d:16 c:12 f:5 e:9 Huffman’s Algorithm Department of Computer Science, BUU

  36. 55 a:45 25 30 14 b:13 d:16 c:12 f:5 e:9 Huffman’s Algorithm Department of Computer Science, BUU

  37. 100 0 1 55 a:45 0 0 1 25 30 0 1 0 1 14 b:13 d:16 c:12 100 101 111 0 1 f:5 e:9 1100 1101 Huffman’s Algorithm Department of Computer Science, BUU

  38. Tree Traversal • Is a procedure that systematically visits every vertex of an ordered rooted tree. • Visiting a vertex = processing the data at the vertex. • อัลกอริธึมในการท่องไปบนต้นไม้(Traversal algorithms) • Pre-order traversal NLR(node,left,right) • In-order traversal LNR(left,node,right) • Post-order traversal LRN(left,right, node) Department of Computer Science, BUU

  39. Tree Traversal • Let T be an ordered rooted tree with root r. Suppose that T1, T2, …, Tn are the subtrees at r from left to right in T. r 55 T2 T1 24 94 3 49 60 46 58 88 52 45 76 91 Department of Computer Science, BUU

  40. Preorder Traversal • Begins by visiting r. • Next traverses T1 in preorder, then T2 in preorder, …, then Tn in preorder. • Ends after Tn has been traversed. Department of Computer Science, BUU

  41. Preorder Traversal • Visit root, visit subtreesleft to right. Department of Computer Science, BUU

  42. Preorder Traversal Department of Computer Science, BUU

  43. Inorder Traversal • Begins by traversingT1 in inorder • Next visit r, then traversesT2 in inorder, …, then Tn in inorder. • Ends after Tn has been traversed. Department of Computer Science, BUU

  44. Inorder Traversal • Visit leftmost subtree,visit root, visit other subtrees left to right. Department of Computer Science, BUU

  45. Inorder Traversal Department of Computer Science, BUU

  46. Postorder Traversal • Begins by traversingT1 in postorder • Next traversesT2 in postorder,then T3 in postorder,...,then Tnin postorder • End by visiting r Department of Computer Science, BUU

  47. Postorder Traversal • Visit subtreeleft to right,visit root. Department of Computer Science, BUU

  48. Postorder Traversal Department of Computer Science, BUU

  49. Postorder Traversal • Applications: compute space used by files in a directory and its subdirectories. Department of Computer Science, BUU

  50. Tree TraversalShortcut • Preorder list is obtained by • listing each vertex the first time this curve passes it. • Result: a, b, d, h, e, i, j, c, f, g, k. • Inorderlist is obtained by • listing a leaf the first time the curve passes it and • listing each internal vertex the second time the curve passes it. • Result: h, d, b, i, e, j, a, f, c, k, g. • Postorderlist is obtained by • listing a vertex the last time it is passes on the way back up to its parent. • Result: h, d, i, j, e, b, f, k, g, c, a. Department of Computer Science, BUU

More Related