ΠΛΗ30 ΜΑΘΗΜΑ 2.2

Preview:

DESCRIPTION

1) Δυναμικός Προγραμματισμός 1.1) Η ακολουθία Fibonacci 1.2) Αλυσιδωτός Πολλαπλασιασμός Πινάκων 1.3) Μέγιστη Κοινή Υπακολουθία 2) Ασκήσεις 2.1) Επίλυση Αναδρομικής Σχέσης 2.2) Κατευθυνόμενο Άκυκλο Γράφημα σε Πλέγμα 2.3) Κατευθυνόμενο Άκυκλο Γράφημα

Citation preview

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' ον α+γόριθµο !ο %αρά)'ιγµα ου &άρη.