Trees Faculty of Informatics, BUU 1 Introduction to Trees • ต้นไม้ (tree) สามารถใช้จาลองโครงสร้างต่างๆได้ เช่นโครงสร้างของ สารประกอบอิ่มตัว โครงสร้างขององค์กร ระบบแฟ้ มในคอมพิวเตอร์ เป็ นต้น • ต้นไม้(tree) คือกราฟเชื่อมต่อแบบไม่มีทิศทาง(connected undirected graph) ที่ไม่มีวงจร – Theorem: มีทางเดินอย่างง่ายเพียงเส้นทางเดียวระหว่างสองโหนด(จุด)ใดๆ • ป่ า(forest)คือเซตของต้นไม้ที่ไม่มีโหนด(จุด)ร่ วมกัน • จุดใบไม้(leaf) ในต้นไม้หรื อป่ า เป็ นจุดที่เป็ น pendant หรื อจุดสันโดษ (isolated) จุดภายใน(internal)คือจุดใดๆที่ไม่ใช่จุดใบ (ดังนั้นจุด ภายในมีดีกรี ≥ ___ 2 ) Faculty of Informatics, BUU 2 กราฟรูปใดต่อไปนีเ้ ป็ นต ้นไม ้ Faculty of Informatics, BUU 3 Forest Faculty of Informatics, BUU 4 Basic Definition ้ • ในวิชาเคมี ใชกราฟแทนโมเลกุ ล – จุดยอดของกราฟแทนอะตอม – แต่ละด ้านแทนพันธะ(bond) ระหว่างอะตอม Faculty of Informatics, BUU 5 Rooted Trees • ต้ นไม้ ที่มีราก(rooted tree) คือ ต้นไม้ที่มีการระบุให้จุดใดจุดหนึ่ งเป็ นราก (root)โดยทุกๆด้านจะมีทิศทางออกจากจุดราก เมื่อกาหนดให้จุดๆ หนึ่งเป็ นรากของ ต้นไม้แล้ว เราสามารถจะกาหนดทางเดินที่เฉพาะเจาะจง(unique) จากรากไปยังจุด ยอดอื่น ๆ ในต้นไม้ได้เสมอ • สังเกตว่าต้นไม้ที่ไม่มีรากที่มี n โหนด จะสามารถสร้างเป็ นต้นไม้ที่มีรากได้ n ต้นที่แตกต่าง ต้นไม้เดียวกันแต่ กัน root เลือกจุดรากคนละจุดกัน root จุดใบแทนด้วยจุดสี เขียว จุดภายในแทนด้วยจุดสี น้ าตาล Faculty of Informatics, BUU 6 Rooted Trees • Example Faculty of Informatics, BUU 7 คาศัพท์ ที่เกีย่ วข้ องกับต้ นไม้ พ่อ/แม่ (Parent) ถ้า T เป็ นต้นไม้แบบมีราก และ v เป็ นจุดใน T ที่ไม่ใช่ราก แล้วพ่อ/ แม่ของจุด v คือ จุด u เมื่อมีทางเดินจากจุด u ลงมาหาจุด v โดย u และ v ประชิดกัน และ u อยูใ่ กล้รากมากกว่า v ลูก (Child) เมื่อ u เป็ นพ่อ/แม่ของ v แล้วเราเรี ยก v ว่าลูกของ u พีน่ ้ องกัน (Siblings) จุด 2 จุดหรื อมากกว่า 2 จุด ที่มีพอ่ /แม่เดียวกันเรี ยกว่าพี่นอ้ ง Faculty of Informatics, BUU 8 คาศัพท์ ที่เกีย่ วข้ องกับต้ นไม้ บรรพบุรุษ (Ancestor) บรรพบุรุษของจุดใด ๆ ที่ไม่ใช่รากของต้นไม้ คือจุดทุกจุดที่อยูบ่ นวิถีจาก รากจนถึงจุดนั้น ลูกหลาน (Descendant) ลูกหลานของจุด v คือ จุดทุก ๆ จุดที่มี v เป็ นบรรพบุรุษ ใบ (Leaf) จุดใด ๆ ที่ไม่มีลกู เรี ยกว่าใบ จุดภายใน (Internal vertex/nodes) จุดทุกจุดที่มีลกู คือจุดภายในหรื อเราอาจกล่าวได้วา่ จุดภายในคือจุดที่ไม่ เป็ นใบ Faculty of Informatics, BUU 9 Rooted-Tree Terminology Example root node a internal vertex parent of g c b d e f leaf h i Faculty of Informatics, BUU g siblings 10 Rooted-Tree Terminology Example ancestors of h and i a c b d e h f g i Faculty of Informatics, BUU 11 Rooted-Tree Terminology Exercise • จงหาจุด parent, c o k, l children, siblings, g a, c ancestors, และ b l, k, q descendants ของโหนด f e n h d r m root a c g q i f p j k Faculty of Informatics, BUU l 12 m-ary trees • ต้นไม้ที่มีราก จะเรี ยกว่า m ภาค(m-ary tree) ถ้าทุกๆจุดมีลกู (children)ไม่ มากกว่า m จุด และ เรี ยกว่าต้นไม้ m ภาคเต็มต้น(full m-ary tree) ถ้าทุกๆ จุดภายในมีลกู เท่ากับ m จุด • ต้นไม้ 2-ary(มีลกู ไม่เกิน 2 จุด) จะเรี ยกว่าต้นไม้ทวิภาค(binary tree) • ทฤษฎี: ต้นไม้ที่มีรากเป็ น binary tree ก็ต่อเมื่อทุกๆจุด(ยกเว้นจุดราก) มีดีกรี ≤ ___, 3 และจุดรากมีดีกรี ≤ ___ 2 Faculty of Informatics, BUU 13 ต้ นใดเป็ นต้ นไม้ แบบ m ภาคเต็มต้ น? Full 2–ary tree Full 3–ary tree Full 5–ary tree Not full 3–ary tree Faculty of Informatics, BUU 14 Some Tree Theorems • ทฤษฎีบท 1 ต้นไม้ที่มีท้ งั หมด n จุด จะมีจานวนกิ่ง(ด้าน) = n−1 ด้าน Faculty of Informatics, BUU e 15 Some Tree Theorems • ทฤษฎีบท 2 ต้นไม้ m ภาคเต็มต้น(full m-ary tree) ที่มีจุด ภายในจานวน i จุด จะมีจานวนจุดทั้งหมด n=mi+1 จุด และมี จุดใบ =(m−1)i+1 จุด Faculty of Informatics, BUU 16 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) Faculty of Informatics, BUU 17 ตัวอย่ าง • นางสาวตะวันฉายเป็ นผูเ้ ริ่ มส่ งจดหมายลูกโซ่อวยพรวันเกิดออกไป ยังเพื่อน ๆ และขอร้องว่าให้แต่ละคนที่ได้รับจดหมายส่ งจดหมาย ต่อไปถึงคนอื่น ๆ อีก 4 คน อยากทราบว่าจะมีคนทั้งหมดกี่คนที่ ได้อ่านจดหมายฉบับนี้รวมทั้งนางสาวตะวันฉาย ถ้ากาหนดว่าไม่มี ใครได้รับจดหมายเกินหนึ่งฉบับ และเมื่อกระบวนการส่ งจดหมาย ลูกโซ่สิ้นสุ ดลง มีท้ งั หมด 100 คนที่ได้อ่านจดหมายนี้แต่ไม่ยอม ส่ งจดหมายต่อ Faculty of Informatics, BUU 18 ตัวอย่ าง กระบวนการส่ งจดหมายลูกโซ่เปรี ยบได้กบั ต้นไม้ 4 ภาค และจุดภายในคือ คน ที่ส่งจดหมายต่อในขณะที่ใบคือผูท้ ี่ได้รับจดหมายแล้วไม่ส่งต่อ ให้ i แทน จานวนจุดภายใน และ n แทนจานวนคนทั้งหมด ในที่น้ ี m = 4 จาก ทฤษฎี จะได้วา่ n = (m -1)/m-1 = [(4 100)-1]/(4-1) = 133 ดังนั้นมีผไู ้ ด้รับจดหมายทั้งหมด 133 คน และ i = ( -1)/(m-1) = (100-1)/(4-1) = 33 ดังนั้นจานวนคนที่ส่งจดหมายต่อมีท้ งั หมด 33 คน Faculty of Informatics, BUU 19 Some More Tree Theorems • นิยาม: ระดับ(level) ของจุดคือความยาวของทางเดินอย่างง่ายจากราก (root)ไปยังจุดนั้น level 2 level 3 Faculty of Informatics, BUU 20 Some More Tree Theorems • ความสูง(height) ของต้นไม้ คือระดับของจุดที่มากที่สุด ระดับของราก (จุด a)= 0 ระดับของจุด b, j, k =1 ระดับของจุด d, g, i, m, n =3 ดังนั้น ความสู งของต้ นไม้ T = 4 ระดับของจุด c, e, f, l ระดับของจุด h Faculty of Informatics, BUU =2 =4 21 Some More Tree Theorems • ต้นไม้ m ภาค(m-ary tree) ที่มีราก ที่มีความสูง h เรี ยกว่าต้นไม้สมดุล (balanced) ถ้าจุดใบทุกจุดอยูท่ ี่ระดับ h หรื อ h−1 • ทฤษฎีบท: มีจานวนใบอย่างมากที่สุด mh ใบ ในต้นไม้ m ภาค(m-ary tree) ที่มีความสูง h – ทฤษฎีบทย่ อย : ต้นไม้ m-ary ที่มีจุดใบ ใบมีความสูง h≥logm ถ้าเป็ นต้นไม้เต็มกิ่ง(full m-ary) และสมดุลความสูง h=logm Faculty of Informatics, BUU 22 Applications of Trees Binary Search Tree Format • ข้อมูลแต่ละตัวจะถูกเก็บลงในจุด ของต้นไม้ โดยการจัดเรี ยงข้อมูล ในต้นไม้สาหรับทุกๆค่า x คือ, – ทุกๆจุดที่อยูใ่ นต้นไม้ยอ่ ยด้านซ้าย (left subtree)ของ x จะมีค่า น้ อยกว่ า x – ทุกๆจุดที่อยูใ่ นต้นไม้ยอ่ ยด้านขวา (right subtree)ของ x จะมีค่า มากกว่ า x ตัวอย่าง: 7 3 1 0 Faculty of Informatics, BUU 12 5 2 9 8 15 11 23 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: ■ Huffman codes Faculty of Informatics, BUU 24 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” Faculty of Informatics, BUU 25 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 0 1 1 0 s ‹spc› 0 A 1 E 0 1 0 c 0 1 g 0 h Faculty of Informatics, BUU 1 i 1 1 0 l 0 e 1 n 1 t 26 Huffman code เป็ นรหัสที่มีความยาวไม่คงที่และมีน้ าหนักน้อยที่สุดในบรรดารหัสprefix code ขั้นตอนวิธีของการสร้าง Huffman code โดยใช้ตน้ ไม้ทวิภาคมีดงั นี้ 1. เขียนตัวอักษรและความถี่กากับจุดยอดแต่ละจุดแล้วเรี ยงความถี่จากน้อยไปหามาก 2. เชื่อมจุดยอดทางซ้าย 2 จุดกับจุดยอดใหม่ กากับจุดยอดใหม่ดว้ ยผลบวกของความถี่ 3. เรี ยงความถี่จากน้อยไปหามาก 4. ทาขั้นตอนที่2 และ 3 ซ้ าไปเรื่ อยๆจนจุดยอดทั้งหมดเชื่อมกันเป็ นกราฟต้นไม้ทวิภาค 5. ลบความถี่ออก แล้วเขียน 0 กากับด้านเอียงขึ้นและเขียนเลข 1 กากับด้านเอียงลง (ความเอียงของด้านคิดจากซ้ายไปขวา) ผลที่ได้คือ Huffman tree Faculty of Informatics, BUU 27 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 f:5 e:9 c:12 b:13 d:16 Faculty of Informatics, BUU a:45 28 Huffman’s Algorithm 14 f:5 e:9 c:12 b:13 Faculty of Informatics, BUU d:16 a:45 29 Huffman’s Algorithm c:12 14 b:13 f:5 d:16 a:45 e:9 Faculty of Informatics, BUU 30 Huffman’s Algorithm 25 c:12 14 b:13 f:5 d:16 a:45 e:9 Faculty of Informatics, BUU 31 Huffman’s Algorithm 14 f:5 25 d:16 e:9 c:12 Faculty of Informatics, BUU a:45 b:13 32 Huffman’s Algorithm 30 14 f:5 25 d:16 e:9 c:12 Faculty of Informatics, BUU a:45 b:13 33 Huffman’s Algorithm 25 c:12 30 14 b:13 f:5 a:45 d:16 e:9 Faculty of Informatics, BUU 34 Huffman’s Algorithm 55 25 c:12 30 14 b:13 f:5 a:45 d:16 e:9 Faculty of Informatics, BUU 35 Huffman’s Algorithm 55 a:45 25 c:12 30 14 b:13 f:5 d:16 e:9 Faculty of Informatics, BUU 36 Huffman’s Algorithm 100 0 1 55 a:45 0 0 1 25 0 30 1 0 1 c:12 b:13 14 d:16 100 101 0 1 111 f:5 e:9 1100 1101 Faculty of Informatics, BUU 37 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) Faculty of Informatics, BUU 38 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. 55 T1 r 24 3 49 46 45 94 T2 60 52 58 88 76 Faculty of Informatics, BUU 91 39 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. Faculty of Informatics, BUU 40 Preorder Traversal • Visit root, visit subtrees left to right. Faculty of Informatics, BUU 41 Preorder Traversal Faculty of Informatics, BUU 42 Inorder Traversal • Begins by traversing T1 in inorder • Next visit r, then traverses T2 in inorder, …, then Tn in inorder. • Ends after Tn has been traversed. Faculty of Informatics, BUU 43 Inorder Traversal • Visit leftmost subtree,visit root, visit other subtrees left to right. Faculty of Informatics, BUU 44 Inorder Traversal Faculty of Informatics, BUU 45 Postorder Traversal • Begins by traversing T1 in postorder • Next traverses T2 in postorder,then T3 in postorder,...,then Tn in postorder • End by visiting r Faculty of Informatics, BUU 46 Postorder Traversal • Visit subtree left to right,visit root. Faculty of Informatics, BUU 47 Postorder Traversal Faculty of Informatics, BUU 48 Postorder Traversal • Applications: compute space used by files in a directory and its subdirectories. Faculty of Informatics, BUU 49 Tree Traversal Shortcut • 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. Faculty of Informatics, BUU 50 Representing Arithmetic Expressions • Complicated arithmetic expressions can be represented by an ordered rooted tree – Internal vertices represent operators – Leaves represent operands • Build the tree bottom-up – Construct smaller subtrees – Incorporate the smaller subtrees as part of larger subtrees Faculty of Informatics, BUU 51 Example (x+y)2 + (x-3)/(y+2) + + x / 2 y – + x 3 y 2 Faculty of Informatics, BUU 52 Infix Notation • Traverse in inorder adding parentheses for each operation + + x / 2 y – + x 3 y 2 ( ((x + y ) 2 ) +( ( x – 3 ) / ( y + 2 ) ) ) Faculty of Informatics, BUU 53 Prefix Notation (Polish Notation) • Traverse in preorder + + x / 2 y – + x 3 y 2 + + x y 2 / – x 3 + y 2 Faculty of Informatics, BUU 54 Evaluating Prefix Notation • In an prefix expression, a binary operator precedes its two operands • The expression is evaluated right-left • Look for the first operator from the right • Evaluate the operator with the two operands immediately to its right Faculty of Informatics, BUU 55 Example + / + 2 2 2 / – 3 2 + 1 0 + / + 2 2 2 / – 3 2 1 + / + 2 2 2 / 1 1 + / + 2 2 2 1 + / 4 2 1 + 2 1 3 Faculty of Informatics, BUU 56 Postfix Notation (Reverse Polish) • Traverse in postorder + + x / 2 y – + x 3 y 2 x y + 2 x 3 – y 2 + /+ Faculty of Informatics, BUU 57 Evaluating Postfix Notation • In an postfix expression, a binary operator follows its two operands • The expression is evaluated left-right • Look for the first operator from the left • Evaluate the operator with the two operands immediately to its left Faculty of Informatics, BUU 58 Example 2 2 + 2 / 3 2 – 1 0 + / + 4 2 / 3 2 – 1 0 + / + 2 3 2 – 1 0 + / + 2 1 1 0 + / + 2 1 1 / + 2 1 + 3 Faculty of Informatics, BUU 59 Tree Traversal + prefix expression 7 infix expression ^ 5 (- ( + 5(^ ( + 8 (* 3 4 )) 2 ))7 ) ((5+((8+(3*4)) 2 + 8 * 3 ^2))-7) postfix expression 5 8 3 4 * + 2 ^ + 7 - 4 Faculty of Informatics, BUU 60