SlideShare a Scribd company logo
11
Chương 3. Quy hoạch độngChương 3. Quy hoạch động
9.1.9.1.
Các bài toán con chung lồng nhau và giải thuật quy hoạch độCác bài toán con chung lồng nhau và giải thuật quy hoạch độ
9.2.9.2.
Giải thuật quy hoạch động giải bài toán tập độc lập lớn nhấtGiải thuật quy hoạch động giải bài toán tập độc lập lớn nhất
..
9.3.9.3. Giải thuật quy hoạch động giải bài toán cái túiGiải thuật quy hoạch động giải bài toán cái túi
9.4.9.4.
Giải thuật quy hoạch động giải bài toán dãy con lớn nhấtGiải thuật quy hoạch động giải bài toán dãy con lớn nhất
9.5.9.5.
Giải thuật quy hoạch động giải bài toán dãy con chung dài nhGiải thuật quy hoạch động giải bài toán dãy con chung dài nh
..
9.6.9.6.
Giải thuật quy hoạch động giải nhân dãy ma trận.Giải thuật quy hoạch động giải nhân dãy ma trận.
     
2
9.1.9.1.
Các bài toán con chung lồng nhau và gCác bài toán con chung lồng nhau và g
9.1.1.9.1.1.
Ví dụ về bài toán con chung lồng nhauVí dụ về bài toán con chung lồng nhau
9.1.2.9.1.2. Quy hoạch động là gì?Quy hoạch động là gì?
9.1.3. Ba giai đoạn của bài toán quy hoạch9.1.3. Ba giai đoạn của bài toán quy hoạch
độngđộng
     
3
9.1.1. Các bài toán con chung lồng9.1.1. Các bài toán con chung lồng
nhau trong giải thuật chia để trịnhau trong giải thuật chia để trị
Khi chia bài toán thành các bài toán con,Khi chia bài toán thành các bài toán con,
trong nhiều trường hợp, các bài toán controng nhiều trường hợp, các bài toán con
khác nhau lại chứa các bài toán con hoànkhác nhau lại chứa các bài toán con hoàn
toàn giống nhau. Ta nói rằng chúng chứatoàn giống nhau. Ta nói rằng chúng chứa
các bài toán con chung giống nhaucác bài toán con chung giống nhau
Ví dụ:Ví dụ:
     
4
Ví dụ về bài toán con lồng nhauVí dụ về bài toán con lồng nhau
Tính số Fibonaci thứ nTính số Fibonaci thứ n
Định nghĩa số Fibonaci F(n):Định nghĩa số Fibonaci F(n):
 F(0)=0F(0)=0
 F(1)=1F(1)=1
 F(n)=F(n-2)+F(n-1) với n>1F(n)=F(n-2)+F(n-1) với n>1
Ví dụ:Ví dụ:
F(2)=1, F(3)= 2, F(4) = 3 , F(5)=5, F(6)=8F(2)=1, F(3)= 2, F(4) = 3 , F(5)=5, F(6)=8
     
5
Ví dụ:Ví dụ: Tính số Fibonaci thứ nTính số Fibonaci thứ n
Tính theo đệ quyTính theo đệ quy {top down}:{top down}:
Function R_Fibonaci(n);Function R_Fibonaci(n);
 If n<2 then return nIf n<2 then return n
 elseelse
 R_Fibonaci(n):=R_Fibonaci(n-R_Fibonaci(n):=R_Fibonaci(n-
1)+R_Fibonaci(n-21)+R_Fibonaci(n-2););
     
6
So sánh hai giải thuậtSo sánh hai giải thuật
 Khi tính F(5):Khi tính F(5):
 Giải thuật đệ quy tínhGiải thuật đệ quy tính
 F(5) = F(3)+F(4)F(5) = F(3)+F(4)
 Tính F(3) F(3)= F(2)+F(1)Tính F(3) F(3)= F(2)+F(1)
 F(2)=F(1)+F(0) = 1F(2)=F(1)+F(0) = 1
 F(3)= 1+1= 2F(3)= 1+1= 2
 Tính F(4) F(4)= F(2)+F(3)Tính F(4) F(4)= F(2)+F(3)
 F(2)= F(0)+F(1) = 1F(2)= F(0)+F(1) = 1
 F(3)=F(1)+F(2) =F(3)=F(1)+F(2) =
1+F(2)1+F(2)
 F(2)= F(0)+F(1) = 2F(2)= F(0)+F(1) = 2
 F(3)= 1+2 =3F(3)= 1+2 =3
 F(4) = 2+3 = 5F(4) = 2+3 = 5
 Tổng hợp F(5) = 3+5 =8Tổng hợp F(5) = 3+5 =8

     
Để tính F(5):Để tính F(5):
 2 lần tính F(3)2 lần tính F(3)
 3 lần tính F(2)3 lần tính F(2)
7
Tính F5Tính F5
 2 lần tính F(3)2 lần tính F(3)  3 lần tính F(2)3 lần tính F(2)
F5
F3 F4
F1 F2
F0 F1
F2 F3
F1 F2F0 F1
F0 F1
     
8
Dùng Quy hoạch động để tính sốDùng Quy hoạch động để tính số
Fibonacy thứ nFibonacy thứ n
Function Fibonaci(n);Function Fibonaci(n);
 If n < 2 then f:= nIf n < 2 then f:= n
 elseelse
 begin f_0:=0 ; f_1:= 1;begin f_0:=0 ; f_1:= 1;
 For k:=2 to n doFor k:=2 to n do
 beginbegin
 f:=f_0+f_1 ; f_0:= f_1; f_1:= f;f:=f_0+f_1 ; f_0:= f_1; f_1:= f;
 end;end;
 end;end;
 Return f;Return f;
     
9
9.1.2. Quy hoạch động là gì?9.1.2. Quy hoạch động là gì?
Quy hoạch động là một ký thuật thiết kế thuật toánQuy hoạch động là một ký thuật thiết kế thuật toán
trong đó:trong đó:
Bài toán được chia thành những bài toán con kích thướcBài toán được chia thành những bài toán con kích thước
nhỏ hơn và giải chúng một cách độc lập, ghi lại các kếtnhỏ hơn và giải chúng một cách độc lập, ghi lại các kết
quả, để tổng hợp thành lời giải của bài toán ban đầuquả, để tổng hợp thành lời giải của bài toán ban đầu
 Khác với chia để trị:Khác với chia để trị:
 Trong giải thuật chia để trị:Trong giải thuật chia để trị:
 Các bài toán con độc lập, sau đó các bài toán con nàyCác bài toán con độc lập, sau đó các bài toán con này
được giải một cách đệ quy.được giải một cách đệ quy.
 Trong giải thuật quy hoạch động:Trong giải thuật quy hoạch động:
 Các bài toán con là không độc lập với nhau, nghĩa là cácCác bài toán con là không độc lập với nhau, nghĩa là các
bài toán con cùng có chung các bài toán con nhỏ hơn.bài toán con cùng có chung các bài toán con nhỏ hơn.
     
10
9.1.3.9.1.3. Ba giai đoạn của quy hoạch độngBa giai đoạn của quy hoạch động
 Phân rãPhân rã: Chia bài toán cần giải thành những bài: Chia bài toán cần giải thành những bài
toán con nhỏ hơn có cùng dạng với bài toán bantoán con nhỏ hơn có cùng dạng với bài toán ban
đầu sao cho bài toán con kích thước nhỏ nhất cóđầu sao cho bài toán con kích thước nhỏ nhất có
thể giải một cách trực tiếp. Bài toán xuất phát cóthể giải một cách trực tiếp. Bài toán xuất phát có
thể coi là bài toán con có kích thước lớn nhấtthể coi là bài toán con có kích thước lớn nhất
 Giải các bài toán con và ghi nhận lời giải:Giải các bài toán con và ghi nhận lời giải: Lưu trữLưu trữ
lời giải của các bài toán con vào một bảng để sửlời giải của các bài toán con vào một bảng để sử
dụng lại nhiều lần do đó không phải giải lặp lạidụng lại nhiều lần do đó không phải giải lặp lại
cùng một bài toán.cùng một bài toán.
 Tổng hợp lời giải:Tổng hợp lời giải: Lần lượt từ lời giải của các bàiLần lượt từ lời giải của các bài
toán con kích thước nhỏ hơn xây dựng lời giảitoán con kích thước nhỏ hơn xây dựng lời giải
của bài toán kích thước lớn hơn, cho đến khi thucủa bài toán kích thước lớn hơn, cho đến khi thu
được lời giải của bài toán xuất phát (là bài toánđược lời giải của bài toán xuất phát (là bài toán
con có kích thước lớn nhất).con có kích thước lớn nhất).
     
11
Lược đồ quy hoạch độngLược đồ quy hoạch động
Phân rã
Giải và ghi nhận lời
giải các bài toán
con
Tổng hợp
lời giải
Bottom-
Up
     
Kỹ thuật giảiKỹ thuật giải
các bài toán concác bài toán con
của quy hoạchcủa quy hoạch
động là quá trìnhđộng là quá trình
đi từ dưới lênđi từ dưới lên
(bottom – up)(bottom – up) làlà
điểm khác quanđiểm khác quan
trọng vớitrọng với
phương phápphương pháp
chia để trị, trongchia để trị, trong
đó các bài toánđó các bài toán
con được trị mộtcon được trị một
cách đệ quycách đệ quy (top(top
– down).– down).
12
Các yếu tố của một giải thuật quyCác yếu tố của một giải thuật quy
hoạch động giải bài toán tối ưuhoạch động giải bài toán tối ưu
 Cơ sở của quy hoạch độngCơ sở của quy hoạch động: Những: Những
trường hợp đơn giản có thể tính trực tiếptrường hợp đơn giản có thể tính trực tiếp
 Cấu trúc con tối ưuCấu trúc con tối ưu:: Phương pháp chiaPhương pháp chia
nhỏ các bài toán cho đến khi gặp đượcnhỏ các bài toán cho đến khi gặp được
bài toán cơ sở.bài toán cơ sở.
 Tổng hợpTổng hợp: hệ thức truy hồi tính giá trị tối: hệ thức truy hồi tính giá trị tối
ưu của hàm mục tiêu của bài toán lớn quaưu của hàm mục tiêu của bài toán lớn qua
giá trị tối ưu của các bài toán con thànhgiá trị tối ưu của các bài toán con thành
phần.phần.
     
13
Hiệu quả của quy hoạch độngHiệu quả của quy hoạch động
 Khi có các bài toán con lồng nhau, phương phápKhi có các bài toán con lồng nhau, phương pháp
chia để trị sẽ tỏ ra không hiệu quả, khi nó phảichia để trị sẽ tỏ ra không hiệu quả, khi nó phải
lặp đi lặp lại việc giải các bài toán con chung đó.lặp đi lặp lại việc giải các bài toán con chung đó.
 Quy hoạch động sẽQuy hoạch động sẽ giải mỗi bài toán con mộtgiải mỗi bài toán con một
lần và lời giải của các bài toán con sẽ đượclần và lời giải của các bài toán con sẽ được
ghi nhậnghi nhận, để thoát khỏi việc giải lại bài toán con, để thoát khỏi việc giải lại bài toán con
mỗi khi ta đòi hỏi lời giải của nó.mỗi khi ta đòi hỏi lời giải của nó.
 Quy hoạch động thường được áp dụng để giảiQuy hoạch động thường được áp dụng để giải
các bài toán tối ưu. Trong các bài toán tối ưu, tacác bài toán tối ưu. Trong các bài toán tối ưu, ta
có một tập các lời giải, và một hàm mục tiêucó một tập các lời giải, và một hàm mục tiêu
nhận giá trị số. Ta cần tìm một lời giải để hàmnhận giá trị số. Ta cần tìm một lời giải để hàm
mục tiêu đạt giá trị nhỏ nhất hoặc lớn nhất.mục tiêu đạt giá trị nhỏ nhất hoặc lớn nhất.
     
14
Các ví dụ áp dụng quy hoạch độngCác ví dụ áp dụng quy hoạch động
 9.3.9.3. Tập độc lập lớn nhất trên câyTập độc lập lớn nhất trên cây
 9.4.9.4. Bài toán Cái túi dạng 0-1Bài toán Cái túi dạng 0-1
 9.5.9.5. Bài toán dãy con chung dài nhấtBài toán dãy con chung dài nhất
 9.59.5 Bài toán nhân dãy ma trậnBài toán nhân dãy ma trận
 ..... và nhiều bài toán khác..... và nhiều bài toán khác
     
15
9.2. Tập độc lập lớn nhất trên cây9.2. Tập độc lập lớn nhất trên cây
9.2.1.9.2.1.
Tập độc lập và tập độc lập lớn nhất trong đồ thTập độc lập và tập độc lập lớn nhất trong đồ th
có trọng sốcó trọng số
9.2.2. Cơ sở toán học của bài toán tập độc9.2.2. Cơ sở toán học của bài toán tập độc
lập lớn nhất trên cây:lập lớn nhất trên cây: Công thức đệ quyCông thức đệ quy
9.2.3.9.2.3. Mã của giải thuậtMã của giải thuật
9.2.4.9.2.4. Ví dụ minh họaVí dụ minh họa
     
16
1. Tập độc lập trong đồ thị1. Tập độc lập trong đồ thị
Định nghĩa:Định nghĩa:
Cho G = (V,E) là đơn đồ thị vôCho G = (V,E) là đơn đồ thị vô
hướng. Một tập con U cáchướng. Một tập con U các
đỉnh của đồ thị được gọi làđỉnh của đồ thị được gọi là
tập độc lập, nếu như hai đỉnhtập độc lập, nếu như hai đỉnh
bất kỳ trong U là không kềbất kỳ trong U là không kề
nhau trong G.nhau trong G.
Trong đồ thị bên :Trong đồ thị bên :
 tập các đỉnh {A, H, D} là độctập các đỉnh {A, H, D} là độc
lập.lập.
 tập các đỉnh {F, E, I, , D, G} làtập các đỉnh {F, E, I, , D, G} là
không độc lập.không độc lập.
     
A
E
F
D
C
B
G
I
H
17
Tập độc lập lớn nhất của đồ thịTập độc lập lớn nhất của đồ thị
Đinh nghĩaĐinh nghĩa: Cho G là đồ thị vô hướng có hàm: Cho G là đồ thị vô hướng có hàm
trọng số W(v) xác định trên các đỉnh vtrọng số W(v) xác định trên các đỉnh v ∈∈V.V.
(w: V(w: V →→ RR++
). Nếu U là tập độc lập, thì ta gọi). Nếu U là tập độc lập, thì ta gọi
trọng số của U là tổng trọng số của các đỉnhtrọng số của U là tổng trọng số của các đỉnh
trong nó. Ta sẽ gọi tập độc lập với trọng số lớntrong nó. Ta sẽ gọi tập độc lập với trọng số lớn
nhất là tập độc lập lớn nhất.nhất là tập độc lập lớn nhất.
 Bài toán tập độc lập lớn nhất trên đồ thị là mộtBài toán tập độc lập lớn nhất trên đồ thị là một
bài toán khó.bài toán khó.
 Tuy nhiên, khi đồ thị G là cây bài toán này có thểTuy nhiên, khi đồ thị G là cây bài toán này có thể
giải hiệu quả bởi thuật toán quy hoạch độnggiải hiệu quả bởi thuật toán quy hoạch động
     
18
Bài toán tập độc lập lớn nhất trong câyBài toán tập độc lập lớn nhất trong cây
INPUT:INPUT:
 CâyCây T = (V,E)T = (V,E)
 Hàm trọng số trên tập các đỉnhHàm trọng số trên tập các đỉnh w: Vw: V →→ RR
OUTPUTOUTPUT
 Tập con độc lập UTập con độc lập U ⊂⊂ V cóV có ΣΣw(u) , uw(u) , u ∈∈U lớnU lớn
nhấtnhất
     
19
PHÂN RÃ thành các bài toán conPHÂN RÃ thành các bài toán con
Với mỗi đỉnh vVới mỗi đỉnh v ∈∈ V, xét cây conV, xét cây con T(vT(v))
của T có gốc tại đỉnh v.của T có gốc tại đỉnh v.
Kí hiệuKí hiệu
 Big(v)Big(v) là trọng số của của tập độclà trọng số của của tập độc
lập lớn nhất của cây conlập lớn nhất của cây con T(v)T(v)
 BigR(vBigR(v)) là trọng số lớn nhất củalà trọng số lớn nhất của
các tập độc lập của cây concác tập độc lập của cây con T(v)T(v)
có chứa vcó chứa v
 BigNotR(v)BigNotR(v) là trọng số lớn nhấtlà trọng số lớn nhất
của các tập độc lập của cây concủa các tập độc lập của cây con
T(v)T(v) không chứa gốc vkhông chứa gốc v
     
v
u1 u2 uk
20
Trường hợp cơ sở và công thức truy hồiTrường hợp cơ sở và công thức truy hồi
 Trường hợp cơ sở:Trường hợp cơ sở:
Nếu v là láNếu v là lá thì BigNotR(v) = 0; BigR(v) = w(v)thì BigNotR(v) = 0; BigR(v) = w(v)
 Công thức truy hồiCông thức truy hồi::
Giả sử v có các cây con gốc uGiả sử v có các cây con gốc u11, u, u22.., u.., ukk
Gọi U là tập độc lập của cây con gốc v.Gọi U là tập độc lập của cây con gốc v.
 Bài toán con 1Bài toán con 1: Nếu U chứa v thì không chứa u: Nếu U chứa v thì không chứa u11, u, u22.., u.., ukk..
BigR(v)= W(v) +BigR(v)= W(v) + ΣΣ BigNotR(uBigNotR(uii))
(tổng chạy qua tất cả các con của v)(tổng chạy qua tất cả các con của v)
 Bài toán con 2Bài toán con 2: Nếu tập độc lập U không chứa v thì nó là: Nếu tập độc lập U không chứa v thì nó là
hợp của các tập độc lập của các cây con. Do đóhợp của các tập độc lập của các cây con. Do đó
BigNotR(v) =BigNotR(v) = ΣΣ Big(uBig(uii))
 Tổng hợpTổng hợp:: Big(v) = max{BigR(v) , BigNotR(v)}Big(v) = max{BigR(v) , BigNotR(v)}
     
21
Thuật toán quy hoạch độngThuật toán quy hoạch động
 Theo các công thức trên, để tínhTheo các công thức trên, để tính Big(vBig(v) ta) ta
phải dựa vào các giá trịphải dựa vào các giá trị Big(u), BigNotR(uBig(u), BigNotR(u) với) với
mọi đỉnh con u là con của V. Do đó ta sẽ dùngmọi đỉnh con u là con của V. Do đó ta sẽ dùng
phương pháp duyệt hậu thứ tự để tính các hàmphương pháp duyệt hậu thứ tự để tính các hàm
Big, BigRBig, BigR vàvà BigNotRBigNotR từ dưới lên.từ dưới lên.

 Các bước của thuật toán như sau:Các bước của thuật toán như sau:
1. Khởi tao: Mọi đỉnh của v chưa đươc duyệt;1. Khởi tao: Mọi đỉnh của v chưa đươc duyệt;
2. Duyệt hậu thứ tự: Ở mỗi lần duyệt môt đỉnh u2. Duyệt hậu thứ tự: Ở mỗi lần duyệt môt đỉnh u
tính BigR(u), BigNotR(u), Big(u) theo công thứctính BigR(u), BigNotR(u), Big(u) theo công thức
truy hồi ở trên.truy hồi ở trên.
     
22
Tính Big(v) tại đỉnh vTính Big(v) tại đỉnh v
 Procedure CalculateBig(v);Procedure CalculateBig(v);
 BeginBegin
 BigR(v) := W(v); BigNotR(v):= 0BigR(v) := W(v); BigNotR(v):= 0
 For each u in v.Children do {với mỗi con của đỉnh v}For each u in v.Children do {với mỗi con của đỉnh v}
 beginbegin
 BigR(v):= BigR(v)+BigNotR(u);BigR(v):= BigR(v)+BigNotR(u);
 BigNotR(v):= BigNotR(v)+Big(u);BigNotR(v):= BigNotR(v)+Big(u);
 end;end;
 Big(v):=max(BigNotR(v), BigR(v));Big(v):=max(BigNotR(v), BigR(v));
 End;End;
     
23
9.2.3.Tìm tập độc lập lớn nhất của cây9.2.3.Tìm tập độc lập lớn nhất của cây
nhờ duyệt hậu thứ tựnhờ duyệt hậu thứ tự
Procedure MaxTree (v);Procedure MaxTree (v);
 BeginBegin
 For each u in Child(v) do MaxTree (u);For each u in Child(v) do MaxTree (u);
 CalculateBig(v)CalculateBig(v)
 End;End;
Để tính tập độc lập lớn nhất của cả cây gọiĐể tính tập độc lập lớn nhất của cả cây gọi
MaxTree (Root);MaxTree (Root);
     
24
Ví dụ: tập độc lập lớn nhất trong câyVí dụ: tập độc lập lớn nhất trong cây
     
25
9.3. Bài toán cái túi (dạng 0-1).9.3. Bài toán cái túi (dạng 0-1).
Bài toánBài toán
 Một tên trộm tìm thấy n gói đồ vật, gói thứ i cóMột tên trộm tìm thấy n gói đồ vật, gói thứ i có
khối lượng là w[i], có giá trị là v[i] (w[i],v[i]khối lượng là w[i], có giá trị là v[i] (w[i],v[i]∈∈N),N),
nhưng cái túi của anh ta chỉ có thể mang đượcnhưng cái túi của anh ta chỉ có thể mang được
khối lượng tối đa làkhối lượng tối đa là MM (M(M∈∈N). Vậy tên trộm chọnN). Vậy tên trộm chọn
mang những gói nào?mang những gói nào?
 Trong bài toán cái túi dạng 0Trong bài toán cái túi dạng 0−−1 tên trộm với mỗi1 tên trộm với mỗi
gói đồ vật chỉ có thể lấy nguyên vẹn từng góigói đồ vật chỉ có thể lấy nguyên vẹn từng gói
hoặc không lấy.hoặc không lấy.
     
26
Phân rãPhân rã
Giảm kích thước:Giảm kích thước:
Với các giá trịVới các giá trị ii vàvà LL: i = 1,2,.., n và L =0, 1, 2,..., M. Gọi: i = 1,2,.., n và L =0, 1, 2,..., M. Gọi
MaxVMaxV(i,L)(i,L) làlà tổngtổng giá trị lớn nhất có thể chọngiá trị lớn nhất có thể chọn trong i đồtrong i đồ
vật (1,.., i) với trọng lượng tối đa L.vật (1,.., i) với trọng lượng tối đa L.
Bài toán con:Bài toán con:
Trong dãyTrong dãy ii đồ vật 1,.., i có thểđồ vật 1,.., i có thể
 Bài toán con 1Bài toán con 1: Nếu có chọn vật thứ i (nếu w[i] ≤ L), khi: Nếu có chọn vật thứ i (nếu w[i] ≤ L), khi
đó giá trị lớn nhất có thể là:đó giá trị lớn nhất có thể là: MaxV(iMaxV(i−−1, L1, L−− w[i]) + v[i]w[i]) + v[i] ;;
 Bài toán con 2Bài toán con 2: Nếu không chọn vật thứ i, khi đó giá trị: Nếu không chọn vật thứ i, khi đó giá trị
lớn nhất là :lớn nhất là : MaxV(iMaxV(i−−1, L)1, L)
Tổng hợpTổng hợp
MaxV(i, L) =MaxV(i, L) =
max{MaxV(imax{MaxV(i −−1,L1,L−− ww[i[i]]) +v[i] , MaxV(i) +v[i] , MaxV(i −−1,L)1,L)}}
     
27
Công thức truy hồiCông thức truy hồi
 Trường hợp cơ sởTrường hợp cơ sở
 Nếu L = 0 thì MaxV(i,L) = 0 với mọi i=1,..,nNếu L = 0 thì MaxV(i,L) = 0 với mọi i=1,..,n
     
28
Mã: Giải thuật Bag_BestMã: Giải thuật Bag_Best
Procedure Bag_bestProcedure Bag_best
 {Khởi tạo}: For L: = 0 to M do MaxV[0,L] :=0 ;{Khởi tạo}: For L: = 0 to M do MaxV[0,L] :=0 ;
 For i = 1 to n doFor i = 1 to n do
 For L = 1 to M doFor L = 1 to M do
 BeginBegin
 MaxV[i,L] := MaxV[ iMaxV[i,L] := MaxV[ i−−1,L];1,L];
 If (w[i] ≤ L) andIf (w[i] ≤ L) and
(MaxV[i(MaxV[i−−1,L1,L−−w[i]w[i]] +] + v[i] > MaxV[i-1, L])v[i] > MaxV[i-1, L])
thenthen MaxV[i, L] := MaxV[iMaxV[i, L] := MaxV[i−−1,L1,L−−w[i]w[i]]+]+v[i]v[i] ;;
 End;End;
 Return MaxV(n, M)Return MaxV(n, M)
     
29
Ví dụVí dụ
Có 6 đồ vật và tổng trọng lượng tối đa có thểCó 6 đồ vật và tổng trọng lượng tối đa có thể
mang là 10mang là 10
30
GiảiGiải
ii ww vv 11 22 33 44 55 66 77 88 99 1010
11 66 1212
L-w(i)L-w(i) -- -- -- -- -- 00 11 22 33 44
YesYes 00 00 00 00 00 1212 1212 1212 1212 1212
MaxMax 00 00 00 00 00 1212 1212 1212 1212 1212
22 33 11
L’=L-w(i)L’=L-w(i) -- -- 00 11 22 33 44 55 66 77
Max(i-1,L’)Max(i-1,L’) -- -- 00 00 00 00 00 00 1212 1212
YesYes 00 00 11 11 11 11 11 11 1313 1313
MaxMax 00 00 11 11 11 1212 1212 1212 1313 1313
33 33 88
L-w(i)L-w(i) -- -- 00 11 22 33 44 55 66 77
Max(i-1,L’)Max(i-1,L’) 00 00 00 00 11 11 11 11 1313 1313
YesYes 88 88 88 88 99 99 99 99 2020 2020
MaxMax 88 88 88 88 99 1212 1212 1212 2020 2020
31
9.2.2. Bài toán dãy con chung dài nhất9.2.2. Bài toán dãy con chung dài nhất
 Bài toán;Bài toán;
 Cho hai dãy X = (xCho hai dãy X = (x11,x,x22,…,x,…,xmm) và Y = (y) và Y = (y11,y,y22,,
…,y…,ynn). Cần tìm dãy con chung dài nhất của). Cần tìm dãy con chung dài nhất của
hai dãy X và Y.hai dãy X và Y.
     
32
Phân rãPhân rã ..
Với mỗi 0≤ ί ≤ m và 0 ≤ j ≤ n xét bài toán con :Với mỗi 0≤ ί ≤ m và 0 ≤ j ≤ n xét bài toán con :
 Tính C[i, j] là độ dài của dãy con chung dài nhấtTính C[i, j] là độ dài của dãy con chung dài nhất
của hai dãy.của hai dãy.
 XXii=x=x11xx22…x…xii vàvà YYjj =y=y11yy22…y…yii . Chú y rằng. Chú y rằng
( X( Xoo và Yvà Yoo là xâu rỗng)là xâu rỗng)
 Như vậy ta đã phân bài toán cần giải ra thànhNhư vậy ta đã phân bài toán cần giải ra thành
(m+1)(m+1)××(n+1) bài toán con. Bản thân bài toán(n+1) bài toán con. Bản thân bài toán
xuất phát là bài toán con có kích thước lớn nhấtxuất phát là bài toán con có kích thước lớn nhất
C(m,n).C(m,n).
     
33
Bài toán con cơ sở và tổng hợpBài toán con cơ sở và tổng hợp
Các bài toán con cơ sởCác bài toán con cơ sở
 C[0, j] = 0C[0, j] = 0 ∀∀ j = 0.. n và C[i,0] =0,i = 0.. m.j = 0.. n và C[i,0] =0,i = 0.. m.
(là độ dài dãy con chung lớn nhất của dãy rỗng với một(là độ dài dãy con chung lớn nhất của dãy rỗng với một
dãy khác).dãy khác).
TỔNG HỢPTỔNG HỢP
Với i > 0, j > 0 . Tính C[i, j].Với i > 0, j > 0 . Tính C[i, j].
Có hai tình huống:Có hai tình huống:
 Nếu xNếu xii =y=yjj thì dãy con chung dài nhất của Xthì dãy con chung dài nhất của Xii vàYvàYii sẽ thusẽ thu
được bằng việc bổ sung xđược bằng việc bổ sung xii vào dãy con chung dài nhấtvào dãy con chung dài nhất
của hai dãy Xcủa hai dãy Xii−−11và Yvà Yjj−−11
 Nếu xNếu xii ≠ y≠ yii thì dãy con chung dài nhất của Xthì dãy con chung dài nhất của Xii và Yvà Yjj sẽ làsẽ là
dãy con dài hơn trong hai dãy con chung dài nhất củadãy con dài hơn trong hai dãy con chung dài nhất của
(X(Xii−−11 và Yvà Yii) và của (X) và của (Xii và Yvà Yjj−−11) .) .
     
34
Công thức truy hồi để tính C[i,j].Công thức truy hồi để tính C[i,j].
 C[i,j] = 0 nếu i =0 hoặc j=0C[i,j] = 0 nếu i =0 hoặc j=0
 C[i,j] = C[i-1,j-1]+1 nếu xC[i,j] = C[i-1,j-1]+1 nếu xii = y= yjj
 C[i,j] = Max{ C[i-1,j], C[i,j-1]} nếu xC[i,j] = Max{ C[i-1,j], C[i,j-1]} nếu xii ≠≠ yyjj
     
35
Procedure LCS(X,Y)Procedure LCS(X,Y)
 BeginBegin
 {K{Khhởi tạo}ởi tạo}
 For i :=1 to m do c[i,0]:=0;For i :=1 to m do c[i,0]:=0;
 For j: =1 to n do c[0,jFor j: =1 to n do c[0,j ]]:=0;:=0;
 {Tính từ dưới lên}{Tính từ dưới lên}
 For i: =1 to m doFor i: =1 to m do
 for j: = 1 to n dofor j: = 1 to n do
 If xIf xii = y= yjj thenthen
 begin c[i,j]:=c[i-1,j-1]+1; b[i,j]:=’begin c[i,j]:=c[i-1,j-1]+1; b[i,j]:=’’ end’ end
 elseelse
 If c [i-1,j]≥ c[i,j-1] thenIf c [i-1,j]≥ c[i,j-1] then
 begin c[i,j]:=c[i-1,j]; b[i,j]:=’begin c[i,j]:=c[i-1,j]; b[i,j]:=’↑↑’; end’; end
 elseelse
 begin c[i,j]:=c[i,j-1]; b[i,j]:=’begin c[i,j]:=c[i,j-1]; b[i,j]:=’←←’;end;’;end;
 End;End;
     
36
Ví dụ: Dãy con chung dài nhất làVí dụ: Dãy con chung dài nhất là HDAHDA
     
37
Ví dụVí dụ 11 22 33 44 55 66
DD II NN HH VV UU
11 NN
↑↑00 ↑↑00 11 ←11 ←←11 ←←11
22 II
↑↑00  11 ←←11 ←←11 ←←11 ←←11
33 NN
↑↑00 ↑↑11  22 ←← 22 ←← 22 ←← 22
44 HH
↑↑ 00 ↑↑ 11 ↑↑ 22  33 ←← 33 ←← 33
55 CC
↑↑ 00 ↑↑ 11 ↑↑ 22 ↑33 ↑↑ 33 ↑↑ 33
66 UU
↑↑ 00 ↑↑ 11 ↑↑ 22 ↑↑ 33 ↑↑ 33  44
 Nếu X[ i ]=Y[ j ] thì lấy giá trị ô đứng hàng trên bên trái + 1Nếu X[ i ]=Y[ j ] thì lấy giá trị ô đứng hàng trên bên trái + 1
 Nếu X[ i ]Nếu X[ i ] ≠≠ Y[ j ] thì lấy theo giá trị lớn hơn trong hai giá trịY[ j ] thì lấy theo giá trị lớn hơn trong hai giá trị
đứng trên hoặc đứng trướcđứng trên hoặc đứng trước
     
38
Bài toán dãy con liên tiếpBài toán dãy con liên tiếp
có tổng lớn nhấtcó tổng lớn nhất
 Cho dãy A dưới dạng mảng A[1..n ] cácCho dãy A dưới dạng mảng A[1..n ] các
sốsố
 Hãy tìm dãy con các phần tử liên tiếp củaHãy tìm dãy con các phần tử liên tiếp của
dãy A có tổng lớn nhấtdãy A có tổng lớn nhất
 Ví dụ:Ví dụ:
     
39
Phân rãPhân rã
 Gọi S(i) là tổng của dãy con lớn nhấtGọi S(i) là tổng của dãy con lớn nhất
trong dãy i phần tửtrong dãy i phần tử
AAii = a= a[[1], …., a [i], i = 1,2,…, n1], …., a [i], i = 1,2,…, n
thì S(n) là giá trị cần tìm.thì S(n) là giá trị cần tìm.
 Bài toán con cơ sởBài toán con cơ sở
Với i =1 ta có S(1)= aVới i =1 ta có S(1)= a[1[1].].
     
40
Phân rãPhân rã
Giả sử i > 1 và S[k] là đã biết với k = 1,.., iGiả sử i > 1 và S[k] là đã biết với k = 1,.., i−−1.1.
 Ta cần tính S[i] là tổng của dãy con liên tiếp lớnTa cần tính S[i] là tổng của dãy con liên tiếp lớn
nhất của dãy anhất của dãy a[1][1]…, a…, a[i-1][i-1], a, a[i][i]..
Các dãy con liên tiếp của dãy này có thể là mộtCác dãy con liên tiếp của dãy này có thể là một
trong hai trường hợp:trong hai trường hợp:
 Các dãy con liên tiếp có chứa aCác dãy con liên tiếp có chứa a[i][i]
 Các dãy con liên tiếp không chứa aCác dãy con liên tiếp không chứa a[i][i]
Gọi MaxS(i) là tổng lớn nhất của các dãy con liênGọi MaxS(i) là tổng lớn nhất của các dãy con liên
tiếp của dãy a[1]...a[i]tiếp của dãy a[1]...a[i]
MaxE(i) là tổng lớn nhất của các dãy con liên tiếpMaxE(i) là tổng lớn nhất của các dãy con liên tiếp
của dãy a[1]..a[i] chứa chính a[i].của dãy a[1]..a[i] chứa chính a[i].
     
41
Phân rã .....Phân rã .....
 Tổng lớn nhất của các dãy con liên tiếpTổng lớn nhất của các dãy con liên tiếp
của dãy a[1]..a;[i] không chứa a[i] chính làcủa dãy a[1]..a;[i] không chứa a[i] chính là
tổng lớn nhất của các dãy con của dãytổng lớn nhất của các dãy con của dãy
a[1]..a[i-1]a[1]..a[i-1]11, nghiã là MaxS(i, nghiã là MaxS(i−−1).1).
Do đóDo đó
MaxS(i) = max { MaxS(iMaxS(i) = max { MaxS(i−−1) , MaxE(i)}.1) , MaxE(i)}.
     
42
Tính MaxE(i)Tính MaxE(i)
 Để tính MaxE(i), i = 1, 2, …, n, ta cũng có thể sửĐể tính MaxE(i), i = 1, 2, …, n, ta cũng có thể sử
dụng công thức đệ quy như saudụng công thức đệ quy như sau
 1. Với i=1: MaxE(i) = a1. Với i=1: MaxE(i) = a[1][1];;
 2.Với i >1, Gọi S là dãy con kế tiếp lớn nhất của2.Với i >1, Gọi S là dãy con kế tiếp lớn nhất của
dãy a[1]..a[i] có chứa adãy a[1]..a[i] có chứa a[i][i]. Có hai khả năng:. Có hai khả năng:
 Nếu S chứa a[iNếu S chứa a[i−−1] do đó độ dài lớn nhất có thể là1] do đó độ dài lớn nhất có thể là
MaxE(iMaxE(i−−1)+a[i];1)+a[i];
 Nếu S không chứa a[iNếu S không chứa a[i−−1] thì S chỉ gồm a[i]1] thì S chỉ gồm a[i]
 Do đó:Do đó: MMaxEaxE[[ii]] = max {a= max {a[i][i] , MaxE, MaxE[[ii−−1] + a1] + a[i][i] }, i > 1.}, i > 1.
     
43
Procedure Maxsub(a);Procedure Maxsub(a);
 Var MaxS,MaxE, s, e, e1 :Integer ;Var MaxS,MaxE, s, e, e1 :Integer ;
 BeginBegin
 MaxS:=a[1MaxS:=a[1]]; MaxE:= a[1]; s:=1; e:=1;; MaxE:= a[1]; s:=1; e:=1;
s1:=1;s1:=1;
 For i: = 2 to n doFor i: = 2 to n do
 beginbegin
 if MaxE>0 then MaxE:=MaxE+a[i]if MaxE>0 then MaxE:=MaxE+a[i]
 else begin MaxE = a[i]; s1:=i;end;else begin MaxE = a[i]; s1:=i;end;
 if (MaxE > MaxS) thenif (MaxE > MaxS) then
 begin MaxS:= MaxE; e:=i;begin MaxS:= MaxE; e:=i;
s:=s1;end;s:=s1;end;
 End;End;
 End;End;
     
Ý nghĩa các biến:Ý nghĩa các biến:
 maxS: tổngmaxS: tổng
dãy con lớndãy con lớn
nhấtnhất
 maxE: tổngmaxE: tổng
dãy con códãy con có
chứa phần tửchứa phần tử
cuối lớn nhấtcuối lớn nhất
 s,e chỉ số đầus,e chỉ số đầu
và cuối củavà cuối của
dãy con códãy con có
tổng lớn nhấttổng lớn nhất
 s1 chỉ số đầus1 chỉ số đầu
của dãy lớncủa dãy lớn
nhất kết thúcnhất kết thúc
tại itại i
44
Ví dụ Dãy con có tổng lớn nhấtVí dụ Dãy con có tổng lớn nhất
     
45
Nhân dãy ma trậnNhân dãy ma trận
Bài toán: Khi nhân hai ma trận ABài toán: Khi nhân hai ma trận Amnmn và Bvà Bn,pn,p ta dùngta dùng
ba vòng Forba vòng For
For i: = 1 to m doFor i: = 1 to m do
For j := 1 to p doFor j := 1 to p do
Begin C[i,j] := 0;Begin C[i,j] := 0;
For k:=1 to n doFor k:=1 to n do
C[i,j]:= C[i,j]+a[i,k]*b[k,j];C[i,j]:= C[i,j]+a[i,k]*b[k,j];
End;End;
Số các phép nhân phải thực hiện là m*n*p.Số các phép nhân phải thực hiện là m*n*p.
     
46
Nhân dãy ma trậnNhân dãy ma trận
 Xét phép nhân 3 ma trận AXét phép nhân 3 ma trận A3,43,4 x Bx B4,54,5 x Cx C5,65,6..
Có hai cách nhânCó hai cách nhân
ABC=(AB)C và A(BC).ABC=(AB)C và A(BC).
 Tính tích AB cần 3*4*5= 60 phép nhân đựợc maTính tích AB cần 3*4*5= 60 phép nhân đựợc ma
trận D cấp 3x5. Tính DC cần 3x5x6 = 180 phéptrận D cấp 3x5. Tính DC cần 3x5x6 = 180 phép
nhân. Do đó tính (AB)C cần 60+180 = 240 phépnhân. Do đó tính (AB)C cần 60+180 = 240 phép
nhânnhân
 Tính tích (BC) cần 4*5*6= 120 phép nhân đượcTính tích (BC) cần 4*5*6= 120 phép nhân được
ma trận E cấp 4x6; tính AE cần 3x4x6=72 phépma trận E cấp 4x6; tính AE cần 3x4x6=72 phép
nhân. Do đó tính A(BC) cần 120+72= 192 phépnhân. Do đó tính A(BC) cần 120+72= 192 phép
nhân.nhân.
     
47
Bìa toán nhân dãy ma trậnBìa toán nhân dãy ma trận
Xét phép nhân dãy ma trậnXét phép nhân dãy ma trận
MM11MM22..M..Mnn
1). Có bao nhiêu cách tổ chức thứ tự thực1). Có bao nhiêu cách tổ chức thứ tự thực
hiện phép nhân dãy ma trận này?hiện phép nhân dãy ma trận này?
2). Nhân theo thứ tự nào để số phép nhân2). Nhân theo thứ tự nào để số phép nhân
các số là ít nhất?các số là ít nhất?
     
48
Số cách thực hiện dãy phépSố cách thực hiện dãy phép
nhân n ma trậnnhân n ma trận
Ký hiệu T (n) là số cách điền các dấu ngoặc vào biểuKý hiệu T (n) là số cách điền các dấu ngoặc vào biểu
thức tích của n ma trận. Giả sử ta định đặt dấuthức tích của n ma trận. Giả sử ta định đặt dấu
ngoặc phân tách đầu tiên vào giữa ma trận thứ i vàngoặc phân tách đầu tiên vào giữa ma trận thứ i và
ma trận thứ (i + 1) trong biểu thức tích, tức là:ma trận thứ (i + 1) trong biểu thức tích, tức là:
M = (MM = (M11 MM22 … M… Mii)(M)(Mi+1i+1 MMi+2i+2 … M… Mnn))
Khi đó có T(i) cách đặt dấu ngoặc cho thừa số thứKhi đó có T(i) cách đặt dấu ngoặc cho thừa số thứ
nhất (M1 M2 … Mi) và T(n - i) cách đặt dấu ngoặcnhất (M1 M2 … Mi) và T(n - i) cách đặt dấu ngoặc
cho thừa số thứ hai (Mi+1 Mi+2 … Mn) và từ đócho thừa số thứ hai (Mi+1 Mi+2 … Mn) và từ đó
T(i)T(n-i) cách tính biểu thức (MT(i)T(n-i) cách tính biểu thức (M11 MM22 … M… Mii)(M)(Mi+1i+1 MMi+2i+2 ……
MMnn).).
     
49
Có bao nhiêu cách tínhCó bao nhiêu cách tính MM11MM22...M...Mnn??
 Công thức truy hồiCông thức truy hồi





−=
=
∑
−
=
1
1
)()()(
1)1(
n
i
inTiTnT
T
,
1
)( 1
22
−
−= n
nC
n
nT
 Công thức hiệnCông thức hiện
     
50
Có bao nhiêu cách?Có bao nhiêu cách?
 Một số giá trị của T(n)Một số giá trị của T(n)
nn 11 22 33 44 55 1010 1515
T(n)T(n) 11 11 22 55 1414 48624862 26744402674440
     
51
Cách tính tối ưu?Cách tính tối ưu?
 Cách nào đòi hỏi số phép nhân các số ítCách nào đòi hỏi số phép nhân các số ít
nhấtnhất
     
52
Phân rã (Xác định cấu trúc con tối ưu).Phân rã (Xác định cấu trúc con tối ưu).
 Giả sử cách tính tối ưu tích của n ma trận đòiGiả sử cách tính tối ưu tích của n ma trận đòi
hỏi dặt dấu ngoặc tách đầu tiên giữa ma trậnhỏi dặt dấu ngoặc tách đầu tiên giữa ma trận
thứ i và thứ (i+1) của biểu thức tích, thì khithứ i và thứ (i+1) của biểu thức tích, thì khi
đó cả hai tích con (Mđó cả hai tích con (M11 MM22 … M… Mii) và (M) và (Mi+1i+1 MMi+2i+2 ……
MMnn) cũng phải được tính một cách tối ưu.) cũng phải được tính một cách tối ưu.
 Do đó đó số phép nhân cần phải thực hiệnDo đó đó số phép nhân cần phải thực hiện
để nhân dãy ma trận là tổng:để nhân dãy ma trận là tổng:
số phép nhân cần thực hiện để nhân hai dãysố phép nhân cần thực hiện để nhân hai dãy
con + số phép nhân cần thực hiện để nhâncon + số phép nhân cần thực hiện để nhân
hai ma trận kết quảhai ma trận kết quả
     
53
Phân rã bài toánPhân rã bài toán
Gọi mGọi mijij là số phép nhân ít nhất cần thực hiệnlà số phép nhân ít nhất cần thực hiện
để tính tích (iđể tính tích (i ≤≤ j)j)
(M(MiiMMi+1i+1 MMi+2i+2 … M… Mjj),), 1 ≤ i ≤ j ≤ n1 ≤ i ≤ j ≤ n
Giả sử kích thước của các ma trận đượcGiả sử kích thước của các ma trận được
cho bởi véc tơcho bởi véc tơ d[0 … n],d[0 … n], trong đó ma trậntrong đó ma trận
MMii có kích thướccó kích thước ddii−−11 ×× ddii,, i = 1, 2, 3, … ni = 1, 2, 3, … n..
     
54
Trường hợp cơ sởTrường hợp cơ sở
 Khi i = j thì mKhi i = j thì miiii = 0= 0
 Giả sử j = i+s với sGiả sử j = i+s với s ≥≥ 1 và phép nhân cuối cùng tách từ1 và phép nhân cuối cùng tách từ
vị trí thứ kvị trí thứ k
 (M(Mii MMi+1i+1 …M…Mkk)(M)(Mk+1k+1 …. M…. Mi+si+s−−11MMi+si+s).).
 tích thứ nhất là ma trận kích thước (i-1), k, tích thứ haitích thứ nhất là ma trận kích thước (i-1), k, tích thứ hai
co kích thước k, i+sco kích thước k, i+s
 số các phép nhân ít nhất để tính tích theo công thức nàysố các phép nhân ít nhất để tính tích theo công thức này
làlà
mmikik + m+ mk+1k+1,,i+si+s+ d+ dii−−11ddkkddi+si+s
     
55
Công thức đệ quyCông thức đệ quy
 1 < s < n:1 < s < n:
mmi, i+si, i+s=min {m=min {mikik + m+ mk+1k+1,,i+si+s+ d+ dii−−11ddkkddi+si+s || i ≤ k < i+si ≤ k < i+s},},
i = 1, 2, …, n – si = 1, 2, …, n – s..
     
56
Ví dụVí dụ
 Tìm cách tính tối ưu cho tích của bốn maTìm cách tính tối ưu cho tích của bốn ma
trận Mtrận M11MM22MM33MM44 với các kích thướcvới các kích thước
d = (2, 5, 4, 3, 7).d = (2, 5, 4, 3, 7).
Ta có với s=1Ta có với s=1
mm1212 MM11MM22 22 ×× 55 ××44 = 40= 40
mm2323 MM22MM33 55 ××44 ××33 = 60= 60
mm3434 MM33MM44 44 ×× 33 ×× 77 =84=84
     
57
Với s = 2, d = (2, 5, 4, 3, 7).Với s = 2, d = (2, 5, 4, 3, 7).
Cần tính mCần tính m1313, m, m2424
mm1313 MM11MM22MM33 (M(M11MM22 )(M)(M33)) 6464
k=1k=1 (M(M11)(M)(M22 MM33)) mm1111 + m+ m2323 + d+ d00 ×× dd11 ×× dd33==
0+60+2*5*30+60+2*5*3
9090
k=2k=2 (M(M11MM22) (M) (M33)) mm1212 + m+ m3333 + d+ d00 ×× dd22 ×× dd33
=40+0 + 2=40+0 + 2 ××44 ×× 33
6464
mm1212 = 40= 40
mm2323 = 60= 60
mm3434 =84=84
mm1212 = 40= 40
mm2323 = 60= 60
mm3434 =84=84
     
58
Ví dụ với d =Ví dụ với d = (2, 5, 4, 3, 7).(2, 5, 4, 3, 7).
 Tính mTính m2424
mm2424 MM22MM33MM44 (M(M22MM33) (M) (M44)) 165165
k=1k=1 (M(M22)(M)(M33 MM44))
mm2222 + m+ m3434 + d+ d11*d*d22* d* d44 ==
0+ 84+5*4*70+ 84+5*4*7
224224
k=2k=2 (M(M22MM33) (M) (M44))
mm2323 + m+ m4444 + d+ d11 ×× dd33 ×× dd44
=60+0+5=60+0+5 ×× 33 ×× 77
165165
     
mm1212 = 40= 40
mm2323 = 60= 60
mm3434 =84=84
59
Ví dụ với d =Ví dụ với d = (2, 5, 4, 3, 7).(2, 5, 4, 3, 7).
 Với s = 3, ta tínhVới s = 3, ta tính
mm1414 , k = 1, 2 , 3, k = 1, 2 , 3
mm1414 MM11MM22MM33MM44 (M(M11MM22MM33) M) M44
k=1k=1 MM11(M(M22MM33 MM44)) mm1111 + m+ m2424 +d+d00*d*d11*d*d44
0+165+2*5*70+165+2*5*7
235235
k=2k=2 (M(M11MM22) (M) (M33 MM44)) mm1212 + m+ m3434 + d+ d00dd22dd44==
40+84+2*4*740+84+2*4*7
180180
k=3k=3 (M(M11MM22MM33) M) M44 mm1313 + m+ m4444 + d+ d00dd33dd44
64+0+2*3*764+0+2*3*7
106106
     
mm1313 6464 mm1212 4040
mm2424 165165 mm2323 6060
mm3434 8484
60
Ví dụ với d =Ví dụ với d = (2, 5, 4, 3, 7).(2, 5, 4, 3, 7).
 Tổng hợp kết quảTổng hợp kết quả
 Tính tối ưu MTính tối ưu M11MM22MM33 MM44 là tính (Mlà tính (M11MM22MM33) M) M44 vớivới
126 phép nhân các số126 phép nhân các số
 Tính tối ưu (MTính tối ưu (M11MM22 MM33) là tính (M) là tính (M11)(M)(M22 MM33))
Trả lời:Trả lời:
Với dãy các kích thước đã cho cách tính tối ưuVới dãy các kích thước đã cho cách tính tối ưu
làlà (M(M11(M(M22 MM33))M))M44..
     
61
Độ phức tạp tính toánĐộ phức tạp tính toán
 Với mỗi s thỏa mãn 1 < s < n, ta tính :Với mỗi s thỏa mãn 1 < s < n, ta tính :
mmi, i+si, i+s =min {m=min {mikik + m+ mk+1k+1,,i+si+s+ d+ dii−−11ddkkddi+si+s | i ≤ k < i+s},| i ≤ k < i+s},
i = 1, 2, …, n – s.i = 1, 2, …, n – s.
 Với mỗi s > 0, có n – s phần tử trên đường chéoVới mỗi s > 0, có n – s phần tử trên đường chéo
cần tính, để tính mỗi phần tử đó ta cần so sánhcần tính, để tính mỗi phần tử đó ta cần so sánh
s giá trị số tương ứng với các giá trị có thể củas giá trị số tương ứng với các giá trị có thể của
k. Từ đó suy ra số phép toán cần thực hiện theok. Từ đó suy ra số phép toán cần thực hiện theo
thuật toán là cỡthuật toán là cỡ
     
62
Độ phức tạp tính toánĐộ phức tạp tính toán
tương đương vớitương đương với
( )
( ) ( )( )
( )
( )3
3
2
1
1
1
1
2
1
1
0
6/
6/1212/1
n
nn
nnnnn
ssnssn
n
s
n
s
n
s
=
−=
−−−−=
−=− ∑ ∑∑
−
=
−
=
−
=
     
63
Mã giả tựa Pascal tính mMã giả tựa Pascal tính mijij
• BeginBegin
• For i: = 1 to n do m[i,i]:=0;For i: = 1 to n do m[i,i]:=0;
• For s:=1 to n doFor s:=1 to n do
• For i:= 1 to n–s doFor i:= 1 to n–s do
• begin j:=i+s–1; m[i,j]:= +∞;begin j:=i+s–1; m[i,j]:= +∞;
• For k:=i to j–1 doFor k:=i to j–1 do
• begin q:=m[i,k]+m[k+1,j]+d[i-1]*d[k]*d[j];begin q:=m[i,k]+m[k+1,j]+d[i-1]*d[k]*d[j];
• If(q<m[i,j]) thenIf(q<m[i,j]) then
• begin m[i,j]= q; h[i,j] = k;begin m[i,j]= q; h[i,j] = k;
• end;end;
• end;end;
• end;end;
• End;End;
     
64
Nhân hai ma trận với mảng h[i,j] tính từNhân hai ma trận với mảng h[i,j] tính từ
thủ tục trênthủ tục trên
 Procedure Mult(i,j);Procedure Mult(i,j);
 BeginBegin
 If(i<j) thenIf(i<j) then
 BeginBegin
 k := h[i,j];k := h[i,j];
 X := Mult(i,k);X := Mult(i,k);
 Y := Mult(k+1,j)Y := Mult(k+1,j)
 Return X*Y; {Nhân ma trận X và Y}Return X*Y; {Nhân ma trận X và Y}
 EndEnd
 ElseElse
 Return M[i];Return M[i];
 End;End;
     
65
Bài tậpBài tập
 Tìm cách nhân tối ưu để tính tích củaTìm cách nhân tối ưu để tính tích của
dãy ma trậndãy ma trận
A1A1×× A2A2 ×× A3A3 ×× A4A4
trong đó vectơ kích thước của chúng làtrong đó vectơ kích thước của chúng là
(2,4,5,3,2)(2,4,5,3,2)
     

More Related Content

What's hot

Chuong 2. de quy dai hoc
Chuong 2. de quy   dai hocChuong 2. de quy   dai hoc
Chuong 2. de quy dai hocVũ Nam
 
Phân tích một số thuật toán
Phân tích một số thuật toánPhân tích một số thuật toán
Phân tích một số thuật toán
Hồ Lợi
 
Đề tài: Thiết kế và phân tích thuật toán, HAY
Đề tài: Thiết kế và phân tích thuật toán, HAYĐề tài: Thiết kế và phân tích thuật toán, HAY
Đề tài: Thiết kế và phân tích thuật toán, HAY
Viết thuê trọn gói ZALO 0934573149
 
Phương pháp nhánh cận
Phương pháp nhánh cậnPhương pháp nhánh cận
Phương pháp nhánh cận
Diên Vĩ
 
ThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNguest717ec2
 
Timkiem&sapxep
Timkiem&sapxepTimkiem&sapxep
Timkiem&sapxep
Nguyễn Công Hoàng
 
Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2Hồ Lợi
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
Nguyễn Công Hoàng
 
Quy hoạch động
Quy hoạch độngQuy hoạch động
Quy hoạch độnghana_dt
 
Phân tích và thiết kế thuật toán độ phức tạp
Phân tích và thiết kế thuật toán   độ phức tạpPhân tích và thiết kế thuật toán   độ phức tạp
Phân tích và thiết kế thuật toán độ phức tạp
giangnguyn853776
 
Quy hoach tuyen tinh C3
Quy hoach tuyen tinh C3Quy hoach tuyen tinh C3
Quy hoach tuyen tinh C3
Ngo Hung Long
 
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
Nguyen Vietnam
 
Chuong 05 de quy
Chuong 05 de quyChuong 05 de quy
Chuong 05 de quy
Cau Chu Nho
 
[Math educare.com] giai tich ham nhieu bien-phep tinh vi tich phan ham nhieu ...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi tich phan ham nhieu ...[Math educare.com] giai tich ham nhieu bien-phep tinh vi tich phan ham nhieu ...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi tich phan ham nhieu ...
Nguyen Vietnam
 
Bai giang-toan-kinh-te-tin-hoc
Bai giang-toan-kinh-te-tin-hocBai giang-toan-kinh-te-tin-hoc
Bai giang-toan-kinh-te-tin-hoc
Lê Ngọc Huyền
 

What's hot (20)

Chuong 1
Chuong 1Chuong 1
Chuong 1
 
Chuong 2. de quy dai hoc
Chuong 2. de quy   dai hocChuong 2. de quy   dai hoc
Chuong 2. de quy dai hoc
 
Phân tích một số thuật toán
Phân tích một số thuật toánPhân tích một số thuật toán
Phân tích một số thuật toán
 
Đề tài: Thiết kế và phân tích thuật toán, HAY
Đề tài: Thiết kế và phân tích thuật toán, HAYĐề tài: Thiết kế và phân tích thuật toán, HAY
Đề tài: Thiết kế và phân tích thuật toán, HAY
 
Phương pháp nhánh cận
Phương pháp nhánh cậnPhương pháp nhánh cận
Phương pháp nhánh cận
 
ThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáN
 
Timkiem&sapxep
Timkiem&sapxepTimkiem&sapxep
Timkiem&sapxep
 
Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2
 
Phương pháp tham lam
Phương pháp tham lamPhương pháp tham lam
Phương pháp tham lam
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
 
Quy hoạch động
Quy hoạch độngQuy hoạch động
Quy hoạch động
 
Phân tích và thiết kế thuật toán độ phức tạp
Phân tích và thiết kế thuật toán   độ phức tạpPhân tích và thiết kế thuật toán   độ phức tạp
Phân tích và thiết kế thuật toán độ phức tạp
 
Quy hoach tuyen tinh C3
Quy hoach tuyen tinh C3Quy hoach tuyen tinh C3
Quy hoach tuyen tinh C3
 
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
 
Gt de quy
Gt de quyGt de quy
Gt de quy
 
Tối ưu hóa
Tối ưu hóaTối ưu hóa
Tối ưu hóa
 
Chuong 05 de quy
Chuong 05 de quyChuong 05 de quy
Chuong 05 de quy
 
[Math educare.com] giai tich ham nhieu bien-phep tinh vi tich phan ham nhieu ...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi tich phan ham nhieu ...[Math educare.com] giai tich ham nhieu bien-phep tinh vi tich phan ham nhieu ...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi tich phan ham nhieu ...
 
Bai giang-toan-kinh-te-tin-hoc
Bai giang-toan-kinh-te-tin-hocBai giang-toan-kinh-te-tin-hoc
Bai giang-toan-kinh-te-tin-hoc
 
Lttt b11
Lttt b11Lttt b11
Lttt b11
 

Similar to Chương 9 quy hoachdong

Luận văn thạc sĩ: Quy hoạch toàn phương, HAY, 9đ
Luận văn thạc sĩ: Quy hoạch toàn phương, HAY, 9đLuận văn thạc sĩ: Quy hoạch toàn phương, HAY, 9đ
Luận văn thạc sĩ: Quy hoạch toàn phương, HAY, 9đ
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
ChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdfChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdf
HngAnhV13
 
ĐỒ ÁN - SẮP XẾP LỊCH THI ĐẤU TENNIS BẰNG THUẬT TOÁN CHIA ĐỂ TRỊ (Ngôn ngữ C).doc
ĐỒ ÁN - SẮP XẾP LỊCH THI ĐẤU TENNIS BẰNG THUẬT TOÁN CHIA ĐỂ TRỊ (Ngôn ngữ C).docĐỒ ÁN - SẮP XẾP LỊCH THI ĐẤU TENNIS BẰNG THUẬT TOÁN CHIA ĐỂ TRỊ (Ngôn ngữ C).doc
ĐỒ ÁN - SẮP XẾP LỊCH THI ĐẤU TENNIS BẰNG THUẬT TOÁN CHIA ĐỂ TRỊ (Ngôn ngữ C).doc
DV Viết Luận văn luanvanmaster.com ZALO 0973287149
 
Chuyen desohocvmf
Chuyen desohocvmfChuyen desohocvmf
Chuyen desohocvmf
Nguyễn Diệp Anh
 
Chuyen de so hoc nang cao VN
Chuyen de so hoc nang cao VNChuyen de so hoc nang cao VN
Chuyen de so hoc nang cao VN
vothimyhanh
 
Thuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pThuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo p
Bui Loi
 
Luận văn: Một số phương pháp giải phương trình hàm, HOT, 9đ
Luận văn: Một số phương pháp giải phương trình hàm, HOT, 9đLuận văn: Một số phương pháp giải phương trình hàm, HOT, 9đ
Luận văn: Một số phương pháp giải phương trình hàm, HOT, 9đ
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Thpt hoang le kha-MVN 2
Thpt hoang le kha-MVN 2Thpt hoang le kha-MVN 2
Thpt hoang le kha-MVN 2
nguyen nguyen APi
 
Chuong2 de qui
Chuong2 de quiChuong2 de qui
Chuong2 de qui
Quoc Nguyen
 
Tuan1_GioiThieu.pdf
Tuan1_GioiThieu.pdfTuan1_GioiThieu.pdf
Tuan1_GioiThieu.pdf
NguynVnTun74
 
Bài Toán Đổi Tiền Của Frobenius.docx
Bài Toán Đổi Tiền Của Frobenius.docxBài Toán Đổi Tiền Của Frobenius.docx
Bài Toán Đổi Tiền Của Frobenius.docx
DV Viết Luận văn luanvanmaster.com ZALO 0973287149
 
Đang thức, bat đang thức tích phân trong l p đa thức và phân thức hữu ty và m...
Đang thức, bat đang thức tích phân trong l p đa thức và phân thức hữu ty và m...Đang thức, bat đang thức tích phân trong l p đa thức và phân thức hữu ty và m...
Đang thức, bat đang thức tích phân trong l p đa thức và phân thức hữu ty và m...
DV Viết Luận văn luanvanmaster.com ZALO 0973287149
 
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdf
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdfVận dụng giới hạn dãy số trong giải phương trình hàm.pdf
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdf
vongoccuong
 
Số Phức Và Ứng Dụng Vào Giải Toán Phổ Thông Trung Học.doc
Số Phức Và Ứng Dụng Vào Giải Toán Phổ Thông Trung Học.docSố Phức Và Ứng Dụng Vào Giải Toán Phổ Thông Trung Học.doc
Số Phức Và Ứng Dụng Vào Giải Toán Phổ Thông Trung Học.doc
Dịch vụ viết đề tài trọn gói 0934.573.149
 
Toán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docx
Toán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docxToán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docx
Toán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docx
DV Viết Luận văn luanvanmaster.com ZALO 0973287149
 
Luận văn: Một số lớp bài toán về loại phương trình hàm, HAY - Gửi miễn phí qu...
Luận văn: Một số lớp bài toán về loại phương trình hàm, HAY - Gửi miễn phí qu...Luận văn: Một số lớp bài toán về loại phương trình hàm, HAY - Gửi miễn phí qu...
Luận văn: Một số lớp bài toán về loại phương trình hàm, HAY - Gửi miễn phí qu...
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Luận văn: Một số lớp bài toán về phương trình hàm, HAY, 9đ
Luận văn: Một số lớp bài toán về phương trình hàm, HAY, 9đLuận văn: Một số lớp bài toán về phương trình hàm, HAY, 9đ
Luận văn: Một số lớp bài toán về phương trình hàm, HAY, 9đ
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Chg4 tham lam
Chg4 tham lamChg4 tham lam
Chg4 tham lam
hoangnguyentien
 
Ứng Dụng Hình Học Giải Tích Vào Giải Phương Trình, Bất Phương Trình Và Hệ Phư...
Ứng Dụng Hình Học Giải Tích Vào Giải Phương Trình, Bất Phương Trình Và Hệ Phư...Ứng Dụng Hình Học Giải Tích Vào Giải Phương Trình, Bất Phương Trình Và Hệ Phư...
Ứng Dụng Hình Học Giải Tích Vào Giải Phương Trình, Bất Phương Trình Và Hệ Phư...
Dịch vụ viết đề tài trọn gói 0934.573.149
 
Ứng Dụng Hình Học Tính Toán Để Xác Định Một Miền Chứa Điểm Cho Trƣớc.doc
Ứng Dụng Hình Học Tính Toán Để Xác Định Một Miền Chứa Điểm Cho Trƣớc.docỨng Dụng Hình Học Tính Toán Để Xác Định Một Miền Chứa Điểm Cho Trƣớc.doc
Ứng Dụng Hình Học Tính Toán Để Xác Định Một Miền Chứa Điểm Cho Trƣớc.doc
Dịch vụ viết thuê Luận Văn - ZALO 0932091562
 

Similar to Chương 9 quy hoachdong (20)

Luận văn thạc sĩ: Quy hoạch toàn phương, HAY, 9đ
Luận văn thạc sĩ: Quy hoạch toàn phương, HAY, 9đLuận văn thạc sĩ: Quy hoạch toàn phương, HAY, 9đ
Luận văn thạc sĩ: Quy hoạch toàn phương, HAY, 9đ
 
ChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdfChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdf
 
ĐỒ ÁN - SẮP XẾP LỊCH THI ĐẤU TENNIS BẰNG THUẬT TOÁN CHIA ĐỂ TRỊ (Ngôn ngữ C).doc
ĐỒ ÁN - SẮP XẾP LỊCH THI ĐẤU TENNIS BẰNG THUẬT TOÁN CHIA ĐỂ TRỊ (Ngôn ngữ C).docĐỒ ÁN - SẮP XẾP LỊCH THI ĐẤU TENNIS BẰNG THUẬT TOÁN CHIA ĐỂ TRỊ (Ngôn ngữ C).doc
ĐỒ ÁN - SẮP XẾP LỊCH THI ĐẤU TENNIS BẰNG THUẬT TOÁN CHIA ĐỂ TRỊ (Ngôn ngữ C).doc
 
Chuyen desohocvmf
Chuyen desohocvmfChuyen desohocvmf
Chuyen desohocvmf
 
Chuyen de so hoc nang cao VN
Chuyen de so hoc nang cao VNChuyen de so hoc nang cao VN
Chuyen de so hoc nang cao VN
 
Thuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pThuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo p
 
Luận văn: Một số phương pháp giải phương trình hàm, HOT, 9đ
Luận văn: Một số phương pháp giải phương trình hàm, HOT, 9đLuận văn: Một số phương pháp giải phương trình hàm, HOT, 9đ
Luận văn: Một số phương pháp giải phương trình hàm, HOT, 9đ
 
Thpt hoang le kha-MVN 2
Thpt hoang le kha-MVN 2Thpt hoang le kha-MVN 2
Thpt hoang le kha-MVN 2
 
Chuong2 de qui
Chuong2 de quiChuong2 de qui
Chuong2 de qui
 
Tuan1_GioiThieu.pdf
Tuan1_GioiThieu.pdfTuan1_GioiThieu.pdf
Tuan1_GioiThieu.pdf
 
Bài Toán Đổi Tiền Của Frobenius.docx
Bài Toán Đổi Tiền Của Frobenius.docxBài Toán Đổi Tiền Của Frobenius.docx
Bài Toán Đổi Tiền Của Frobenius.docx
 
Đang thức, bat đang thức tích phân trong l p đa thức và phân thức hữu ty và m...
Đang thức, bat đang thức tích phân trong l p đa thức và phân thức hữu ty và m...Đang thức, bat đang thức tích phân trong l p đa thức và phân thức hữu ty và m...
Đang thức, bat đang thức tích phân trong l p đa thức và phân thức hữu ty và m...
 
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdf
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdfVận dụng giới hạn dãy số trong giải phương trình hàm.pdf
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdf
 
Số Phức Và Ứng Dụng Vào Giải Toán Phổ Thông Trung Học.doc
Số Phức Và Ứng Dụng Vào Giải Toán Phổ Thông Trung Học.docSố Phức Và Ứng Dụng Vào Giải Toán Phổ Thông Trung Học.doc
Số Phức Và Ứng Dụng Vào Giải Toán Phổ Thông Trung Học.doc
 
Toán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docx
Toán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docxToán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docx
Toán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docx
 
Luận văn: Một số lớp bài toán về loại phương trình hàm, HAY - Gửi miễn phí qu...
Luận văn: Một số lớp bài toán về loại phương trình hàm, HAY - Gửi miễn phí qu...Luận văn: Một số lớp bài toán về loại phương trình hàm, HAY - Gửi miễn phí qu...
Luận văn: Một số lớp bài toán về loại phương trình hàm, HAY - Gửi miễn phí qu...
 
Luận văn: Một số lớp bài toán về phương trình hàm, HAY, 9đ
Luận văn: Một số lớp bài toán về phương trình hàm, HAY, 9đLuận văn: Một số lớp bài toán về phương trình hàm, HAY, 9đ
Luận văn: Một số lớp bài toán về phương trình hàm, HAY, 9đ
 
Chg4 tham lam
Chg4 tham lamChg4 tham lam
Chg4 tham lam
 
Ứng Dụng Hình Học Giải Tích Vào Giải Phương Trình, Bất Phương Trình Và Hệ Phư...
Ứng Dụng Hình Học Giải Tích Vào Giải Phương Trình, Bất Phương Trình Và Hệ Phư...Ứng Dụng Hình Học Giải Tích Vào Giải Phương Trình, Bất Phương Trình Và Hệ Phư...
Ứng Dụng Hình Học Giải Tích Vào Giải Phương Trình, Bất Phương Trình Và Hệ Phư...
 
Ứng Dụng Hình Học Tính Toán Để Xác Định Một Miền Chứa Điểm Cho Trƣớc.doc
Ứng Dụng Hình Học Tính Toán Để Xác Định Một Miền Chứa Điểm Cho Trƣớc.docỨng Dụng Hình Học Tính Toán Để Xác Định Một Miền Chứa Điểm Cho Trƣớc.doc
Ứng Dụng Hình Học Tính Toán Để Xác Định Một Miền Chứa Điểm Cho Trƣớc.doc
 

More from hoangnguyentien

Map reduce hdfs
Map reduce hdfsMap reduce hdfs
Map reduce hdfs
hoangnguyentien
 
Chg2 danh sach
Chg2 danh sachChg2 danh sach
Chg2 danh sach
hoangnguyentien
 
Chg 6 do thi
Chg 6 do thiChg 6 do thi
Chg 6 do thi
hoangnguyentien
 
Pt thuat toan
Pt thuat toanPt thuat toan
Pt thuat toan
hoangnguyentien
 
Bai3 access-form
Bai3 access-formBai3 access-form
Bai3 access-form
hoangnguyentien
 
Ngon ngu c
Ngon ngu cNgon ngu c
Ngon ngu c
hoangnguyentien
 
Thiet kecaidatmang
Thiet kecaidatmangThiet kecaidatmang
Thiet kecaidatmang
hoangnguyentien
 
Tu hoc asp
Tu hoc aspTu hoc asp
Tu hoc asp
hoangnguyentien
 
Net06 asp.net applications & state management
Net06 asp.net applications & state managementNet06 asp.net applications & state management
Net06 asp.net applications & state management
hoangnguyentien
 
A guide asean 1_sem 2
A guide asean 1_sem 2A guide asean 1_sem 2
A guide asean 1_sem 2
hoangnguyentien
 

More from hoangnguyentien (10)

Map reduce hdfs
Map reduce hdfsMap reduce hdfs
Map reduce hdfs
 
Chg2 danh sach
Chg2 danh sachChg2 danh sach
Chg2 danh sach
 
Chg 6 do thi
Chg 6 do thiChg 6 do thi
Chg 6 do thi
 
Pt thuat toan
Pt thuat toanPt thuat toan
Pt thuat toan
 
Bai3 access-form
Bai3 access-formBai3 access-form
Bai3 access-form
 
Ngon ngu c
Ngon ngu cNgon ngu c
Ngon ngu c
 
Thiet kecaidatmang
Thiet kecaidatmangThiet kecaidatmang
Thiet kecaidatmang
 
Tu hoc asp
Tu hoc aspTu hoc asp
Tu hoc asp
 
Net06 asp.net applications & state management
Net06 asp.net applications & state managementNet06 asp.net applications & state management
Net06 asp.net applications & state management
 
A guide asean 1_sem 2
A guide asean 1_sem 2A guide asean 1_sem 2
A guide asean 1_sem 2
 

Recently uploaded

AV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in englishAV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in english
Qucbo964093
 
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
duykhoacao
 
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
ngocnguyensp1
 
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdfGIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
Điện Lạnh Bách Khoa Hà Nội
 
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
https://www.facebook.com/garmentspace
 
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptxDẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
nvlinhchi1612
 
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nayẢnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
chinhkt50
 
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
Nguyen Thanh Tu Collection
 
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdfBAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
phamthuhoai20102005
 
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
Nguyen Thanh Tu Collection
 

Recently uploaded (10)

AV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in englishAV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in english
 
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
 
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
 
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdfGIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
 
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
 
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptxDẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
 
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nayẢnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
 
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
 
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdfBAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
 
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
 

Chương 9 quy hoachdong

  • 1. 11 Chương 3. Quy hoạch độngChương 3. Quy hoạch động 9.1.9.1. Các bài toán con chung lồng nhau và giải thuật quy hoạch độCác bài toán con chung lồng nhau và giải thuật quy hoạch độ 9.2.9.2. Giải thuật quy hoạch động giải bài toán tập độc lập lớn nhấtGiải thuật quy hoạch động giải bài toán tập độc lập lớn nhất .. 9.3.9.3. Giải thuật quy hoạch động giải bài toán cái túiGiải thuật quy hoạch động giải bài toán cái túi 9.4.9.4. Giải thuật quy hoạch động giải bài toán dãy con lớn nhấtGiải thuật quy hoạch động giải bài toán dãy con lớn nhất 9.5.9.5. Giải thuật quy hoạch động giải bài toán dãy con chung dài nhGiải thuật quy hoạch động giải bài toán dãy con chung dài nh .. 9.6.9.6. Giải thuật quy hoạch động giải nhân dãy ma trận.Giải thuật quy hoạch động giải nhân dãy ma trận.      
  • 2. 2 9.1.9.1. Các bài toán con chung lồng nhau và gCác bài toán con chung lồng nhau và g 9.1.1.9.1.1. Ví dụ về bài toán con chung lồng nhauVí dụ về bài toán con chung lồng nhau 9.1.2.9.1.2. Quy hoạch động là gì?Quy hoạch động là gì? 9.1.3. Ba giai đoạn của bài toán quy hoạch9.1.3. Ba giai đoạn của bài toán quy hoạch độngđộng      
  • 3. 3 9.1.1. Các bài toán con chung lồng9.1.1. Các bài toán con chung lồng nhau trong giải thuật chia để trịnhau trong giải thuật chia để trị Khi chia bài toán thành các bài toán con,Khi chia bài toán thành các bài toán con, trong nhiều trường hợp, các bài toán controng nhiều trường hợp, các bài toán con khác nhau lại chứa các bài toán con hoànkhác nhau lại chứa các bài toán con hoàn toàn giống nhau. Ta nói rằng chúng chứatoàn giống nhau. Ta nói rằng chúng chứa các bài toán con chung giống nhaucác bài toán con chung giống nhau Ví dụ:Ví dụ:      
  • 4. 4 Ví dụ về bài toán con lồng nhauVí dụ về bài toán con lồng nhau Tính số Fibonaci thứ nTính số Fibonaci thứ n Định nghĩa số Fibonaci F(n):Định nghĩa số Fibonaci F(n):  F(0)=0F(0)=0  F(1)=1F(1)=1  F(n)=F(n-2)+F(n-1) với n>1F(n)=F(n-2)+F(n-1) với n>1 Ví dụ:Ví dụ: F(2)=1, F(3)= 2, F(4) = 3 , F(5)=5, F(6)=8F(2)=1, F(3)= 2, F(4) = 3 , F(5)=5, F(6)=8      
  • 5. 5 Ví dụ:Ví dụ: Tính số Fibonaci thứ nTính số Fibonaci thứ n Tính theo đệ quyTính theo đệ quy {top down}:{top down}: Function R_Fibonaci(n);Function R_Fibonaci(n);  If n<2 then return nIf n<2 then return n  elseelse  R_Fibonaci(n):=R_Fibonaci(n-R_Fibonaci(n):=R_Fibonaci(n- 1)+R_Fibonaci(n-21)+R_Fibonaci(n-2););      
  • 6. 6 So sánh hai giải thuậtSo sánh hai giải thuật  Khi tính F(5):Khi tính F(5):  Giải thuật đệ quy tínhGiải thuật đệ quy tính  F(5) = F(3)+F(4)F(5) = F(3)+F(4)  Tính F(3) F(3)= F(2)+F(1)Tính F(3) F(3)= F(2)+F(1)  F(2)=F(1)+F(0) = 1F(2)=F(1)+F(0) = 1  F(3)= 1+1= 2F(3)= 1+1= 2  Tính F(4) F(4)= F(2)+F(3)Tính F(4) F(4)= F(2)+F(3)  F(2)= F(0)+F(1) = 1F(2)= F(0)+F(1) = 1  F(3)=F(1)+F(2) =F(3)=F(1)+F(2) = 1+F(2)1+F(2)  F(2)= F(0)+F(1) = 2F(2)= F(0)+F(1) = 2  F(3)= 1+2 =3F(3)= 1+2 =3  F(4) = 2+3 = 5F(4) = 2+3 = 5  Tổng hợp F(5) = 3+5 =8Tổng hợp F(5) = 3+5 =8        Để tính F(5):Để tính F(5):  2 lần tính F(3)2 lần tính F(3)  3 lần tính F(2)3 lần tính F(2)
  • 7. 7 Tính F5Tính F5  2 lần tính F(3)2 lần tính F(3)  3 lần tính F(2)3 lần tính F(2) F5 F3 F4 F1 F2 F0 F1 F2 F3 F1 F2F0 F1 F0 F1      
  • 8. 8 Dùng Quy hoạch động để tính sốDùng Quy hoạch động để tính số Fibonacy thứ nFibonacy thứ n Function Fibonaci(n);Function Fibonaci(n);  If n < 2 then f:= nIf n < 2 then f:= n  elseelse  begin f_0:=0 ; f_1:= 1;begin f_0:=0 ; f_1:= 1;  For k:=2 to n doFor k:=2 to n do  beginbegin  f:=f_0+f_1 ; f_0:= f_1; f_1:= f;f:=f_0+f_1 ; f_0:= f_1; f_1:= f;  end;end;  end;end;  Return f;Return f;      
  • 9. 9 9.1.2. Quy hoạch động là gì?9.1.2. Quy hoạch động là gì? Quy hoạch động là một ký thuật thiết kế thuật toánQuy hoạch động là một ký thuật thiết kế thuật toán trong đó:trong đó: Bài toán được chia thành những bài toán con kích thướcBài toán được chia thành những bài toán con kích thước nhỏ hơn và giải chúng một cách độc lập, ghi lại các kếtnhỏ hơn và giải chúng một cách độc lập, ghi lại các kết quả, để tổng hợp thành lời giải của bài toán ban đầuquả, để tổng hợp thành lời giải của bài toán ban đầu  Khác với chia để trị:Khác với chia để trị:  Trong giải thuật chia để trị:Trong giải thuật chia để trị:  Các bài toán con độc lập, sau đó các bài toán con nàyCác bài toán con độc lập, sau đó các bài toán con này được giải một cách đệ quy.được giải một cách đệ quy.  Trong giải thuật quy hoạch động:Trong giải thuật quy hoạch động:  Các bài toán con là không độc lập với nhau, nghĩa là cácCác bài toán con là không độc lập với nhau, nghĩa là các bài toán con cùng có chung các bài toán con nhỏ hơn.bài toán con cùng có chung các bài toán con nhỏ hơn.      
  • 10. 10 9.1.3.9.1.3. Ba giai đoạn của quy hoạch độngBa giai đoạn của quy hoạch động  Phân rãPhân rã: Chia bài toán cần giải thành những bài: Chia bài toán cần giải thành những bài toán con nhỏ hơn có cùng dạng với bài toán bantoán con nhỏ hơn có cùng dạng với bài toán ban đầu sao cho bài toán con kích thước nhỏ nhất cóđầu sao cho bài toán con kích thước nhỏ nhất có thể giải một cách trực tiếp. Bài toán xuất phát cóthể giải một cách trực tiếp. Bài toán xuất phát có thể coi là bài toán con có kích thước lớn nhấtthể coi là bài toán con có kích thước lớn nhất  Giải các bài toán con và ghi nhận lời giải:Giải các bài toán con và ghi nhận lời giải: Lưu trữLưu trữ lời giải của các bài toán con vào một bảng để sửlời giải của các bài toán con vào một bảng để sử dụng lại nhiều lần do đó không phải giải lặp lạidụng lại nhiều lần do đó không phải giải lặp lại cùng một bài toán.cùng một bài toán.  Tổng hợp lời giải:Tổng hợp lời giải: Lần lượt từ lời giải của các bàiLần lượt từ lời giải của các bài toán con kích thước nhỏ hơn xây dựng lời giảitoán con kích thước nhỏ hơn xây dựng lời giải của bài toán kích thước lớn hơn, cho đến khi thucủa bài toán kích thước lớn hơn, cho đến khi thu được lời giải của bài toán xuất phát (là bài toánđược lời giải của bài toán xuất phát (là bài toán con có kích thước lớn nhất).con có kích thước lớn nhất).      
  • 11. 11 Lược đồ quy hoạch độngLược đồ quy hoạch động Phân rã Giải và ghi nhận lời giải các bài toán con Tổng hợp lời giải Bottom- Up       Kỹ thuật giảiKỹ thuật giải các bài toán concác bài toán con của quy hoạchcủa quy hoạch động là quá trìnhđộng là quá trình đi từ dưới lênđi từ dưới lên (bottom – up)(bottom – up) làlà điểm khác quanđiểm khác quan trọng vớitrọng với phương phápphương pháp chia để trị, trongchia để trị, trong đó các bài toánđó các bài toán con được trị mộtcon được trị một cách đệ quycách đệ quy (top(top – down).– down).
  • 12. 12 Các yếu tố của một giải thuật quyCác yếu tố của một giải thuật quy hoạch động giải bài toán tối ưuhoạch động giải bài toán tối ưu  Cơ sở của quy hoạch độngCơ sở của quy hoạch động: Những: Những trường hợp đơn giản có thể tính trực tiếptrường hợp đơn giản có thể tính trực tiếp  Cấu trúc con tối ưuCấu trúc con tối ưu:: Phương pháp chiaPhương pháp chia nhỏ các bài toán cho đến khi gặp đượcnhỏ các bài toán cho đến khi gặp được bài toán cơ sở.bài toán cơ sở.  Tổng hợpTổng hợp: hệ thức truy hồi tính giá trị tối: hệ thức truy hồi tính giá trị tối ưu của hàm mục tiêu của bài toán lớn quaưu của hàm mục tiêu của bài toán lớn qua giá trị tối ưu của các bài toán con thànhgiá trị tối ưu của các bài toán con thành phần.phần.      
  • 13. 13 Hiệu quả của quy hoạch độngHiệu quả của quy hoạch động  Khi có các bài toán con lồng nhau, phương phápKhi có các bài toán con lồng nhau, phương pháp chia để trị sẽ tỏ ra không hiệu quả, khi nó phảichia để trị sẽ tỏ ra không hiệu quả, khi nó phải lặp đi lặp lại việc giải các bài toán con chung đó.lặp đi lặp lại việc giải các bài toán con chung đó.  Quy hoạch động sẽQuy hoạch động sẽ giải mỗi bài toán con mộtgiải mỗi bài toán con một lần và lời giải của các bài toán con sẽ đượclần và lời giải của các bài toán con sẽ được ghi nhậnghi nhận, để thoát khỏi việc giải lại bài toán con, để thoát khỏi việc giải lại bài toán con mỗi khi ta đòi hỏi lời giải của nó.mỗi khi ta đòi hỏi lời giải của nó.  Quy hoạch động thường được áp dụng để giảiQuy hoạch động thường được áp dụng để giải các bài toán tối ưu. Trong các bài toán tối ưu, tacác bài toán tối ưu. Trong các bài toán tối ưu, ta có một tập các lời giải, và một hàm mục tiêucó một tập các lời giải, và một hàm mục tiêu nhận giá trị số. Ta cần tìm một lời giải để hàmnhận giá trị số. Ta cần tìm một lời giải để hàm mục tiêu đạt giá trị nhỏ nhất hoặc lớn nhất.mục tiêu đạt giá trị nhỏ nhất hoặc lớn nhất.      
  • 14. 14 Các ví dụ áp dụng quy hoạch độngCác ví dụ áp dụng quy hoạch động  9.3.9.3. Tập độc lập lớn nhất trên câyTập độc lập lớn nhất trên cây  9.4.9.4. Bài toán Cái túi dạng 0-1Bài toán Cái túi dạng 0-1  9.5.9.5. Bài toán dãy con chung dài nhấtBài toán dãy con chung dài nhất  9.59.5 Bài toán nhân dãy ma trậnBài toán nhân dãy ma trận  ..... và nhiều bài toán khác..... và nhiều bài toán khác      
  • 15. 15 9.2. Tập độc lập lớn nhất trên cây9.2. Tập độc lập lớn nhất trên cây 9.2.1.9.2.1. Tập độc lập và tập độc lập lớn nhất trong đồ thTập độc lập và tập độc lập lớn nhất trong đồ th có trọng sốcó trọng số 9.2.2. Cơ sở toán học của bài toán tập độc9.2.2. Cơ sở toán học của bài toán tập độc lập lớn nhất trên cây:lập lớn nhất trên cây: Công thức đệ quyCông thức đệ quy 9.2.3.9.2.3. Mã của giải thuậtMã của giải thuật 9.2.4.9.2.4. Ví dụ minh họaVí dụ minh họa      
  • 16. 16 1. Tập độc lập trong đồ thị1. Tập độc lập trong đồ thị Định nghĩa:Định nghĩa: Cho G = (V,E) là đơn đồ thị vôCho G = (V,E) là đơn đồ thị vô hướng. Một tập con U cáchướng. Một tập con U các đỉnh của đồ thị được gọi làđỉnh của đồ thị được gọi là tập độc lập, nếu như hai đỉnhtập độc lập, nếu như hai đỉnh bất kỳ trong U là không kềbất kỳ trong U là không kề nhau trong G.nhau trong G. Trong đồ thị bên :Trong đồ thị bên :  tập các đỉnh {A, H, D} là độctập các đỉnh {A, H, D} là độc lập.lập.  tập các đỉnh {F, E, I, , D, G} làtập các đỉnh {F, E, I, , D, G} là không độc lập.không độc lập.       A E F D C B G I H
  • 17. 17 Tập độc lập lớn nhất của đồ thịTập độc lập lớn nhất của đồ thị Đinh nghĩaĐinh nghĩa: Cho G là đồ thị vô hướng có hàm: Cho G là đồ thị vô hướng có hàm trọng số W(v) xác định trên các đỉnh vtrọng số W(v) xác định trên các đỉnh v ∈∈V.V. (w: V(w: V →→ RR++ ). Nếu U là tập độc lập, thì ta gọi). Nếu U là tập độc lập, thì ta gọi trọng số của U là tổng trọng số của các đỉnhtrọng số của U là tổng trọng số của các đỉnh trong nó. Ta sẽ gọi tập độc lập với trọng số lớntrong nó. Ta sẽ gọi tập độc lập với trọng số lớn nhất là tập độc lập lớn nhất.nhất là tập độc lập lớn nhất.  Bài toán tập độc lập lớn nhất trên đồ thị là mộtBài toán tập độc lập lớn nhất trên đồ thị là một bài toán khó.bài toán khó.  Tuy nhiên, khi đồ thị G là cây bài toán này có thểTuy nhiên, khi đồ thị G là cây bài toán này có thể giải hiệu quả bởi thuật toán quy hoạch độnggiải hiệu quả bởi thuật toán quy hoạch động      
  • 18. 18 Bài toán tập độc lập lớn nhất trong câyBài toán tập độc lập lớn nhất trong cây INPUT:INPUT:  CâyCây T = (V,E)T = (V,E)  Hàm trọng số trên tập các đỉnhHàm trọng số trên tập các đỉnh w: Vw: V →→ RR OUTPUTOUTPUT  Tập con độc lập UTập con độc lập U ⊂⊂ V cóV có ΣΣw(u) , uw(u) , u ∈∈U lớnU lớn nhấtnhất      
  • 19. 19 PHÂN RÃ thành các bài toán conPHÂN RÃ thành các bài toán con Với mỗi đỉnh vVới mỗi đỉnh v ∈∈ V, xét cây conV, xét cây con T(vT(v)) của T có gốc tại đỉnh v.của T có gốc tại đỉnh v. Kí hiệuKí hiệu  Big(v)Big(v) là trọng số của của tập độclà trọng số của của tập độc lập lớn nhất của cây conlập lớn nhất của cây con T(v)T(v)  BigR(vBigR(v)) là trọng số lớn nhất củalà trọng số lớn nhất của các tập độc lập của cây concác tập độc lập của cây con T(v)T(v) có chứa vcó chứa v  BigNotR(v)BigNotR(v) là trọng số lớn nhấtlà trọng số lớn nhất của các tập độc lập của cây concủa các tập độc lập của cây con T(v)T(v) không chứa gốc vkhông chứa gốc v       v u1 u2 uk
  • 20. 20 Trường hợp cơ sở và công thức truy hồiTrường hợp cơ sở và công thức truy hồi  Trường hợp cơ sở:Trường hợp cơ sở: Nếu v là láNếu v là lá thì BigNotR(v) = 0; BigR(v) = w(v)thì BigNotR(v) = 0; BigR(v) = w(v)  Công thức truy hồiCông thức truy hồi:: Giả sử v có các cây con gốc uGiả sử v có các cây con gốc u11, u, u22.., u.., ukk Gọi U là tập độc lập của cây con gốc v.Gọi U là tập độc lập của cây con gốc v.  Bài toán con 1Bài toán con 1: Nếu U chứa v thì không chứa u: Nếu U chứa v thì không chứa u11, u, u22.., u.., ukk.. BigR(v)= W(v) +BigR(v)= W(v) + ΣΣ BigNotR(uBigNotR(uii)) (tổng chạy qua tất cả các con của v)(tổng chạy qua tất cả các con của v)  Bài toán con 2Bài toán con 2: Nếu tập độc lập U không chứa v thì nó là: Nếu tập độc lập U không chứa v thì nó là hợp của các tập độc lập của các cây con. Do đóhợp của các tập độc lập của các cây con. Do đó BigNotR(v) =BigNotR(v) = ΣΣ Big(uBig(uii))  Tổng hợpTổng hợp:: Big(v) = max{BigR(v) , BigNotR(v)}Big(v) = max{BigR(v) , BigNotR(v)}      
  • 21. 21 Thuật toán quy hoạch độngThuật toán quy hoạch động  Theo các công thức trên, để tínhTheo các công thức trên, để tính Big(vBig(v) ta) ta phải dựa vào các giá trịphải dựa vào các giá trị Big(u), BigNotR(uBig(u), BigNotR(u) với) với mọi đỉnh con u là con của V. Do đó ta sẽ dùngmọi đỉnh con u là con của V. Do đó ta sẽ dùng phương pháp duyệt hậu thứ tự để tính các hàmphương pháp duyệt hậu thứ tự để tính các hàm Big, BigRBig, BigR vàvà BigNotRBigNotR từ dưới lên.từ dưới lên.   Các bước của thuật toán như sau:Các bước của thuật toán như sau: 1. Khởi tao: Mọi đỉnh của v chưa đươc duyệt;1. Khởi tao: Mọi đỉnh của v chưa đươc duyệt; 2. Duyệt hậu thứ tự: Ở mỗi lần duyệt môt đỉnh u2. Duyệt hậu thứ tự: Ở mỗi lần duyệt môt đỉnh u tính BigR(u), BigNotR(u), Big(u) theo công thứctính BigR(u), BigNotR(u), Big(u) theo công thức truy hồi ở trên.truy hồi ở trên.      
  • 22. 22 Tính Big(v) tại đỉnh vTính Big(v) tại đỉnh v  Procedure CalculateBig(v);Procedure CalculateBig(v);  BeginBegin  BigR(v) := W(v); BigNotR(v):= 0BigR(v) := W(v); BigNotR(v):= 0  For each u in v.Children do {với mỗi con của đỉnh v}For each u in v.Children do {với mỗi con của đỉnh v}  beginbegin  BigR(v):= BigR(v)+BigNotR(u);BigR(v):= BigR(v)+BigNotR(u);  BigNotR(v):= BigNotR(v)+Big(u);BigNotR(v):= BigNotR(v)+Big(u);  end;end;  Big(v):=max(BigNotR(v), BigR(v));Big(v):=max(BigNotR(v), BigR(v));  End;End;      
  • 23. 23 9.2.3.Tìm tập độc lập lớn nhất của cây9.2.3.Tìm tập độc lập lớn nhất của cây nhờ duyệt hậu thứ tựnhờ duyệt hậu thứ tự Procedure MaxTree (v);Procedure MaxTree (v);  BeginBegin  For each u in Child(v) do MaxTree (u);For each u in Child(v) do MaxTree (u);  CalculateBig(v)CalculateBig(v)  End;End; Để tính tập độc lập lớn nhất của cả cây gọiĐể tính tập độc lập lớn nhất của cả cây gọi MaxTree (Root);MaxTree (Root);      
  • 24. 24 Ví dụ: tập độc lập lớn nhất trong câyVí dụ: tập độc lập lớn nhất trong cây      
  • 25. 25 9.3. Bài toán cái túi (dạng 0-1).9.3. Bài toán cái túi (dạng 0-1). Bài toánBài toán  Một tên trộm tìm thấy n gói đồ vật, gói thứ i cóMột tên trộm tìm thấy n gói đồ vật, gói thứ i có khối lượng là w[i], có giá trị là v[i] (w[i],v[i]khối lượng là w[i], có giá trị là v[i] (w[i],v[i]∈∈N),N), nhưng cái túi của anh ta chỉ có thể mang đượcnhưng cái túi của anh ta chỉ có thể mang được khối lượng tối đa làkhối lượng tối đa là MM (M(M∈∈N). Vậy tên trộm chọnN). Vậy tên trộm chọn mang những gói nào?mang những gói nào?  Trong bài toán cái túi dạng 0Trong bài toán cái túi dạng 0−−1 tên trộm với mỗi1 tên trộm với mỗi gói đồ vật chỉ có thể lấy nguyên vẹn từng góigói đồ vật chỉ có thể lấy nguyên vẹn từng gói hoặc không lấy.hoặc không lấy.      
  • 26. 26 Phân rãPhân rã Giảm kích thước:Giảm kích thước: Với các giá trịVới các giá trị ii vàvà LL: i = 1,2,.., n và L =0, 1, 2,..., M. Gọi: i = 1,2,.., n và L =0, 1, 2,..., M. Gọi MaxVMaxV(i,L)(i,L) làlà tổngtổng giá trị lớn nhất có thể chọngiá trị lớn nhất có thể chọn trong i đồtrong i đồ vật (1,.., i) với trọng lượng tối đa L.vật (1,.., i) với trọng lượng tối đa L. Bài toán con:Bài toán con: Trong dãyTrong dãy ii đồ vật 1,.., i có thểđồ vật 1,.., i có thể  Bài toán con 1Bài toán con 1: Nếu có chọn vật thứ i (nếu w[i] ≤ L), khi: Nếu có chọn vật thứ i (nếu w[i] ≤ L), khi đó giá trị lớn nhất có thể là:đó giá trị lớn nhất có thể là: MaxV(iMaxV(i−−1, L1, L−− w[i]) + v[i]w[i]) + v[i] ;;  Bài toán con 2Bài toán con 2: Nếu không chọn vật thứ i, khi đó giá trị: Nếu không chọn vật thứ i, khi đó giá trị lớn nhất là :lớn nhất là : MaxV(iMaxV(i−−1, L)1, L) Tổng hợpTổng hợp MaxV(i, L) =MaxV(i, L) = max{MaxV(imax{MaxV(i −−1,L1,L−− ww[i[i]]) +v[i] , MaxV(i) +v[i] , MaxV(i −−1,L)1,L)}}      
  • 27. 27 Công thức truy hồiCông thức truy hồi  Trường hợp cơ sởTrường hợp cơ sở  Nếu L = 0 thì MaxV(i,L) = 0 với mọi i=1,..,nNếu L = 0 thì MaxV(i,L) = 0 với mọi i=1,..,n      
  • 28. 28 Mã: Giải thuật Bag_BestMã: Giải thuật Bag_Best Procedure Bag_bestProcedure Bag_best  {Khởi tạo}: For L: = 0 to M do MaxV[0,L] :=0 ;{Khởi tạo}: For L: = 0 to M do MaxV[0,L] :=0 ;  For i = 1 to n doFor i = 1 to n do  For L = 1 to M doFor L = 1 to M do  BeginBegin  MaxV[i,L] := MaxV[ iMaxV[i,L] := MaxV[ i−−1,L];1,L];  If (w[i] ≤ L) andIf (w[i] ≤ L) and (MaxV[i(MaxV[i−−1,L1,L−−w[i]w[i]] +] + v[i] > MaxV[i-1, L])v[i] > MaxV[i-1, L]) thenthen MaxV[i, L] := MaxV[iMaxV[i, L] := MaxV[i−−1,L1,L−−w[i]w[i]]+]+v[i]v[i] ;;  End;End;  Return MaxV(n, M)Return MaxV(n, M)      
  • 29. 29 Ví dụVí dụ Có 6 đồ vật và tổng trọng lượng tối đa có thểCó 6 đồ vật và tổng trọng lượng tối đa có thể mang là 10mang là 10
  • 30. 30 GiảiGiải ii ww vv 11 22 33 44 55 66 77 88 99 1010 11 66 1212 L-w(i)L-w(i) -- -- -- -- -- 00 11 22 33 44 YesYes 00 00 00 00 00 1212 1212 1212 1212 1212 MaxMax 00 00 00 00 00 1212 1212 1212 1212 1212 22 33 11 L’=L-w(i)L’=L-w(i) -- -- 00 11 22 33 44 55 66 77 Max(i-1,L’)Max(i-1,L’) -- -- 00 00 00 00 00 00 1212 1212 YesYes 00 00 11 11 11 11 11 11 1313 1313 MaxMax 00 00 11 11 11 1212 1212 1212 1313 1313 33 33 88 L-w(i)L-w(i) -- -- 00 11 22 33 44 55 66 77 Max(i-1,L’)Max(i-1,L’) 00 00 00 00 11 11 11 11 1313 1313 YesYes 88 88 88 88 99 99 99 99 2020 2020 MaxMax 88 88 88 88 99 1212 1212 1212 2020 2020
  • 31. 31 9.2.2. Bài toán dãy con chung dài nhất9.2.2. Bài toán dãy con chung dài nhất  Bài toán;Bài toán;  Cho hai dãy X = (xCho hai dãy X = (x11,x,x22,…,x,…,xmm) và Y = (y) và Y = (y11,y,y22,, …,y…,ynn). Cần tìm dãy con chung dài nhất của). Cần tìm dãy con chung dài nhất của hai dãy X và Y.hai dãy X và Y.      
  • 32. 32 Phân rãPhân rã .. Với mỗi 0≤ ί ≤ m và 0 ≤ j ≤ n xét bài toán con :Với mỗi 0≤ ί ≤ m và 0 ≤ j ≤ n xét bài toán con :  Tính C[i, j] là độ dài của dãy con chung dài nhấtTính C[i, j] là độ dài của dãy con chung dài nhất của hai dãy.của hai dãy.  XXii=x=x11xx22…x…xii vàvà YYjj =y=y11yy22…y…yii . Chú y rằng. Chú y rằng ( X( Xoo và Yvà Yoo là xâu rỗng)là xâu rỗng)  Như vậy ta đã phân bài toán cần giải ra thànhNhư vậy ta đã phân bài toán cần giải ra thành (m+1)(m+1)××(n+1) bài toán con. Bản thân bài toán(n+1) bài toán con. Bản thân bài toán xuất phát là bài toán con có kích thước lớn nhấtxuất phát là bài toán con có kích thước lớn nhất C(m,n).C(m,n).      
  • 33. 33 Bài toán con cơ sở và tổng hợpBài toán con cơ sở và tổng hợp Các bài toán con cơ sởCác bài toán con cơ sở  C[0, j] = 0C[0, j] = 0 ∀∀ j = 0.. n và C[i,0] =0,i = 0.. m.j = 0.. n và C[i,0] =0,i = 0.. m. (là độ dài dãy con chung lớn nhất của dãy rỗng với một(là độ dài dãy con chung lớn nhất của dãy rỗng với một dãy khác).dãy khác). TỔNG HỢPTỔNG HỢP Với i > 0, j > 0 . Tính C[i, j].Với i > 0, j > 0 . Tính C[i, j]. Có hai tình huống:Có hai tình huống:  Nếu xNếu xii =y=yjj thì dãy con chung dài nhất của Xthì dãy con chung dài nhất của Xii vàYvàYii sẽ thusẽ thu được bằng việc bổ sung xđược bằng việc bổ sung xii vào dãy con chung dài nhấtvào dãy con chung dài nhất của hai dãy Xcủa hai dãy Xii−−11và Yvà Yjj−−11  Nếu xNếu xii ≠ y≠ yii thì dãy con chung dài nhất của Xthì dãy con chung dài nhất của Xii và Yvà Yjj sẽ làsẽ là dãy con dài hơn trong hai dãy con chung dài nhất củadãy con dài hơn trong hai dãy con chung dài nhất của (X(Xii−−11 và Yvà Yii) và của (X) và của (Xii và Yvà Yjj−−11) .) .      
  • 34. 34 Công thức truy hồi để tính C[i,j].Công thức truy hồi để tính C[i,j].  C[i,j] = 0 nếu i =0 hoặc j=0C[i,j] = 0 nếu i =0 hoặc j=0  C[i,j] = C[i-1,j-1]+1 nếu xC[i,j] = C[i-1,j-1]+1 nếu xii = y= yjj  C[i,j] = Max{ C[i-1,j], C[i,j-1]} nếu xC[i,j] = Max{ C[i-1,j], C[i,j-1]} nếu xii ≠≠ yyjj      
  • 35. 35 Procedure LCS(X,Y)Procedure LCS(X,Y)  BeginBegin  {K{Khhởi tạo}ởi tạo}  For i :=1 to m do c[i,0]:=0;For i :=1 to m do c[i,0]:=0;  For j: =1 to n do c[0,jFor j: =1 to n do c[0,j ]]:=0;:=0;  {Tính từ dưới lên}{Tính từ dưới lên}  For i: =1 to m doFor i: =1 to m do  for j: = 1 to n dofor j: = 1 to n do  If xIf xii = y= yjj thenthen  begin c[i,j]:=c[i-1,j-1]+1; b[i,j]:=’begin c[i,j]:=c[i-1,j-1]+1; b[i,j]:=’’ end’ end  elseelse  If c [i-1,j]≥ c[i,j-1] thenIf c [i-1,j]≥ c[i,j-1] then  begin c[i,j]:=c[i-1,j]; b[i,j]:=’begin c[i,j]:=c[i-1,j]; b[i,j]:=’↑↑’; end’; end  elseelse  begin c[i,j]:=c[i,j-1]; b[i,j]:=’begin c[i,j]:=c[i,j-1]; b[i,j]:=’←←’;end;’;end;  End;End;      
  • 36. 36 Ví dụ: Dãy con chung dài nhất làVí dụ: Dãy con chung dài nhất là HDAHDA      
  • 37. 37 Ví dụVí dụ 11 22 33 44 55 66 DD II NN HH VV UU 11 NN ↑↑00 ↑↑00 11 ←11 ←←11 ←←11 22 II ↑↑00  11 ←←11 ←←11 ←←11 ←←11 33 NN ↑↑00 ↑↑11  22 ←← 22 ←← 22 ←← 22 44 HH ↑↑ 00 ↑↑ 11 ↑↑ 22  33 ←← 33 ←← 33 55 CC ↑↑ 00 ↑↑ 11 ↑↑ 22 ↑33 ↑↑ 33 ↑↑ 33 66 UU ↑↑ 00 ↑↑ 11 ↑↑ 22 ↑↑ 33 ↑↑ 33  44  Nếu X[ i ]=Y[ j ] thì lấy giá trị ô đứng hàng trên bên trái + 1Nếu X[ i ]=Y[ j ] thì lấy giá trị ô đứng hàng trên bên trái + 1  Nếu X[ i ]Nếu X[ i ] ≠≠ Y[ j ] thì lấy theo giá trị lớn hơn trong hai giá trịY[ j ] thì lấy theo giá trị lớn hơn trong hai giá trị đứng trên hoặc đứng trướcđứng trên hoặc đứng trước      
  • 38. 38 Bài toán dãy con liên tiếpBài toán dãy con liên tiếp có tổng lớn nhấtcó tổng lớn nhất  Cho dãy A dưới dạng mảng A[1..n ] cácCho dãy A dưới dạng mảng A[1..n ] các sốsố  Hãy tìm dãy con các phần tử liên tiếp củaHãy tìm dãy con các phần tử liên tiếp của dãy A có tổng lớn nhấtdãy A có tổng lớn nhất  Ví dụ:Ví dụ:      
  • 39. 39 Phân rãPhân rã  Gọi S(i) là tổng của dãy con lớn nhấtGọi S(i) là tổng của dãy con lớn nhất trong dãy i phần tửtrong dãy i phần tử AAii = a= a[[1], …., a [i], i = 1,2,…, n1], …., a [i], i = 1,2,…, n thì S(n) là giá trị cần tìm.thì S(n) là giá trị cần tìm.  Bài toán con cơ sởBài toán con cơ sở Với i =1 ta có S(1)= aVới i =1 ta có S(1)= a[1[1].].      
  • 40. 40 Phân rãPhân rã Giả sử i > 1 và S[k] là đã biết với k = 1,.., iGiả sử i > 1 và S[k] là đã biết với k = 1,.., i−−1.1.  Ta cần tính S[i] là tổng của dãy con liên tiếp lớnTa cần tính S[i] là tổng của dãy con liên tiếp lớn nhất của dãy anhất của dãy a[1][1]…, a…, a[i-1][i-1], a, a[i][i].. Các dãy con liên tiếp của dãy này có thể là mộtCác dãy con liên tiếp của dãy này có thể là một trong hai trường hợp:trong hai trường hợp:  Các dãy con liên tiếp có chứa aCác dãy con liên tiếp có chứa a[i][i]  Các dãy con liên tiếp không chứa aCác dãy con liên tiếp không chứa a[i][i] Gọi MaxS(i) là tổng lớn nhất của các dãy con liênGọi MaxS(i) là tổng lớn nhất của các dãy con liên tiếp của dãy a[1]...a[i]tiếp của dãy a[1]...a[i] MaxE(i) là tổng lớn nhất của các dãy con liên tiếpMaxE(i) là tổng lớn nhất của các dãy con liên tiếp của dãy a[1]..a[i] chứa chính a[i].của dãy a[1]..a[i] chứa chính a[i].      
  • 41. 41 Phân rã .....Phân rã .....  Tổng lớn nhất của các dãy con liên tiếpTổng lớn nhất của các dãy con liên tiếp của dãy a[1]..a;[i] không chứa a[i] chính làcủa dãy a[1]..a;[i] không chứa a[i] chính là tổng lớn nhất của các dãy con của dãytổng lớn nhất của các dãy con của dãy a[1]..a[i-1]a[1]..a[i-1]11, nghiã là MaxS(i, nghiã là MaxS(i−−1).1). Do đóDo đó MaxS(i) = max { MaxS(iMaxS(i) = max { MaxS(i−−1) , MaxE(i)}.1) , MaxE(i)}.      
  • 42. 42 Tính MaxE(i)Tính MaxE(i)  Để tính MaxE(i), i = 1, 2, …, n, ta cũng có thể sửĐể tính MaxE(i), i = 1, 2, …, n, ta cũng có thể sử dụng công thức đệ quy như saudụng công thức đệ quy như sau  1. Với i=1: MaxE(i) = a1. Với i=1: MaxE(i) = a[1][1];;  2.Với i >1, Gọi S là dãy con kế tiếp lớn nhất của2.Với i >1, Gọi S là dãy con kế tiếp lớn nhất của dãy a[1]..a[i] có chứa adãy a[1]..a[i] có chứa a[i][i]. Có hai khả năng:. Có hai khả năng:  Nếu S chứa a[iNếu S chứa a[i−−1] do đó độ dài lớn nhất có thể là1] do đó độ dài lớn nhất có thể là MaxE(iMaxE(i−−1)+a[i];1)+a[i];  Nếu S không chứa a[iNếu S không chứa a[i−−1] thì S chỉ gồm a[i]1] thì S chỉ gồm a[i]  Do đó:Do đó: MMaxEaxE[[ii]] = max {a= max {a[i][i] , MaxE, MaxE[[ii−−1] + a1] + a[i][i] }, i > 1.}, i > 1.      
  • 43. 43 Procedure Maxsub(a);Procedure Maxsub(a);  Var MaxS,MaxE, s, e, e1 :Integer ;Var MaxS,MaxE, s, e, e1 :Integer ;  BeginBegin  MaxS:=a[1MaxS:=a[1]]; MaxE:= a[1]; s:=1; e:=1;; MaxE:= a[1]; s:=1; e:=1; s1:=1;s1:=1;  For i: = 2 to n doFor i: = 2 to n do  beginbegin  if MaxE>0 then MaxE:=MaxE+a[i]if MaxE>0 then MaxE:=MaxE+a[i]  else begin MaxE = a[i]; s1:=i;end;else begin MaxE = a[i]; s1:=i;end;  if (MaxE > MaxS) thenif (MaxE > MaxS) then  begin MaxS:= MaxE; e:=i;begin MaxS:= MaxE; e:=i; s:=s1;end;s:=s1;end;  End;End;  End;End;       Ý nghĩa các biến:Ý nghĩa các biến:  maxS: tổngmaxS: tổng dãy con lớndãy con lớn nhấtnhất  maxE: tổngmaxE: tổng dãy con códãy con có chứa phần tửchứa phần tử cuối lớn nhấtcuối lớn nhất  s,e chỉ số đầus,e chỉ số đầu và cuối củavà cuối của dãy con códãy con có tổng lớn nhấttổng lớn nhất  s1 chỉ số đầus1 chỉ số đầu của dãy lớncủa dãy lớn nhất kết thúcnhất kết thúc tại itại i
  • 44. 44 Ví dụ Dãy con có tổng lớn nhấtVí dụ Dãy con có tổng lớn nhất      
  • 45. 45 Nhân dãy ma trậnNhân dãy ma trận Bài toán: Khi nhân hai ma trận ABài toán: Khi nhân hai ma trận Amnmn và Bvà Bn,pn,p ta dùngta dùng ba vòng Forba vòng For For i: = 1 to m doFor i: = 1 to m do For j := 1 to p doFor j := 1 to p do Begin C[i,j] := 0;Begin C[i,j] := 0; For k:=1 to n doFor k:=1 to n do C[i,j]:= C[i,j]+a[i,k]*b[k,j];C[i,j]:= C[i,j]+a[i,k]*b[k,j]; End;End; Số các phép nhân phải thực hiện là m*n*p.Số các phép nhân phải thực hiện là m*n*p.      
  • 46. 46 Nhân dãy ma trậnNhân dãy ma trận  Xét phép nhân 3 ma trận AXét phép nhân 3 ma trận A3,43,4 x Bx B4,54,5 x Cx C5,65,6.. Có hai cách nhânCó hai cách nhân ABC=(AB)C và A(BC).ABC=(AB)C và A(BC).  Tính tích AB cần 3*4*5= 60 phép nhân đựợc maTính tích AB cần 3*4*5= 60 phép nhân đựợc ma trận D cấp 3x5. Tính DC cần 3x5x6 = 180 phéptrận D cấp 3x5. Tính DC cần 3x5x6 = 180 phép nhân. Do đó tính (AB)C cần 60+180 = 240 phépnhân. Do đó tính (AB)C cần 60+180 = 240 phép nhânnhân  Tính tích (BC) cần 4*5*6= 120 phép nhân đượcTính tích (BC) cần 4*5*6= 120 phép nhân được ma trận E cấp 4x6; tính AE cần 3x4x6=72 phépma trận E cấp 4x6; tính AE cần 3x4x6=72 phép nhân. Do đó tính A(BC) cần 120+72= 192 phépnhân. Do đó tính A(BC) cần 120+72= 192 phép nhân.nhân.      
  • 47. 47 Bìa toán nhân dãy ma trậnBìa toán nhân dãy ma trận Xét phép nhân dãy ma trậnXét phép nhân dãy ma trận MM11MM22..M..Mnn 1). Có bao nhiêu cách tổ chức thứ tự thực1). Có bao nhiêu cách tổ chức thứ tự thực hiện phép nhân dãy ma trận này?hiện phép nhân dãy ma trận này? 2). Nhân theo thứ tự nào để số phép nhân2). Nhân theo thứ tự nào để số phép nhân các số là ít nhất?các số là ít nhất?      
  • 48. 48 Số cách thực hiện dãy phépSố cách thực hiện dãy phép nhân n ma trậnnhân n ma trận Ký hiệu T (n) là số cách điền các dấu ngoặc vào biểuKý hiệu T (n) là số cách điền các dấu ngoặc vào biểu thức tích của n ma trận. Giả sử ta định đặt dấuthức tích của n ma trận. Giả sử ta định đặt dấu ngoặc phân tách đầu tiên vào giữa ma trận thứ i vàngoặc phân tách đầu tiên vào giữa ma trận thứ i và ma trận thứ (i + 1) trong biểu thức tích, tức là:ma trận thứ (i + 1) trong biểu thức tích, tức là: M = (MM = (M11 MM22 … M… Mii)(M)(Mi+1i+1 MMi+2i+2 … M… Mnn)) Khi đó có T(i) cách đặt dấu ngoặc cho thừa số thứKhi đó có T(i) cách đặt dấu ngoặc cho thừa số thứ nhất (M1 M2 … Mi) và T(n - i) cách đặt dấu ngoặcnhất (M1 M2 … Mi) và T(n - i) cách đặt dấu ngoặc cho thừa số thứ hai (Mi+1 Mi+2 … Mn) và từ đócho thừa số thứ hai (Mi+1 Mi+2 … Mn) và từ đó T(i)T(n-i) cách tính biểu thức (MT(i)T(n-i) cách tính biểu thức (M11 MM22 … M… Mii)(M)(Mi+1i+1 MMi+2i+2 …… MMnn).).      
  • 49. 49 Có bao nhiêu cách tínhCó bao nhiêu cách tính MM11MM22...M...Mnn??  Công thức truy hồiCông thức truy hồi      −= = ∑ − = 1 1 )()()( 1)1( n i inTiTnT T , 1 )( 1 22 − −= n nC n nT  Công thức hiệnCông thức hiện      
  • 50. 50 Có bao nhiêu cách?Có bao nhiêu cách?  Một số giá trị của T(n)Một số giá trị của T(n) nn 11 22 33 44 55 1010 1515 T(n)T(n) 11 11 22 55 1414 48624862 26744402674440      
  • 51. 51 Cách tính tối ưu?Cách tính tối ưu?  Cách nào đòi hỏi số phép nhân các số ítCách nào đòi hỏi số phép nhân các số ít nhấtnhất      
  • 52. 52 Phân rã (Xác định cấu trúc con tối ưu).Phân rã (Xác định cấu trúc con tối ưu).  Giả sử cách tính tối ưu tích của n ma trận đòiGiả sử cách tính tối ưu tích của n ma trận đòi hỏi dặt dấu ngoặc tách đầu tiên giữa ma trậnhỏi dặt dấu ngoặc tách đầu tiên giữa ma trận thứ i và thứ (i+1) của biểu thức tích, thì khithứ i và thứ (i+1) của biểu thức tích, thì khi đó cả hai tích con (Mđó cả hai tích con (M11 MM22 … M… Mii) và (M) và (Mi+1i+1 MMi+2i+2 …… MMnn) cũng phải được tính một cách tối ưu.) cũng phải được tính một cách tối ưu.  Do đó đó số phép nhân cần phải thực hiệnDo đó đó số phép nhân cần phải thực hiện để nhân dãy ma trận là tổng:để nhân dãy ma trận là tổng: số phép nhân cần thực hiện để nhân hai dãysố phép nhân cần thực hiện để nhân hai dãy con + số phép nhân cần thực hiện để nhâncon + số phép nhân cần thực hiện để nhân hai ma trận kết quảhai ma trận kết quả      
  • 53. 53 Phân rã bài toánPhân rã bài toán Gọi mGọi mijij là số phép nhân ít nhất cần thực hiệnlà số phép nhân ít nhất cần thực hiện để tính tích (iđể tính tích (i ≤≤ j)j) (M(MiiMMi+1i+1 MMi+2i+2 … M… Mjj),), 1 ≤ i ≤ j ≤ n1 ≤ i ≤ j ≤ n Giả sử kích thước của các ma trận đượcGiả sử kích thước của các ma trận được cho bởi véc tơcho bởi véc tơ d[0 … n],d[0 … n], trong đó ma trậntrong đó ma trận MMii có kích thướccó kích thước ddii−−11 ×× ddii,, i = 1, 2, 3, … ni = 1, 2, 3, … n..      
  • 54. 54 Trường hợp cơ sởTrường hợp cơ sở  Khi i = j thì mKhi i = j thì miiii = 0= 0  Giả sử j = i+s với sGiả sử j = i+s với s ≥≥ 1 và phép nhân cuối cùng tách từ1 và phép nhân cuối cùng tách từ vị trí thứ kvị trí thứ k  (M(Mii MMi+1i+1 …M…Mkk)(M)(Mk+1k+1 …. M…. Mi+si+s−−11MMi+si+s).).  tích thứ nhất là ma trận kích thước (i-1), k, tích thứ haitích thứ nhất là ma trận kích thước (i-1), k, tích thứ hai co kích thước k, i+sco kích thước k, i+s  số các phép nhân ít nhất để tính tích theo công thức nàysố các phép nhân ít nhất để tính tích theo công thức này làlà mmikik + m+ mk+1k+1,,i+si+s+ d+ dii−−11ddkkddi+si+s      
  • 55. 55 Công thức đệ quyCông thức đệ quy  1 < s < n:1 < s < n: mmi, i+si, i+s=min {m=min {mikik + m+ mk+1k+1,,i+si+s+ d+ dii−−11ddkkddi+si+s || i ≤ k < i+si ≤ k < i+s},}, i = 1, 2, …, n – si = 1, 2, …, n – s..      
  • 56. 56 Ví dụVí dụ  Tìm cách tính tối ưu cho tích của bốn maTìm cách tính tối ưu cho tích của bốn ma trận Mtrận M11MM22MM33MM44 với các kích thướcvới các kích thước d = (2, 5, 4, 3, 7).d = (2, 5, 4, 3, 7). Ta có với s=1Ta có với s=1 mm1212 MM11MM22 22 ×× 55 ××44 = 40= 40 mm2323 MM22MM33 55 ××44 ××33 = 60= 60 mm3434 MM33MM44 44 ×× 33 ×× 77 =84=84      
  • 57. 57 Với s = 2, d = (2, 5, 4, 3, 7).Với s = 2, d = (2, 5, 4, 3, 7). Cần tính mCần tính m1313, m, m2424 mm1313 MM11MM22MM33 (M(M11MM22 )(M)(M33)) 6464 k=1k=1 (M(M11)(M)(M22 MM33)) mm1111 + m+ m2323 + d+ d00 ×× dd11 ×× dd33== 0+60+2*5*30+60+2*5*3 9090 k=2k=2 (M(M11MM22) (M) (M33)) mm1212 + m+ m3333 + d+ d00 ×× dd22 ×× dd33 =40+0 + 2=40+0 + 2 ××44 ×× 33 6464 mm1212 = 40= 40 mm2323 = 60= 60 mm3434 =84=84 mm1212 = 40= 40 mm2323 = 60= 60 mm3434 =84=84      
  • 58. 58 Ví dụ với d =Ví dụ với d = (2, 5, 4, 3, 7).(2, 5, 4, 3, 7).  Tính mTính m2424 mm2424 MM22MM33MM44 (M(M22MM33) (M) (M44)) 165165 k=1k=1 (M(M22)(M)(M33 MM44)) mm2222 + m+ m3434 + d+ d11*d*d22* d* d44 == 0+ 84+5*4*70+ 84+5*4*7 224224 k=2k=2 (M(M22MM33) (M) (M44)) mm2323 + m+ m4444 + d+ d11 ×× dd33 ×× dd44 =60+0+5=60+0+5 ×× 33 ×× 77 165165       mm1212 = 40= 40 mm2323 = 60= 60 mm3434 =84=84
  • 59. 59 Ví dụ với d =Ví dụ với d = (2, 5, 4, 3, 7).(2, 5, 4, 3, 7).  Với s = 3, ta tínhVới s = 3, ta tính mm1414 , k = 1, 2 , 3, k = 1, 2 , 3 mm1414 MM11MM22MM33MM44 (M(M11MM22MM33) M) M44 k=1k=1 MM11(M(M22MM33 MM44)) mm1111 + m+ m2424 +d+d00*d*d11*d*d44 0+165+2*5*70+165+2*5*7 235235 k=2k=2 (M(M11MM22) (M) (M33 MM44)) mm1212 + m+ m3434 + d+ d00dd22dd44== 40+84+2*4*740+84+2*4*7 180180 k=3k=3 (M(M11MM22MM33) M) M44 mm1313 + m+ m4444 + d+ d00dd33dd44 64+0+2*3*764+0+2*3*7 106106       mm1313 6464 mm1212 4040 mm2424 165165 mm2323 6060 mm3434 8484
  • 60. 60 Ví dụ với d =Ví dụ với d = (2, 5, 4, 3, 7).(2, 5, 4, 3, 7).  Tổng hợp kết quảTổng hợp kết quả  Tính tối ưu MTính tối ưu M11MM22MM33 MM44 là tính (Mlà tính (M11MM22MM33) M) M44 vớivới 126 phép nhân các số126 phép nhân các số  Tính tối ưu (MTính tối ưu (M11MM22 MM33) là tính (M) là tính (M11)(M)(M22 MM33)) Trả lời:Trả lời: Với dãy các kích thước đã cho cách tính tối ưuVới dãy các kích thước đã cho cách tính tối ưu làlà (M(M11(M(M22 MM33))M))M44..      
  • 61. 61 Độ phức tạp tính toánĐộ phức tạp tính toán  Với mỗi s thỏa mãn 1 < s < n, ta tính :Với mỗi s thỏa mãn 1 < s < n, ta tính : mmi, i+si, i+s =min {m=min {mikik + m+ mk+1k+1,,i+si+s+ d+ dii−−11ddkkddi+si+s | i ≤ k < i+s},| i ≤ k < i+s}, i = 1, 2, …, n – s.i = 1, 2, …, n – s.  Với mỗi s > 0, có n – s phần tử trên đường chéoVới mỗi s > 0, có n – s phần tử trên đường chéo cần tính, để tính mỗi phần tử đó ta cần so sánhcần tính, để tính mỗi phần tử đó ta cần so sánh s giá trị số tương ứng với các giá trị có thể củas giá trị số tương ứng với các giá trị có thể của k. Từ đó suy ra số phép toán cần thực hiện theok. Từ đó suy ra số phép toán cần thực hiện theo thuật toán là cỡthuật toán là cỡ      
  • 62. 62 Độ phức tạp tính toánĐộ phức tạp tính toán tương đương vớitương đương với ( ) ( ) ( )( ) ( ) ( )3 3 2 1 1 1 1 2 1 1 0 6/ 6/1212/1 n nn nnnnn ssnssn n s n s n s = −= −−−−= −=− ∑ ∑∑ − = − = − =      
  • 63. 63 Mã giả tựa Pascal tính mMã giả tựa Pascal tính mijij • BeginBegin • For i: = 1 to n do m[i,i]:=0;For i: = 1 to n do m[i,i]:=0; • For s:=1 to n doFor s:=1 to n do • For i:= 1 to n–s doFor i:= 1 to n–s do • begin j:=i+s–1; m[i,j]:= +∞;begin j:=i+s–1; m[i,j]:= +∞; • For k:=i to j–1 doFor k:=i to j–1 do • begin q:=m[i,k]+m[k+1,j]+d[i-1]*d[k]*d[j];begin q:=m[i,k]+m[k+1,j]+d[i-1]*d[k]*d[j]; • If(q<m[i,j]) thenIf(q<m[i,j]) then • begin m[i,j]= q; h[i,j] = k;begin m[i,j]= q; h[i,j] = k; • end;end; • end;end; • end;end; • End;End;      
  • 64. 64 Nhân hai ma trận với mảng h[i,j] tính từNhân hai ma trận với mảng h[i,j] tính từ thủ tục trênthủ tục trên  Procedure Mult(i,j);Procedure Mult(i,j);  BeginBegin  If(i<j) thenIf(i<j) then  BeginBegin  k := h[i,j];k := h[i,j];  X := Mult(i,k);X := Mult(i,k);  Y := Mult(k+1,j)Y := Mult(k+1,j)  Return X*Y; {Nhân ma trận X và Y}Return X*Y; {Nhân ma trận X và Y}  EndEnd  ElseElse  Return M[i];Return M[i];  End;End;      
  • 65. 65 Bài tậpBài tập  Tìm cách nhân tối ưu để tính tích củaTìm cách nhân tối ưu để tính tích của dãy ma trậndãy ma trận A1A1×× A2A2 ×× A3A3 ×× A4A4 trong đó vectơ kích thước của chúng làtrong đó vectơ kích thước của chúng là (2,4,5,3,2)(2,4,5,3,2)      