ΠΛΗ30 ΜΑΘΗΜΑ 2.2

41
 ΠΛΗ30 ΕΝΟΤΗΤΑ  2: ΣΧΕ∆ΙΑΣΗ  ΑΛΓΟΡΙΘΜΩΝ Μάθηµα 2.2: υνα ικό  Π ο α αι! ό ∆ηµ"ρης #ο$νης

description

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

Transcript of ΠΛΗ30 ΜΑΘΗΜΑ 2.2

Page 1: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2

http://slidepdf.com/reader/full/30-22-56963d7b87658 1/41

ΠΛΗ30ΕΝΟΤΗΤΑ 2: ΣΧΕ∆ΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ

Μάθηµα 2.2:∆υνα ικό Π ο α αι! ό

∆ηµ"ρης #ο$νης

Page 2: ΠΛΗ30 ΜΑΘΗΜΑ 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. /αρµογ(ς

Page 3: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

7/18/2019 ΠΛΗ30 ΜΑΘΗΜΑ 2.2

http://slidepdf.com/reader/full/30-22-56963d7b87658 3/41

Α. Σκο%ός ου Μαθ"µαος

Οι !ό&οι ου µαθ"µαος '(ναι:

Ε%(%')ο Α

(-)

Ε%(%')ο *

3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός

'&νικ !&' α!ης α γ ρι µ,ν υναµικ ς ρογραµµαι!µ ς Ο α+γόριθµος ∆.Π. για ην ακο+ουθ(α Fibonacci

Ε%(%')ο Γ

Ο α+γόριθµος ∆.Π. για ον α+υ!ι),ό %ο++α%+α!ια!µό %ινάκ,ν

Ο α+γόριθµος ∆.Π. για ην '$ρ'!η ης Μ-γι!ης .οιν"ς /%ακο+ουθ(ας

Page 4: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

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)

/%άρ&ουν ακόµη )'κά)'ς '&νικ-ς καα!κ'υ"ς α+γορ(θµ,ν %ου '(ναι 'κός $+ης.

Page 5: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

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ιο%οι"!ουµ' αργό'ρα!

Page 6: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

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ουµ' ην %ο+υ%+οκόηα ου '%ανα+η%ικο$ α+γορ(θµου

Page 7: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

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

Page 8: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

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

Θ = ==

− + − + Θ >

Page 9: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

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 Ο=

Page 10: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

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 Ω=

Page 11: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

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

Page 12: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

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+"µαα, +όγ, ου ρό%ου 'κ-+'!ης ης ανα)ροµικ"ς )ια)ικα!(ας.

∆ ή Ψ ύ ΠΛΗ Μάθ ∆ ό Π ό

Page 13: ΠΛΗ30 ΜΑΘΗΜΑ 2.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)

∆ ή Ψ ύ ΠΛΗ Μάθ ∆ ό Π ό

Page 14: ΠΛΗ30 ΜΑΘΗΜΑ 2.2

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: ∆υναµικός Προγραµµατισµός

Page 15: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 16: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 17: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 18: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 19: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 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: ∆υναµικός Προγραµµατισµός

Page 21: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 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: ∆υναµικός Προγραµµατισµός

Page 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: ∆υναµικός Προγραµµατισµός

Page 24: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 25: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 26: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 27: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 28: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 29: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 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: ∆υναµικός Προγραµµατισµός

Page 31: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 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: ∆υναµικός Προγραµµατισµός

Page 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: ∆υναµικός Προγραµµατισµός

Page 34: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 35: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 36: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 37: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 38: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 39: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

Page 40: ΠΛΗ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: ∆υναµικός Προγραµµατισµός

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