Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more ➡
Download
Standard view
Full view
of .
Add note
Save to My Library
Sync to mobile
Look up keyword
Like this
6Activity
×
0 of .
Results for:
No results containing your search query
P. 1
Chuong 3 - De Quy Va Giai Thuat de Quy

Chuong 3 - De Quy Va Giai Thuat de Quy

Ratings: (0)|Views: 1,730|Likes:
Published by thanhthangbmt

More info:

Published by: thanhthangbmt on Jan 03, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See More
See less

12/06/2012

pdf

text

original

 
 
u trúc d 
 
li
 
u và gi
i thu
 tCh
 
 ng 3.
  
quy và gi
i thu
 t
 
quy
Trang 21
Ch
 
ng 3.

quy và gi
i thu
t

quy
3.1.Khái ni
m v

quy
Ta nói m
t

i t
 
ng là

quy n
u nó
 
c

nh ngh
  
a qua chính nó ho
c m
t

i
 
ng khác cùng d
ng v
 
i chính nó b
ng quy n
p.d
:

t hai chi
c g
 
ng c
u

i di
n nhau. Trong chi
c g
 
ng th
nh
t ch
ahình chi
c g
 
ng th
hai. Chi
c g
 
ng th
hai l
i ch
a hình chi
c g
 
ng th
nh
t nênt
t nhiên nó ch
a l
i hình
nh c
a chính nó trong chi
c g
 
ng th
nh
t...
m
t góc nhình
 
p lý, ta có th
th
y m
t dãy
nh vô h
n c
a c
hai chi
c g
 
ng.M
t ví d
khác là n
u ng
 
i ta phát hình tr
c ti
p phát thanh viên ng
i bên máy vôtuy
n truy
n hình, trên màn hình c
a máy này l
i có chính hình
nh c
a phát thanh viên
ó ng
i bên máy vô tuy
n truy
n hình và c
nh
th
...Trong toán h
c, ta c
ng hay g
p các

nh ngh
  
a

quy:Giai th
a c
a n (n!): N
u n = 0 thì n! = 1; n
u n > 0 thì n! = n.(n-1)!
3.2.Gi
i thu
t

quy
N
u l
 
i gi
i c
a m
t bài toán P
 
c th
c hi
n b
ng l
 
i gi
i c
a bài toán P' có d
nggi
ng nh
P thì
ó là m
t l
 
i gi
i

quy. Gi
i thu
t t
 
ng
ng v
 
i l
 
i gi
i nh
v
y g
i làgi
i thu
t

quy. M
 
i nghe thì có v
h
 
i l
nh
ng
i
m m
u ch
t c
n l
uý là: P' tuy cód
ng gi
ng nh
P, nh
ng theo m
t ngh
  
a nào
ó, nó ph
i "nh
" h
 
n P, d
gi
i h
 
n P vàvi
c gi
i nó không c
n dùng

n P.

nh ngh
  
a m
t hàm

quy hayth
t
c

quy g
m hai ph
n:
Ph
n neo (anchor): ph
n này
 
c th
c hi
n khi mà công vi
c quá
 
n gi
n, cóth
gi
i tr
c ti
p ch
không c
n ph
i nh

n m
t bài toán con nào c
.
Ph
n

quy: trong tr
 
ng h
 
p bài toán ch
a th
gi
i
 
c b
ng ph
n neo, taxác

nh nh
ng bài toán con và g
i

quy gi
i nh
ng bài toán con
ó. Khi
ãl
 
i gi
i (
áp s
) c
a nh
ng bài toán con r
i thì ph
i h
 
p chúng l
i

gi
ibài toán
ang quan tâm.Ph
n

quy th
hi
n tính "quy n
p" c
a l
 
i gi
i. Ph
n neo c
ng r
t quan tr
ngb
 
inó quy
t

nh t
 
i tính h
u h
n d
ng c
a l
 
i gi
i.
3.3.Thi
t k
gi
i thu
t

quy3.3.1.Hàm n!intFactorial(int n) { /
Nh
n vào s
t
nhiên n và tr
v
n!
if (n==0) return 1;/
Ph
n neo
return n* Factorial(n-1);/
Ph
n

quy
}

ây, ph
n neo

nh ngh
  
a k
t qu
hàm t
i n = 0, còn ph
n

quy (
ng v
 
i n > 0)s

nh ngh
  
a k
t qu
hàm qua giá tr
c
a n và giai th
a c
a n- 1.
Ví d
: Dùng hàm này

tính 3!, tr
 
c h
t nó ph
i
i tính 2! b
 
i 3!
 
c tính b
ngtích c
a 3 * 2!. T
 
ng t

tính 2!, nó l
i
i tính 1! b
 
i 2!
 
c tính b
ng 2 * 1!. Ápd
ng b
 
c quy n
p này thêm m
t l
n n
a, 1! = 1 * 0!, và ta

t t
 
i tr
 
ng h
 
p c
a ph
n
 
 
u trúc d 
 
li
 
u và gi
i thu
 tCh
 
 ng 3.
  
quy và gi
i thu
 t
 
quy
Trang 22
neo,

n
ây t
giá tr
1 c
a 0!, nó tính
 
c 1! = 1*1 = 1; t
giá tr
c
a 1! nó tính
 
c2!; t
giá tr
c
a 2! nó tính
 
c 3!; cu
i cùng cho k
t qu
là 6.
3.3.2.y Fibonacci
Dãy s
Fibonacci b
t ngu
n t
bài toán c
v
vi
c sinh s
n c
a các c
p th
. Bàitoán

t ra nh
sau:1) Các con th
không bao gi
 
ch
t2) Hai tháng sau khi ra
 
i, m
i c
p th
m
 
i s
sinh ra m
t c
p th
con (m
t

c,m
t cái)3) Khi
ã sinh con r
i thì c
m
i tháng ti
p theo chúng l
i sinh
 
c m
t c
p conm
 
i Gi
s
t

u tháng 1 có m
t c
p m
 
i ra
 
i thì

n gi
a tháng th
n s
có bao nhiêuc
p. Ví d
, n = 5, ta th
y:Gi
a tháng th
1:1 c
p (ab) (c
p ban

u)Gi
a tháng th
2:1 c
p (ab) (c
p ban

u v
n ch
a

)Gi
a tháng th
3:2 c
p (AB)(cd) (c
p ban

u

ra thêm 1 c
p con)Gi
a tháng th
4:3 c
p (AB)(cd)(ef) (c
p ban

u ti
p t
c

)Gi
a tháng th
5:5 c
p (AB)(CD)(ef)(gh)(ik) (c
c
p (AB) và (CD) cùng

)Bây gi
 
, ta xét t
 
i vi
c tính s
c
p th
 
tháng th
n: F(n)N
u m
i c
p th
 
tháng th
n- 1

u sinh ra m
t c
p th
con thì s
c
p th
 
tháng th
n s
là: F(n) = 2 * F(n- 1)Nh
ng v
n

không ph
i nh
v
y, trong các c
p th
 
tháng th
n- 1, ch
nh
ng c
p th

ã có
 
tháng th
n- 2 m
 
i sinh con
 
tháng th
n
 
c thôi. Do
ó F(n)= F(n- 1) + F(n- 2) (= s
c
+ s
sinh ra). V
y có th
tính
 
c F(n) theo công th
c sau:
F(n) = 1 n
u n
2
F(n) = F(n- 1) + F(n- 2) n
u n > 2
int F(int n) {/
Tính s
c
p th
 
tháng th
n
if(n
2)return 1;/
Ph
n neo
return F(n- 1) + F(n- 2);/
Ph
n

quy}
3.3.3.Bài toán Tháp Hà N
i
âylàm
tbàitoánmangtínhch
tm
ttròch
 
i,n
idungn

sau:Cón
 
a
 
ngnhhoàntn phânbi
t,

tch
nglênnhau,các
 
a
 
cx
ptheoth
t
gi
md
nc
a
 
ngkínhtínht
d
 
ilên,
 
atonh
t
 
c

tsát

t.Cóbav
trícóth

tcác
 
a
ánhs
1,2,3.Ch
ng
 
aban

u
 
c

t
 
v
trí1:
123
Ng
 
i ta mu
n chuy
n c
ch
ng
 
a t
v
trí 1 sang v
trí 2, theo nh
ng

u ki
n:
 
 
u trúc d 
 
li
 
u và gi
i thu
 tCh
 
 ng 3.
  
quy và gi
i thu
 t
 
quy
Trang 23
Khi di chuy
n m
t
 
a, ph
i

t nó vào m
t trong ba v
trí 
ã cho
M
i l
n ch
có th
chuy
n m
t
 
a và ph
i là
 
a
 
trên cùng
T
i m
t v
trí,
 
a nào m
 
i chuy
n

n s
ph
i

t lên trên cùng
 
a l
 
n h
 
n không bao gi
 
c phép

t lên trên
 
a nh
h
 
n (hay nói cáchkhác: m
t
 
a ch
 
c

t trên m
t

t ho
c

t trên m
t
 
a l
 
n h
 
n)Trong tr
 
ng h
 
p có 2
 
a, cách làm có th
mô t
nh
sau: Chuy
n
 
a nh
sang v
trí 3,
 
a l
 
n sang v
trí 2r
i chuy
n
 
a nh
t
v
trí 3 sang v
trí 2.Nh
ng ng
 
i m
 
i b
t

u có th
gi
i quy
t bài toán m
t cách d
dàng khi s
 
a làít, nh
ng h
s
g
p r
t nhi
u khó kh
n khi s
các
 
a nhi
u h
 
n. Tuy nhiên, v
 
i t
duyquy n
p toán h
c và m
t máy tính thì công vi
c tr
 
nên khá d
dàng: Có n
 
a.
N
u n = 1 thì ta chuy
n
 
a duy nh
t
ó t
v
trí 1 sang v
trí 2 là xong.
Gi
s
r
ng ta có ph
 
ng pháp chuy
n
 
c n- 1
 
a t
v
trí 1 sang v
trí 2, thìcách chuy
n n- 1
 
a t
v
trí x sang v
trí y (1
x, y
3) c
ng t
 
ng t
.
Gi
s
ràng ta có ph
 
ng pháp chuy
n
 
c n- 1
 
a gi
a hai v
trí b
t k
.

chuy
n n
 
a t
v
trí x sang v
trí y, ta g
i v
trí còn l
i là z (= 6- x- y). Coi
 
a to nh
t là ... m
t

t, chuy
n n- 1
 
a còn l
i t
v
trí x sang v
trí z, sau
óchuy
n
 
a to nh
t
ó sang v
trí y và cu
i cùng l
i coi
 
a to nh
t
ó là m
t

t, chuy
n n- 1
 
a còn l
i
ang
 
v
trí z sang v
trí y ch
ng lên
 
a to nh
t
ó.Cách làm
ó
 
c th
hi
n trong th
t
c

quy d
 
i
ây:
void Move(int n, intx, int y)
{ //Th
t
c chuy
n n
 
a t
v
trí x sang v
trí y
if (n == 1)printf("\nChuyen 1 dia: %d--> %d", x, y);else {Move(n- 1, x, 6- x- y);
 // Chuy
n n- 1
 
a t
x sang v
trí còn l
i
Move(1, x, y);
 // Chuy
n
 
a to nh
t t
x sang y
Move(n-1, 6- x- y, y);
 // Chuy
n n- 1
 
a t
v
trí còn l
i sang v
trí y
}}
Ch
 
ng trình chính r
t
 
n gi
n, ch
g
m có 2 vi
c: Nh
p vào s
n và g
i Move(n, 1, 2).
3.4.Hi
u l
 
c c
a

quy
Quacácvíd
trên,tacóth
th
y

quylàm
tcôngc
m
nh

gi
icácbàitn.Cónh
ngbàitoánmàbênc
nhgi
ithu
t

quyv
ncónh
nggi
ithu
tl
pkhá
 
ngi
nvàh
uhi
u.Ch
ng h
nbàitoántínhgiaith
ahaytínhs
Fibonacci.Tuyv
y,

quyv
ncóvaitròx
ng
ángc
anó, cónhi
ubàitoánmàvi
cthi
tk
gi
ithu
t

quy
 
ngi
n
 
nnhi
usov
 
il
 
igi
il
pvàtrong m
ts
t
 
ngh
 
pch
 
ngtrình

quyho
t

ngnhanhh
 
nch
 
ngtrìnhvi
tkhôngcó

quy. Gi
ithu
tchobàiThápN
ivàthu
ttoáns
px
pki
uphân
o
n(QuickSort)màtas
nóit
 
itrongcácbàisaulành
ngvíd
.

Activity (6)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
Ngo Quoc Thong liked this
Luca Toni liked this
haihanhuy liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->