TR NG Đ I H C QU C GIA HÀ N IƯỜ
Đ I H C KHOA H C T NHIÊN
KHOA : TOÁN – C TIN H CƠ
---------------  ---------------
TI U LU N GI A KÌ
Môn h c : Thi t k và đánh giá thu t toán ế ế
Đ Tài : Ph ng pháp quay luiươ
Giáo viên h ngướ
d n : Nguy n Th H ng Minh
Sinh viên th c hiên : Lê Th Ng c Ánh
Nguy n H ng Ch ng ươ
Th Hi n ế
Tr n Th Thu H ng (4/9)
L p :K54A2 Toán Tin
Hà N i : 4 / 2012
L I NÓI Đ U
Trong q trình nghn c u gi i quy t các v n đ – bài toán, ng i ta đã đ a ra ế ườ ư
nh ng nh n xét nh sau: ư
Có nhi u bài toán cho đ n nay v n ch a tìm ra m t cách gi i theo ki u thu t ế ư
toán và cũng không bi t là t n t i thu t toán hay kng.ế
Có nhi u bài toán đã thu t toán đ gi i nh ng không ch p nh n đ c vì th i ư ượ
gian gi i theo thu t toán đó ql n ho c các đi u ki n cho thu t tn kđáp
ng.
Có nh ng bài toán đ c gi i theo nh ngch gi i vi ph m thu t toán nh ng ượ ư
v n ch p nh n đ c. ượ
T nh ng nh n đ nh trên, ng i ta th y r ng c n ph i có nh ng đ i m i cho ki ườ
ni m thu t toán. Ng i ta đã m r ng hai tiêu chu n c a thu t toán: tínhc đ nh và tính ườ
đúng đ n. Vi c m r ngnh xác đ nh đ i v i thu t toán đã đ c th hi n qua các gi i ượ
thu t đ quy và ng u nhiên. Tính đúng c a thu t toány gi không còn b t bu c đ i
v i m t s cách gi i bài toán, nh t là c cách gi i g n đúng. Trong th c ti n có nhi u
tr ng h p ng i ta ch p nh n các cách gi i th ng cho k t qu t t (nh ng kng ph iườ ườ ườ ế ư
lúco cũng t t) nh ng ít ph c t p và hi u qu . Ch ng h n n u gi i m t bài tn b ng ư ế
thu t toán t i u đòi h i máy tính th c hiên nhi u năm thì chúng ta th s n lòng ch p ư
nh n m t gi i pháp g n t i u mà ch c n máy tính ch y trong vài ngày ho c vài gi . ư
c cách gi i ch p nh n đ c nh ng không hn toàn đáp ng đ y đ c tiêu ượ ư
chu n c a thu t toán th ng đ c g i là các thu t gi i. Ki ni m m r ng này c a ườ ượ
thu t toán đã m c a cho chúng ta trong vi c tìm ki m ph ng pháp đ gi i quy t các ế ươ ế
i toán đ c đ t ra.ượ
Vét c n, quay lui ,nhánh c n .. là m t s n g i tuy kng đ ng nghĩa nh ng cùng ư
ch m t ph ng pháp r t đ n gi n trong tin h c : ươ ơ Tìm nghi m c a m t bài toán b ng
ch xemt t t c các ph ng án th ươ . Đ i v i con ng i ph ng pp này th ng ườ ươ ườ
là không kh thi s ph ng án c n ki m tra quá l n. Tuy nhiên đ i v i máy tính, nh ươ
t c đ x lí nhanh, máy tính có th gi i r t nhi u bài toán b ng ph ng pháp th sai. ươ
i ti u lu n sau đây , s cho chúng tam hi u h n v ơ “ Thu t toán quay
lui“ ki n th c c a chúng em còn nhi u h n ch nên trong quá trình làm ti u lu n cònế ế
sai sót. Mong cô và các b n , góp ý. Đ i ti u lu n c a chúng em hoàn ch nh h n . ơ
Chúng em xin c m n ! ơ
M C L C
I . T ng quan v
ph ngươ pháp quay lui
1 . D u hi u nh n bi t ế
2 . Ý t ng ưở
3 . hình
4 . L c đượ
5 . Ch ng minh tính đúng
6 . Nh n xét
7 . So sánh v i “ Vét c n , Nhánh c n
II . Phân tích thi t kế ế
m ts bài toán c b n ơ
1. Li t kê các dãy nh phân đ dài n
2. Phân tích s
3. Li t kê các ch nh h p không l p k ph n t
4. Ng i bán hàngườ
5. Bài toán Balo
6. Bài toán x p H uế
7. Chu trình Hamilton
III. M t s l i m c
ph i khi dùng ph ng pháp quay luiươ
1 . L i hay m c ph i
2 . Chú ý !
IV. T ng k t ế
1 . K t lu nế
2 . Ph l c
I . T ng quan v ph ng ươ pháp quay lui
1.D u hi u nh n bi t bài toán có th s d ng ph ng pp ế ươ
M t bài tn li t kê t h p luôn c n ph i đ m b o hai nguyên t c, đó là: không
đ c b sót m t c u hình và kng đ c trùng l p m t c u hình. Có th nói r ngượ ượ
ph ng pháp li t kê làch cu i cùng đ có th gi i đ c m t s i toán t h p hi nươ ượ
nay. M t trong nh ng ph ng pháp li t kênh ph d ng cao đó là ph ngpháp quay ươ ươ
lui.
M t s bài toàn li t kê đ n gi n : ơ
Li t kê các n c Asean ( Đ ÁN : Vi t Nam , Lào , Thài Lan … ) ướ
Li t kê các s nh phân 3 bit ( Đ ÁN : 000 , 001 , 010 , 100 , …..)
Li t kê các s t nhiên chia h t cho 5 ( Đ ÁN : 5,10,15,20,25…..) ế
Vv …..
2 . Ý t ng c a ph ng phápưở ươ
Quay đ u là b
Nét đ c tr ng c a ph ng pháp lui các b c h ng t i l i gi i cu i cùng c a bài ư ươ ướ ướ
toán hoàn tn đ c làm th .ượ
T i m i b c , n u có m t l a ch n đ c ch p nh n thì ghi nh n l i l a ch n ướ ế ượ
y và ti n hànhc b c th ti p theo. n ng c l i kng l a ch n nào thích h pế ướ ế ượ
thìm l i b c tr c, xóa b s ghi nh n và quay v chu trình th c l a ch n còn l i ướ ướ
.
nh đ ngy đ c g i là quay lui, thu t tn th hi n ph ng phápy g i là ượ ươ
quay lui.
Đi m quan tr ng c a thu t toán là ph i nghi nh m i b c đi qua đ tránh trùng ướ
l p khi quay lui . D th y làc thông tin y c n đ c l u tr vào m t ngăn x p , nên ượ ư ế
thu t toán th hi n ý thi t k m t cách đ quy. ế ế
3. hình
L i gi i c a bài tn th ng bi u di n m t vec t g m n ph n t = ( ..) ườ ơ
Ph i th a mãn các đi u ki n nào đó. Đ ch ra l i gi i x, ta ph i xây d ng d n các tnh
ph n l i gi i .
T i b c i : ướ
-Đã xây d ng xong các thành ph n ,…..
-y d ng thành ph n b ng cách l n l t th c c kh năng mà th ượ
ch n.
N u m t kh năng j nào đó ph h p cho thì ta xác đ nh theo kh năng jế
.Th ng ph i thêm thao tác ghi nh n tr ng thái m i c a bài tn đườ
h tr cho b c quay lui. N u i = n thì ta đ c m t l i gi i , ng c ướ ế ượ ượ
l i thì ti n hành b c i+1 đ c đ nh . ế ướ
N u không có m t kh năng nào ch p nh n đ c cho thì tai l iế ượ
b c tr c ( b c i -1 ) đ c đ nh l i thành ph n ướ ướ ướ
Đ đ n gi n , ta gi đ nhc kh năng l a ch n cho c t i m i b c là nh ơ ướ ư
nhau , dó đó ta ph i có thêm m t thao tác ki m tra kh năng j o là ch p nh n đ c cho ượ
.
Hình 1.1 : Mô hình a ý t ngưở
4 . L c đ ph ng phápượ ươ
Mô hình c a ph ng pháp quay lui th vi t b ng th t c sau, v i n là s b c ươ ế ướ
c n ph i th c hi n , k s kh năng mà có th l a ch n.
5 . Ch ng minh tính đúng c a ph ng pháp ươ
Chúng ta s ch ng minh tính đúng c a ph ng pháp b ng b t bi n vòng l p ươ ế
B t bi n vòng l p : D = {x ế 1 , x2 , … , xn }T p các c u hình.
Ta có 3 đi u b t bi n v ng l p này: ế
1. Kh i t o : j=1 có 1 kh ng ch p nh n đ c nghi m c a ượ
Bài toán luôn có nghi m.
2. Duy t : T i b c I thu t toán tìm m t giá tr cho , ghi nh n tr ng ướ
tr ng thái r i g i đ quy , đê sinh thành ph n . Khi sinh đ n thành
ph n c a x thì d ng l i c p nh t ph ng án t i u . N u m i kh ươ ư ế
năng c a . đ u đã xét qua thì vòng for c a try(i+1) th c hi n xong. Sau
đó ch ng trình s quay v đ g i đ quy c a try (i). Tr ng thái ươ