งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Department of Computer Science, BUU

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Department of Computer Science, BUU"— ใบสำเนางานนำเสนอ:

1 Department of Computer Science, BUU
Trees Department of Computer Science, BUU

2 Department of Computer Science, BUU
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 Department of Computer Science, BUU
Forest Department of Computer Science, BUU

5 Department of Computer Science, BUU
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 Department of Computer Science, BUU
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 Rooted-Tree Terminology Example
root node a b c d e f g h i internal vertex parent of g leaf siblings Department of Computer Science, BUU

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

12 Rooted-Tree Terminology Exercise
จงหาจุด parent, children, siblings, ancestors, และ descendants ของโหนด f o n h r k, l g 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 Department of Computer Science, BUU
m-ary trees ต้นไม้ที่มีราก จะเรียกว่า m ภาค(m-ary tree) ถ้าทุกๆจุดมีลูก(children)ไม่มากกว่า m จุด และ เรียกว่าต้นไม้ m ภาคเต็มต้น(full m-ary tree) ถ้าทุกๆจุดภายในมีลูกเท่ากับ m จุด ต้นไม้ 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 Department of Computer Science, BUU
Some Tree Theorems ทฤษฎีบท 1 ต้นไม้ที่มีทั้งหมด n จุด จะมีจำนวนกิ่ง(ด้าน) e = n−1 ด้าน Department of Computer Science, BUU

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

17 Department of Computer Science, BUU
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 Department of Computer Science, BUU
ตัวอย่าง นางสาวตะวันฉายเป็นผู้เริ่มส่งจดหมายลูกโซ่อวยพรวันเกิดออกไปยังเพื่อน ๆ และขอร้องว่าให้แต่ละคนที่ได้รับจดหมายส่งจดหมายต่อไปถึงคนอื่น ๆ อีก 4 คน อยากทราบว่าจะมีคนทั้งหมดกี่คนที่ได้อ่านจดหมายฉบับนี้รวมทั้งนางสาวตะวันฉาย ถ้ากำหนดว่าไม่มีใครได้รับจดหมายเกินหนึ่งฉบับ และเมื่อกระบวนการส่งจดหมายลูกโซ่สิ้นสุดลง มีทั้งหมด คนที่ได้อ่านจดหมายนี้แต่ไม่ยอมส่งจดหมายต่อ Department of Computer Science, BUU

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

20 Some More Tree Theorems
นิยาม: ระดับ(level) ของจุดคือความยาวของทางเดินอย่างง่ายจากราก(root)ไปยังจุดนั้น level 2 level 3 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-ary tree) ที่มีราก ที่มีความสูง 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 Trees Binary Search Tree Format
ข้อมูลแต่ละตัวจะถูกเก็บลงในจุดของต้นไม้ โดยการจัดเรียงข้อมูลในต้นไม้สำหรับทุกๆค่า x คือ, ทุกๆจุดที่อยู่ในต้นไม้ย่อยด้านซ้าย(left subtree)ของ x จะมีค่าน้อยกว่า x ทุกๆจุดที่อยู่ในต้นไม้ย่อยด้านขวา(right subtree)ของ x จะมีค่ามากกว่า x ตัวอย่าง: 7 3 12 1 5 9 15 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. Huffman codes Department of Computer Science, BUU

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

26 Representing a Prefix-Code Dictionary
Our example : ‹space› = A = E = s = c = g = h = i = l = t = e = n = 111 1 1 1 1 1 1 1 ‹spc› s e n 1 1 1 1 A E c g h i l t Department of Computer Science, BUU

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

28 Department of Computer Science, BUU
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 b:13 c:12 d:16 e:9 a:45 Department of Computer Science, BUU

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

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

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

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

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

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

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

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

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

38 Department of Computer Science, BUU
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 Department of Computer Science, BUU
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 52 58 88 45 76 91 Department of Computer Science, BUU

40 Department of Computer Science, BUU
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. ssss Department of Computer Science, BUU

41 Department of Computer Science, BUU
Preorder Traversal Visit root, visit subtrees left to right. ssss Department of Computer Science, BUU

42 Department of Computer Science, BUU
Preorder Traversal ssss Department of Computer Science, BUU

43 Department of Computer Science, BUU
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. sssss Department of Computer Science, BUU

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

45 Department of Computer Science, BUU
Inorder Traversal sssss Department of Computer Science, BUU

46 Department of Computer Science, BUU
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 sssssss Department of Computer Science, BUU

47 Department of Computer Science, BUU
Postorder Traversal Visit subtree left to right,visit root. ssssss Department of Computer Science, BUU

48 Department of Computer Science, BUU
Postorder Traversal ssss Department of Computer Science, BUU

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

50 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. Department of Computer Science, BUU

51 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 Department of Computer Science, BUU

52 Department of Computer Science, BUU
Example (x+y)2 + (x-3)/(y+2) + 2 / + x y x 3 + y 2 Department of Computer Science, BUU

53 Department of Computer Science, BUU
Infix Notation Traverse in inorder adding parentheses for each operation + / 2 x y 3 ( ) ( ) ( ) x + y 2 + ( ) ( ) x 3 / ( ) y + 2 Department of Computer Science, BUU

54 Prefix Notation (Polish Notation)
Traverse in preorder + / 2 x y 3 + + x y 2 / x 3 + y 2 Department of Computer Science, BUU

55 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 Department of Computer Science, BUU

56 Department of Computer Science, BUU
Example + / / – + / / – + / / + / + / 3 Department of Computer Science, BUU

57 Postfix Notation (Reverse Polish)
Traverse in postorder + / + 2 + y x y x 3 2 x y + 2 x 3 y 2 + / + Department of Computer Science, BUU

58 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 Department of Computer Science, BUU

59 Department of Computer Science, BUU
Example / – / + / – / + – / + / + / + 3 Department of Computer Science, BUU

60 Department of Computer Science, BUU
Tree Traversal - prefix expression ( - ( + 5 ( ^ ( + 8 ( * 3 4 ) ) 2 ) ) 7 ) + 7 infix expression 5 ^ ( ( 5 + ( ( 8 + ( 3 * 4 ) ) ^ 2 ) ) - 7 ) + 2 postfix expression 8 * 5 8 3 4 * + 2 ^ + 7 - 3 4 Department of Computer Science, BUU


ดาวน์โหลด ppt Department of Computer Science, BUU

งานนำเสนอที่คล้ายกัน


Ads by Google