30
2:
2.2:
! !
" #$
!""
# $% &%
' ()*+
,-
,-
./ (
. % "
! & " '(:
%(%')
(-)
%(%') *
'&" !&')(! +, !
'&" !&')(! +, !
+ .. +( Fibonacci
%(%')
+ .. +!), %++%+!! %,
+ .. '$'! -! ." /%+(
B. ',('&- &')(! +(,
2 ' " !&+$! ' ' '&- % -&
% &'(, , '- ')+(' !'" ' +(:
'&" (' *!(+'' ( 2.1)
( 2.2)
!'" , 0%+! , +, ( 2.3)
/%& )')' '&- !'" +(, % '( '
$+.
B. ',(1. !
!
1 -&' - %2+ % -&' '3" ) ':
) , *-+ ! , %- 4: ( +$!' %2+
'( %+(!' 2-+ ! +$! !' % %%2+" ,
!", ' )".
/%%2+ ,: %+" , %%2+ , % /%%2+ ,: %+" , %%2+ , %
%-%' +$!' '( ()+)" %+, , % -'
%2+" )
%+% ' %- 2+" : 1 +$' %++- 5- ()
%%2+" ' % -+'! &' &
% ! '( +$!!
( +$' % '+$ ' + ' %2+"
6'' % ' %+(7' + '+$ ' %2+" !!
%'$ ')'!' +$!' 3%"!' '!
B. ',(1. !
"
!'!' - + $ !$ ' '3"
2" :
1. '5' - ) + % +$' %2+
2. (' )" !&-! % %+(7' 2-+ ! +$! ('%(+! %
%, % ,)%, % ,)
3. %! 4' !&$ ' !"' !'" +(
)$ % !$.
4. ' 2! )" !&-!, !'7' ))!( '%(+! %
%2+" !' + '+$ ' ('%(+! % , % %,)
5. (' '%+% + % ' '%(+!" %2+"
6. /%+(7' %+%+ '%+% $ +(
*. ',(1. !1. +( Fibonacci
#
*: (' - 5! n. %+! '( n-
Fibonacci.
%4 15 ( Fibonacci:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
. % +( (7' -!, )" !&-!:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
>+
===
−− 2,
21,1
21 nff
nnf
nn
n
*. ',(1. !1. +( Fibonacci (1. $%,! )$ +()
$
8 ) + % +%'( %%, ))!( '(
'3":
procedure FibRec(n)
if n=1 or n=2 then
return 1
else
O + -&' %+%+ % %'5' %
)" !&-!:
a=FibRec(n-1)
b=FibRec(n-2)
c=a+b
return c
end if
end procedure
(1), 1 2( )
( 1) ( 2) (1), 2
n nT n
T n T n n
Θ = ==
− + − +Θ >
*. ',(1. !1. +( Fibonacci (1. $%,! )$ +()
%
)" !&-! T’(n)=T’(n-1)+T’(n-2)+1 %'( %!'! '( -!,
5 ,
!"
!&$' '( ) '( 1) '( 2) 1 '( 1) '( 1) 1T n T n T n T n T n= − + − + ≤ − + − +
1)1(2)( +−= nAnA'%4 +$' )"
1)1(2)( +−= nAnA
)2(12
12)1(2
122...2)0(2
...
122...2)(2
...
122)3(2
12)2(2
1)1(2)(
11
21
21
23
2
nn
n
nn
kk
A
knA
nA
nA
nAnA
Θ=−
−+Θ=
=+++++=
==
=+++++−=
==
=+++−=
=++−=
=+−=
+−
−
−
)2()( nnT Ο=
*. ',(1. !1. +( Fibonacci (1. $%,! )$ +()
&
)" !&-! T’(n)=T’(n-1)+T’(n-2)+1 %'( %!'! '( -!,
5 ,
#" !"
!&$' '( ) '( 1) '( 2) 1 '( 2) '( 2) 1T n T n T n T n T n= − + − + ≥ − + − +
1)2(2)( +−= nKnK'%4 +$' )"
1)2(2)( +−= nKnK
)2(12
12)1(2
122...2)0(2
...
122...2)2(2
...
122)6(2
12)4(2
1)2(2)(
2/11)2/(
21)2/(2/
21
23
2
nn
n
nn
kk
K
knK
nK
nK
nKnK
Θ=−
−+Θ=
=+++++=
==
=+++++−=
==
=+++−=
=++−=
=+−=
+−
−
−
)2()( 2/nnT Ω=
*. ',(1. !1. +( Fibonacci (1. $%,! )$ +()
&&
%+%+ +( '(
( %+$ +!!
, % ' -+'! )" ))!(. .&. n=5:
)2()( 2/nnT Ω= )2()( nOnT =
)5(fib
)4(fib
)3(fib )2(fib
)2(fib )1(fib )1(fib )0(fib
)1(fib )0(fib
)3(fib
)2(fib )1(fib
)1(fib )0(fib
*. ',(1. !1. +( Fibonacci (3."' ..)
&
%+'$' !&$ !"' !'" ' +
$ !$:
/ / .. +( Fibonacci:
) , *-+ ! , %- 4: %+(!'
+$!, %+(7' +$! ! )$ -!, %$' %%2+"-
. .
/%%2+ ,: %+" , %%2+ ,
%-%' +$!' '( (!'- %-%' +$!' n
%%2+" )
%+% ' %- 2+" : 7! '
+$!' %++- 5- () %%2+" , +, % ' -+'!
)" ))!(.
*. ',(1. !1. +( Fibonacci (4. )!( %(+!)
&
) % ! % '(':
+$!' %2+ «% , % %,», )+)"
+$!' ))& %%2+" :
Fib(1)
Fib(2) Fib(2)
…
Fib(n)1 2 3 4 5 6 … n
1 1 … fib(n)
*. ',(1. !1. +( Fibonacci (5.%+% + 6.+%+ )
&
8 + )$ % !$ % +%'(
%%, ))!( '( '3":
procedure FibSeq(n)
A[1]=1
A[2]=1
for i=3 to n
%+%+ +( '( (n).
A[i]=A[i-1]+A[i-2]
end for
return A[n]
end procedure
*. ',(1. !2. +!), ++%+!! ,
&!
*: () %(' 1,2,…,n % %( Ai '(
)! ! di-1 x di. ' % !' (' %++%+!!
- 1 x 2 x … x n
$%:
A1 x A2 x A3 % 1: 5x8, A2: 8x4, A3: 4x2
A1 x A2 x A3 x A4 % 1: 10x6, A2: 6x3, A3: 3x8, A4: 8x2
+:
5" +: .' %3' % ! ' % )'3:
4 A1 x A2 = C1 -%' C1 x A3 ... %3' % ( '(:
d0d1d2 + d0d2d3 + …+ d0dn-1dn
+ $ !$: %-+'3' !' '
%( ( %++%+!!( , %,. % &'
! " 2'+ (,! ! %+%+ .
*. ',(1. !2. +!), ++%+!! ,
&"
)$' ( -&' 3( - + !$ !' ,%++%+!!4. )':
A1 x A2 x A3 % 1: 5x8, A2: 8x4, A3: 4x2 %3' %$ (:
(A1 x A2) x A3
%+! A1 x A2: 5x8x4=160 %3' %$% ' %+! A1 x A2: 5x8x4=160 %3' %$% '%( 5x4, -! , C
%+! C x A3: 5x4x2=40 %3' %$% ' %(-' 5 x 2
$+ 200 %3'
A1 x (A2 x A3) %+! A2 x A3: 8x4x2=64 %3' %$% '
%( 8x2, -! , C
%+! 1 x C: 5x8x2=80 %3' %$% ' %(-' 5 x 2
$+ 144 %3'
0 ' ++ !' -, + 4' %++- %3'!
*. ',(1. !2. +!), ++%+!! ,
&#
%'!! ' %(' %& %'!! ' % '
%++%+!!, '+$ ' 5'+ ! %3':
A1 x A2 x A3 x A4 %'( %'' %'( , '3":
((A1 A2) A3) A4)
((A1A2)(A3A4)) ((A1A2)(A3A4))
(A1(A2A3))A4
A1((A2A3)A4)
A1(A2(A3A4))
, '%+-3' +$ ' %'' %(! &,( &'! '(
'+' "!' ' ( 3'&,! ;
*. ',(1. !2. +!), ++%+!! , (1. %(+! ' )")
&$
'%(+! ' )" %2+" !'5 ! ' , '3":
',$' -&' ))!( (i,j) % -&' ") ! '( )+'$'
% %(' , ! +( Ai…Aj %'
2-+ ! %'' %(!.
8! , 4 ' ! %: A1A2…An-1An. '%+-3' +$ '
% ':1 2 n-1 n
% ':
A1(A2…An)
(A1A2)(A3…An)
…
(A1…An-2)(An-1An)
(A1…An-1)An
%+! 2-+ ! %'' %(! ' %%2+
(' ' +"! ))!( T(i,j)
" " -&' -&' - %( (0 %3')
*. ',(1. !2. +!), ++%+!! , (2. )" &-!)
&%
+ % +%'( %%, ))!( ' )" '(
+:
procedure MatMult(Ai,Ai+1,…,Aj)
if i=j then
return 0
else
' 2! %%, 2-+ ! %+" , %++%+!!4
+( %, Ai,…,Aj )()' % )" !&-!:
for k=i to j-1
ck=MatMult(Ai,…,Ak)+MatMult(Ak+1,…,Aj)+di-1dkdjend for
end if
return ck k=i,…,j-1
end procedure
<+++
==
−<≤
jidddjkMkiM
jijiM
jkijki
,],1[],[min
,0],[
1
*. ',(1. !2. +!), ++%+!! , (3."' ..)
%+'$' !&$ !"' !'" ' +
$ !$:
/ / .. +!), +/ ,:
) , *-+ ! , %- 4: %+(!'
2'+ ! +$!, '( %+(!' 2-+ ! +$! !
%%2+" % %$% % )" !&-!.
'%4 %!'(!' %2+ ' !.
3'"!' % %%2+" +$' +-
'+$ ' ' !$'! , ', %%2+ ,.
%%2+" % %$% % )" !&-!.
/%%2+ ,: %%2+" % +$! '
+$!' '( %+$ n(n+1)/2 (+' - ' 19i<j 9n)
%+% ' %- 2+" : 7! '
%+(!' %++- 5- %)' ' iAi+1
*. ',(1. !2. +!), ++%+!! , (4.' %(+! /%%2/ ,)
&
%5!(!' ' % !' %-%' ' %3'% $' % % %%2+" '3 '%(+! '%%2+" .
.&. ',"!' %++%+!7' 5 %(', ' %3' %-% ( ' '3" !':
& !( ' '3" !':
-%' %4 %+(!' ' 1 %(, ' 2 %,, ' 3 %, ...
'+( (i,j) %'$' 2-+ ! %+" %3', % % $ ! %+/! +( %, Ai,Ai+1,…Aj
& !
&
!
*. ',(1. !2. +!), ++%+!! , (4.' %(+! /%%2/ ,)
)' -+'! %++%+!! %, 1234,
1: 5x3, A2: 3x4, A3: 4x8, A4:8x2, A5: 2x3
&
!
' '
'
'' ($()"
'
''( ($)%"
''' *''+' )%",($()%", $)& '*'' +)" ,( ()" , )$$
$$
& '&
'&'!(( )"
'&''*'&'+')",!( ($)'&*''+)%",!(($)&"
&"
'&''' '&*''' +$$,!(()$$,)&&$*'&'+*'' +"," ,!( ()&" *'&''+' &",!($()%"
&&$
*. ',(1. !2. +!), ++%+!! , (5. %+% +)
+ % +%'( %%, ))!( !' %3', '(
+:
procedure DP_MatMult(A1,A2,…,An)
for i=1 to n
m[i,i]=0
end for
for p=2 to nfor p=2 to n
for i=2 to n-p+1
j=i+p-1
m[i,j]=+
for k=1 to j-1
q=M[i,k]+M[k+1,j]+d[i-1]*d[k]*d[j]
if (q>M[i,j]) then M[i,j]=q
end for
end for
end for
return M[1,n]
end procedure
*. ',(1. !2. +!), ++%+!! , (6. +! +%+ )
+'( +! %+%+ :
• %4 for -&' %+%+ (n)
• )$ '%' for +%$ ))!( %+!$ , '+4
)4 %, '()' ! ))!( '%(+!. '+ '(
n2/2, %3' 4 , for, ' '+'! $ (n2) 5-.
• %3' % ( !' ' '%+: '( (n)
• '%4 '+" %+%+ '( O(n3)
*. ',(1. !2. +!), ++%+!! , (%'! $!)
!
+ % -&' !'!':
/%+(7' 2-+ ! +$!, %'$ " 2-+ !
%'' %"! ' +( %, % ! &'( !' -
!- '+( %(.
'%! -5' 2-+ ! +$!, $ ' 5' %, (' 2-+ !
%'' %"!
+ %%$' '+5 4) , 4! ' '
%'! 2-+ ! +$! ' '+$.
*. ',(1. !2. +!), ++%+!! , (%'! $!)
"
%%$' + , '3":
procedure DP_MatMult(A1,A2,…,An)
for i=1 to n
m[i,i]=0
end for
for p=2 to n
for i=2 to n-p+1
H ' +" % %! -' !2+(7' !'( )&,!$ %++%+!!$ %, AiAi+1…Aj (' ! !'( s[i,j]=k, )+)" 2-+ ! %'' %(! '( (AiAi+1..k)(Ak+1…Aj)
for i=2 to n-p+1
j=i+p-1
m[i,j]=+
for k=1 to j-1
q=M[i,k]+M[k+1,j]+d[i-1]*d[k]*d[j]
if (q>M[i,j]) then M[i,j]=q , s[i,j]=k
end for
end for
end for
return M[1,n]
end procedure
*. ',(1. !2. +!), ++%+!! , (%'! $!)
#
')- $ %(, %$' %' !'"
2-+ ! +$! ' 2-+ ! %'' %(!, , '3":
procedure MatrixChainProduct(Ai,A2,…,Aj,s[1…n])
if i<j
X=MatrixChainProduct(Ai,…As[i,j],s)
Y=MatrixChainProduct(A ,…A ,s)
1% MatMult(X,Y) '( ,! + %++%+!!$ %,
% '+' "!' ! 2.1
Y=MatrixChainProduct(As[i,j+1],…Aj,s)
C=MatMult(X,Y)
return C
else
return Aiend if
end procedure
*. ',(1. !3. -! ." /%+(
$
*: () +(' & ", X=x1x2x3…xn
Y=y1y2…ym. 2''( -! " %+( .
!: ')- +( X=x1x2…xn, %+( X
7' %)"% ' +( %'( %&'( ' )5"
%, ! &'(, .
$%: $%:
X=abcdf Y=dbdaf, ' Z=bdf
X=aabaabb Y=abacba ' Z=abab
+:
5" +: /%+(7' +' %+(' , )$
!(' )$. +%+ O(2m2n(m+n))
+ $ !$: % &'
%+%+ (mn).
*. ',(1. !3. -! ." /%+( (1. %(+! ' )")
%
'%(+! ' )" %2+" !'5 ! ' , '3":
',$' -&' ))!( (x1x2…xi, y1y2…yj) % -&' ")
! '( )+'$' % %(' , ! )$ +(' ,/
%' '+$ ' %+( ;
(' 4 ' ! %: =x1x2…xn-1xn /=y1y2…yn-1ym
'%+-3' +$ ' % +:
!&$' xn=ym ' - ' ! '+$ ' %+(
T(x1…xn-1, y1…ym-1)xn
)' !&$' xn=ym ' - ' ! '+$ ' %+( %
'( '+$ ' % :
T(x1…xn, y1…ym-1)
T(x1…xn-1, y1…ym)
*. ',(1. !3. -! ." /%+( (2. )" &-!)
)" !&-! % %+(7' 2-+ ! +$! '(:
≠>−−
=>+−−
==
=
ji
jin
yxjijicjic
yxjijic
ji
f
και
και
0,,],1[],1,[max
0,,1]1,1[
00,0
ji
*. ',(1. !3. -! ." /%+( (3."' ..)
&
%+'$' !&$ !"' !'" ' +
$ !$:
/ / .. '! ." /%+(:
) , *-+ ! , %- 4: %+(!'
2'+ ! +$!, '( %+(!' 2-+ ! +$! !
%%2+" % %$% % )" !&-!.
'%4 %!'(!' %2+ ' !.
3'"!' % %%2+" +$' +-
'+$ ' ' !$'! , ', %%2+ ,.
%%2+" % %$% % )" !&-!.
/%%2+ ,: %%2+" % +$! '
+$!' '( %+$ nm (+' - ' 19i,j 9n)
%+% ' %- 2+" : , +' (
)", %+(7 %++- 5- ()' %+('.
*. ',(1. !3. -! ." /%+( (4.' %(+! /%%2/ ,)
%5!(!' ' % !' %-%' ' %3'
% $' % % %%2+" '3 '%(+! '
%%2+" .
.&. ',"!' -&' 2 +(' ' " 6 5. ! &'(
[i,j] !2+(7' !(, +(' x x ….x y y …y[i,j] !2+(7' !(, +(' x1x2….xi y1y2…yj
& !
"
!
&
*. ',(1. !3. -! ." /%+( (4.' %(+! /%%2/ ,)
)' ' -+'! X=abcdf Y=dbdaf
& !
! -)./0123)10)&
-)./0123)1/0)&
-)./0123)1/10)
-)./0123)1/1.0)
-)./0123)1/1.20)0)& 0)& 0) 0) 0)
-)./013)10)&
-)./013)1/0)&
-)./013)1/10)
-)./013)1/1.0)
-)./013)1/1.20)
-)./03)10)
-)./03)1/0)&
-)./03)1/10)&
-)./03)1/1.0)&
-)./03)1/1.2
0)&
-)./3)10)
-)./3)1/0)&
-)./3)1/10)&
-)./3)1/1.0)&
-)./3)1/1.2
0)&
& -).3)10)
-).3)1/0)
-).3)1/10)
-).3)1/1.0)&
-).3)1/1.2
0)&
*. ',(1. !3. -! ." /%+( (5. %+% +)
+ % +%'( %%, ))!( !' %3', '(
+:
procedure LCS(,)
for i=1 to n : c[i,0]=0
for j=1 to m : c[0,j]=0
for i=1 to n
for j=1 to mfor j=1 to m
if xi=yj then
c[i,j]=c[i-1,j-1]+1
else
if (c[i-1,j]>c[i,j-1]) then
c[i,j]=c[i-1,j]
else
c[i,j]=c[i,j-1]
end if
end if
end for
end for
return c[n,m]
end procedure
*. ',(1. !3. -! ." /%+( (. !'" *-+ ! $!)
')- %( C[M,N] % !'!' %$' '3'
2-+ ! +$! !' & (m+n) ' + )" (:
!
procedure printLCS([i],[j])
if i>0 and j>0
if xi=yj then
printLCS([i-1],Y[j-1])
print(x[i])print(x[i])
else if c[i,j]=c[i-1,j] then
printLCS(X[i-1],Y[j])
else
printLCS(X[i],Y[j-1])
end if
end if
end procedure
*. ',(1. !3. -! ." /%+( ( -+'! + !'" *..)
*+-%' %, -3' ) + !'"
2-+ ! +$!:
"
& !
! -)./0123)10)&
-)./0123)1/0)&
-)./0123)1/10)
-)./0123)1/1.0)
-)./0103)1/1.00)0)& 0)& 0) 0) 0)
-)./013)10)&
-)./013)1/0)&
-)./013)1/10)
-)./013)1/1.0)
-)./013)1/1.20)
-)./03)10)
-)./03)1/0)&
-)./03)1/10)&
-)./03)1/1.0)&
-)./03)1/1.2
0)&
-)./3)10)
-).3)10)&
-)./3)1/10)&
-)./3)1/1.0)&
-)./3)1/1.2
0)&
& -).3)10)
-).3)1/0)
-).3)1/10)
-).3)1/1.0)&
-).3)1/1.2
0)&
*. ',(1. !3. -! ." /%+( (6.+%+ +()
#
/%+! +%+ :
%4 ' 2 for -& %+%+ (n)
8%' nm 5- ( (1) %3'. '%4 %+%+
'( (nm).
'%4 !+" %+%+ '( (n)+(nm)=(nm)
. !"!'5" 1
()' +( '(, 4 % )'( %
X(n) = 4X(n-2) + 2 X(n-4), n >3, X(n) = 1, n=0,1,2,3
1. &')! ' - ) + % %+(7' n-!
$
1. &')! ' - ) + % %+(7' n-!
+(. : ' )" !&-! % )(' &
' -+'! +. *'( ' !2 , ,
& ' -+'! +( ()+)" 2- ).
2. &')! ' - + )$ % !$ % +$' ()
%2+ '( 4 & ' -+'!?
. !"!'5" 2
8! , - %( '(, 4 % % '+'( % m - n ! "+'.
',$' - %&() % 3'4 % %)"% ' '+( , "
%(, %!%$' 5 !' !' % '+( %, " %(
%'4 % '+ '+&! !+$ ! . ! (i,j) ' '+$ (i,j)
',$' % 5' ! !'- '+(. % - '+( %(
%$' $' '( ' % '+( % 2(!' 24 % %, , '( '
%
%$' $' '( ' % '+( % 2(!' 24 % %, , '( '
)4 ! ', '( ' )4 )'3.
%)', ! %( % , !&" , % '+( (2,2) %$'
$' % % % '+ (3,1), (3,2) " (3,3). '4' ! "
' 1 ','( , " %(.
'+ ' - 5" )'(& 2-+ ! ))" ! !'- %(,
!+$ ! (! ' 5+2+3+6=16.
3 9 9 6 9
5 6 7 3 4
6 8 7 7 2
4 3 6 5 9
. !"!'5" 2
) %':' ' ( +$! % %, %2+" ' 2"' $
!$.
($) )4!' ' (! & + (:')4)) %+!$ '+&!
! ' 2! % %4 " %( % '+' (.
() %+%+ & &4 + $; %$!'
'5! '( !)$ + ' ' %+%+ &4;
'5! '( !)$ + ' ' %+%+ &4;
'+' ( '4 '( %':' ' % '(,! %+%+
&4, &,( )4!' ' 2" %'5" - +.
(%) '5!' ' + % %': ' ! %$' !-+ ! %
, %(:
4 3 4
2 3 4
4 1 3
4 4 3
. !"!'5" 3
), - '! '&$ %)+ $ 4 -+ !&')!,
' + ',- 5!" ! ! , !' '& , '! '&4
%)+ ,, )" ))" ' !+" ,5-' (5"
+(!',). & ' ))" (+ '' 5) '5(7'
% ,, % ' ) 5' ,5-' . 5' ( 4
'( %+ P0 -+ %+ P8.
&
'( %+ P0 -+ %+ P8.
(1) &')! ' + )$ % !$ % %+(7' !+"
'+&! ,5-'.
(2) -3 ' + ! %)' & .