Tìm hiểu thuật toán quy hoạch động cho tính khoảng cáchTìm hiểu thuật toán quy hoạch động cho tính khoảng cáchTìm hiểu thuật toán quy hoạch động cho tính khoảng cáchTìm hiểu thuật toán quy hoạch động cho tính khoảng cáchTìm hiểu thuật toán quy hoạch động cho tính khoảng cáchTìm hiểu thuật toán quy hoạch động cho tính khoảng cáchTìm hiểu thuật toán quy hoạch động cho tính khoảng cáchTìm hiểu thuật toán quy hoạch động cho tính khoảng cáchTìm hiểu thuật toán quy hoạch động cho tính khoảng cáchTìm hiểu thuật toán quy hoạch động cho tính khoảng cáchTìm hiểu thuật toán quy hoạch động cho tính khoảng cáchTìm hiểu thuật toán quy hoạch động cho tính khoảng cách
Trang 1B GIÁO D O
I H C DÂN L P H I PHÒNG -o0o -
Trang 3H I PHÒNG - 2013
Trang 4- -o0o -
-CT1301
ách
Trang 5i dung
Trang 7
3
N
Trang 81
( )
N
Trang 10L I C M N 3
DANH M C CÁC B NG 4
DANH M C CÁC HÌNH 5
M U 6
Ch ng 1: T NG QUAN V PH NG PHÁP QUY HO NG 6
1.1 Gi i thi u chung 6
11
1.3 .12
12
1.5 Ý t 14
14
1.5.2 Ý t 14
14
1.6 Các b 14
Ch ng 2 M T S K THU T GI I BÀI TOÁN QUY HO CH NG 17
17
17
19
19
21
24
2.1.3.1 24
27
28
2.2 T ch c d li u 30
Ch ng 3 THU T TOÁN QUY HO NG VÀ LÝ THUY T TRÒ CH I 35
3.1 Bài toán trò ch i 35
i 36
3.2.1 Trò ch 37
3.2.1.1 Tr 38
Trang 11ng án (Decide Table) 47
Ch ng 4 THU T TOÁN QUY HO NG CHO TÍNH KHO NG CÁCH 52
52
4.1 52
55
55
4.2 : 56
56
56
59
65
ch 66
K T LU N 71
TÀI LI U THAM KH O 72
Trang 12ng 2.2 Các ph 21
31
ng án c 50
Trang 1332
37
i d 37
- Grundy 40
Hình 3.4 S i NIM 46
Trang 16-N -and-bound)
Trang 17thúc n sao
Bài toán phân
- Bài toán qui
h
Bài toán
NPtrong c
(near-
-làm
heuristic
Trang 18- -
Trang 21Hình 1.1 bài toán con
Trang 24các bài toán con hay không?" và
.t
Trang 26else if (n mod 2 = 0) then f:=f(n div 2)
else f:= f(n div 2) + f(n div 2+1);
if i mod 2 = 0 then f[i]:=f[i div 2]
else f[i]:= f[i div 2] + f[i div 2 +1];
Trang 27Function f(n: longint): longint;
Var a,b: longint;
Trang 30- i < j
i C(i, j) = C(i, i) i < j.
Trang 31thành xâu bit e[1 i], b(i
s[1 i] thành xâu bit e[1 i] theo cách trên, v(y,i
k i v(y,i
Trang 32s[1 i-1], B = e[1 i-1]
Trang 35if a[i,j] > 0 then {co duong di i -> j }
if p[i] + a[i,j] < p[j] then begin {sua dinh }
Bài toán cái túi
Trong siêu th có n gói hàng (n 100), gói hàng th i có tr ng là W[i]
100 và tr giá V[i] 100 M t tên tr t nh p vào siêu th , tên tr m mang theo
ng mà ta quan tâm là n gói hàng và tr ng t W V i n gói
hàng và tr ng t W thì giá tr l n nh t trong các gói hàng tên tr m l y
trong túi là bao nhiêu Vì v y ta g i hàm F(i, j) tr v giá tr l n nh t có th có b ng
N u không ch n gói th i thì F(i, j) là giá tr l n nh t có th b ng cách ch n
trong s các gói {1, 2, i - 1} v i gi i h n tr ng là j T c là F(i, j) = F(i - 1,
j)
N u có ch n gói th i (t t nhiên ch xét t ng h p này khi mà W[i] j)
thì F(i, j) b ng giá tr gói th i là V[i] c ng v i giá tr l n nh t có th c b ng cách ch n trong s i - 1} v i gi i h n tr ng j - W[i] T c là
v m t giá tr c: F(i, j) = V[i] + F(i - 1, j - W[i])
Vì theo cách xây d ng F(i, j) là giá tr l n nh t có th , nên F(i, j) s là Max
trong hai giá tr c trên
t b ng ngôn ng Pascal
Trang 36các viên bi
còn , X, X, X,
Trang 38for u:=i to j do
if a[u]=a[i] then
if dem[u-1,color]-dem[i-1,color]>=k-1 then
if d[i]^[j,k]<d[i]^[u-1,k-1]+best[u+1,j] then d[i]^[j,k]:=d[i]^[u-1,k-1]+best[u+1,j];
if d[i]^[j,k]+k*k>best[i,j] then best[i,j]:=d[i]^[j,k]+k*k;
Trang 39C:= C(i,i) else
Trang 41for i:=1 to j-1 do cc[i,j]:=cc[i,i];
for i:=j to m do cc[i,j]:=cc[i,j-1]+cc[i-j,j];
Trang 42procedure make_table1;
var i,j:integer;
begin
fillchar(c,sizeof(c),0); c[0]:=1; for j:=1 to n do
for i:=j to m do c[i]:= c[i]+ c[i-j]; writeln(c[m]);
end; [7]
và tìm khi
Trang 43C 3
lý do:
Trang 44heuristic
T T,
Trang 45Mô hình:
u lên trên
n
Trang 46-
Trang 47- Grundy
G2,
Trang 49(u1, u2) (v1, u2) và SG(<v1, u2>) = SG1(v1) SG2(u2) = x.
[2]
Trang 50K(i a các a j sau khi
Trang 52S, còn
-h
Trang 54
Program NIM;
Const tfi='NIM.INP';
Trang 60int LevenshteinDistance(char s[1 m], char t[1 n])
// d is a table with m+1 rows and n+1 columns
declare int d[0 m, 0 n]
for i from 0 to m
d[i, 0] := i
for j from 0 to n
Trang 61if s[i] = t[j] then cost := 0
else cost := 1d[i, j] := minimum(
d[i-1, j] + 1, //
d[i, j-1] + 1, //
d[i-1, j-1] + cost //
)}
Trang 644.2 : Dãy con chung
Trang 65-Quy là quy mà không có Phát toán
Dòng "computer" và "commuter" nhau, và thay
là trongthay ký t ,
Trang 66tra chính và Khi Word, ví tìm không
nucleotide, và các polymer "polynucleotide." nucleotide
và nhóm phosphate Có khác nhau các nucleotide trong DNA,
Trang 69E (3, 4) A [4] = B [5]
Trang 70Hàng tiên và tiên các
các bào E [i, j] mà còn tên
ra cách nó tính toán giá trong E [i 1, j], E [i, j 1] và E [i
tìm
ng E [i - 1, j - 1] Có các bào có hai tên vào nó Trong
j] và E [i, j - 1].Chúng tôi các tên sau xác
2
Trang 714
Trang 744.7 h
Trang 772
3
trong nha4
5