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
Xem thêm: Bài giảng toán rời rạc phần các phương pháp duyệt cây , Bài giảng toán rời rạc phần các phương pháp duyệt cây