Professional Documents
Culture Documents
Phan Tich Thuat Toan - Phan 3
Phan Tich Thuat Toan - Phan 3
+
=
S(1)
+
1 S(0)
=
S(0) 0
Bc 1. Phn tch
Phn tch thnh bi ton ng
dng nhng n gin hn.
Dng li bi ton ng
dng n gin nht c th xc
nh ngay kt qu.
Bc 2. Th ngc
Xc nh kt qu bi ton
ng dng t n gin n
phc tp Kt qu cui cng.
24
Khi nim quy
Khi nim
Vn quy l vn c
nh ngha bng chnh n.
V d
Tng S(n) c tnh thng qua
tng S(n-1).
2 iu kin quan trng
Tn ti bc quy.
iu kin dng.
25
Hm quy trong NNLT C
Khi nim
Mt hm c gi l quy nu bn trong
thn ca hm c li gi hm li chnh n
mt cch trc tip hay gin tip.
Hm()
{
Li gi Hm
}
Q trc tip
Hm1()
{
Li gi Hm2
}
Q gin tip
Hm2()
{
Li gi Hmx
}
26
Cu trc hm quy
{
if (<K dng>)
{
Li gi Hm
}
<Kiu> <TnHm>(TS)
Phn dng
(Base step)
Phn khi tnh ton hoc
im kt thc ca thut ton
Khng cha phn ang c
nh ngha
Phn quy
(Recursion step)
C s dng thut ton ang
c nh ngha.
27
Phn loi
2
TUYN TNH
NH PHN
H TNG
PHI TUYN
1
3
4
Trong thn hm c duy nht mt
li gi hm gi li chnh n mt
cch tng minh.
Trong thn hm c hai li gi
hm gi li chnh n mt cch
tng minh.
Trong thn hm ny c li gi hm ti
hm kia v bn trong thn hm kia c
li gi hm ti hm ny.
Trong thn hm c li gi hm li chnh
n c t bn trong thn vng lp.
28
<Kiu> TnHm(<TS>) {
if (<K ng>) {
TnHm(<TS>);
}
Cu trc chng trnh
quy nh phn
Tnh s hng th n ca dy
Fibonacy:
f(0) = f(1) = 1
f(n) = f(n 1) + f(n 2) n > 1
K dng: f(0) = 1 v f(1) = 1
V d
30
.: Chng trnh :.
long Fibo(int n)
{
if (n == 0 || n == 1)
return 1;
return Fibo(n1)+Fibo(n2);
}
<Kiu> TnHm1(<TS>) {
if (<K dng>)
return <Gi tr>;
TnHm2(<TS>);
}
<Kiu> TnHm2(<TS>) {
if (<K dng>)
return <Gi tr>;
TnHm1(<TS>);
}
Cu trc chng trnh
quy h tng
Tnh s hng th n ca dy:
x(0) = 1, y(0) = 0
x(n) = x(n 1) + y(n 1)
y(n) = 3*x(n 1) + 2*y(n 1)
K dng: x(0) = 1, y(0) = 0
V d
31
.: Chng trnh :.
long yn(int n);
long xn(int n) {
if (n == 0) return 1;
return xn(n-1)+yn(n-1);
}
long yn(int n) {
if (n == 0) return 0;
return 3*xn(n-1)+2*yn(n-1);
}
<Kiu> TnHm(<TS>) {
if (<K dng>) {
}
Cu trc chng trnh
quy phi tuyn
Tnh s hng th n ca dy:
x(0) = 1
x(n) = n
2
x(0) + (n-1)
2
x(1) +
+ 2
2
x(n 2) + 1
2
x(n 1)
K dng: x(0) = 1
V d
32
.: Chng trnh :.
long xn(int n)
{
if (n == 0) return 1;
long s = 0;
for (int i=1; i<=n; i++)
s = s + i*i*xn(ni);
return s;
}
V d
V d
Vi trng c 1 gi li nhn i. Vy sau 5 gi
s c my con vi trng nu ban u c 2 con?
33
Gii php
Gi V
h
l s vi trng ti thi
im h.
Ta c:
V
h
= 2V
h-1
V
0
= 2
quy tuyn tnh vi
V(h)=2*V(h-1) v iu kin
dng V(0) = 2
int vitrung(int n)
{
if (n == 0)
return 2;
return 2*vitrung(n-1);
}
Phn tch thut ton quy
Cch 1:
Thnh lp phng trnh quy
Gii phng trnh quy
Thi gian thc hin chng trnh = nghim ca
phng trnh quy
Cch 2:
Kh quy Thut ton khng quy
34
Phn tch thut ton quy
Thnh lp phng trnh quy
Phng trnh qui l mi quan h gia T(n) v
T(k), vi T(n) v T(k) l thi gian thc hin
chng trnh c kch thc d liu l n, k (k s n)
Trng hp dng: thi gian thc hin l C(n)
Gi qui C bao nhiu li gi qui c kch
thc k ta s c by nhiu T(k)
Ngoi ra, thi gian tng hp bi ton f(n)
35
Phn tch thut ton quy
Thnh lp phng trnh quy
Dng tng qut ca phng trnh qui
C(n): thi gian thc hin chng trnh trong
trng hp dng
g(T(k)) l a thc ca T(k)
f(n) l thi gian phn chia/kt hp cc kt qu
36
+
=
) ( )) ( (
) (
) (
n f k T g
n C
n T
Phn tch thut ton quy
Thnh lp phng trnh quy
V d: Vi trng c 1 gi li nhn i. Vy sau 5 gi s c
my con vi trng nu ban u c 2 con?
37
int vitrung(int n)
{
if (n == 0)
return 2;
return 2*vitrung(n-1);
}
Khi n = 0, chng trnh thc hin
lnh return nn tn O(1) do ta c
T(0) = C
1
Khi n > 0, gi qui tnh vitrung(n
1) nn thi gian thc hin l T(n-1).
Thi gian nhn cc kt qu li vi
nhau l C
2
T(n) l thi gian tnh n!
T(n - 1) l thi gian tnh (n-1)!
Phn tch thut ton quy
Thnh lp phng trnh quy
V d: Vi trng c 1 gi li nhn i. Vy sau 5 gi s c
my con vi trng nu ban u c 2 con?
38
int vitrung(int n)
{
if (n == 0)
return 2;
return 2*vitrung(n-1);
}
Khi n = 0, chng trnh thc hin
lnh return nn tn O(1) do ta c
T(0) = C
1
Khi n > 0, gi qui tnh vitrung(n
1) nn thi gian thc hin l T(n-1).
Thi gian nhn cc kt qu li vi
nhau l C
2
> +
=
=
0 ) 1 (
0
) (
2
1
n khi C n T
n khi C
n T
Phn tch thut ton quy
Thnh lp phng trnh quy
V d: Gi ngn hng 1000 USD, li sut 12%/nm. S
tin c c sau 30 nm l bao nhiu?
Gii php
Gi T
n
l s tin c c sau n nm.
Ta c:
T
n
= T
n-1
+ 0.12T
n-1
= 1.12T
n-1
V(0) = 1000
quy tuyn tnh vi T(n)=1.12*T(n-1) v iu kin
dng V(0) = 1000
39
Phn tch thut ton quy
Thnh lp phng trnh quy
V d: Gi ngn hng 1000 USD, li sut 12%/nm. S
tin c c sau 30 nm l bao nhiu?
40
int goitien(int n)
{
if (n == 0)
return 1000;
return 1.12*goitien(n-1);
}
Khi n = 0, chng trnh thc hin
lnh return nn tn O(1) do ta c
T(0) = C
1
Khi n > 0, gi qui tnh goitien(n1)
nn thi gian thc hin l T(n-1).
Thi gian nhn cc kt qu li vi
nhau l C
2
> +
=
=
0 ) 1 (
0
) (
2
1
n khi C n T
n khi C
n T
Phn tch thut ton quy
Thnh lp phng trnh quy
V d: Chng trnh tnh s Fibonacy
41
long Fibo(int n)
{
if (n == 0 || n == 1)
return 1;
return Fibo(n1)+Fibo(n2);
}
1
2
0 || 1
( )
( 1) ( 2) 1
C khi n n
T n
T n T n C khi n
= =
=
+ + >
=
+ >
=
+ + >
> +
=
=
0 ) 1 (
0
) (
2
1
n khi C n T
n khi C
n T
| |
| |
2
2 2 2
2 2 2
2
( ) ( 1)
( 2) ( 2) 2
( 3) 2 ( 3) 3
....
( )
T n T n C
T n C C T n C
T n C C T n C
T n i iC
= +
= + + = +
= + + = +
= +
Phn tch thut ton quy
Gii phng trnh quy- PP Truy hi
V d
Qu trnh kt thc khi
48
1
2
1
( )
2 ( ) 1
2
C khi n
T n
n
T nC khi n
=
=
+ >
2
2 2 2
2 2 2
2
( ) 2
2
2 2 4 2
4 2 4
4 2 2 8 3
8 4 8
.....
2
2
i
i
n
T n T nC
n n n
T C nC T nC
n n n
T C nC T nC
n
T inC
| |
= +
|
\ .
(
| | | |
= + + = +
| |
(
\ . \ .
(
| | | |
= + + = +
| |
(
\ . \ .
| |
= +
|
\ .
1 log
2
i
n
i n = =
Phn tch thut ton quy
Gii phng trnh quy- PP Truy hi
V d
Qu trnh kt thc khi
Khi :
49
1
2
1
( )
2 ( ) 1
2
C khi n
T n
n
T nC khi n
=
=
+ >
1 log
2
i
n
i n = =
( )
( )
2
log
2
log
2
1 2
2
2
2 log
2
(1) (log )
(log )
( log )
i
i
n
n
n
T n T inC
n
T n nC
nT n n C
nC n n C
O n n
| |
= +
|
\ .
| |
= +
|
\ .
= +
= +
=
Phn tch thut ton quy
Gii phng trnh quy- PP Truy hi
V d
50
1
2
0
( )
( 1) 0
C khi n
T n
T n n C khi n
=
=
+ + >
=
+ >
>
=
+ >
> +
=
| |
+ +
|
\ .
=
| |
+ +
|
\ .
=
| |
+ +
|
\ .
=
| |
+ >
|
\ .
( ) ( )
2
( ) log log
c
T n O n n O n n = =
Phn tch thut ton quy
Gii phng trnh quy-nh l Master
V d:
a = 3, b = 4, c = 1/2
a > b
c
TH1
63
1 if 1
( )
3 if 1
4
n
T n
n
T n n
=
=
| |
+ >
|
\ .
( ) ( )
4
log ( ) log (3)
( )
b
a
T n O n O n = =
Phn tch thut ton quy
Gii phng trnh quy
Phng php truy hi
Phng php on nghim
nh l Master
Phng php hm sinh
nh ngha
p dng
64
Phn tch thut ton quy
Hm sinh
nh ngha:
Hm sinh ca dy v hn l chui ly
tha
K hiu:
65
{ }
=0 n
n
a
0
( )
n
n
n
f x a x
=
=
{ } ,... , ,
2 1 0
0
a a a a
n
n
=
=
2
0 1 2
0
( ) ...
n
n
n
f x a x a a x a x
=
= = + + +
=
= = =
( )
( ) 0
1
1 ( ) 1
1
n
n
n
a f x x
x
=
= = =
+
=
= = =
( )
( )
2
0
1
1 ( ) 1
1
n
n
n
a n f x n x
x
=
= + = + =
=
>
0
( ) ( )
n
n
f x T n x
=
=
=
>
0
( ) ( )
n
n
f x T n x
=
=
Ta c:
2
( ) ( ) (0) (1)
n
n
f x T n x T T x
=
= + +
| |
2
( ) 6 ( 1) 9 ( 2) 1 9
n
n
f x T n T n x x
=
= + +
=
= + +
| | | |
***
2 2
( ) 6 ( 1) 9 ( 2) 1 9
n n
n n
f x T n x T n x x
= =
= + +
| |
1
2 2
6 ( 1) 6 ( 1)
n n
n n
T n x x T n x
= =
=
| | | |
2
6 ( 1) 6 ( ) (0)
n
n
T n x x f x T
=
=
| | | |
2
6 ( 1) 6 ( ) 1
n
n
T n x x f x
=
=
= =
=
| | | |
2
2
9 ( 2) 9 ( )
n
n
T n x x f x
=
=
Th vo ***:
( ) ( )
2
( ) 6 ( ) 1 9 ( ) 1 9 f x x f x x f x x = + +
Phn tch thut ton quy
Hm sinh
72
( ) ( )
2
( ) 6 ( ) 1 9 ( ) 1 9 f x x f x x f x x = + +
2 2 2 2
1 3 1 3 1 3
( )
9 6 1 (1 3 ) (1 3 ) (1 3 )
x x x
f x
x x x x x
+ +
= = = +
+
M: ( )
2
0
1
1 (3 )
(1 3 )
n
n
n x
x
=
= +
( )
2
0
3
3 1 (3 )
(1 3 )
n
n
x
x n x
x
=
= +
Phn tch thut ton quy
Hm sinh
73
2 2 2 2
1 3 1 3 1 3
( )
9 6 1 (1 3 ) (1 3 ) (1 3 )
x x x
f x
x x x x x
+ +
= = = +
+
M: ( )
2
0
1
1 (3 )
(1 3 )
n
n
n x
x
=
= +
( )
2
0
3
3 1 (3 )
(1 3 )
n
n
x
x n x
x
=
= +
Ta c:
( ) ( )
0 0
( ) 1 (3 ) 3 1 (3 )
n n
n n
f x n x x n x
= =
= + + +
Phn tch thut ton quy
Hm sinh
74
( ) ( )
0 0
( ) 1 (3 ) 3 1 (3 )
n n
n n
f x n x x n x
= =
= + + +
( ) ( )
0 0
( ) 1 3 3 1 3
n n n n
n n
f x n x x n x
= =
= + + +
( ) ( )
1 1
0 0
( ) 1 3 1 3
n n n n
n n
f x n x n x
+ +
= =
= + + +
( ) ( )
0 0
( ) 1 3 3
n n n n
n n
f x n x n x
= =
= + +
( )
0
( ) 2 1 3
n n
n
f x n x
=
= +
Vy:
( )
( ) 2 1 3 ( 3 )
n n
T n n O n = + =