Bài giảng toán rời rạc phần các phương pháp duyệt cây

30 686 0
Bài giảng toán rời rạc phần các phương pháp duyệt cây

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Caây 8.3. Caùc phöông phaùp duyeät caây Taøi lieäu naøy ñöôïc soaïn theo saùch Toaùn hoïc rôøi raïc öùng duïng trong tin hoïc , K. H. Rosen, ngöôøi dòch: Phaïm Vaên Thieàu vaø Ñaëng Höõu Thònh, Nhaø xuaát baûn Khoa hoïc vaø kyõ thuaät, 1998. Taøi lieäu löu haønh noäi boä 10/01/15 8.3. Caùc phöông 1 Heä ñòa chæ phoå duïng • • • Heä ñòa chæ phoå duïng laø caùch gaùn nhaõn cho taát caû caùc ñænh baèng phöông phaùp truy hoài nhö sau: – Gaùn nhaõn cho goác baèng soá nguyeân 0. Sau ñoù k ñænh con cuûa noù (ôû möùc 1) töø traùi sang phaûi ñöôïc gaùn caùc nhaõn laø 1, 2, 3,…, k. – Vôùi moïi ñænh v ôû möùc n coù nhaõn laø A, thì kv ñænh con cuûa noù töø traùi sang phaûi ñöôïc gaùn caùc nhaõn laø A.1, A.2,…, A.kv . Nhaän xeùt: Theo thuû tuïc naøy, ñænh v ôû möùc n, vôùi n ≥ 1, coù nhaõn laø x1.x2…xn , trong ñoù ñænh xi ôû möùc i. ÖÙng duïng: saép taát caû caùc ñænh cuûa caây theo thöù töï töø ñieån cuûa caùc nhaõn cuûa chuùng trong heä ñòa chæ phoå duïng. 10/01/15 8.3. Caùc phöông 2 Heä ñòa chæ phoå duïng • Ví duï 1. Gaùn nhaõn theo ñòa chæ phoå duïng cho taát caû caùc ñænh cuûa caây sau. Thöù töï töø ñieån cuûa caùc nhaõn laø: 0 < 1 < 1.1 < 1.2 < 1.3 < 2 < 3 < 3.1 < 3.1.1 < 3.1.2 < 3.1.2.1 < 3.1.2.2 < 3.1.2.3 < 3.1.2.4 < 3.1.3 < 3.2 < 4 < 4.1 < 5 < 5.1 < 5.1.1 < 5.2 < 5.3 0 1 2 3 3.1 1.1 1.2 1.3 4 3.2 5 4.1 5.1 5.2 5.3 3.1.2 3.1.1 3.1.2.1 5.1.1 3.1.3 3.1.2.4 3.1.2.2 3.1.2.3 10/01/15 8.3. Caùc phöông 3 Caùc thuaät toaùn duyeät caây • Ñònh nghóa 1. Giaû söû T laø caây coù goác vaø ñöôïc saép thöù töï vôùi goác r. – Neáu T chæ coù r thì r laø caùch duyeät tieàn thöù töï cuûa T; – neáu khoâng thì goïi T1, T2,…, Tn laø caùc caây con taïi r töø traùi qua phaûi cuûa T. ° Duyeät tieàn thöù töïï seõ vieáng thaêm r ñaàu tieân; ° tieáp tuïc duyeät T theo kieåu tieàn thöù töï, sau ñoù duyeät T theo 1 2 kieåu tieàn thöù töï,… cho ñeán khi Tn ñöôïc duyeät theo kieåu tieàn thöù töï. 10/01/15 8.3. Caùc phöông 4 Caùc thuaät toaùn duyeät caây • Duyeät caây theo kieåu tieàn thöù töï r 10/01/15 Böôùc 1: thaêm r T1 T2 Tn Böôùc 2: thaêm T1 kieåu tieàn thöù töï Böôùc 3: thaêm T2 kieåu tieàn thöù töï Böôùc n + 1: thaêm Tn kieåu tieàn thöù töï 8.3. Caùc phöông 5 Caùc thuaät toaùn duyeät caây • Ví duï 2. Duyeät kieåu tieàn thöù töï seõ vieáng thaêm caùc ñænh cuûa caây coù goác vaø ñöôïc saép döôùi ñaây theo thöù töï naøo? a b k f h i l j n d g e 10/01/15 c o m p 8.3. Caùc phöông 6 Caùc thuaät toaùn duyeät caây • Ví duï 2. (tieáp theo) a c b e d g h i l n o m p p b e j k f c n o p a 10/01/15 c j m l a f e k h i j o b g f k n a d d g l b e j m h i k n o p f c 8.3. Caùc phöông d g l 7 m h i Caùc thuaät toaùn duyeät caây • • • • • • • Thuaät toaùn 1. Duyeät kieåu tieàn thöù töï procedure preorder(T: caây coù goác vaø ñöôïc saép) r := goác cuûa T lieät keâ r for moãi caây con c cuûa r töø traùi sang phaûi begin T(c) := caây con vôùi goác c preorder(T(c)) end 10/01/15 8.3. Caùc phöông 8 Caùc thuaät toaùn duyeät caây • Ñònh nghóa 2. Giaû söû T laø caây coù goác vaø ñöôïc saép thöù töï vôùi goác r. – Neáu T chæ coù r thì r laø caùch duyeät trung thöù töï cuûa T; – neáu khoâng, thì goïi T1, T2,…, Tn laø caùc caây con taïi r töø traùi qua phaûi cuûa T, ° duyeät trung thöù töïï seõ baét ñaàu baèng vieäc duyeät T theo kieåu 1 trung thöù töïï, ° sau ñoù vieáng thaêm r, ° tieáp tuïc duyeät T theo kieåu trung thöù töï, tieáp tuïc duyeät T theo 2 3 kieåu trung thöù töï,… cho ñeán khi Tn ñöôïc duyeät theo kieåu trung thöù töï. 10/01/15 8.3. Caùc phöông 9 Caùc thuaät toaùn duyeät caây • Duyeät caây theo kieåu trung thöù töï r T1 Böôùc 2: thaêm r T2 Tn Böôùc 1: Böôùc 3: Böôùc n + 1: thaêm T1 thaêm T2 thaêm Tn kieåu trung thöù töï kieåu trung thöù töï kieåu trung thöù töï 10/01/15 8.3. Caùc phöông 10 Caùc thuaät toaùn duyeät caây • Ví duï 3. Duyeät trung thöù töï seõ vieáng thaêm caùc ñænh cuûa caây coù goác vaø ñöôïc saép döôùi ñaây theo thöù töï naøo? a b k f h i l j n d g e 10/01/15 c o m p 8.3. Caùc phöông 11 Caùc thuaät toaùn duyeät caây • Ví duï 3. (tieáp theo) a b e c n 10/01/15 m l o p f a c l g m d h i f a c l g m d h i p o j d h i n m l j l j h i k a c g f k g f b e d j e n k e k b n o p o p b 8.3. Caùc phöông 12 Caùc thuaät toaùn duyeät caây • Thuaät toaùn 2. Duyeät kieåu trung thöù töï procedure inorder(T: caây coù goác vaø ñöôïc saép); r := goác cuûa T if r laø laù then lieät keâ r else begin l := con ñaàu tieân töø traùi sang phaûi cuûa r T(l) := caây con vôùi goác l inorder(T(l)) lieät keâ r for moãi caây con c cuûa r töø traùi sang phaûi tröø l T(c) := caây con vôùi goác c inorder(T(c)) end 10/01/15 8.3. Caùc phöông 13 Caùc thuaät toaùn duyeät caây • Ñònh nghóa 3. Giaû söû T laø caây coù goác vaø ñöôïc saép thöù töï vôùi goác r. – Neáu T chæ coù r thì r laø caùch duyeät haäu thöù töï cuûa T; – neáu khoâng, thì goïi T1, T2,…, Tn laø caùc caây con taïi r töø traùi qua phaûi cuûa T, ° duyeät haäu thöù töïï seõ baét ñaàu baèng vieäc duyeät T theo kieåu haäu 1 thöù töïï, tieáp tuïc duyeät T2 theo kieåu haäu thöù töï,,… cho ñeán khi Tn ñöôïc duyeät theo kieåu haäu thöù töï. ° 10/01/15 cuoái cuøng vieáng thaêm r. 8.3. Caùc phöông 14 Caùc thuaät toaùn duyeät caây • Duyeät caây theo kieåu haäu thöù töï r 10/01/15 Böôùc n + 1: thaêm r T1 T2 Tn Böôùc 1: thaêm T1 kieåu haäu thöù töï Böôùc 2: thaêm T2 kieåu haäu thöù töï Böôùc n: thaêm Tn kieåu haäu thöù töï 8.3. Caùc phöông 15 Caùc thuaät toaùn duyeät caây • Ví duï 4. Duyeät kieåu haäu thöù töï seõ vieáng thaêm caùc ñænh cuûa caây coù goác vaø ñöôïc saép döôùi ñaây theo thöù töï naøo? a b k f h i l j n d g e 10/01/15 c o m p 8.3. Caùc phöông 16 Caùc thuaät toaùn duyeät caây • Ví duï 4. (tieáp theo) c b d f g e k o h i n o h i d a i d a m l j m l p p j 10/01/15 g b c k f j n e a j k n o n o e f b c l m g h p p k e f b c l 8.3. Caùc phöông m g h 17 i d a Caùc thuaät toaùn duyeät caây • Thuaät toaùn 3. Duyeät kieåu haäu thöù töï procedure postorder(T: caây coù goác vaø ñöôïc saép) r := goác cuûa T for moãi caây con c cuûa r töø traùi sang phaûi begin T(c) := caây con vôùi goác c postorder(T(c)) end lieät keâ r 10/01/15 8.3. Caùc phöông 18 Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá • Bieåu thöùc soá hoïc chöùa caùc toaùn töû +, −, ∗, /, ↑ (luyõ thöøa) – Duøng daáu ngoaëc ñeå bieåu thò thöù töï caùc pheùp toaùn. – Bieåu dieån bieåu thöùc baèng caây coù goác vaø ñöôïc saép: ° ñænh trong bieåu thò caùc pheùp toaùn, ° laù bieåu thò caùc soá hay caùc bieán, ° moãi pheùp toaùn taùc ñoäng leân caùc caây con beân traùi vaø beân phaûi (theo thöù töï naøy). 10/01/15 8.3. Caùc phöông 19 Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá • Ví duï 5. Tìm caây coù goác bieåu dieãn bieåu thöùc ((x + y) ↑ 2) + ((x − 4) / 3). – Xaây döïng caây nhò phaân cho bieåu thöùc treân töø döôùi leân. + − + x x y 4 ↑ ↑ + / 2 + 10/01/15 y x 2 3 − 3 − x x / y x 4 8.3. Caùc phöông 20 4 Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá – Nhaän ñöôïc daïng trung toá cuûa bieåu thöùc khi duyeät caây coù goác theo kieåu trung thöù töï vaø duøng caùc daáu ngoaëc moãi khi gaëp moät pheùp toaùn. 10/01/15 8.3. Caùc phöông 21 Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá • + + / + + x x + y x (x + y) / (x + 3) 3 3 / y x / + y x ((x + (y/x)) + 3 x x + (y/(x + 3)) Duyeät kieåu trung toá caùc caây nhò phaân treân ñeàu daãn tôùi bieåu thöùc trung toá x + y / x + 3. Caàn duøng ngoaëc ñôn trong caùch duyeät trung thöù töï moãi khi gaëp moät pheùp toaùn! 10/01/15 8.3. Caùc phöông 22 3 Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá – Nhaän ñöôïc daïng tieàn toá cuûa bieåu thöùc khi duyeät caây coù goác theo kieåu tieàn thöù töï. – Bieåu thöùc döôùi daïng tieàn toá ñöôïc goïi laø kyù phaùp Ba lan. 10/01/15 8.3. Caùc phöông 23 Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá • Ví duï 6. Daïng tieàn toá cuûa bieåu thöùc ((x + y) ↑ 2) + ((x − 4) / 3) – Duyeät caây nhò phaân bieåu dieån bieåu thöùc treân theo kieåu tieàn thöù töï ∀ ⇒ Daïng tieàn toá: + ↑ + x y 2 / − x 4 3 10/01/15 8.3. Caùc phöông 24 Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá • Ví duï 7. Tính giaù trò cuûa bieåu thöùc tieàn toá ∀+ − * 2 3 5 / ↑ 2 3 4 + − * 2 3 5 / ↑ 2 3 4 2↑3=8 + − * 2 3 5 / 8 4 8/4=2 + − * 2 3 5 2 2*3=6 + − 6 5 2 6−5=1 + 1 2 1+2=3 10/01/15 8.3. Caùc phöông 25 Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá – Nhaän ñöôïc daïng haäu toá cuûa moät bieåu thöùc baèng caùch duyeät caây nhò phaân theo kieåu haäu thöù töï. – Bieåu thöùc döôùi daïng haäu toá ñöôïc goïi laø kyù phaùp Ba lan ngöôïc. 10/01/15 8.3. Caùc phöông 26 Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá • Ví duï 8. Daïng haäu toá cuûa bieåu thöùc ((x + y) ↑ 2) + ((x − 4) / 3) – Duyeät caây nhò phaân bieåu dieån bieåu thöùc treân theo kieåu haäu thöù töï ∀ ⇒ Daïng haäu toá: x y + 2 ↑ x 4 − 3 / + 10/01/15 8.3. Caùc phöông 27 Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá • Ví duï 9. Tìm giaù trò cuûa bieåu thöùc haäu toá • 7 2 3 * − 4 ↑ 9 3 /+ 7 2 3 * − 4 ↑ 9 3 + 2*3 = 6 7 6 − 4 ↑ 9 3 / + 1 4 ↑ 9 3 / + / + 7−6=1 1**4 = 1 1 9 3 9/3=3 1 3 + 1+3=4 10/01/15 8.3. Caùc phöông 28 Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá • Ví duï 10. Caây coù goác vaø ñöôïc saép bieåu dieãn meänh ñeà logic phöùc hôïp (¬ (p ∧ q)) ↔ (¬ p ∨ ¬ q) – Xaây döïng caây nhò phaân coù goác cho meänh ñeà treân töø döôùi leân. ∧ p ¬ ¬ p q q ↔ ∨ ¬ ∧ p 10/01/15 q ∨ ¬ ¬ ¬ p q 8.3. Caùc phöông ∧ p q 29 ¬ ¬ p q Caùc kyù phaùp trung toá, tieàn toá vaø haäu toá (¬ (p ∧ q)) ↔ (¬ p ∨ ¬ q) • – Daïng tieàn toá ∀ ↔ ¬ ∧ p q ∨ ¬ p ¬ q – Daïng haäu toá • pq∧¬p¬q¬∨↔ – Daïng trung toá • (¬ (p ∧ q)) ↔ ((¬ p) ∨ (¬ q)) ↔ ∧ p 10/01/15 8.3. Caùc phöông ∨ ¬ q ¬ ¬ p q 30 [...]... 8.3 Các phương 18 Các ký pháp trung tố, tiền tố và hậu tố • Biểu thức số học chứa các toán tử +, −, ∗, /, ↑ (luỹ thừa) – Dùng dấu ngoặc để biểu thò thứ tự các phép toán – Biểu diển biểu thức bằng cây có gốc và được sắp: ° đỉnh trong biểu thò các phép toán, ° lá biểu thò các số hay các biến, ° mỗi phép toán tác động lên các cây con bên trái và bên phải (theo thứ tự này) 10/01/15 8.3 Các phương 19 Các. .. toán duyệt cây • Duyệt cây theo kiểu hậu thứ tự r 10/01/15 Bước n + 1: thăm r T1 T2 Tn Bước 1: thăm T1 kiểu hậu thứ tự Bước 2: thăm T2 kiểu hậu thứ tự Bước n: thăm Tn kiểu hậu thứ tự 8.3 Các phương 15 Các thuật toán duyệt cây • Ví dụ 4 Duyệt kiểu hậu thứ tự sẽ viếng thăm các đỉnh của cây có gốc và được sắp dưới đây theo thứ tự nào? a b k f h i l j n d g e 10/01/15 c o m p 8.3 Các phương 16 Các thuật toán. . .Các thuật toán duyệt cây • Ví dụ 3 Duyệt trung thứ tự sẽ viếng thăm các đỉnh của cây có gốc và được sắp dưới đây theo thứ tự nào? a b k f h i l j n d g e 10/01/15 c o m p 8.3 Các phương 11 Các thuật toán duyệt cây • Ví dụ 3 (tiếp theo) a b e c n 10/01/15 m l o p f a c l g m d h i f a c l g m d h i p o j d h i n m l j l j h i k a c g f k g f b e d j e n k e k b n o p o p b 8.3 Các phương 12 Các. .. Các thuật toán duyệt cây • Thuật toán 2 Duyệt kiểu trung thứ tự procedure inorder(T: cây có gốc và được sắp); r := gốc của T if r là lá then liệt kê r else begin l := con đầu tiên từ trái sang phải của r T(l) := cây con với gốc l inorder(T(l)) liệt kê r for mỗi cây con c của r từ trái sang phải trừ l T(c) := cây con với gốc c inorder(T(c)) end 10/01/15 8.3 Các phương 13 Các thuật toán duyệt cây • Đònh... mỗi khi gặp một phép toán 10/01/15 8.3 Các phương 21 Các ký pháp trung tố, tiền tố và hậu tố • + + / + + x x + y x (x + y) / (x + 3) 3 3 / y x / + y x ((x + (y/x)) + 3 x x + (y/(x + 3)) Duyệt kiểu trung tố các cây nhò phân trên đều dẫn tới biểu thức trung tố x + y / x + 3 Cần dùng ngoặc đơn trong cách duyệt trung thứ tự mỗi khi gặp một phép toán! 10/01/15 8.3 Các phương 22 3 Các ký pháp trung tố, tiền... 6−5=1 + 1 2 1+2=3 10/01/15 8.3 Các phương 25 Các ký pháp trung tố, tiền tố và hậu tố – Nhận được dạng hậu tố của một biểu thức bằng cách duyệt cây nhò phân theo kiểu hậu thứ tự – Biểu thức dưới dạng hậu tố được gọi là ký pháp Ba lan ngược 10/01/15 8.3 Các phương 26 Các ký pháp trung tố, tiền tố và hậu tố • Ví dụ 8 Dạng hậu tố của biểu thức ((x + y) ↑ 2) + ((x − 4) / 3) – Duyệt cây nhò phân biểu diển biểu... 16 Các thuật toán duyệt cây • Ví dụ 4 (tiếp theo) c b d f g e k o h i n o h i d a i d a m l j m l p p j 10/01/15 g b c k f j n e a j k n o n o e f b c l m g h p p k e f b c l 8.3 Các phương m g h 17 i d a Các thuật toán duyệt cây • Thuật toán 3 Duyệt kiểu hậu thứ tự procedure postorder(T: cây có gốc và được sắp) r := gốc của T for mỗi cây con c của r từ trái sang phải begin T(c) := cây con với gốc c... biểu thức khi duyệt cây có gốc theo kiểu tiền thứ tự – Biểu thức dưới dạng tiền tố được gọi là ký pháp Ba lan 10/01/15 8.3 Các phương 23 Các ký pháp trung tố, tiền tố và hậu tố • Ví dụ 6 Dạng tiền tố của biểu thức ((x + y) ↑ 2) + ((x − 4) / 3) – Duyệt cây nhò phân biểu diển biểu thức trên theo kiểu tiền thứ tự ∀ ⇒ Dạng tiền tố: + ↑ + x y 2 / − x 4 3 10/01/15 8.3 Các phương 24 Các ký pháp trung tố,... là cây có gốc và được sắp thứ tự với gốc r – Nếu T chỉ có r thì r là cách duyệt hậu thứ tự của T; – nếu không, thì gọi T1, T2,…, Tn là các cây con tại r từ trái qua phải của T, ° duyệt hậu thứ tựï sẽ bắt đầu bằng việc duyệt T theo kiểu hậu 1 thứ tựï, tiếp tục duyệt T2 theo kiểu hậu thứ tự,,… cho đến khi Tn được duyệt theo kiểu hậu thứ tự ° 10/01/15 cuối cùng viếng thăm r 8.3 Các phương 14 Các thuật toán. .. phương 19 Các ký pháp trung tố, tiền tố và hậu tố • Ví dụ 5 Tìm cây có gốc biểu diễn biểu thức ((x + y) ↑ 2) + ((x − 4) / 3) – Xây dựng cây nhò phân cho biểu thức trên từ dưới lên + − + x x y 4 ↑ ↑ + / 2 + 10/01/15 y x 2 3 − 3 − x x / y x 4 8.3 Các phương 20 4 Các ký pháp trung tố, tiền tố và hậu tố – Nhận được dạng trung tố của biểu thức khi duyệt cây có gốc theo kiểu trung thứ tự và dùng các dấu ngoặc ... thứ tự 8.3 Các phương Các thuật toán duyệt • Ví dụ Duyệt kiểu tiền thứ tự viếng thăm đỉnh có gốc theo thứ tự nào? a b k f h i l j n d g e 10/01/15 c o m p 8.3 Các phương Các thuật toán duyệt • Ví... 10/01/15 8.3 Các phương 10 Các thuật toán duyệt • Ví dụ Duyệt trung thứ tự viếng thăm đỉnh có gốc theo thứ tự nào? a b k f h i l j n d g e 10/01/15 c o m p 8.3 Các phương 11 Các thuật toán duyệt •... tự 8.3 Các phương 15 Các thuật toán duyệt • Ví dụ Duyệt kiểu hậu thứ tự viếng thăm đỉnh có gốc theo thứ tự nào? a b k f h i l j n d g e 10/01/15 c o m p 8.3 Các phương 16 Các thuật toán duyệt

Ngày đăng: 01/10/2015, 14:08

Từ khóa liên quan

Mục lục

  • Cây

  • Hệ đòa chỉ phổ dụng

  • Slide 3

  • Các thuật toán duyệt cây

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Các ký pháp trung tố, tiền tố và hậu tố

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan