Professional Documents
Culture Documents
1. M c tiêu
2. Ki n th c c b n c n có h c ch ng này
3. Tài li u tham kh o có liên quan n ch ng
4. N i dung:
I.1 - S c n thi t ph i phân tích gi i thu t.
I.2 - Th i gian th c hi n c a gi i thu t.
I.3 - T su t t ng và ph c t p c a gi i thu t.
I.4 - Cách tính ph c t p.
I.5 - Phân tích các ch ng trình quy.
5. V n nghiên c u c a trang k ti p
· Th i gian th c hi n c a ch ng trình.
· T su t t ng và ph c t p c a gi i thu t.
2.- Gi i thu t n gi n.
I.2.2- n v o th i gian th c hi n.
n v c a T(n) không ph i là n v o th i gian bình th ng nh gi , phút giây... mà th ng
c xác nh b i s các l nh c th c hi n trong m t máy tính lý t ng.
I.3.1- T su t t ng
I.3.2- Khái ni m ph c t p c a gi i thu t
I.3.1- T su t t ng
Ta nói r ng hàm không âm T(n) có su t t ng (growth rate) f(n) n u t n t i các h ng s c
và n0 sao cho T(n) f(n) v i m i n n0.
Nói cách khác ph c t p tính toán c a gi i thu t là m t hàm ch n trên c a hàm th i gian. Vì
ng nhân t c trong hàm ch n trên không có ý ngh a nên ta có th b qua vì v y hàm th hi n ph c
p có các d ng th ng g p sau: log2n, n, nlog2n, n2, n3, 22, n!, nn. Ba hàm cu i cùng ta g i là d ng
hàm m , các hàm khác g i là hàm a th c. M t gi i thu t mà th i gian th c hi n có ph c t p là m t
hàm a th c thì ch p nh n c t c là có th cài t th c hi n, còn các gi i thu t có ph c t p
hàm m thì ph i tìm cách c i ti n gi i thu t.
Khi nói n ph c t p c a gi i thu t là ta mu n nói n hi u qu c a th i gian th c hi n c a
ch ng trình nên ta có th xem vi c xác nh th i gian th c hiên c a ch ng trình chính là xác nh
ph c t p c a gi i thu t.
- Tính th i gian th c hi n c a B.
- Tính th i gian th c hi n c a A.
Trong cách vi t trên, ch ng trình Bubble g i ch ng trình con Swap, do ó tính th i gian
th c hi n c a Bubble, tr c h t ta c n tính th i gian th c hi n c a Swap. D th y th i gian th c hi n
a Swap là O(1) vì nó ch bao g m 3 l nh gán.
Ph ng pháp truy h i
Dùng quy thay th b t k T(m) v i m < n vào phía ph i c a ph ng trình cho n khi t t
T(m) v i m > 1 c thay th b i bi u th c c a các T(1). Vì T(1) luôn là h ng nên chúng ta có công
th c c a T(n) ch a các s h ng ch liên quan n n và các h ng s .
Gi i ph ng trình.
Ví d 1-10: Gi i ph ng trình:
Ta có:
oán nghi m
Thông th ng f(n) là m t trong các hàm quen thu c nh logn, n, nlogn, n2, n3, 2n, n!, nn.
T(n) an logn + b.
Nghi m thu n nh t là nghi m chính xác khi d(n) = 0 v i m i n. Nói m t cách khác, nghi m
thu n nh t bi u di n th i gian gi i t t c các bài toán con.
Khi tìm nghi m c a ph ng trình (I,1), chúng ta ph i tìm nghi m riêng và so sánh v i nghi m
thu n nh t. N u nghi m nào l n h n, ta l y nghi m ó làm nghi m c a ph ng trình (I,1).
Hàm nhân
M t hàm f(n) c g i là hàm nhân (multiplicative function) n u f(m.n) = f(m).f(n) v i m i
nguyên d ng m và n.
Ví d 1-12: Hàm f(n) = nk là m t hàm nhân, vì f(m.n) = (m.n)k = mk.nk = f(m) f(n)
u d(n) trong (I.1) là m t hàm nhân thì theo tính ch t c a hàm nhân ta có
Xét ba tr ng h p sau:
1.- N u a > d(b) thì nghi m riêng là O(ak) = O(nlogba). Nh v y nghi m riêng và nghi m thu n
nh t b ng nhau do ó T(n) là O(nlogba).
2.- N u a < d(b) thì nghi m riêng là O(d(b)k) = O(nlogbd(b)). Trong tr ng h p này nghi m riêng
n h n nghi m thu n nh t nên T(n) = O(nlogbd(b)).
3.- N u a = d(b) thì công th c (I.5) không xác inh nên ta tính tr c ti p nghi m riêng:
Vì a= d(b) nên nghi m riêng là nlogbalogbn và nghi m này l n g p logbn l n nghi m thu n nh t.
Do ó T(n) = O(nlogbalogbn).
Trong ph ng trình (3), d(n) = n3, d(b) = 8 và a < d(b). Vì v y nghi m riêng là O(nlogbd(b)) =
O(n ) và T(n) c a (3) là O(n3).
3
T(1) = 1
ây, 2n1.5 không ph i là hàm nhân nh ng n1.5 là hàm nhân. t U(n) = T(n)/2 v i m i n thì
U(1) = 1/2
Nghi m thu n nh t khi U(1) = 1 là nlog3 = n1.59; vì U(1) = 1/2 nên nghi m thu n nh t là n1.59/2 là
1.59
O(n ). Vì a = 3 và b = 2 và b1.5 = 2.82 < a, nghi m riêng c ng là O(n1.59) và do ó U(n) = O(n1.59) . Vì
T(1) = 1
Vì a = b = 2 nên nghi m thu n nh t là n. Tuy nhiên, d(n) = nlogn không ph i là hàm nhân ta
ph i tính nghi m riêng b ng cách xét tr c ti p:
a) Tính t ng c a các s
Sum := 0;
for i:=1 to n do begin
readln(x);
Sum := Sum + x;
end;
for i := 1 to n do
for j := 1 to n do begin
c[i,j] := 0;
for k := 1 to n do c[i,j] := c[i,j] + a[i,k] * b[k,j];
end;
a) T(n) = 3T(n/2) + n
b) T(n) = 3T(n/2) + n2
c) T(n) = 8T(n/2) + n3
a) T(n) = 4T(n/3) + n
b) T(n) = 4T(n/3) + n2
c) T(n) = 9T(n/3) + n2
a) T(n) = T(n/2) + 1
c) T(n) = 2T(n/2) + n
d) T(n) = 2T(n/2) + n2
1. M c tiêu
2. Ki n th c c b n c n có h c ch ng này
3. Tài li u tham kh o có liên quan n ch ng
4. N i dung:
II.1 - Bài toán s p x p.
II.2 - Các ph ng pháp s p x p n gi n
II.3 - Quicksort.
II.4 - Heapsort.
II.5 - Binsort.
5. V n nghiên c u c a trang k ti p
· Bài toán s p x p.
· M t s gi i thu t s p x p n gi n.
· QuickSort
· HeapSort
· BinSort
const N = 100;
type
KeyType = integer;
OtherType = real;
RecordType = Record
Key : KeyType;
OtherFields : OtherType;
end;
var
a : array[1..N] of RecordType;
Khoá
a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]
c
Ban u 5 6 2 2 10 12 9 10 9 3
c1 2 6 5 2 10 12 9 10 9 3
c2 2 5 6 10 12 9 10 9 3
c3 3 6 10 12 9 10 9 5
c4 5 10 12 9 10 9 6
c5 6 12 9 10 9 10
c6 9 12 10 9 10
c7 9 10 12 10
c8 10 12 10
c9 10 12
t qu 2 2 3 5 6 9 9 10 10 12
Hình 2-1: S p x p ch n
Ch ng trình:
procedure SelectionSort;
var
i,j,LowIndex: integer;
LowKey: KeyType;
begin
(1) for i := 1 to n-1 do begin
(2) LowIndex := i;
(3) LowKey := a[i].key;
(4) for j := i+1 to n do
(5) if a[j].key < LowKey then
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 17
Collected by The_Wall (11/10/2005)
begin
(6) LowKey := a[j].key;
(7) LowIndex := j;
end;
(8) Swap(a[i] , a[LowIndex]);
end;
end;
Các l nh (2), (3) u l y O(1) th i gian. Vòng l p for (4) - (7) th c hi n n-i l n, vì j ch y t
i+1 n n, m i l n l y O(1), nên l y O(n-i) th i gian. Do ó th i gian t ng c ng là:
·B c 1, xen ph n t a[2] vào danh sách ã có th t a[1] sao cho a[1], a[2] là m t danh
sách có th t .
· B c 2, xen ph n t a[3] vào danh sách ã có th t a[1], a[2] sao cho a[1], a[2], a[3] là
t danh sách có th t .
· Ph n t ang xét a[j] s c xen vào v trí thích h p trong danh sách các ph n t ã
c s p tr c ó a[1],a[2],..a[j-1] b ng cách so sánh khoá c a a[j] v i khoá c a a[j-1] ng ngay
tr c nó. N u khoá c a a[j] nh h n khoá c a a[j-1] thì hoán i a[j-1] và a[j] cho nhau và ti p t c so
sánh khoá c a a[j-1] (lúc này a[j-1] ch a n i dung c a a[j]) v i khoá c a a[j-2] ng ngay tr c nó...
Khoá
a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]
c
Ban u 5 6 2 2 10 12 9 10 9 3
c1 5 6
c2 2 5 6
c3 2 2 5 6
c4 2 2 5 6 10
c5 2 2 5 6 10 12
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 18
Collected by The_Wall (11/10/2005)
c6 2 2 5 6 9 10 12
c7 2 2 5 6 9 10 10 12
c8 2 2 5 6 9 9 10 10 12
c9 2 2 3 5 6 9 9 10 10 12
Ch ng trình
procedure InsertionSort;
var
i,j: integer;
begin
{1} for i := 2 to n do begin
{2} J := i;
{3} while (j>1) and (a[j].key < a[j-1].key) do begin
{4} swap(a[j], a[j-1]);
{5} j := j-1;
end;
end;
end;
Sau n b c ta thu c m ng có th t
Khoá
a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]
c
Ban u 5 6 2 2 10 12 9 10 9 3
c1 2 5 6 2 3 10 12 9 10 9
c2 2 5 6 3 9 10 12 9 10
c3 3 5 6 9 9 10 12 10
c4 5 6 9 9 10 10 12
c5 6 9 9 10 10 12
c6 9 9 10 10 12
c7 9 10 10 12
c8 10 10 12
c9 10 12
t qu 2 2 3 5 6 9 9 10 10 12
Hình 2-3: S p x p n i b t
Ch ng trình
procedure BubbleSort;
var
i,j: integer;
begin
(1) for i := 1 to n-1 do
(2) for j := n downto i+1 do
(3) if a[j].key < a[j-1].key then
(4) Swap(a[j],a[j-1]);
end;
II.3- QUICKSORT
II.3.1- Ý t ng
II.3.2- Thi t k gi i thu t
II.3.3- Cài t gi i thu t
II.3.4- Th i gian th c hi n c a QuickSort
II.3.1- Ý t ng
Chúng ta v n xét m ng a các m u tin a[1]..a[n]. Gi s v là 1 giá tr khóa mà ta g i là ch t
(pivot). Ta phân ho ch dãy a[1]..a[n] thành hai m ng con "bên trái" và "bên ph i". M ng con "bên trái"
bao g m các ph n t có khóa nh h n ch t, m ng con "bên ph i" bao g m các ph n t có khóa l n h n
ho c b ng ch t.
n ph n ho ch
Gi i thu t QuickSort
· Xác nh ch t,
· S p x p m ng a[i]..a[k-1] ( quy).
· S p x p m ng a[k]..a[j] ( quy).
Hàm Partition
Hàm Partition nh n vào ba tham s i, j và Pivot th c hi n vi c phân ho ch theo m ng
a[i]..a[j] theo ch t Pivot và tr v giá tr l là ch s u tiên c a m ng “bên ph i”.
QuickSort
Bây gi chúng ta trình bày th t c cu i cùng có tên là QuickSort và chú ý r ng s px p
ng A các record g m n ph n t c a ki u Recordtype ta ch c n g i QuickSort(1,n).
procedure Quicksort(i,j:integer);
var
Pivot : KeyType;
PivotIndex, k : integer;
begin
(1) PivotIndex := FindPivot(i,j);
(2) if PivotIndex <> 0 then
begin
(3) Pivot := a[PivotIndex].key;
(4) k := Partition(i,j,Pivot);
(5) QuickSort(i,k-1);
(6) QuickSort(k,j);
end;
end;
.................
II.4.1- Heap
Cây s p th t b ph n hay còn g i là heap là cây nh phân mà giá tr t i m i nút (khác nút lá)
u không l n h n giá tr c a các con c a nó.
II.4.2- Ý t ng
(1) Xem m ng ban u là m t cây nh phân. M i nút trên cây l u tr m t ph n t m ng,
trong ó a[1] là nút g c và m i nút không là nút lá a[i] có con trái là a[2i] và con ph i là a[2i+1]. V i
cách t ch c này thì cây nh phân thu c s có các nút trong là các nút a[1],..,a[n DIV 2]. T t c các
nút trong u có 2 con, ngo i tr nút a[n DIV 2] có th ch có m t con trái (trong tr ng h p n là m t
ch n).
(2) S p x p cây ban u thành m t heap c n c vào giá tr khoá c a các nút.
procedure PushDown(first,last:integer);
var r:integer;
begin
r:= first; {Xét nút a[first] tr c h t}
while r <= last div 2 do
{Trong khi a[r] còn là nút trong}
if last = 2*r then begin {nút r ch có con trái }
if a[r].key > a[last].key then swap(a[r],a[last]);
r:=last;
end
else
if (a[r].key>a[2*r].key)and(a[2*r].key a[2*r+1].key)then begin
swap(a[r],a[2*r]);
r := 2*r ; {Xét ti p nút con trái }
end
else
if (a[r].key > a[2*r+1].key) and (a[2*r+1].key < a[2*r].key) then begin
swap(a[r],a[2*r+1]);
r := 2*r+1 ; {Xét ti p nút con ph i }
end
else
r := last; {Nút r ã úng v trí }
end;
Th t c HeapSort
· Vi c s p x p cây ban u thành m t heap c ti n hành b ng cách s d ng th t c
PushDown y t t c các nút trong ch a úng v trí xu ng úng v trí c a nó, kh i u t nút a[n
DIV 2], l n ng c t i g c.
procedure HeapSort;
var
i:integer;
begin
(1) for i := (n div 2) downto 1 do
(2) PushDown(i,n);
(3) for i := n downto 2 do begin
(4) swap(a[1],a[i]);
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 26
Collected by The_Wall (11/10/2005)
(5) pushdown(1,i-1);
end;
end;
Khoá a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]
Ban u 5 6 2 2 10 12 9 10 9 3
Trong cây trên, giá tr ghi trong các nút là khoá c a các phân t m ng, giá tr ghi bên ngoài các
nút là ch s c a các ph n t m ng.
Nút 4 và nút 3 ã úng v trí nên không ph i th c hi n s hoán i. T i nút 2, giá tr khóa c a
nó l n h n khoá con trái và khoá c a con trái nh h n khoá c a con ph i nên ta hóan i nút 2 cho con
trái c a nó (nút 4), sau khi hoán i, ta xét l i nút 4, th y nó v n úng v trí nên k t thúc vi c y
xu ng c a nút 2.
Cu i cùng ta xét nút 1, ta th y giá tr khoá c a nút 1 l n h n khoá c a con trái và con trái có
khoá b ng khoá c a con ph i nên hóan i nút 1 cho con trái c a nó (nút 2).
Sau khi th c hi n phép hóan i nút 1 cho nút 2, ta th y nút 2 có giá tr khoá l n h n khoá c a
con ph i c a nó (nút 5) và con ph i có khoá nh h n khoá c a con trái nên ph i th c hi n phép hoán
i nút 2 cho nút 5. Xét l i nút 5 thì nó v n úng v trí nên ta c cây m i trong hình 2-9.
Khoá a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]
Heap 2 3 2 6 5 12 9 10 9 10
T heap ã có trên, hoán i a[1] cho a[10] ta có a[10] là nút có khóa nh nh t, c t b nút
a[10] ra kh i cây. Nh v y ph n cu i m ng ch g m m t ph n t a[10] ã c s p.
II.5.1- Gi i thu t
Nói chung các gi i thu t ã trình bày trên u có ph c t p là O(n2) ho c O(nlogn). Tuy
nhiên khi ki u d li u c a tr ng khoá là m t ki u c bi t , vi c s p x p có th ch chi m O(n) th i
gian. Sau ây ta s xét m t s tr ng h p.
Tr ng h p n gi n: Gi s ta ph i s p x p m t m ng A g m n ph n t có khoá là các s
nguyên có giá tr khác nhau và là các giá tr t 1 n n. Ta s d ng B là m t m ng cùng ki u v i A và
phân ph i vào ph n t b[j] m t ph n t a[i] mà a[i].key = j. Khi ó m ng B l u tr k t qu ã cs p
p c a m ng A.
2, 1, 7, 8, 10, 9, 6 và 3
th c hi n vi c phân ph i này ta ch c n m t l nh l p:
Sau khi n i thì header và end c a danh sách L2 không còn tác d ng n a.
A a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]
Khoá c a A 2 4 1 5 4 2 1 4 1 5
VAR
A: array[1..n] of RecordType;
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 32
Collected by The_Wall (11/10/2005)
B: array[keytype] of ListType;
{Ta gi thi t keytype là ki u mi n con 1..m }
procedure BinSort;
var
i:integer;
j: KeyType;
begin
{1}for i:=1 to n do
INSERT(A[i], END(B[A[i].key]), B[A[i}.key]);
{2}for j:= 2 to m do
CONCATENATE(B[1], B[j]);
end;
K 2: Phân ph i các phân t trong danh sách k t qu c a k 1 vào các bin. Ph n t a[i] s c
phân ph i vào bin B[j] mà j = a[i].key DIV n.
1 K 2
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 33
Collected by The_Wall (11/10/2005)
Bin Bin
0 0 0 0 1 4 9
1 1 81 1 16
2 2 25
3 3 36
4 64 4 4 49
5 25 5
6 36 16 6 64
7 7
8 8 81
9 9 49 9
Theo s phân tích gi i thu t Bin Sort thì m i k l y O(n) th i gian, hai k này n i ti p nhau
nên th i gian t ng c ng là O(n).
a) S p x p ch n.
b) S p x p xen.
c) S p x p n i b t.
d) QuickSort.
e) HeapSort.
1. M c tiêu
2. Ki n th c c b n c n có h c ch ng này
3. Tài li u tham kh o có liên quan n ch ng
4. N i dung:
III.1 - Gi i thu t chia tr
III.2 - Quy ho ch ng
III.3 - K thu t "tham n"
III.4 - K thu t quay lui
III.5 - K thu t tìm ki m a ph ng
5. V n nghiên c u c a trang k ti p
Tóm l i k thu t chia tr bao g m hai quá trình: Phân tích bài toán ã cho thành các bài
toán c s và ng h p k t qu t bài toán c s có l i gi i c a bài toán ban u. Tuy nhiên i v i
t s bài toán, thì quá trình phân tích ã ch a ng vi c t ng h p k t qu do ó n u chúng ta ã gi i
xong các bài toán c s thì bài toán ban u c ng ã c gi i quy t. Ng c l i có nh ng bài toán mà
quá trình phân tích thì n gi n nh ng vi c t ng h p k t qu l i r t khó kh n. Trong các ph n ti p sau
ta s trình bày m t s ví d th y rõ h n u này.
X = A10n/2 + B
Y = C10n/2 + D
i m i s có n/2 ch s , chúng ta l i ti p t c phân tích theo cách trên, quá trình phân tích s
n n bài toán c s là nhân các s nguyên ch g m m t ch s mà ta d dàng th c hi n. Vi c t ng
p k t qu chính là th c hi n các phép toán theo công th c (III.1).
Theo (III.1) thì chúng ta ph i th c hi n 4 phép nhân các s nguyên n/2 ch s (AC, AD, BC,
BD), sau ó t ng h p k t qu b ng 3 phép c ng các s nguyên n ch s và 2 phép nhân v i 10n và
10n/2.
T(1) = 1
Công th c (III.3) ch òi h i 3 phép nhân c a các s nguyên n/2 ch s là: AC, BD và (A-
B)(D-C), 6 phép c ng tr và 2 phép nhân v i 10n. Các phép toán này u l y O(n) th i gian. T (III.3)
ta có ph ng trình quy:
T(1) = 1
T(n) = 3T(n/2) + cn
Gi i ph ng trình quy này ta c nghi m T(n) = O(nlog3) = O(n1.59). Gi i thu t này rõ ràng
ã c c i thi n r t nhi u.
Nguyên t c chung là chúng ta tìm cách chia bài toán thành các bài toán con có kích th c x p x b ng
nhau thì hi u su t s cao h n.
III.2- QUY HO CH NG
Ckn = 1 n u k=0 ho c k = n
T(1) = C1
T(n) = 2T(n-1) + C2
O(0,0) = 1;
O(i,0) =1;
O(i,i) = 1 v i 0 < i ( n;
Ch ng h n v i n = 4 ta có b ng bên.
Áp d ng k thu t tham n s cho m t gi i thu t th i gian a th c, tuy nhiên nói chung chúng
ta ch t c m t ph ng án t t ch không ph i là t i u.
V i ph ng pháp vét c n ta xét t t c các chu trình, m i chu trình tính t ng dài các c nh
a nó r i ch n m t chu trình có t ng dài nh nh t. Tuy nhiên chúng ta c n xét t t c là chu
trình. Th c v y, do m i chu trình u i qua t t c các nh (thành ph ) nên ta có th c nh m t nh.
nh này ta có n-1 c nh t i n-1 nh khác, nên ta có n-1 cách ch n c nh u tiên c a chu trình. Sau
khi ã ch n c c nh u tiên, chúng ta còn n-2 cách ch n c nh th hai, do ó ta có (n-1)(n-2) cách
Do có 6 nh nên có t t c 15 c nh. ó là các c nh: ab, ac, ad, ae, af, bc, bd, be, bf, cd, ce, cf,
de, df và ef. dài các c nh ây là kho ng cách Euclide. Trong 15 c nh này thì de = 3 là nh nh t,
nên de c ch n vào chu trình. K n là 3 c nh ab, bc và ef u có dài là 5. C 3 c nh u th a
mãn hai u ki n nói trên, nên u c ch n vào chu trình. C nh có dài nh k ti p là ac = 7.08,
nh ng không th a c nh này vào chu trình vì nó s t o ra chu trình thi u (a-b-c-a). C nh df c ng b
lo i vì lý do t ng t . C ûnh be c xem xét nh ng r i c ng b lo i do t o ra nh b và nh e có c p
3. T ng t chúng ta c ng lo i bd. cd là c nh ti p theo c xét và c ch n. Cu i cùng ta có chu
trình a-b-c-d-e-f-a v i t ng dài là 50.
ây ch là m t ph ng án t t.
Gi i thu t s b nh sau:
procedure TSP;
begin
{E là t p các c nh }
{S p x p các c nh trong E theo th t t ng c a dài }
Chu_Trinh := F;
Gia := 0.0;
while E <> F do begin
if c nh e có th ch n then begin
Chu_Trinh := Chu_Trinh + e ;
Gia := Gia + dài c a e;
end;
E := E-e;
end ;
end;
Cho m t cái ba lô có th ng m t tr ng l ng W và n lo i v t, m i v t
i có m t tr ng l ng gi và m t giá tr vi. T t c các lo i v t u có s l ng không h n ch . Tìm
t cách l a ch n các v t ng vào ba lô, ch n các lo i v t nào, m i lo i l y bao nhiêu sao cho
ng tr ng l ng không v t quá W và t ng giá tr là l n nh t.
K thu t quay lui (backtracking) nh tên g i c a nó, là m t quá trình phân tích i xu ng. T i
i b c phân tích chúng ta ch a gi i quy t c v n do còn thi u c li u nên c ph i phân tích
cho t i các m d ng, n i chúng ta xác nh c l i gi i c a chúng ho c là xác nh c là không
th (ho c không nên) ti p t c theo h ng này. T các m d ng này chúng ta quay ng c tr l i theo
con ng mà chúng ta ã i qua gi i quy t các v n còn t n ng và cu i cùng ta s gi i quy t
c v n ban u.
III.4.1- nh tr cây bi u th c s h c
Trong các ngôn ng l p trình u có các bi u th c s h c, vi c d ch các bi u th c này òi h i
ph i ánh giá ( nh tr ) chúng. làm c u ó c n ph i có m t bi u di n trung gian cho bi u
th c. M t trong các bi u di n trung gian cho bi u th c là cây bi u th c.
Cây bi u th c s h c là m t cây nh phân, trong ó các nút lá bi u di n cho các toán h ng, các
nút trong bi u di n cho các toán t .
Tr c a nút g c chính là tr c a bi u th c.
Trong cây trò ch i trên, các nút lá c tô n n và vi n khung ôi d phân bi t v i các nút
khác. Ta có th gán cho m i nút lá m t giá tr ph n ánh tr ng thái th ng thua hay hòa c a các u
th . Ch ng h n ta gán cho nút lá các giá tr nh sau:
· 1 n u t i ó ng i i X ã th ng,
· -1 n u t i ó ng i i X ã thua và
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 48
Collected by The_Wall (11/10/2005)
· Khai báo ki u ModeType = (MIN, MAX) xác nh nh tr cho nút là MIN hay MAX.
N u nút n là nút lá thì tr v giá tr ã c gán cho nút lá. Ng c l i ta cho n m t giá tr t m
value là - ho c tùy thu c n là nút MAX hay MIN và xét con c a n. Sau khi m t con c a n có giá tr
V thì t l i value = max(value,V) n u n là nút MAX và value = min(value,V) n u n là nút MIN. Khi
t c các con c a n ã c xét thì giá tr t m value c a n tr thành giá tr c a nó.
tr c a nút n }
begin
if is_leaf(n) then return ( Payoff(n) )
else begin
{Kh i t o giá tr t m cho n }
if mode = MAX then value := - else value := ;
for v i m i con C c a n do
if mode = MAX then
Value := max(Value, Search(C, MIN) )
else Value := min(Value, Search(C, MAX) );
return (value);
end;
end;
Chúng ta c g ng tìm m t cách sao cho khi nh tr m t nút thì không nh t thi t ph i nh tr
cho t t c các nút con cháu c a nó. Tr c h t ta có nh n xét nh sau:
Trên c s nh n xét ó, ta nêu ra quy t c nh tr cho m t nút không ph i là nút lá trên cây nh
sau:
Ví d 3-6: V n d ng quy t c trên nh tr cho nút A trong cây trò ch i trong ví d 3-5.
d hình dung ta s xét hai bài toán quen thu c là bài toán TSP và bài toán cái ba lô.
· quá trình phân nhánh mau chóng t i nút lá, t i m i nút ta c n có m t quy t nh b
sung d a trên nguyên t c là m i nh trong chu trình u có c p 2 và không t o ra m t chu trình thi u.
Ví d 3-7: Xét bài toán TSP có 5 nh v i dài các c nh c cho trong hình 3-12.
Tính c n d i
ây là bài toán tìm min nên ta s d ng n d i. C n d i t i m i nút là m t s nh h n ho c
ng giá c a t t c các ph ng án c bi u di n b i nút ó. Giá c a m t ph ng án ây là t ng
dài c a m t chu trình.
Ví d 3-8: V i s li u cho trong ví d 3-7 nói trên, ta tính c n d i c a nút g c A (hình 3-13)
nh sau:
· nh a ch n ad = 2, ab = 3
· nh b ch n ba = 3, be = 3
· nh c ch n ca = 4, cb = 4
· nh d ch n da = 2, dc = 5
· nh e ch n eb = 3, ed = 6
· nh a ch n ab = 3, ac = 4, do hai c nh này bu c ph i ch n.
· nh b ch n ba = 3, be = 3
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 54
Collected by The_Wall (11/10/2005)
· nh c ch n ca = 4, cb = 4
· nh e ch n eb = 3, ed = 6
thu t nhánh c n
Bây gi ta s k t h p hai k thu t trên xây d ng cây tìm ki m ph ng án. Quy t c nh sau:
· Sau khi phân nhánh cho m i nút, ta tính c n d i cho c hai con.
· M i l n quay lui xét nút con ch a c xét c a m t nút ta ph i xem xét l i nút con ó
có th c t t a các cây c a nó hay không vì có th m t ph ng án có giá nh nh t t m th i v a c
tìm th y.
T p h p các c nh xét phân nhánh là ab, ac, ad, ae, bc, bd, be, cd, ce và de. u ki n b
sung ây là m i nh ph i c ch n hai c nh, b lo i hai c nh và không c t o ra chu trình thi u.
Nút g c A bao g m t t c các ph ng án, có c n d i là 17.5. Phân nhánh cho A, xây d ng hai
con là B và C. Tính c n d i cho hai nút này c c n d i c a B là 17.5 và C là 18.5. Nút B có c n
i nh h n nên c phân nhánh tr c. Hai con c a B là D và E. Các ràng bu c c a D và E gi ng
nh ta ã nói trong ví d c a ph n phân nhánh. Tính c n cho D và E, c c n d i c a D là 20.5 và
a E là 18. Nút E c xét tr c. Phân nhánh cho nút E theo c nh ad, hai con c a E là F và G. F ch a
ad và G không ch a ad. Do F k th a các thu c tính c a E và B, nên F là t p h p các ph ng án ch a
ab, ad và không ch a ac, nh a ã c p 2 v y F không ch a ae. T ng t G ch a ab, không ch a ac,
không ch a ad nên ph i ch a ae. Tính c n d i cho F và G c c n d i c a F là 18 và c a G là 23.
Ti p t c xây d ng hai con cho F theo c nh bc là H và I. H ch a bc và I không ch a bc. Do H k th a
các thu c tính c a B, E và F nên H là các ph ng án ch a ab, ad, không ch a ac và ch a bc. Nh v y
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 55
Collected by The_Wall (11/10/2005)
Ti p t c quay lui n A và xét con C c a nó. Phân nhánh C theo c nh ac thành hai con J và K.
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 56
Collected by The_Wall (11/10/2005)
· W = W (c ) - s v t c ch n * tr ng l ng m i v t.
3. Trong các nút con, ta s u tiên phân nhánh cho nút con nào có c n trên l n h n tr c.
Các con c a nút này t ng ng v i các kh n ng ch n v t có n giá l n ti p theo. V i m i nút ta
i ph i xác nh l i các thông s TGT, W, CT theo công th c ã nói trong b c 2.
Ví d 3-11: V i bài toán cái ba lô ã cho trong ví d 3-2 , sau khi tính n giá cho các v t
và s p x p các v t theo th t gi m d n c a n giá ta c b ng sau.
Trong các nút B, C, D và E thì nút B có c n trên l n nh t nên ta s phân nhánh cho nút B tr c
i hy v ng s có c ph ng án t t t h ng này. T nút B ta ch có m t nút con F duy nh t ng v i
X2=0 (do tr ng l ng còn l i c a ba lô là 7, trong khi tr ng l ng c a m i v t a là 15). Sau khi xác
nh các thông s cho nút F ta có c n trên c a F là 85.5. Ta ti p t c phân nhánh cho nút F. Nút F có 2
con G và H t ng ng v i X3=1 và X3=0. Sau khi xác nh các thông s cho hai nút này ta th y c n
trên c a G là 84 và c a H là 82 nên ta ti p t c phân nhánh cho nút G. Nút G có hai con là I và J t ng
ng v i X4=1 và X4=0. ây là hai nút lá (bi u di n cho ph ng án) vì v i m i nút thì s các v t ã
c ch n xong. Trong ó nút I bi u di n cho ph ng án ch n X1=3, X2=0, X3=1 và X4=1 v i giá
83, trong khi nút J bi u di n cho ph ng án ch n X1=3, X2=0, X3=1 và X4=01 v i giá 81. Nh v y
giá l n nh t t m th i ây là 83.
Quay lui lên nút C, ta th y c n trên c a C là 84>83 nên ti p t c phân nhánh cho nút C. Nút C có
hai con là K và L ng v i X2=1 và X2=0. Sau khi tính các thông s cho K và L ta th y n trên c a K là
83 và c a L là 75.25. C hai giá tr này u không l n h n 83 nên c hai nút này u b c t t a. Cu i
cùng các nút D và E c ng b c t t a. Nh v y t t c các nút trên cây u ã c phân nhánh ho c b
t t a nên ph ng án t t nh t t m th i là ph ng án c n tìm. Theo ó ta c n ch n 3 v t lo i b, 1
t lo i d và m t v t lo i c v i t ng giá tr là 83, t ng tr ng l ng là 36. Xem hình 3-16.
· Xu t phát t m t ph ng án nào ó.
T p h p các c nh xét c thành l p theo th t t nh n l n là ad, ab, be, bc, ac, cd, bd,
de, ae và ce.
Ví d 3-13: Bài toán TSP có 5 nh và các c nh có dài c cho trong hình 3-19
P(i,j) = 1 N u i = 0 và j > 0
P(i,j) = 0 N u i > 0 và j = 0
Bài 2: Bài toán phân công lao ng: Có n công nhân có th làm n công vi c. Công nhân i làm
công vi c j trong m t kho ng th i gian tij. Ph i tìm m t ph ng án phân công nh th nào các công
vi c u c hoàn thành, các công nhân u có vi c làm, m i công nhân ch làm m t công vi c và
i công vi c ch do m t công nhân th c hi n ng th i t ng th i gian là nh nh t.
1. Mô t k thu t “háu n” (greedy) cho bài toán phân công lao ng.
2. Tìm ph ng án theo gi i thu t “háu n” cho bài toán phân công lao ng c cho trong b ng sau.
Trong ó m i dòng là m t công nhân, m i c t là m t công vi c, ô (i,j) ghi th i gian tij mà công nhân i
n hoàn thành công vi c j. (C n ch rõ công nhân nào làm công vi c gì và t ng th i gian là bao
nhiêu ).
a
b 15
c 12 6
d 6 23 16
e 4 5 13 26
f 8 4 10 14 24
g 11 1 2 9 5 7
Hãy s d ng k thu t “tham n” (greedy) tìm m t chu trình có t ng dài các c nh ng n nh t.
Bài 4: Bài toán óng gói: Gi s ta có các h p có cùng kích th c T0 và n i t ng O1, O2, ...On. M i
it ng Oi có kích th c ti . D nhiên ti <= T0 (i=1..n) và các ti này có th b ng nhau.
2. Gi i bài toán c th v i ï các h p kích th c 13, và 9 it ng cói kích th c c cho trong b ng sau:
i t ng O1 O2 O3 O4 O5 O6 O7 O8 O9
Kích th c 7 8 4 9 7 4 6 2 3
b) Áp d ng k thu t háu n tô màu cho các nh c a th sau (các màu có th s dung tô là: , CAM,
VÀNG, XANH, EN, NÂU, TÍM)
Bài 6: Dùng k thu t c t t a alpha-beta nh tr cho nút g c c a cây trò ch i sau (các nút lá
ã c gán tr :
Bài 7: Xét m t trò ch i có 6 viên bi, hai ng i thay phiên nhau nh t t 1 n 3 viên. Ng i
ph i nh t viên bi cu i cùng thì b thua.
a b c d e f g
a
b 15
c 12 6
d 6 23 16
e 4 5 13 26
f 8 4 10 14 24
g 11 1 2 9 5 7
Hãy s d ng k thu t tìm ki m a ph ng xác nh cây ph t i thi u trên th ó.
1. M c tiêu
2. Ki n th c c b n c n có h c ch ng này
3. Tài li u tham kh o có liên quan n ch ng
4. N i dung:
IV.1 - Mô hình x lý ngoài.
IV.2 - ánh giá các gi i thu t x lý ngoài.
IV.3 - S p x p ngoài.
IV.4 - L u tr thông tin trong t p tin.
ghi thông tin ra b nh ngoài, các m u tin l n l t c x p vào trong b m cho n khi
yb m thì nguyên m t kh i c chuy n ra b nh ngoài. Khi ó b m tr nên r ng và l i có
th x p ti p các m u tin vào trong ó.
S p x p d li u c t ch c nh m t t p tin ho c t ng quát h n, s p x p d li u cl u
trên b nh ngoài g i là s p x p ngoài.
Cho t p tin ch a các m u tin r1, r2 , ..., rn, ta nói t p tin c t ch c thành ng có dài k
u ta chia t p tin thành các n k m u tin liên ti p và m i n là m t ng, n cu i có th
không có k m u tin, trong tr ng h p này ta g i n y là uôi (tail).
5 6 9 13 26 27 1 5 8 12 14 17 23 25
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 68
Collected by The_Wall (11/10/2005)
Gi i thu t
s p x p t p tin F có n m u tin ta s d ng 4 t p tin F1, F2, G1 và G2.
Kh i u ta phân ph i các m u tin c a t p tin ã cho F luân phiên vào trong hai t p tin F1 F2.
Nh v y hai t p tin này c xem nh c t ch c thành các ng dài 1.
F: 28 31 3 5 93 96 10 40 54 85 65 9 30 39 90 13 10 8 69 77 8 10 22
28 3 93 10 54 65 30 90 10 69 8 22 F1
31 5 96 40 85 9 39 13 8 77 10 F2
G1: 28 31 93 96 54 85 30 39 8 10 8 10 F1
G2: 3 5 10 40 9 65 13 90 69 77 22 F2
G1: 3 5 28 31 9 54 65 85 8 10 69 77 F1
G2: 10 40 93 96 13 30 39 90 8 10 22 F2
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 69
Collected by The_Wall (11/10/2005)
G1: 3 5 10 28 31 40 93 96 8 8 10 10 22 69 77 F1
G2: 9 13 30 39 54 65 85 90 F2
G1: 3 5 9 10 13 28 30 31 39 40 54 65 85 90 93 96 F1
G2: 8 8 10 10 22 69 77 F2
G1: 3 5 8 8 9 10 10 10 13 22 28 30 31 39 40 54 65 77 85 90 93 96
Ch ng trình
var
OutSwithh : boolean; {N u OutSwitch = TRUE thì ghi vào t p tin g1, ng c l i ghi vào g2}
Winner: integer; { ch nh m u tin hi n hành nào trong hai t p tin f1 và f2 s c ghi ra t p
tin g1 ho c g2}
Used: array[1..2] of integer; { Used[ij] ghi s m u tin ã c c trong ng hi n t i c a t p
tin fj }
Fin : array[1..2] Of boolean; {Fin[j] s có giá tr TRUE n u ã c h t các m u tin trong ng
hi n hành c a fj ho c ã d n cu i t p tin fj }
procedure GetRecord(i:integer);
{N u ã c h t các m u tin trong ng hi n hành c a t p tin fi ho c ã n cu i t p tin fi thì
t fin[i] = TRUE n u không thì c m t m u tin c a t p tin fi vào trong current[i]}
begin
Used[i] := Used[i] + 1;
if (Used[i] = k+1 ) or (i = 1) and ( eof(f1)) or
(i = 12 and ( eof(f2)) then fin[i] := TRUE
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 70
Collected by The_Wall (11/10/2005)
IV.3.2.C i ti n s p x p tr n
Ta th y quá trình s p x p tr n nói trên b t u t các ng dài 1 cho nên ph i sau logn
c gi i thu t m i k t thúc. Chúng ta có th ti t ki m th i gian b ng cách ch n m t s k thích h p
sao cho k m u tin có th ch a trong b nh trong. M i l n c vào b nh trong k m u tin, dùng
p x p trong (ch ng h n dùng QuickSort) s p x p k m u tin này và ghi luân phiên vào hai t p tin
F1 và F2. Nh v y chúng ta b t u s p x p tr n v i các t p tin c t ch c thành các ng dài
k.
Sau i b c thì dài m i ng là k2i. Gi i thu t s k t thúc khi k2i n hay i log . Do ó
phép truy xu t kh i s là . D th y c là ta t ng ct c s p x p tr n.
F: 28 31 3 5 93 96 10 40 54 85 65 9 30 39 90 13 10 8 69 77 8 10 22
3 28 31 10 40 54 30 39 90 8 69 77 F1
5 93 96 9 65 85 8 10 13 10 22 F2
G1: 3 5 28 31 93 96 8 10 13 30 39 90 F1
G2: 9 10 40 54 65 85 8 10 22 69 77 F2
G1: 3 5 9 10 28 31 40 54 65 85 93 96 F1
G2: 8 8 10 10 13 22 30 39 69 77 90 F2
G1: 3 5 8 8 9 10 10 10 13 22 28 30 31 39 40 54 65 77 85 90 93 96
Sau i b c thì dài m i ng là khi và gi i thu t k t thúc khi khi n và khi ó t p tin ã
c s p chính là m t ng ghi trong F[h+1].
F: 28 31 3 5 93 96 10 40 54 85 65 9 30 39 90 13 10 8 69 77 8 10 22.
F[1]: 3 28 31 9 65 85 8 69 77
F[2]: 5 93 96 30 39 90 10 22
F[3]: 10 40 54 8 10 13
c 1: Tr n các ng ü dài 3 trong các t p tin F[1], F[2], F[3] thành các ng dài 9
và ghi vào trong các t p tin F[4], F[5] và F[6].
F[4]: 3 5 10 28 31 40 54 93 96 F[1]
F[5]: 8 9 10 13 30 39 65 85 90 F[2]
F[6]: 8 10 22 69 77 F[3]
c 2: i vai trò c a F[1] cho F[4], F[2] cho F[5] và F[3] cho F[6]. Tr n các ng dài
9 trong các t p tin F[1], F[2], F[3] thành 1 ng dài 23 và ghi vào trong t p tin F[4].
F[4]: 3 5 8 8 9 10 10 10 13 22 28 30 31 39 40 54 65 77 85 90 93 96
IV.4.1- T p tin tu n t
ch c: T p tin tu n t là m t danh sách liên k t c a các kh i, các m u tin c l u tr
trong các kh i theo m t th t b t k .
M t là xoá m u tin c n xoá trong kh i l u tr nó, n u sau khi xoá, kh i tr nên r ng thì xoá
kh i kh i danh sách (gi i phóng b nh ).
Hai là ánh d u xoá m u tin b ng m t cách nào ó. Ngh a là ch xoá m u tin m t cách logic,
vùng không gian nh v n còn dành cho m u tin. Vi c ánh d u có th c th c hi n b ng m t trong
phân ph i các m u tin có khóa x vào trong các danh sách liên k t, ta dùng hàm b m (hash
function). Hàm b m h(x) ánh x m i giá tr khoá x v i m t s nguyên t 0 n m-1. N u h(x) = i thì
u tin r có khóa x s c a vào m t kh i nào ó trong danh sách liên k t c tr b i B[i].
Ví d 4-5: M t t p tin có 24 m u tin v i giá tr khóa là các s nguyên: 3, 5, 12, ,65, 34, 20, 21,
17, 56, 1, 16, 2, 78, ,94, 38 ,15 ,23, 14, 10, 29, 19, 6, 45, 36
Tìm m u tin: tìm m t m u tin r có khóa là x, chúng ta xác nh h(x) ch ng h n h(x) = i khi
ó ta ch c n tìm r trong danh sách liên k t c tr b i B[i]. Ch ng h n tìm m u tin r có khóa là
36, ta tính h(36) = 36 MOD 7 = 1. Nh v y n u m u tin r t n t i trong t p tin thì nó ph i thu c m t
kh i nào ó c tr b i B[1].
Xoá m u tin: xoá m u tin r có khoá x, tr c h t ta tìm m u tin này và t bít xoá c a nó.
Ta c ng có th xoá h n m u tin r và n u vi c xoá này làm kh i tr nên r ng thì ta gi i phóng kh i này
(xoá kh i kh i danh sách liên k t các kh i).
Ví d 4-6: Ta có t p tin g m các m u tin v i khoá là các s nguyên: 5, 8, 3, 11, 23, 10, 28, 25,
27, 38, 16, 46, 42, 31.
u tiên ta s p th t các m u tin theo giá tr khóa: 3, 5, 8, 10, 11, 16, 23, 25, 27, 28, 31, 38,
42, 46.
Thêm m u tin: Gi s t p tin chính c l u trong các kh i B1, B2, ..., Bm. xen m t
un tin r v i khóa x vào trong t p tin, ta ph i dùng th t c tìm ki m xác nh m t kh i Bi nào ó
có th ch a m u tin r. N u Bi còn ch tr ng thì xen r vào úng v trí c a nó trong Bi. Ta ph i ch nh l i
p tin ch m c n u m u tin m i tr thành m u tin u tiên trong kh i Bi. N u Bi không còn ch tr ng
xen thì ta ph i xét kh i Bi+1 có th chuy n m u tin cu i cùng trong kh i Bi thành m u tin u
tiên c a kh i Bi+1 và xen m u tin r vào úng v trí c a nó trong kh i Bi . u ch nh l i t p tin ch
c cho phù h p v i tr ng thái m i c a Bi+1. Quá trình này có th d n n vi c ta ph i xét kh i Bm,
u Bm ã h t ch thì yêu c u h th ng c p thêm m t kh i m i Bm+1, chuy n m u tin cu i cùng c a
Bm sang Bm+1, m u tin cu i cùng c a Bm-1 sang Bm….xen m u tin r vào kh i Bi và c p nh t l i t p
tin ch m c.
Xoá m u tin: xoá m u tin r có khoá x, tr c h t ta c n tìm r, n u không tìm th y thì thông
báo l i, ng c l i ta xoá m u tin r trong kh i ch a nó, n u m u tin b xoá là m u tin u tiên c a kh i
thì ph i c p nh t l i giá tr khoá trong t p tin ch m c. Trong tr ng h p kh i tr nên r ng sau khi xoá
u tin thì gi i phóng kh i ó và xoá c p (khoá, con tr ) c a kh i trong t p tin ch m c. Vi c xoá
trong t p tin ch m c c ng có th d n n vi c gi i phóng kh i trong t p tin này.
N u ta dùng cây tìm ki m nh phân n nút l u tr m t t p tin thì c n trung bình logn phép
truy xu t kh i tìm ki m m t m u tin. N u ta dùng cây tìm ki m m-phân l u tr î m t t p tin thì
ch c n logmn phép truy xu t kh i tìm ki m m t m u tin. Sau ây chúng ta s nghiên c u m t
tr ng h p c bi t c a cây tìm ki m m-phân là B-cây.
B-cây (B-tree)
M i nút không ph i là nút lá có d ng (p0, k1, p1, k2, p2, ..., kn, pn), v i pi (0 i n) làì con
tr , tr t i nút con th i c a nút ó và ki là các giá tr khóa. Các khoá trong m t nút c s p th t ,
c là k1 < k2 < ... < kn.
T t c các khoá trong cây con c tr b i p0 u nh h n k1. T t c các khoá n m trong cây
con c tr b i pi (1 i n) u l n h n ho c b ng ki và nh h n ki+1. T t c các khoá n m trong
cây con c tr b i pn u l n h n ho c b ng kn.
Quá trình trên s d n n vi c xét m t nút lá. Trong nút lá này ta s tìm m u tin r v i khóa x
ng tìm ki m tu n t ho c tìm ki m nh phân.
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 79
Collected by The_Wall (11/10/2005)
Ví d 4-10: Thêm m u tin r có khoá 23 vào trong t p tin bi u di n b i B-cây trong ví d 4-8
(hình 4-5)
· Giá tr khóa c a m u tin u tiên trong L’5 là 24, ta ph i xen 24 và con tr c a L’5 vào
P2, nh ng P2 ã có 5 con v y c n t o ra m t nút m i P’2, chuy n các c p khóa, con tr t ng ng
i 34 và 38 sang P’2 và xen c p con tr , khóa 24 vào P2.
Giáo trình môn Phân tích Gi i Thu t – I C C N TH ........................................................................Trang 80
Collected by The_Wall (11/10/2005)
· Xóa giá tr khóa 10 và con tr c a L2 trong P1, P1 bây gi ch có 2 con (2 < [5/2]).
· Xét nút P2, bên ph i và cùng c p v i P1, P2 có úng [5/2] = 3 con nên ta n i P1 và P2
P1 có úng 5 con,