Ch ng 1ươ
BI U DI N BÀI TOÁN
TRONG KHÔNG GIAN TR NG THÁI
1. Đ t v n đ .
Khi gi i quy t bài toán b ng ph ng pháp tìm ki m, tr c h t ta ph i xác ế ươ ế ướ ế
đ nh không gian tìm ki mế bao g m t t c các đ i t ng trên đó th c hi n ượ
vi c tìm ki m. ế
M t ph ng pháp bi u di n v n đ phù h p s d ng các khái ni m ươ
tr ng thái (state) và toán t (operator).
Ph ng pháp gi i quy t v n đ d a trên khái ni m tr ng thái toán tươ ế
đ c g i là cách ti p c n gi i quy t v n đ nh không gian tr ng thái.ượ ế ế
2. Mô t tr ng thái
Gi i bài toán trong không gian tr ng thái, tr c h t ph i xác đ nh d ng ướ ế
t tr ng thái bài toán sao cho bài toán tr nên đ n gi n h n, phù h p b n ch t ơ ơ
v t c a bài toán (Có th s d ng các xâu hi u, véct , m ng hai chi u, ơ
cây, danh sách).
M i tr ng thái chính m i hình tr ng c a bài toán, các tình tr ng ban đ u
và tình tr ng cu i c a bài toán g i là tr ng thái đ u và tr ng thái cu i.
Ví d 1. Bài toán đong n cướ
Cho 2 bình dung tích l n l t m n (lit). V i ngu n n c không ượ ướ
h n ch , dùng 2 bình trên đ đong k lit n c. Không m t tính t ng quát có th ế ướ
gi thi t k <= min(m,n). ế
T i m i th i đi m xác đ nh, l ng n c hi n trong m i bình ph n ượ ướ
ánh b n ch t hình tr ng c a bài toán th i đi m đó.
- G i x l ng n c hi n trong bình dung tích m y l ng ượ ướ ượ
n c hi n có trong bình dung tích n. Nh v y b th t (x,y) có th xem làướ ư
tr ng ti c a i toán. V i ch mô t nh v y, các tr ng thái đ c bi t c a bài ư
tn s :
-Tr ng thái đ u: (0,0)
12
-Tr ng thái cu i: (x,k) ho c (k,y), 0 x m , 0 y n
Ví d 2. Bài toán trò ch i 8 s ơ
Trong b ng ô vuông 3 hàng, 3 c t , m i ô ch a m t s n m trong ph m
vi t 1 đ n 8 sao cho không có 2 ô có cùng giá tr , có m t ô trong b ng b tr ng ế
(không ch a giá tr nào c . Xu t phát t m t s p x p nào đó các s trong ế
b ng, hãy d ch chuy n ô tr ng sang ph i, sang trái, lên trên ho c xu ng d i ướ
(n u th đ c) đ đ a v b ng ban đ u v b ng qui c tr c. Ch ngế ượ ư ướ ướ
h n Hình 1. d i đây b ng xu t phát Hình 2. b ng ta ph i th c ướ
hi n các b c di chuy n ô tr ng đ đ t đ c. ướ ượ
2 8 3
1 6 4
7 5
Hình 1.
1 2 3
8 4
7 6 5
Hình 2.
Giá tr các ph n t trong b ng xác đ nh tr ng thái bài toán. v y
th t tr ng thái c a bài toán b ng m t ma tr n A 3*3= (aij) , aij{0..8}, aij <
> akl, i<>k, j<> l
-Tr ng thái đ u c a bài toán là ma tr n
-Tr ng thái cu i là ma tr n
Có th phát bi u d ng t ng quát c a bài toán này (Trò ch i n ơ 2-1 s )
13
507
461
382
567
408
321
Ví d 3. Bài toán tháp Hà N i
Cho ba c c 1, 2, 3. c c 1 ban đ u n đĩa s p x p theo th t to d n t ế
d i lên trên. Hãy d ch chuy n n đĩa đó sang c c th 3 sao cho:ướ
-M i l n ch chuy n m t đĩa.
-Trong m i c c không cho phép đĩa to n m trên đĩa nh h n. ơ
Bài toán xác đ nh khi bi t đ c t ng đĩa đang n m c c nào. Hay nói cách ế ượ
khác, có hai cách xác đ nh:
1- C c 1 hi n đang ch a nh ng đĩa nào? C c 2 hi n đang ch a nh ng đĩa
nào? Và c c 3 đang ch a nh ng đĩa nào.
2- Đĩa l n th i hi n đang nàm c c nào? ( i = 1 .. n )
Nh v y cách t tr ng thái bài toán không duy nh t, v n đ ch n cáchư
mô t nào đ đ t đ c m c đích d dàng nh t. ượ
Theo trên, v i cách th nh t ta ph i dùng 3 danh sách đ ng vì s đĩa trên m i
c c là khác nhau trong t ng th i đi m khác nhau.
Cách th hai, nhìn qua thì khó t nh ng d a vào khái ni m v b th ư
t trong toán h c, cách này mô t bài toán hi u qu h n. Th t v y, n u g i x ơ ế i
c c ch a đĩa l n th i, trong đó x i{1, 2, 3}, i{1 ..n}. Khi đó b th t
(x1, x2, . . ,xn) có th dùng làm d ng mô t tr ng thái đang xét c a bài toán. V i
cách mô t này,
Tr ng thái đ u là (1,1,. . .,1)
Tr ng thái cu i là (3,3,. . .,3)
3. Toán t chuy n tr ng thái.
Toán t chuy n tr ng thái th c ch t các phép bi n đ i đ a t tr ng thái ế ư
này sang tr ng thái khác. Có hai cách dùng đ bi u di n các toán t :
-Bi u di n nh m t hàm xác đ nh trên t p các tr ng thái nh n giá tr ư
cũng trong t p này.
-Bi u di n d i d ng các quy t c s n xu t S? A nghĩa n u ướ ế
tr ng thái S thì có th đ a đ n tr ng thái A. ư ế
14
Ví d 1. Bài toán đong n cướ
Các thao tác s d ng đ chuy n tr ng thái này sang tr ng thái khác
g m:
Đ đ y m t bình, đ h t n c trong m t bình ra ngoài, đ n c t bình này ế ướ ướ
sang bình khác. Nh v y, n u tr ng thái đang xét (x,y) thì các tr ng thái kư ế ế
ti p có th chuy n đ n s là:ế ế
(m,y)
(x,n)
(0,y)
(x,0)
(x,y) (0, x+ y) nếu x+y < = n
(x+y -n,n) n u x+y > nế
(x+ y,0) n u x+y < = mế
(m, x+y-m) n u x+y > mế
Ví d 2. Trò ch i 8 sơ
Các thao tác đ chuy n tr ng thái t ng ng v i vi c chuy n ô tr ng sang ươ
ph i, sang trái, lên, xu ng n u có th đ c. ế ượ
-Bi u di n theo quy t c s n xu t:
-Bi u di n theo m t hàm
G i hàm fu là hàm bi u di n cho toán t chuy n ô tr ng lên trên; g i B (B=
(bij)) tr ng thái sau khi di chuy n ô tr ng tr ng thái A (A= (a ij)) lên trên,
15
'()*+,-6
'(*+),-6
'()*+6,-
'()*+,-6
nghĩa là: B= fu(A), gi s ô tr ng đang v trí (i 0, j0) (hay nói cách khác ai0 j0 =
0) thì hàm f đ c xác đ nh nh sau:ượ ư
aij (i, j) n u iế0 = 1
fu(aij) = aij n u (i, j) ế (i0-1, j0) và (i, j) (i0, j0) và i0 >1
ai0-1, j0 n u (i, j) = (iế0, j0), i0 >1
ai0, j0 n u (i, j) = (iế0-1, j0), i0 >1
T ng t , th xác đ nh các phép chuy n ô tr ng xu ng d i fươ ướ d, qua trái fl,
qua ph i fr nh sau:ư
aij (i, j) n u iế0 = 3
fd(aij) = aij n u (i, j) ế (i0+1, j0) và (i, j) (i0, j0) và i0 <3
ai0-1, j0 n u (i, j) = (iế0, j0), i0 <3
ai0, j0 n u (i, j) = (iế0+1, j0), i0 <3
aij (i, j) n u jế0 = 1
fl(aij) = aij n u (i, j) ế (i0, j0-1) và (i, j) (i0, j0) và j0 > 1
ai0-1, j0 n u (i, j) = (iế0, j0), j0 > 1
ai0, j0 n u (i, j) = (iế0, j0-1), j0 > 1
aij (i, j) n u jế0 = 3
fr(aij) = aij n u (i, j) ế (i0, j0+1) và (i, j) (i0, j0) và j0 < 3
ai0-1, j0 n u (i, j) = (iế0, j0), j0 < 3
ai0, j0 n u (i, j) = (iế0, j0+1), j0 < 3
Ví d 3. Bài toán Tháp Hà N i v i n=3.
M i tr ng thái là m t b ba (i, j, k). Có các tr ng h p nh sau: ườ ư
- Ba đĩa cùng n m trên m t c c: (i, i, i)
- Hai đĩa cùng n m trên m t c c: (i, i, j), (i, j, i), (j, i, i)
- Ba đĩa n m trên ba c c phân bi t: (i, j, k)
16