ΠΛΗ30 ΜΑΘΗΜΑ 2.2
-
Upload
dimitris-psounis -
Category
Documents
-
view
10 -
download
0
Embed Size (px)
description
Transcript of ΠΛΗ30 ΜΑΘΗΜΑ 2.2

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 1/41
ΠΛΗ30ΕΝΟΤΗΤΑ 2: ΣΧΕ∆ΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ
Μάθηµα 2.2:∆υνα ικό Π ο α αι! ό
∆ηµ"ρης #ο$νης

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 2/41
ΠΕΡΙΕΧΟΜΕΝΑ Α. Σκοπός του Μαθήµατος
1. ∆υναµικός Προγραµµατισµός
1. Η ακολουθία Fibo!""i#. Αλυσι$%τός Πολλαπλασιασµός Πιν&κ%ν
'. Μ(γιστ) *οινή +πακολουθία
2∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
. σκ σ-ις1. /αρµογ(ς

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 3/41
Α. Σκο%ός ου Μαθ"µαος
Οι !ό&οι ου µαθ"µαος '(ναι:
Ε%(%')ο Α
(-)
Ε%(%')ο *
3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
'&νικ !&' α!ης α γ ρι µ,ν υναµικ ς ρογραµµαι!µ ς Ο α+γόριθµος ∆.Π. για ην ακο+ουθ(α Fibonacci
Ε%(%')ο Γ
Ο α+γόριθµος ∆.Π. για ον α+υ!ι),ό %ο++α%+α!ια!µό %ινάκ,ν
Ο α+γόριθµος ∆.Π. για ην '$ρ'!η ης Μ-γι!ης .οιν"ς /%ακο+ουθ(ας

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 4/41
B. Θ',ρ(α
Τ'&νικ-ς Σ&')(α!ης Α+γορ(θµ,ν
∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Σην 2η 'νόηα ου µαθ"µαος α!&ο+ο$µα!' µ' '&νικ-ς %ου -&ουν
ανα%υ&θ'( , ,ς γ'νικ-ς µ'θο)ο+ογ('ς για ην καα!κ'υ" 'νός α+γορ(θµου:
Η '&νικ" ∆ια(ρ'ι και *α!(+'υ' (Μάθηµα 2.1)
Η τεχνική του ∆υναµικού Προγραµµατισµού (Μάθηµα 2.2)
Η καα!κ'υ" ,ν 0%+η!,ν Α+γόριθµ,ν (Μάθηµα 2.3)
/%άρ&ουν ακόµη )'κά)'ς '&νικ-ς καα!κ'υ"ς α+γορ(θµ,ν %ου '(ναι 'κός $+ης.

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 5/41
B. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός
!∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
1αν -&ουµ' -να %ρό2+ηµα %ου -&'ι ις '3"ς ι)ιόη'ς:
Ι)ιόηα ,ν *-+ι!,ν Ε%ιµ-ρους ∆οµ4ν: Ο( για να +$!ουµ' ο %ρό2+ηµα αρκ'( να υ%ο+ογ(!ουµ' ην 2-+ι!η +$!η !' κά%οια υ%ο%ρο2+"µαα,!υν"θ,ς µ' ανα)ροµ".
ικρ ς ρι µ ς %ο%ρο ηµ ,ν: ο % ος ,ν υ%ο%ρο ηµ ,ν %ου %ρ-%'ι να +$!ουµ' '(ναι µικρό ()η+α)" %ο+υ,νυµικό ,ς %ρος ο µ-γ'θος ου %ρο2+"µαος)
Ε%ικα+υ%όµ'να Ε%ιµ-ρους Προ2+"µαα: 1ι +$νουµ' %ο++-ς 5ορ-ς α ()ια
υ%ο%ρο2+"µαα µ' α%ο-+'!µα να &άνουµ' &ρόνο
Ο ∆υναµικός %ρογραµµαι!µός '(ναι η +$!η! Αν( να +$νουµ' α%ό ο µ'γα+$'ρο ό+ο και µικρό'ρα %ρο2+"µαα
6'κινάµ' α%ό ο µικρό'ρο και υ%ο+ογ(7ουµ' ό+ο και µ'γα+$'ρα %ρο2+"µαα!! Α%οθηκ'$ονας ις 'ν)ιάµ'!'ς +$!'ις για να ις α3ιο%οι"!ουµ' αργό'ρα!

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 6/41
B. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός
"∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Για να καα!κ'υά!ουµ' -ναν α+γόριθµο ∆υναµικο$ Προγραµµαι!µο$ κάνουµ' α '3"ς 2"µαα:
1. Π'ριγρά5ουµ' -ναν ανα)ροµικό α+γόριθµο %ου +$ν'ι ο %ρό2+ηµα
2. ∆(νουµ' ην ανα)ροµικ" !&-!η %ου υ%ο+ογ(7'ι ην 2-+ι!η +$!η ('%(+υ!η α%ό
3. ∆ια%ι!4νουµ' όι ι!&$ουν οι ρ'ις !υνθ"κ'ς για ην καα!κ'υ" ου α+γορ(θµου )υναµικο$ %ρογραµµαι!µο$.
4. Μ' 2ά!η ην ανα)ροµικ" !&-!η, καα!κ'υά7ουµ' ην )ια)ικα!(α '%(+υ!ης α%ό α µικρά %ρο2+"µαα !' ό+ο και µ'γα+$'ρα ('%(+υ!η α%ό κά, %ρος α %άν,)
5. ∆(νουµ' ον '%ανα+η%ικό α+γόριθµο %ου κάν'ι ην '%(+υ!" ου %ρο2+"µαος
6. /%ο+ογ(7ουµ' ην %ο+υ%+οκόηα ου '%ανα+η%ικο$ α+γορ(θµου

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 7/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός1. Η ακο+ουθ(α Fibonacci
#∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
ΠΡΟ*ΛΗΜΑ: ∆(ν'αι -νας 5υ!ικός αριθµός n. Να υ%ο+ογι!'( ο n-ός
αριθµός Fibonacci.Οι %ρ4οι 15 αριθµο( Fibonacci:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
.αι υ%ικά η ακο+ουθ(α ορ(7'αι µ-!, ης ανα)ροµικ"ς !&-!ης:
>+
===
−− 2,
21,1
21 n f f
nήn f
nnn

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 8/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός1. Η ακο+ουθ(α Fibonacci (1.∆ια$%,!η Ανα)ροµικο$ Α+γορ(θµου)
$∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
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 ή n
T n T n T n n
Θ = ==
− + − + Θ >

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 9/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός1. Η ακο+ουθ(α Fibonacci (1.∆ια$%,!η Ανα)ροµικο$ Α+γορ(θµου)
%∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Η ανα)ροµικ" !&-!η 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= − + − + ≤ − + − +
Συν'%4ς +$νουµ' ην ανα)ροµ"
άρα
1)1(2)( +−=
n An A
)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
k k
A
k n A
n A
n A
n An A
Θ=−
−+Θ=
=+++++=
==
=+++++−=
==
=+++−=
=++−=
=+−=
+−
−
−
)2()( n
nT Ο=

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 10/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός1. Η ακο+ουθ(α Fibonacci (1.∆ια$%,!η Ανα)ροµικο$ Α+γορ(θµου)
&0∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Η ανα)ροµικ" !&-!η 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= − + − + ≥ − + − +
Συν'%4ς +$νουµ' ην ανα)ροµ"
άρα
1)2(2)( +−=
nK nK
)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
k k
K
k nK
nK
nK
nK nK
Θ=−
−+Θ=
=+++++=
==
=+++++−=
==
=+++−=
=++−=
=+−=
+−
−
−
)2()( 2 / n
nT Ω=

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 11/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός1. Η ακο+ουθ(α Fibonacci (1.∆ια$%,!η Ανα)ροµικο$ Α+γορ(θµου)
&&∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Η %ο+υ%+οκόηα ου α+γορ(θµου '(ναι και
Ε(ναι %ο+$ αργός α+γόριθµος!! Λόγ, ου ρό%ου 'κ-+'!ης ης ανα)ροµικ"ς )ια)ικα!(ας. Π.&. για n=5:
)2()( 2 / n
nT Ω= )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

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 12/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός1. Η ακο+ουθ(α Fibonacci (3.Συνθ"κ'ς ου ∆.Π.)
&2∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Ε%α+ηθ'$ουµ' όι ι!&$ουν οι !υνθ"κ'ς για ην καα!κ'υ" 'νός α+γόριθµου ∆υναµικο$ Προγραµµαι!µο$:
ΕΠΑΛΗΘΕ/ΣΗ ΤΩΝ Ι∆ΙΟΤΗΤΩΝ ΤΟ/ ∆.Π. για ην ακο+ουθ(α Fibonacci: Ι)ιόηα ,ν *-+ι!,ν Ε%ιµ-ρους ∆οµ4ν: Πράγµαι για να υ%ο+ογ(!ουµ' η
+$!η, υ%ο+ογ(7ουµ' ην +$!η !α )$ο αµ-!,ς %ροηγο$µ'να υ%ο%ρο2+"µα- α.
Μικρός Αριθµός /%ο%ρο2+ηµά,ν: Το %+"θος ,ν υ%ο%ρο2+ηµά,ν %ρ-%'ι να +$!ουµ' '(ναι µικρό (!υγκ'κριµ-να %ρ-%'ι να +$!ουµ' nυ%ο%ρο2+"µαα)
Ε%ικα+υ%όµ'να Ε%ιµ-ρους Προ2+"µαα: Πράγµαι αναγκα7όµα!' να +$!ουµ' %ο++-ς 5ορ-ς α ()ια υ%ο%ρο2+"µαα, +όγ, ου ρό%ου 'κ-+'!ης ης ανα)ροµικ"ς )ια)ικα!(ας.
∆ ή Ψ ύ ΠΛΗ Μάθ ∆ ό Π ό

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 13/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός1. Η ακο+ουθ(α Fibonacci (4. ∆ια)ικα!(α Ε%(+υ!ης)
&3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Ο )υναµικός %ρογραµµαι!µός %ρο'(ν'ι:
Να +$!ουµ' ο %ρό2+ηµα «α%ό κά, %ρος α %άν,», )η+α)" να +$!ουµ' )ια)ο&ικά α υ%ο%ρο2+"µαα:
Fib(1)
Fib(2)
… Fib(n)
1 2 3 4 5 6 … n
1 1 … fib(n)
∆ ή Ψ ύ ΠΛΗ Μάθ ∆ ό Π ό

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 14/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός1. Η ακο+ουθ(α Fibonacci (5.Ε%ανα+η%ικος Α+γόριθµος και 6.Πο+υ%+οκόηα)
&∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
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
∆ηµήτρης Ψούνης ΠΛΗ30 Μάθηµα 2 2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 15/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν
&!∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
ΠΡΟ*ΛΗΜΑ: ∆()οναι οι %(νακ'ς Α1, Α2,…, Αn ό%ου ο %(νακας Ai '(ναι )ιά!α!ης d
i-1x d
i. Μ' %οια !'ιρά θα γ(ν'ι ο %ο++α%+α!ια!µός ου
γινοµ-νου Α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'+(,!η !ην %ο+υ%+οκόηα.
&"∆ηµήτρης Ψούνης ΠΛΗ30 Μάθηµα 2 2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 16/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν
&"∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Ας )ο$µ' για( -&'ι α3(α -νας α+γόριθµος καθορι!µο$ ης !'ιράς ,ν %ο++α%+α!ια!µ4ν. Παρά)'ιγµα:
A1 x A2 x A3 ό%ου Α1: 5x8, A2: 8x4, A3: 4x2 οι %ρά3'ις µ%ορο$ν να γ(νουν:
(A1 x A2) x A3
%(νακας 5x4, -!, C Για ον υ%ο+ογι!µό ου C x A3: 5x4x2=40 %ρά3'ις και %ροκ$%'ι ο
%(νακας-γινόµ'νο 5 x 2
Σ$νο+ο 200 %ρά3'ις
A1x (A
2x A
3)
Για ον υ%ο+ογι!µό ου A2 x A3: 8x4x2=64 %ρά3'ις και %ροκ$%'ι %(νακας 8x2, -!, C
Για ον υ%ο+ογι!µό ου Α1 x C: 5x8x2=80 %ρά3'ις και %ροκ$%'ι ο %(νακας-γινόµ'νο 5 x 2
Σ$νο+ο 144 %ρά3'ις0ρα µ' ά++η !'ιρά γινοµ-νου, γ+ι4νουµ' %ο++-ς %ρά3'ις!
&#∆ηµήτρης Ψούνης ΠΛΗ30 Μάθηµα 2 2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 17/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν
&#∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Για %'ρι!!ό'ρους %(νακ'ς υ%άρ&ουν %'ρι!!ό'ροι ρό%οι να κάνουµ' ον %ο++α%+α!ια!µό, άρα και µ'γα+$'ρο ό5'+ος !ις %ρά3'ις:
A1 x A2 x A3 x A4 µ%ορ'( να %αρ'νθ'ο%οιηθ'( ,ς '3"ς:
((A1 A2) A3) A4)
((A1A2)(A3A4))
(A1(A2A3))A4
A1((A2A3)A4)
A1(A2(A3A4))
Π,ς θα '%ι+-3ουµ' ην κα+$'ρη %αρ'νθ'ο%ο(η!η &,ρ(ς να &ρ'ια!'(
να ις µ'+'"!ουµ' ην κάθ' µ(α 3'&,ρι!α;
&$∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 18/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν (1. Ε%(+υ!η µ' ανα)ροµ")
&$∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Για ην '%(+υ!η µ' ανα)ροµ" ου %ρο2+"µαος !κ'5όµα!' ,ς '3"ς:
Θ',ρο$µ' όι -&ουµ' µια )ια)ικα!(α Τ(i,j) %ου -&'ι ")η ορι!'( και )ου+'$'ι ορθά %ου όαν %α(ρν'ι ,ς όρι!µα µια ακο+ουθ(α Ai…A j %αράγ'ι ην 2-+ι!η %αρ'νθ'ο%ο(η!η.
8!, 4ρα ο γ'νικό !ιγµιόυ%ο: A1A2…An-1An. Θα '%ι+-3ουµ' ο κα+$'ρο
α%ό α γινόµ'να: A1(A2…An)
(A1A2)(A3…An)
…
(A1…An-2)(An-1An) (A1…An-1)An
Ο υ%ο+ογι!µός ης 2-+ι!ης %αρ'νθ'ο%ο(η!ης για κάθ' υ%ο%ρό2+ηµα γ(ν'αι µ' κ+"!η ης )ια)ικα!(ας T(i,j)
Οριακ" Συνθ"κη θα -&ουµ' όαν -&ουµ' µόνο -ναν %(νακα (0 %ρά3'ις)
&%∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 19/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν (2. Ανα)ροµικ" Σ&-!η)
&%ηµή ρης ης, 3 , ηµ µ ς ρ γρ µµ µ ς
Ο α+γόριθµος %ου υ+ο%οι'( ην %αρα%άν, )ια)ικα!(α µ' ανα)ροµ" '(ναι ο ακό+ουθος:
procedure MatMult(A i,A i+1,…,A j)
if i=j then
return 0
else
Μ' 2ά!η α %αρα%άν, ο 2-+ι!ο %+"θος ,ν %ο++α%+α!ια!µ4ν ης ακο+ουθ(ας %ινάκ,ν Ai,…,A j )()'αι α%ό ην ανα)ροµικ" !&-!η:
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
<+++
=
=−
<≤ jid d d jk M k i M
ji
ji M jk i jk i
,],1[],[min
,0
],[ 1
20∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 20/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν (3.Συνθ"κ'ς ου ∆.Π.)
20ηµή ρης ης, 3 , ηµ µ ς ρ γρ µµ µ ς
Ε%α+ηθ'$ουµ' όι ι!&$ουν οι !υνθ"κ'ς για ην καα!κ'υ" 'νός α+γόριθµου ∆υναµικο$ Προγραµµαι!µο$:
ΕΠΑΛΗΘΕ/ΣΗ ΤΩΝ Ι∆ΙΟΤΗΤΩΝ ΤΟ/ ∆.Π. για ον Α+υ!ι),ο Πο+ / µό Πινάκ,ν: Ι)ιόηα ,ν *-+ι!,ν Ε%ιµ-ρους ∆οµ4ν: Πράγµαι για να υ%ο+ογ(!ουµ' η
2'+ι!η +$!η, αρκ'( να υ%ο+ογ(!ουµ' ην 2-+ι!η +$!η !α
Συν'%4ς θα %ρο!'γγ(!ουµ' ο %ρό2+ηµα µ' ∆υναµικό Προγραµµαι!µό.Θα 3'κιν"!ουµ' α%ό µικρά υ%ο%ρο2+"µαα και θα +$νουµ' ο+ο-να και µ'γα+$'ρα µ' !$νθ'!η ,ν µικρό'ρ,ν υ%ο%ρο2+ηµά,ν.
υ%ο%ρο µαα %ου %ροκ %ουν α% ην ανα ροµικ !& !η.
Μικρός Αριθµός /%ο%ρο2+ηµά,ν: Τα υ%ο%ρο2+"µαα %ου κα+ο$µα!' να +$!ουµ' '(ναι ο %ο+$ n(n+1)/2 (ό+'ς οι ιµ-ς µ' 19i<j 9n)
Ε%ικα+υ%όµ'να Ε%ιµ-ρους Προ2+"µαα: Πράγµαι αναγκα7όµα!' να
υ%ο+ογ(!ουµ' %ο++-ς 5ορ-ς για %αρά)'ιγµα α γινόµ'να ΑiAi+1
2&∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 21/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν (4.Σ'ιρά Ε%(+υ!ης /%ο%ρο2 / ,ν)
2&
Για να α%ο5α!(!ουµ' µ' %οια !'ιρά %ρ-%'ι να κάνουµ' ις %ρά3'ις %αραηρο$µ' α%ό %οια υ%ο%ρο2+"µαα '3αράαι η '%(+υ!η κάθ'
υ%ο%ρο2+"µαος.
Π.&. αν θ',ρ"!ουµ' όι %ο++%+α!ιά7ουµ' 5 %(νακ'ς, ό' οι %ρά3'ις %ρ-%ι να γ(νουν µ' ην '3"ς !'ιρά:
Πρ-%'ι %ρ4α να υ%ο+ογ(!ουµ' γινόµ'να 1 %(νακα, µ'ά 2 %ινάκ,ν, µ'ά 3%ινάκ,ν κ.ο.κ.
Το κ'+( (i,j) θα α%οθηκ'$'ι ο 2-+ι!ο %+"θος %ρά3',ν %ου α%αιο$ναι !ο για ον %ο+ / !µό ης ακο+ουθ(ας %ινάκ,ν Ai,Ai+1,…A j
& 2 3 !
&
2
3
!
22∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 22/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν (4.Σ'ιρά Ε%(+υ!ης /%ο%ρο2 / ,ν)
22
Παρά)'ιγµα Εκ-+'!ης για ον %ο++α%+α!ια!µό %ινάκ,ν Α1 Α2 Α3 Α4, όαν
Α1: 5x3, A
2: 3x4, A
3: 4x8, A
4:8x2, A
5: 2x3
& 2 3
!
0
3 '30
'3'($(2)"
2 '20
'2'33(($)%"
'2'3'*'2'3+')%"3($(2)%"$)& '2*'3'+)"3((2)"2)$$
$$
& '&
0
'&'2
!(3()"0
'&'2'3
*'&'2+'3)"0!(($)220 '&*'2'3+)%"!(3($)2&"
2&"
'&'2'3' '&*'2'3'+:$$!(3(2)$$30)&&$
*'&'2+*'3'+:"0"!((2)&"*'&'2'3+':2&"!($(2)2%"
&&$
23∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 23/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν (5. Ε%ανα+η%ικός Α+γόριθµος)
3
Ο α+γόριθµος %ου υ+ο%οι'( ην %αρα%άν, )ια)ικα!(α !'ιράς %ρά3',ν '(ναι ο ακό+ουθος:
procedure DP_MatMult(A 1,A 2,…,A n)
for i=1 to n
m[i,i]=0
end for
or p= to n
for i=2 to n-p+1j=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
2∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 24/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν (6. Ανά+υ!η Πο+υ%+οκόηας)
Ακο+ουθ'( ανά+υ!η %ο+υ%+οκόηας:
• Το %ρ4ο for -&'ι %ο+υ%+οκόηα Θ(n)
• Τα )$ο '%όµ'να for υ+ο%οιο$ν ην )ια)ικα!(α υ%ο+ογι!µο$ ,ν κ'+ι4ν καά )ιαγ4νιους ό%,ς '()αµ' !ην )ια)ικα!(α '%(+υ!ης. Τα κ'+ιά αυά '(ναι
n2 /2, άρα οι %ρά3'ις αυ4ν ,ν for, θα 'κ'+'!ο$ν Θ(n2) 5ορ-ς.
• Οι %ρά3'ις %ου γ(νοναι !' κάθ' '%ανά+η:η '(ναι Ο(n)
• Συν'%4ς η '+ικ" %ο+υ%+οκόηα '(ναι O(n3)
2!∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 25/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν ( Α%οµνηµόν'υ!η Λ$!ης)
!
Ο α+γόριθµος %ου -&ουµ' καα!κ'υά!'ι:
/%ο+ογ(7'ι ην 2-+ι!η +$!η, α%οθηκ'$ονας ην ιµ" για ην 2-+ι!η %αρ'νθ'ο%οι"!η κάθ' ακο+ουθ(ας %ινάκ,ν %ου ανι!οι&'( !' -να ορι!µ-νο κ'+( ου %(νακα.
∆ΕΝ '%ι!ρ-5'ι ην 2-+ι!η +$!η, ο$' κααγρά5'ι %,ς γ(ν'αι η 2-+ι!η %αρ'νθ'ο%οι"!η
Για ο +όγο αυό ρο%ο%οιο$µ' '+α5ρά ον κ4)ικά µας, 4!' να κάν'ι και α%οµνηµόν'υ!η ης 2-+ι!ης +$!ης κάθ' κ'+ιο$.
2"∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 26/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν ( Α%οµνηµόν'υ!η Λ$!ης)
Τρο%ο%οιο$µ' ον α+γόριθµο ,ς '3"ς:
procedure DP_MatMult(A 1
,A 2
,…,A n
)
for i=1 to n
m[i,i]=0
end for
for p=2 to n
= -
H 'νο+" %ου %ρο!-θηκ' !υµ2ο+(7'ι όι ο !ηµ'(ο ου )ια&,ρι!µο$ ου %ο++α%+α!ια!µο$ %ινάκ,ν AiAi+1…A j γ(ν'αι !ο !ηµ'(ο s[i,j]=k, )η+α)" όι η 2-+ι!η %αρν'θ'ο%ο(η!η '(ναι η (AiAi+1.. Αk)(Ak+1…A j)
j=i+p-1m[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 forend for
return M[1,n]
end procedure
2#∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 27/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός2. Α+υ!ι),ός Πο++α%+α!ια!µός Πινάκ,ν ( Α%οµνηµόν'υ!η Λ$!ης)
∆')οµ-νου αυο$ ου %(νακα, µ%ορο$µ' να %αράγουµ' ην καα!κ'υ" ης 2-+ι!ης +$!ης µ' ην 2-+ι!η %αρ'νθ'ο%ο(η!η, ,ς '3"ς:
procedure MatrixChainProduct(A i,A 2,…,A j,s[1…n])
if i<j
X=MatrixChainProduct(Ai,…As[i,j],s)
1%ου MatMult(X,Y) '(ναι ο γν,!ός α+γόριθµος %ο++α%+α!ια!µο$ %ινάκ,ν %ου µ'+'"!αµ' !ο Μάθηµα 2.1
s[i,j+1],… j,
C=MatMult(X,Y)return C
else
return Aiend if
end procedure
2$∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 28/41
*. Θ',ρ(α
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).
2%∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 29/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός3. Μ-γι!η .οιν" /%ακο+ουθ(α (1. Ε%(+υ!η µ' ανα)ροµ")
Για ην '%(+υ!η µ' ανα)ροµ" ου %ρο2+"µαος !κ'5όµα!' ,ς '3"ς:
Θ',ρο$µ' όι -&ουµ' µια )ια)ικα!(α Τ(x1x
2…x
i, y
1y
2…y
j) %ου -&'ι ")η
ορι!'( και )ου+'$'ι ορθά %ου όαν %α(ρν'ι ,ς όρι!µα )$ο ακο+ουθ('ς Χ,/ %αράγ'ι ην µ'γα+$'ρη υ%ακο+ουθ(α ους ;
Πα(ρνουµ' 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)
30∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 30/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός3. Μ-γι!η .οιν" /%ακο+ουθ(α (2. Ανα)ροµικ" Σ&-!η)
Η ανα)ροµικ" !&-!η %ου υ%ο+ογ(7'ι ην 2-+ι!η +$!η '(ναι:
≠>−−
=>+−−
==
=
ji
jin
y x ji jic jic
y x ji jic jήi
f
και
και
0,,],1[],1,[max
0,,1]1,1[00,0
3&∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 31/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός3. Μ-γι!η .οιν" /%ακο+ουθ(α (3.Συνθ"κ'ς ου ∆.Π.)
Ε%α+ηθ'$ουµ' όι ι!&$ουν οι !υνθ"κ'ς για ην καα!κ'υ" 'νός α+γόριθµου ∆υναµικο$ Προγραµµαι!µο$:
ΕΠΑΛΗΘΕ/ΣΗ ΤΩΝ Ι∆ΙΟΤΗΤΩΝ ΤΟ/ ∆.Π. για ην Μ'γι!η.οιν"/%ακο+ουθ(α: Ι)ιόηα ,ν *-+ι!,ν Ε%ιµ-ρους ∆οµ4ν: Πράγµαι για να υ%ο+ογ(!ουµ' η
2'+ι!η +$!η, αρκ'( να υ%ο+ογ(!ουµ' ην 2-+ι!η +$!η !α
Συν'%4ς θα %ρο!'γγ(!ουµ' ο %ρό2+ηµα µ' ∆υναµικό Προγραµµαι!µό.Θα 3'κιν"!ουµ' α%ό µικρά υ%ο%ρο2+"µαα και θα +$νουµ' ο+ο-να και µ'γα+$'ρα µ' !$νθ'!η ,ν µικρό'ρ,ν υ%ο%ρο2+ηµά,ν.
υ%ο%ρο µαα %ου %ροκ %ουν α% ην ανα ροµικ !& !η.
Μικρός Αριθµός /%ο%ρο2+ηµά,ν: Τα υ%ο%ρο2+"µαα %ου κα+ο$µα!' να +$!ουµ' '(ναι ο %ο+$ nm (ό+'ς οι ιµ-ς µ' 19i,j 9n)
Ε%ικα+υ%όµ'να Ε%ιµ-ρους Προ2+"µαα: Λόγ, ης +'ιουργ(ας ης
ανα)ροµ"ς, υ%ο+ογ(7οναι %ο++-ς 5ορ-ς οι ()ι'ς υ%ακο+ουθ('ς.
32∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 32/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός3. Μ-γι!η .οιν" /%ακο+ουθ(α (4.Σ'ιρά Ε%(+υ!ης /%ο%ρο2 / ,ν)
Για να α%ο5α!(!ουµ' µ' %οια !'ιρά %ρ-%'ι να κάνουµ' ις %ρά3'ις %αραηρο$µ' α%ό %οια υ%ο%ρο2+"µαα '3αράαι η '%(+υ!η κάθ'
υ%ο%ρο2+"µαος.
Π.&. αν θ',ρ"!ουµ' όι -&ουµ' 2 ακο+ουθ('ς µ' µ"κος 6 και 5. Το !οι&'(ο Μ[i,j] !υµ2ο+(7'ι όι !υγκρ(ν, ις ακο+ουθ('ς x
1x
2….x
iκαι y
1y
2…y
j
& 2 3 !
"
!
3
2
&
33∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 33/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός3. Μ-γι!η .οιν" /%ακο+ουθ(α (4.Σ'ιρά Ε%(+υ!ης /%ο%ρο2 / ,ν)
Παρά)'ιγµα 'κ-+'!ης για X=abcdf Y=dbdaf
& 2 3 !
! -)/1 )1
-)/1 )1/
-)/1 )1/1
-)/1 )1/1
-)/1 )1/1
)& )& )2 )2 )3
-)/1 )1)&
-)/1 )1/
)&
-)/1 )1/1
)2
-)/1 )1/1
)2
-)/1 )1/1
)2
3 -)/ )1
)0
-)/ )1/
)&
-)/ )1/1
)&
-)/ )1/1
)&
-)/ )1/1
)&
2 -)/ )1)0
-)/ )1/
)&
-)/ )1/1
)&
-)/ )1/1
)&
-)/ )1/1
)&
& -)
)1)0
-)
)1/)0
-)
)1/1)0
-)
)1/1)&
-)
)1/1 )&
3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 34/41
*. Θ',ρ(α
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
or = to m
if xi=yj thenc[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
3!∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 35/41
*. Θ',ρ(α
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])
pr nt x
else if c[i,j]=c[i-1,j] thenprintLCS(X[i-1],Y[j])
else
printLCS(X[i],Y[j-1])
end if
end if
end procedure
3"∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 36/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός3. Μ-γι!η .οιν" /%ακο+ουθ(α (Εκ-+'!η ου α+γόριθµου καα!κ'υ"ς *.Λ.)
*+-%ουµ' %,ς θα ρ-3'ι ο ανα)ροµικός α+γόριθµος για ην καα!κ'υ" ης 2-+ι!ης +$!ης:
& 2 3 !
! -)/1 )1
-)/1 )1/
-)/1 )1/1
-)/1 )1/1
-)/10 )1/10
)& )& )2 )2 )3
-)/1 )1)&
-)/1 )1/
)&
-)/ )1/
)2
-)/1 )1/1
)2
-)/1 )1/1
)2
3 -)/ )1
)0
-)/ )1/
)&
-)/ )1/1
)&
-)/ )1/1
)&
-)/ )1/1
)&
2 -)/ )1)0
-) b )1 b
)&
-)/ )1/1
)&
-)/ )1/1
)&
-)/ )1/1
)&
& -)
)1)0
-)
)1/)0
-)
)1/1)0
-)
)1/1)&
-)
)1/1 )&
3#∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 37/41
*. Θ',ρ(α
1. ∆υναµικός Προγραµµαι!µός3. Μ-γι!η .οιν" /%ακο+ουθ(α (6.Πο+υ%+οκόηα Α+γορ(θµου∆Π)
/%ο+ογι!µός Πο+υ%+οκόηας:
Οι %ρ4'ς 2 for -&ουν %ο+υ%+οκόηα Θ(n)
8%'ια για nm 5ορ-ς γ(νοναι Θ(1) %ρά3'ις. Συν'%4ς η %ο+υ%+οκόηα '(ναι Θ(nm).
Συν'%4ς η !υνο+ικ" %ο+υ%+οκόηα '(ναι Θ(n)+Θ(nm)=Θ(nm)
3$∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 38/41
Γ. Α!κ"!'ις
Ε5αρµογ" 1
∆()'αι η ακο+ουθ(α ακ'ρα(,ν αριθµ4ν %ου )ηµιουργ'(αι α%ό ην
X(n) = 4X(n-2) + 2 X(n-4), για n >3, και X(n) = 1, n=0,1,2,3
1. Σ ')ιά!' -ναν ανα) ο ικό α+ ό ιθ ο %ου θα υ%ο+ο ( 'ι ον n-ο!ό ό ο
ης ακο+ουθ(ας. Γρά:' ην ανα)ροµικ" !&-!η %ου )(ν'ι ον &ρόνο 'κ-+'!ης ου α+γόριθµου. *ρ'(' !υµ2αά άν, και κά, όρια για ον &ρόνο 'κ-+'!ης ου α+γορ(θµου ()η+α)" ακρι2-ς όριο Θ).
2. Σ&')ιά!' -ναν α+γόριθµο )υναµικο$ %ρογραµµαι!µο$ %ου +$ν'ι ο ()ιο
%ρό2+ηµα Ποιος '(ναι 4ρα ο &ρόνος 'κ-+'!ης?
3%∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 39/41
Γ. Α!κ"!'ις
Ε5αρµογ" 2
8!, -νας %(νακας ακ'ρα(,ν αριθµ4ν Α %ου α%ο'+'(αι α%ό m γραµµ-ς και n !"+'ς.Θ',ρο$µ' -να %αι&ν()ι ό%ου 3'κιν4νας α%ό ο%οιο)"%ο' κ'+( ης κά, γραµµ"ς ου
%(νακα, %ρο!%αθο$µ' να 5ά!ουµ' !' κά%οιο κ'+( ης %άν, γραµµ"ς ου %(νακα %'ρν4νας α%ό κ'+ιά '+ά&ι!ου !υνο+ικο$ κό!ους. Σαν κό!ος Α(i,j) 'νός κ'+ιο$ (i,j)θ',ρο$µ' ον αριθµό %ου αναγρά5'αι !ο !υγκ'κριµ-νο κ'+( . Α%ό -να κ'+( ου %(νακα %ο ο$ ' να κιν θο$ ' '(' % ο ο κ'+( %ου (!κ'αι ακ ι 4 α%ό %άν, ου, '('
)ιαγ4νια αρι!'ρά, '(' )ιαγ4νια )'3ιά.
Για %αρά)'ιγµα, !ον %(νακα ου %ιο κά, !&"µαος, α%ό ο κ'+( (2,2) µ%ορο$µ' να κινηθο$µ' %ρος κά%οιο α%ό α κ'+ιά (3,1), (3,2) " (3,3). Σηµ'ι4νουµ' όι !αν γραµµ" µ' αριθµό 1 θ',ρ'(αι η κά, γραµµ" ου %(νακα.
Τα κ'+ιά µ' -νονη γρα5" )'(&νουν η 2-+ι!η )ια)ροµ" !ον !υγκ'κριµ-νο %(νακα,!υνο+ικο$ κό!ους (!ου µ' 5+2+3+6=16.
3 9 9 6 95 6 7 3 4
6 8 7 7 2
4 3 6 5 9
0∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 40/41
Γ. Α!κ"!'ις
Ε5αρµογ" 2
α) Να %'ριγρά:'' µ(α +$!η ου %ιο %άν, %ρο2+"µαος µ' η 2ο"θ'ια ου ∆υναµικο$ Προγραµµαι!µο$.
($) Να )4!'' ον αν(!οι&ο α+γόριθµο (:'υ)οκ4)ικα) υ%ο+ογι!µο$ ου '+ά&ι!ου κό!ους µ'ά2α!ης α%ό ην %ρ4η γραµµ" ου %(νακα %ρος ην '+'υα(α.(γ) Ποια η %ο+υ%+οκόηα &ρόνου και &4ρου ου α+γόριθµου αυο$; Θα µ%ορο$!' να ' α ο!'( ι!ο)$να ο α+ ό ιθ ο ' ικ ό' %ο+υ%+οκό α 4 ου; Για ο '+'υα(ο 'ρ4ηµα αρκ'( να %'ριγρά:'' ον ρό%ο µ'(,!ης ης %ο+υ%+οκόηας &4ρου, &,ρ(ς να )4!'' ακρι2" %'ριγρα5" ου ν-ου α+γόριθµου.(%) Να '5αρµό!'' ον α+γόριθµο %ου %'ριγρά:α' !α %ροηγο$µ'να !κ-+η !ον %ιο κά, %(νακα:
4 3 4
2 3 4
4 1 3
4 4 3
&∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2
http://slidepdf.com/reader/full/30-22-56963d7b87658 41/41
Γ. Α!κ"!'ις
Ε5αρµογ" 3
Οι )ιοργαν,-ς 'ρα!ι'&νικο$ %ο)η+αικο$ αγ4να θ-+ουν να !&')ιά!ουν, για 'υνόηους +όγους µ'ι,µ-νης 5υ!ικ"ς καά!α!ης ,ν !υµµ''&όν,ν 'ρα!ι'&ν4ν
%ο)η+ά,ν, ην ο)ικ" )ια)ροµ" µικρό'ρης !υνο+ικ"ς αν,5-ρ'ιας (ανη5ορικ"ς κ+(!',ς). Ο &άρης µ' η )ια)ροµ" (άκυκ+ο κα'υθυνόµ'νο γρά5ηµα) 'µ5αν(7'αι %αρακά,, ό%ου κάθ' )ρόµος αναγρά5'ι ην αν,5-ρ'ια ου. Η α5'ηρ(α ου αγ4να '(ναι %ό+ P και -+ο %ό+ P . (1) Σ&')ιά!' α+γόριθµο )υναµικο$ %ρογραµµαι!µο$ %ου υ%ο+ογ(7'ι ην !υνο+ικ" '+ά&ι!η αν,5-ρ'ια.(2) Τρ-3' ον α+γόριθµο !ο %αρά)'ιγµα ου &άρη.