SlideShare a Scribd company logo
ΠΛΗ30
ΕΝΟΤΗΤΑ 2: ΣΧΕ∆ΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ
Μάθηµα 2.2:
∆υναµικός Προγραµµατισµός∆υναµικός Προγραµµατισµός
∆ηµήτρης Ψούνης
ΠΕΡΙΕΧΟΜΕΝΑ
Α. Σκοπός του Μαθήµατος
1. ∆υναµικός Προγραµµατισµός
1. Η ακολουθία Fibonacci
2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων
3. Μέγιστη Κοινή Υπακολουθία
Β.Ασκήσεις
2∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Β.Ασκήσεις
1. Εφαρµογές
Α. Σκοπός του Μαθήµατος
Οι στόχοι του µαθήµατος είναι:
Επίπεδο Α
(-)
Επίπεδο Β
Η τεχνική σχεδίασης αλγόριθµων ∆υναµικός Προγραµµατισµός
3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Η τεχνική σχεδίασης αλγόριθµων ∆υναµικός Προγραµµατισµός
Ο αλγόριθµος ∆.Π. για την ακολουθία Fibonacci
Επίπεδο Γ
Ο αλγόριθµος ∆.Π. για τον αλυσιδωτό πολλαπλασιασµό πινάκων
Ο αλγόριθµος ∆.Π. για την εύρεση της Μέγιστης Κοινής Υπακολουθίας
B. Θεωρία
Τεχνικές Σχεδίασης Αλγορίθµων
4∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Στην 2η ενότητα του µαθήµατος ασχολούµαστε µε τεχνικές που έχουν
αναπτυχθεί, ως γενικές µεθοδολογίες για την κατασκευή ενός αλγορίθµου:
Η τεχνική ∆ιαίρει και Βασίλευε (Μάθηµα 2.1)
Η τεχνική του ∆υναµικού Προγραµµατισµού (Μάθηµα 2.2)
Η κατασκευή των Άπληστων Αλγόριθµων (Μάθηµα 2.3)
Υπάρχουν ακόµη δεκάδες τεχνικές κατασκευής αλγορίθµων που είναι εκτός
ύλης.
B. Θεωρία
1. ∆υναµικός Προγραµµατισµός
5∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Όταν έχουµε ένα πρόβληµα που έχει τις εξής ιδιότητες:
Ιδιότητα των Βέλτιστων Επιµέρους ∆οµών: Οτί για να λύσουµε το πρόβληµα
αρκεί να υπολογίσουµε την βέλτιστη λύση σε κάποια υποπροβλήµατα,
συνήθως µε αναδροµή.
Μικρός Αριθµός Υποπροβληµάτων: Το πλήθος των υποπροβληµάτων πουΜικρός Αριθµός Υποπροβληµάτων: Το πλήθος των υποπροβληµάτων που
πρέπει να λύσουµε είναι µικρό (δηλαδή πολυωνυµικό ως προς το µέγεθος
του προβλήµατος)
Επικαλυπτόµενα Επιµέρους Προβλήµατα: Ότι λύνουµε πολλές φορές τα ίδια
υποπροβλήµατα µε αποτέλεσµα να χάνουµε χρόνο
Ο ∆υναµικός προγραµµατισµός είναι η λύση!
Αντί να λύνουµε από το µεγαλύτερο όλο και µικρότερα προβλήµατα
Ξεκινάµε από το µικρότερο και υπολογίζουµε όλο και µεγαλύτερα προβλήµατα!!
Αποθηκεύοντας τις ενδιάµεσες λύσεις για να τις αξιοποιήσουµε αργότερα!
B. Θεωρία
1. ∆υναµικός Προγραµµατισµός
6∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Για να κατασκευάσουµε έναν αλγόριθµο ∆υναµικού Προγραµµατισµού κάνουµε τα εξής
βήµατα:
1. Περιγράφουµε έναν αναδροµικό αλγόριθµο που λύνει το πρόβληµα
2. ∆ίνουµε την αναδροµική σχέση που υπολογίζει την βέλτιστη λύση (επίλυση από
πάνω προς τα κάτω)πάνω προς τα κάτω)
3. ∆ιαπιστώνουµε ότι ισχύουν οι τρεις συνθήκες για την κατασκευή του αλγορίθµου
δυναµικού προγραµµατισµού.
4. Με βάση την αναδροµική σχέση, κατασκευάζουµε την διαδικασία επίλυσης από
τα µικρά προβλήµατα σε όλο και µεγαλύτερα (επίλυση από κάτω προς τα πάνω)
5. ∆ίνουµε τον επαναληπτικό αλγόριθµο που κάνει την επίλυσή του προβλήµατος
6. Υπολογίζουµε την πολυπλοκότητα του επαναληπτικού αλγορίθµου
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
1. Η ακολουθία Fibonacci
7∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
ΠΡΟΒΛΗΜΑ: ∆ίνεται ένας φυσικός αριθµός n. Να υπολογιστεί ο n-ός
αριθµός Fibonacci.
Οι πρώτοι 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
Και τυπικά η ακολουθία ορίζεται µέσω της αναδροµικής σχέσης:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610



>+
==
=
−− 2,
21,1
21 nff
nήn
f
nn
n
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
1. Η ακολουθία Fibonacci (1.∆ιατύπωση Αναδροµικού Αλγορίθµου)
8∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Ένας αναδροµικός αλγόριθµος που υλοποιεί την παραπάνω διαδικασία είναι
ο εξής:
procedure FibRec(n)
if n=1 or n=2 then
return 1
else
O αλγόριθµος έχει πολυπλοκότητα που περιγράφεται από την
αναδροµική σχέση:
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
Θ = =
=
− + − +Θ >
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
1. Η ακολουθία Fibonacci (1.∆ιατύπωση Αναδροµικού Αλγορίθµου)
9∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Η αναδροµική σχέση T’(n)=T’(n-1)+T’(n-2)+1 µπορεί να προσεγγιστεί µέσω
φραγµάτων
ΥΠΟΛΟΓΙΣΜΟΣ ΑΝΩ ΦΡΑΓΜΑΤΟΣ
Ισχύει '( ) '( 1) '( 2) 1 '( 1) '( 1) 1T n T n T n T n T n= − + − + ≤ − + − +
1)1(2)( +−= nAnAΣυνεπώς λύνουµε την αναδροµή
άρα
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
n
n
n
nn
kk
A
knA
nA
nA
nAnA
Θ=
−
−
+Θ=
=+++++=
==
=+++++−=
==
=+++−=
=++−=
=+−=
+−
−
−
)2()( n
nT Ο=
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
1. Η ακολουθία Fibonacci (1.∆ιατύπωση Αναδροµικού Αλγορίθµου)
10∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Η αναδροµική σχέση T’(n)=T’(n-1)+T’(n-2)+1 µπορεί να προσεγγιστεί µέσω
φραγµάτων
ΥΠΟΛΟΓΙΣΜΟΣ ΚΑΤΩ ΦΡΑΓΜΑΤΟΣ
Ισχύει '( ) '( 1) '( 2) 1 '( 2) '( 2) 1T n T n T n T n T n= − + − + ≥ − + − +
1)2(2)( +−= nKnKΣυνεπώς λύνουµε την αναδροµή
άρα
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
n
n
n
nn
kk
K
knK
nK
nK
nKnK
Θ=
−
−
+Θ=
=+++++=
==
=+++++−=
==
=+++−=
=++−=
=+−=
+−
−
−
)2()( 2/n
nT Ω=
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
1. Η ακολουθία Fibonacci (1.∆ιατύπωση Αναδροµικού Αλγορίθµου)
11∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Η πολυπλοκότητα του αλγορίθµου είναι και
Είναι πολύ αργός αλγόριθµος!!
Λόγω του τρόπου εκτέλεσης της αναδροµικής διαδικασίας. Π.χ. για n=5:
)2()( 2/n
nT Ω= )2()( n
OnT =
)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.Συνθήκες του ∆.Π.)
12∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Επαληθεύουµε ότι ισχύουν οι συνθήκες για την κατασκευή ενός αλγόριθµου
∆υναµικού Προγραµµατισµού:
ΕΠΑΛΗΘΕΥΣΗ ΤΩΝ Ι∆ΙΟΤΗΤΩΝ ΤΟΥ ∆.Π. για την ακολουθία Fibonacci:
Ιδιότητα των Βέλτιστων Επιµέρους ∆οµών: Πράγµατι για να υπολογίσουµε τη
λύση, υπολογίζουµε την λύση στα δύο αµέσως προηγούµενα υποπροβλήµα-
τα.τα.
Μικρός Αριθµός Υποπροβληµάτων: Το πλήθος των υποπροβληµάτων
πρέπει να λύσουµε είναι µικρό (συγκεκριµένα πρέπει να λύσουµε n
υποπροβλήµατα)
Επικαλυπτόµενα Επιµέρους Προβλήµατα: Πράγµατι αναγκαζόµαστε να
λύσουµε πολλές φορές τα ίδια υποπροβλήµατα, λόγω του τρόπου εκτέλεσης
της αναδροµικής διαδικασίας.
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
1. Η ακολουθία Fibonacci (4. ∆ιαδικασία Επίλυσης)
13∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 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.Πολυπλοκότητα)
14∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Ένας αλγόριθµος δυναµικού προγραµµατισµού που υλοποιεί την
παραπάνω διαδικασία είναι ο εξής:
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. Αλυσιδωτός Πολλαπλασιασµός Πινάκων
15∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.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
Αλγόριθµοι:
Προφανής αλγόριθµος: Κάνε τις πράξεις από αριστερά προς τα δεξιά:
Πρώτα A1 x A2 = C1 έπειτα C1 x A3 κ.ο.κ. Οι πράξεις που γίνονται είναι:
d0d1d2 + d0d2d3 + …+ d0dn-1dn
Αλγόριθµος ∆υναµικού Προγραµµατισµού: Επέλεξε την σειρά µε την
οποία θα γίνουν οι πολλαπλασιασµοί των πινάκων. Επιτυγχάνεται
σηµατική βελτίωση στην πολυπλοκότητα.
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων
16∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Ας δούµε γιατί έχει αξία ένας αλγόριθµος καθορισµού της σειράς των
πολλαπλασιασµών. Παράδειγµα:
A1 x A2 x A3 όπου Α1: 5x8, A2: 8x4, A3: 4x2 οι πράξεις µπορούν να
γίνουν:
(A1 x A2) x A3
Για τον υπολογισµό του A1 x A2: 5x8x4=160 πράξεις και προκύπτειΓια τον υπολογισµό του A1 x A2: 5x8x4=160 πράξεις και προκύπτει
πίνακας 5x4, έστω C
Για τον υπολογισµό του C x A3: 5x4x2=40 πράξεις και προκύπτει ο
πίνακας-γινόµενο 5 x 2
Σύνολο 200 πράξεις
A1 x (A2 x A3)
Για τον υπολογισµό του A2 x A3: 8x4x2=64 πράξεις και προκύπτει
πίνακας 8x2, έστω C
Για τον υπολογισµό του Α1 x C: 5x8x2=80 πράξεις και προκύπτει ο
πίνακας-γινόµενο 5 x 2
Σύνολο 144 πράξεις
Άρα µε άλλη σειρά γινοµένου, γλιτώνουµε πολλές πράξεις!
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων
17∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Για περισσότερους πίνακες υπάρχουν περισσότεροι τρόποι να κάνουµε τον
πολλαπλασιασµό, άρα και µεγαλύτερο όφελος στις πράξεις:
A1 x A2 x A3 x A4 µπορεί να παρενθετοποιηθεί ως εξής:
((A1 A2) A3) A4)
((A1A2)(A3A4))((A1A2)(A3A4))
(A1(A2A3))A4
A1((A2A3)A4)
A1(A2(A3A4))
Πως θα επιλέξουµε την καλύτερη παρενθετοποίηση χωρίς να χρειαστεί
να τις µελετήσουµε την κάθε µία ξεχωριστα;
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (1. Επίλυση µε αναδροµή)
18∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Για την επίλυση µε αναδροµή του προβλήµατος σκεφτόµαστε ως εξής:
Θεωρούµε ότι έχουµε µια διαδικασία Τ(i,j) που έχει ήδη οριστεί και δουλεύει
ορθά που όταν παίρνει ως όρισµα µια ακολουθία Ai…Aj παράγει την
βέλτιστη παρενθετοποίηση.
Έστω τώρα το γενικό στιγµιότυπο: A1A2…An-1An. Θα επιλέξουµε το καλύτερο
από τα γινόµενα:
1 2 n-1 n
από τα γινόµενα:
A1(A2…An)
(A1A2)(A3…An)
…
(A1…An-2)(An-1An)
(A1…An-1)An
Ο υπολογισµός της βέλτιστης παρενθετοποίησης για κάθε υποπρόβληµα
γίνεται µε κλήση της διαδικασίας T(i,j)
Οριακή Συνθήκη θα έχουµε όταν έχουµε µόνο έναν πίνακα (0 πράξεις)
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (2. Αναδροµική Σχέση)
19∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Ο αλγόριθµος που υλοποιεί την παραπάνω διαδικασία µε αναδροµή είναι ο
ακόλουθος:
procedure MatMult(Ai,Ai+1,…,Aj)
if i=j then
return 0
else
Με βάση τα παραπάνω το βέλτιστο πλήθος των πολλαπλασιασµών της
ακολουθίας πινάκων Ai,…,Aj δίδεται από την αναδροµική σχέση:
for k=i to j-1
ck=MatMult(Ai,…,Ak)+MatMult(Ak+1,…,Aj)+di-1dkdj
end for
end if
return το ελάχιστο από ck για k=i,…,j-1
end procedure
{ }



<+++
=
=
−
<≤
jidddjkMkiM
ji
jiM
jki
jki
,],1[],[min
,0
],[
1
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (3.Συνθήκες του ∆.Π.)
20∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Επαληθεύουµε ότι ισχύουν οι συνθήκες για την κατασκευή ενός αλγόριθµου
∆υναµικού Προγραµµατισµού:
ΕΠΑΛΗΘΕΥΣΗ ΤΩΝ Ι∆ΙΟΤΗΤΩΝ ΤΟΥ ∆.Π. για τον Αλυσιδωτο Πολ/µό Πινάκων:
Ιδιότητα των Βέλτιστων Επιµέρους ∆οµών: Πράγµατι για να υπολογίσουµε τη
βελτιστη λύση, αρκεί να υπολογίσουµε την βέλτιστη λύση στα
υποπροβλήµατα που προκύπτουν από την αναδροµική σχέση.
Συνεπώς θα προσεγγίσουµε το πρόβληµα µε ∆υναµικό Προγραµµατισµό.
Θα ξεκινήσουµε από µικρά υποπροβλήµατα και θα λύνουµε ολοένα και
µεγαλύτερα µε σύνθεση των µικρότερων υποπροβληµάτων.
υποπροβλήµατα που προκύπτουν από την αναδροµική σχέση.
Μικρός Αριθµός Υποπροβληµάτων: Τα υποπροβλήµατα που καλούµαστε να
λύσουµε είναι το πολύ n(n+1)/2 (όλες οι τιµές µε 1≤i<j ≤n)
Επικαλυπτόµενα Επιµέρους Προβλήµατα: Πράγµατι αναγκαζόµαστε να
υπολογίσουµε πολλές φορές για παράδειγµα τα γινόµενα ΑiAi+1
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (4.Σειρά Επίλυσης Υποπροβ/των)
21∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Για να αποφασίσουµε µε ποια σειρά πρέπει να κάνουµε τις πράξεις
παρατηρούµε από ποια υποπροβλήµατα εξαρτάται η επίλυση κάθε
υποπροβλήµατος.
Π.χ. αν θεωρήσουµε ότι πολλπλασιάζουµε 5 πίνακες, τότε οι πράξεις πρέπι να
γίνουν µε την εξής σειρά:
1 2 3 4 5
γίνουν µε την εξής σειρά:
Πρέπει πρώτα να υπολογίσουµε γινόµενα 1 πίνακα, µετά 2 πινάκων, µετά 3
πινάκων κ.ο.κ.
Το κελί (i,j) θα αποθηκεύει το βέλτιστο πλήθος πράξεων που απαιτούνται στο για
τον πολ/σµό της ακολουθίας πινάκων Ai,Ai+1,…Aj
1 2 3 4 5
1
2
3
4
5
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (4.Σειρά Επίλυσης Υποπροβ/των)
22∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Παράδειγµα Εκτέλεσης για τον πολλαπλασιασµό πινάκων Α1Α2Α3Α4, όταν
Α1: 5x3, A2: 3x4, A3: 4x8, A4:8x2, A5: 2x3
1 2 3 4
5
4 A44 A4
0
3 A3
0
A3A4
4x8x2=64
2 A2
0
A2A3
3x4x8=96
A2A3A4
(A2A3)A4=96+3x8x2=96+48=144
A2(A3A4)=64+3x4x2=64+24=88
88
1 A1
0
A1A2
5x3x4=60
A1A2A3
(A1A2)A3=60+5x4x8=220
A1(A2A3)=96+5x3x8=216
216
A1A2A3A4
A1(A2A3A4):88+5x3x2=88+30=118
(A1A2)(A3A4):60+64+5x4x2=164
(A1A2A3)A4:216+5x8x2=296
118
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (5. Επαναληπτικός Αλγόριθµος)
23∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Ο αλγόριθµος που υλοποιεί την παραπάνω διαδικασία σειράς πράξεων είναι ο
ακόλουθος:
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. Ανάλυση Πολυπλοκότητας)
24∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Ακολουθεί ανάλυση πολυπλοκότητας:
• Το πρώτο for έχει πολυπλοκότητα Θ(n)
• Τα δύο επόµενα for υλοποιούν την διαδικασία υπολογισµού των κελιών
κατά διαγώνιους όπως είδαµε στην διαδικασία επίλυσης. Τα κελιά αυτά είναι
n2/2, άρα οι πράξεις αυτών των for, θα εκτελεστούν Θ(n2) φορές.
• Οι πράξεις που γίνονται σε κάθε επανάληψη είναι Ο(n)
• Συνεπώς η τελική πολυπλοκότητα είναι O(n3)
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (Αποµνηµόνευση Λύσης)
25∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Ο αλγόριθµος που έχουµε κατασκευάσει:
Υπολογίζει την βέλτιστη λύση, αποθηκεύοντας την τιµή για την βέλτιστη
παρενθετοποιήση κάθε ακολουθίας πινάκων που αντιστοιχεί σε ένα
ορισµένο κελί του πίνακα.
∆ΕΝ επιστρέφει την βέλτιστη λύση, ούτε καταγράφει πως γίνεται η βέλτιστη
παρενθετοποιήση
Για το λόγο αυτό τροποποιούµε ελαφρά τον κώδικά µας, ώστε να κάνει και
αποµνηµόνευση της βέλτιστης λύσης κάθε κελιού.
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (Αποµνηµόνευση Λύσης)
26∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Τροποποιούµε τον αλγόριθµο ως εξής:
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 εντολή που προστέθηκε συµβολίζει ότι το σηµείο του διαχωρισµού του
πολλαπλασιασµού πινάκων AiAi+1…Aj γίνεται στο σηµείο s[i,j]=k, δηλαδή ότι
η βέλτιστη παρνεθετοποίηση είναι η (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. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (Αποµνηµόνευση Λύσης)
27∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
∆εδοµένου αυτού του πίνακα, µπορούµε να παράγουµε την κατασκευή της
βέλτιστης λύσης µε την βέλτιστη παρενθετοποίηση, ως εξής:
procedure MatrixChainProduct(Ai,A2,…,Aj,s[1…n])
if i<j
X=MatrixChainProduct(Ai,…As[i,j],s)
Y=MatrixChainProduct(A ,…A ,s)
Όπου MatMult(X,Y) είναι ο γνωστός αλγόριθµος πολλαπλασιασµού πινάκων
που µελετήσαµε στο Μάθηµα 2.1
Y=MatrixChainProduct(As[i,j+1],…Aj,s)
C=MatMult(X,Y)
return C
else
return Ai
end if
end procedure
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
3. Μέγιστη Κοινή Υπακολουθία
28∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
ΠΡΟΒΛΗΜΑ: ∆ίδονται ακολουθίες χαρακτήρων X=x1x2x3…xn και
Y=y1y2…ym. Να βρεθεί η µέγιστη κοινή υπακολουθία τους.
Ορισµός: ∆εδοµένης µιας ακολουθίας X=x1x2…xn, υπακολουθία της X
ονοµάζεται οποιαδήποτε ακολουθία µπορεί να παραχθεί µε διαγραφή
κάποιων στοιχείων της.
Στιγµιοτύπα:Στιγµιοτύπα:
X=abcdf Y=dbdaf, τότε Z=bdf
X=aabaabb Y=abacba τότε Z=abab
Αλγόριθµοι:
Προφανής αλγόριθµος: Υπολογίζουµε όλες τις υπακολουθίες των δύο
και τις συγκρίνουµε ανά δύο. Πολυπλοκότητα O(2m2n(m+n))
Αλγόριθµος ∆υναµικού Προγραµµατισµού: Επιτυγχάνεται
πολυπλοκότητα Θ(mn).
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
3. Μέγιστη Κοινή Υπακολουθία (1. Επίλυση µε αναδροµή)
29∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Για την επίλυση µε αναδροµή του προβλήµατος σκεφτόµαστε ως εξής:
Θεωρούµε ότι έχουµε µια διαδικασία Τ(x1x2…xi, y1y2…yj) που έχει ήδη
οριστεί και δουλεύει ορθά που όταν παίρνει ως όρισµα δύο ακολουθίες Χ,Υ
παράγει την µεγαλύτερη υπακολουθία τους Ζ
Παίρνουµε τώρα το γενικό στιγµιότυπο: Χ=x1x2…xn-1xn και Υ=y1y2…yn-1ym
Θα επιλέξουµε το καλύτερο από τα ακόλουθα:
Αν ισχύει 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. Αναδροµική Σχέση)
30∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Η αναδροµική σχέση που υπολογίζει την βέλτιστη λύση είναι:





≠>−−
=>+−−
==
=
ji
jin
yxjijicjic
yxjijic
jήi
f
και
και
0,},],1[],1,[max{
0,,1]1,1[
00,0
 ji
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
3. Μέγιστη Κοινή Υπακολουθία (3.Συνθήκες του ∆.Π.)
31∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Επαληθεύουµε ότι ισχύουν οι συνθήκες για την κατασκευή ενός αλγόριθµου
∆υναµικού Προγραµµατισµού:
ΕΠΑΛΗΘΕΥΣΗ ΤΩΝ Ι∆ΙΟΤΗΤΩΝ ΤΟΥ ∆.Π. για την Μεγιστη Κοινή Υπακολουθία:
Ιδιότητα των Βέλτιστων Επιµέρους ∆οµών: Πράγµατι για να υπολογίσουµε τη
βελτιστη λύση, αρκεί να υπολογίσουµε την βέλτιστη λύση στα
υποπροβλήµατα που προκύπτουν από την αναδροµική σχέση.
Συνεπώς θα προσεγγίσουµε το πρόβληµα µε ∆υναµικό Προγραµµατισµό.
Θα ξεκινήσουµε από µικρά υποπροβλήµατα και θα λύνουµε ολοένα και
µεγαλύτερα µε σύνθεση των µικρότερων υποπροβληµάτων.
υποπροβλήµατα που προκύπτουν από την αναδροµική σχέση.
Μικρός Αριθµός Υποπροβληµάτων: Τα υποπροβλήµατα που καλούµαστε να
λύσουµε είναι το πολύ nm (όλες οι τιµές µε 1≤i,j ≤n)
Επικαλυπτόµενα Επιµέρους Προβλήµατα: Λόγω της λειτουργίας της
αναδροµής, υπολογίζονται πολλές φορές οι ίδιες υπακολουθίες.
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
3. Μέγιστη Κοινή Υπακολουθία (4.Σειρά Επίλυσης Υποπροβ/των)
32∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Για να αποφασίσουµε µε ποια σειρά πρέπει να κάνουµε τις πράξεις
παρατηρούµε από ποια υποπροβλήµατα εξαρτάται η επίλυση κάθε
υποπροβλήµατος.
Π.χ. αν θεωρήσουµε ότι έχουµε 2 ακολουθίες µε µήκος 6 και 5. Το στοιχείο
Μ[i,j] συµβολίζει ότι συγκρίνω τις ακολουθίες x x ….x και y y …yΜ[i,j] συµβολίζει ότι συγκρίνω τις ακολουθίες x1x2….xi και y1y2…yj
1 2 3 4 5
6
5
4
3
2
1
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
3. Μέγιστη Κοινή Υπακολουθία (4.Σειρά Επίλυσης Υποπροβ/των)
33∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Παράδειγµα εκτέλεσης για X=abcdf Y=dbdaf
1 2 3 4 5
5 X=abcdf
Y=d
c=1
X=abcdf
Y=db
c=1
X=abcdf
Y=dbd
c=2
X=abcdf
Y=dbda
c=2
X=abcdf
Y=dbdaf
c=3c=1 c=1 c=2 c=2 c=3
4 X=abcd
Y=d
c=1
X=abcd
Y=db
c=1
X=abcd
Y=dbd
c=2
X=abcd
Y=dbda
c=2
X=abcd
Y=dbdaf
c=2
3 X=abc
Y=d
c=0
X=abc
Y=db
c=1
X=abc
Y=dbd
c=1
X=abc
Y=dbda
c=1
X=abc
Y=dbdaf
c=1
2 X=ab
Y=d
c=0
X=ab
Y=db
c=1
X=ab
Y=dbd
c=1
X=ab
Y=dbda
c=1
X=ab
Y=dbdaf
c=1
1 X=a
Y=d
c=0
X=a
Y=db
c=0
X=a
Y=dbd
c=0
X=a
Y=dbda
c=1
X=a
Y=dbdaf
c=1
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
3. Μέγιστη Κοινή Υπακολουθία (5. Επαναληπτικός Αλγόριθµος)
34∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Ο αλγόριθµος που υλοποιεί την παραπάνω διαδικασία σειράς πράξεων είναι ο
ακόλουθος:
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] που κατασκευάσαµε µπορούµε να εξάγουµε την
βέλτιστη λύση σε χρόνο Θ(m+n) µε την ακόλουθη αναδροµική ρουτίνα:
35∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
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. Μέγιστη Κοινή Υπακολουθία (Εκτέλεση του αλγόριθµου κατασκευής Β.Λ.)
Βλέπουµε πως θα τρέξει ο αναδροµικός αλγόριθµος για την κατασκευή της
βέλτιστης λύσης:
36∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
1 2 3 4 5
5 X=abcdf
Y=d
c=1
X=abcdf
Y=db
c=1
X=abcdf
Y=dbd
c=2
X=abcdf
Y=dbda
c=2
X=abcdf
Y=dbdaf
c=3c=1 c=1 c=2 c=2 c=3
4 X=abcd
Y=d
c=1
X=abcd
Y=db
c=1
X=abcd
Y=dbd
c=2
X=abcd
Y=dbda
c=2
X=abcd
Y=dbdaf
c=2
3 X=abc
Y=d
c=0
X=abc
Y=db
c=1
X=abc
Y=dbd
c=1
X=abc
Y=dbda
c=1
X=abc
Y=dbdaf
c=1
2 X=ab
Y=d
c=0
X=ab
Y=db
c=1
X=ab
Y=dbd
c=1
X=ab
Y=dbda
c=1
X=ab
Y=dbdaf
c=1
1 X=a
Y=d
c=0
X=a
Y=db
c=0
X=a
Y=dbd
c=0
X=a
Y=dbda
c=1
X=a
Y=dbdaf
c=1
Β. Θεωρία
1. ∆υναµικός Προγραµµατισµός
3. Μέγιστη Κοινή Υπακολουθία (6.Πολυπλοκότητα Αλγορίθµου∆Π)
37∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
Υπολογισµός Πολυπλοκότητας:
Οι πρώτες 2 for έχουν πολυπλοκότητα Θ(n)
Έπειτα για nm φορές γίνονται Θ(1) πράξεις. Συνεπώς η πολυπλοκότητα
είναι Θ(nm).
Συνεπώς η συνολική πολυπλοκότητα είναι Θ(n)+Θ(nm)=Θ(nm)
Γ. Ασκήσεις
Εφαρµογή 1
∆ίδεται η ακολουθία ακεραίων αριθµών που δηµιουργείται από την
X(n) = 4X(n-2) + 2 X(n-4), για n >3, και X(n) = 1, n=0,1,2,3
1. Σχεδιάστε έναν αναδροµικό αλγόριθµο που θα υπολογίζει τον n-οστό όρο
38∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
1. Σχεδιάστε έναν αναδροµικό αλγόριθµο που θα υπολογίζει τον n-οστό όρο
της ακολουθίας. Γράψτε την αναδροµική σχέση που δίνει τον χρόνο
εκτέλεσης του αλγόριθµου. Βρείτε συµβατά άνω και κάτω όρια για τον
χρόνο εκτέλεσης του αλγορίθµου (δηλαδή ακριβές όριο Θ).
2. Σχεδιάστε έναν αλγόριθµο δυναµικού προγραµµατισµού που λύνει το ίδιο
πρόβληµα Ποιος είναι τώρα ο χρόνος εκτέλεσης?
Γ. Ασκήσεις
Εφαρµογή 2
Έστω ένας πίνακας ακεραίων αριθµών Α που αποτελείται από m γραµµές και n στήλες.
Θεωρούµε ένα παιχνίδι όπου ξεκινώντας από οποιοδήποτε κελί της κάτω γραµµής του
πίνακα, προσπαθούµε να φτάσουµε σε κάποιο κελί της πάνω γραµµής του πίνακα
περνώντας από κελιά ελάχιστου συνολικού κόστους. Σαν κόστος Α(i,j) ενός κελιού (i,j)
θεωρούµε τον αριθµό που αναγράφεται στο συγκεκριµένο κελί. Από ένα κελί του πίνακα
µπορούµε να κινηθούµε είτε προς το κελί που βρίσκεται ακριβώς από πάνω του, είτε
39∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
µπορούµε να κινηθούµε είτε προς το κελί που βρίσκεται ακριβώς από πάνω του, είτε
διαγώνια αριστερά, είτε διαγώνια δεξιά.
Για παράδειγµα, στον πίνακα του πιο κάτω σχήµατος, από το κελί (2,2) µπορούµε να
κινηθούµε προς κάποιο από τα κελιά (3,1), (3,2) ή (3,3). Σηµειώνουµε ότι σαν γραµµή
µε αριθµό 1 θεωρείται η κάτω γραµµή του πίνακα.
Τα κελιά µε έντονη γραφή δείχνουν τη βέλτιστη διαδροµή στον συγκεκριµένο πίνακα,
συνολικού κόστους ίσου µε 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
Γ. Ασκήσεις
Εφαρµογή 2
α) Να περιγράψετε µία λύση του πιο πάνω προβλήµατος µε τη βοήθεια του ∆υναµικού
Προγραµµατισµού.
(β) Να δώσετε τον αντίστοιχο αλγόριθµο (ψευδοκώδικα) υπολογισµού του ελάχιστου
κόστους µετάβασης από την πρώτη γραµµή του πίνακα προς την τελευταία.
(γ) Ποια η πολυπλοκότητα χρόνου και χώρου του αλγόριθµου αυτού; Θα µπορούσε να
εφαρµοστεί ισοδύναµος αλγόριθµος µε µικρότερη πολυπλοκότητα χώρου; Για το
40∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
εφαρµοστεί ισοδύναµος αλγόριθµος µε µικρότερη πολυπλοκότητα χώρου; Για το
τελευταίο ερώτηµα αρκεί να περιγράψετε τον τρόπο µείωσης της πολυπλοκότητας
χώρου, χωρίς να δώσετε ακριβή περιγραφή του νέου αλγόριθµου.
(δ) Να εφαρµόσετε τον αλγόριθµο που περιγράψατε στα προηγούµενα σκέλη στον πιο
κάτω πίνακα:
4 3 4
2 3 4
4 1 3
4 4 3
Γ. Ασκήσεις
Εφαρµογή 3
Οι διοργανωτές ερασιτεχνικού ποδηλατικού αγώνα θέλουν να σχεδιάσουν, για
ευνόητους λόγους µειωµένης φυσικής κατάστασης των συµµετεχόντων ερασιτεχνών
ποδηλάτων, την οδική διαδροµή µικρότερης συνολικής ανωφέρειας (ανηφορικής
κλίσεως). Ο χάρτης µε τη διαδροµή (άκυκλο κατευθυνόµενο γράφηµα) εµφανίζεται
παρακάτω, όπου κάθε δρόµος αναγράφει την ανωφέρεια του. Η αφετηρία του αγώνα
είναι η πόλη P0 και τέλος η πόλη P8.
41∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός
είναι η πόλη P0 και τέλος η πόλη P8.
(1) Σχεδιάστε αλγόριθµο δυναµικού προγραµµατισµού που υπολογίζει την συνολική
ελάχιστη ανωφέρεια.
(2) Τρέξτε τον αλγόριθµο στο παράδειγµα του χάρτη.

More Related Content

What's hot

ΠΛΗ20 ΜΑΘΗΜΑ 1.4
ΠΛΗ20 ΜΑΘΗΜΑ 1.4ΠΛΗ20 ΜΑΘΗΜΑ 1.4
ΠΛΗ20 ΜΑΘΗΜΑ 1.4
Dimitris Psounis
 
ΠΛΗ20 ΜΑΘΗΜΑ 0.2
ΠΛΗ20 ΜΑΘΗΜΑ 0.2ΠΛΗ20 ΜΑΘΗΜΑ 0.2
ΠΛΗ20 ΜΑΘΗΜΑ 0.2
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 3.1
ΠΛΗ30 ΜΑΘΗΜΑ 3.1ΠΛΗ30 ΜΑΘΗΜΑ 3.1
ΠΛΗ30 ΜΑΘΗΜΑ 3.1
Dimitris Psounis
 
ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.6
ΠΛΗ30 ΜΑΘΗΜΑ 1.6ΠΛΗ30 ΜΑΘΗΜΑ 1.6
ΠΛΗ30 ΜΑΘΗΜΑ 1.6
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 3.2
ΠΛΗ30 ΜΑΘΗΜΑ 3.2ΠΛΗ30 ΜΑΘΗΜΑ 3.2
ΠΛΗ30 ΜΑΘΗΜΑ 3.2
Dimitris Psounis
 
ΠΛΗ20 ΜΑΘΗΜΑ 5.4
ΠΛΗ20 ΜΑΘΗΜΑ 5.4ΠΛΗ20 ΜΑΘΗΜΑ 5.4
ΠΛΗ20 ΜΑΘΗΜΑ 5.4
Dimitris Psounis
 
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 5
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 5ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 5
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 5
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 3.4
ΠΛΗ30 ΜΑΘΗΜΑ 3.4ΠΛΗ30 ΜΑΘΗΜΑ 3.4
ΠΛΗ30 ΜΑΘΗΜΑ 3.4
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 6.4
ΠΛΗ30 ΜΑΘΗΜΑ 6.4ΠΛΗ30 ΜΑΘΗΜΑ 6.4
ΠΛΗ30 ΜΑΘΗΜΑ 6.4
Dimitris Psounis
 
ΠΛΗ20 ΜΑΘΗΜΑ 1.3
ΠΛΗ20 ΜΑΘΗΜΑ 1.3ΠΛΗ20 ΜΑΘΗΜΑ 1.3
ΠΛΗ20 ΜΑΘΗΜΑ 1.3
Dimitris Psounis
 
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 2ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 2
Dimitris Psounis
 
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 7
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 7ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 7
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 7
Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 1ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 1
Dimitris Psounis
 
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.2
ΠΛΗ30 ΜΑΘΗΜΑ 1.2ΠΛΗ30 ΜΑΘΗΜΑ 1.2
ΠΛΗ30 ΜΑΘΗΜΑ 1.2
Dimitris Psounis
 
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 2
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 2ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 2
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 2
Dimitris Psounis
 
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
Dimitris Psounis
 
ΠΛΗ30 ΚΑΡΤΑ - ΙΕΡΑΡΧΙΑ ΣΥΝΑΡΤΗΣΕΩΝ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ
ΠΛΗ30 ΚΑΡΤΑ - ΙΕΡΑΡΧΙΑ ΣΥΝΑΡΤΗΣΕΩΝ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣΠΛΗ30 ΚΑΡΤΑ - ΙΕΡΑΡΧΙΑ ΣΥΝΑΡΤΗΣΕΩΝ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ
ΠΛΗ30 ΚΑΡΤΑ - ΙΕΡΑΡΧΙΑ ΣΥΝΑΡΤΗΣΕΩΝ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ
Dimitris Psounis
 
ΠΛΗ20 ΜΑΘΗΜΑ 0.1
ΠΛΗ20 ΜΑΘΗΜΑ 0.1ΠΛΗ20 ΜΑΘΗΜΑ 0.1
ΠΛΗ20 ΜΑΘΗΜΑ 0.1
Dimitris Psounis
 

What's hot (20)

ΠΛΗ20 ΜΑΘΗΜΑ 1.4
ΠΛΗ20 ΜΑΘΗΜΑ 1.4ΠΛΗ20 ΜΑΘΗΜΑ 1.4
ΠΛΗ20 ΜΑΘΗΜΑ 1.4
 
ΠΛΗ20 ΜΑΘΗΜΑ 0.2
ΠΛΗ20 ΜΑΘΗΜΑ 0.2ΠΛΗ20 ΜΑΘΗΜΑ 0.2
ΠΛΗ20 ΜΑΘΗΜΑ 0.2
 
ΠΛΗ30 ΜΑΘΗΜΑ 3.1
ΠΛΗ30 ΜΑΘΗΜΑ 3.1ΠΛΗ30 ΜΑΘΗΜΑ 3.1
ΠΛΗ30 ΜΑΘΗΜΑ 3.1
 
ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.6
ΠΛΗ30 ΜΑΘΗΜΑ 1.6ΠΛΗ30 ΜΑΘΗΜΑ 1.6
ΠΛΗ30 ΜΑΘΗΜΑ 1.6
 
ΠΛΗ30 ΜΑΘΗΜΑ 3.2
ΠΛΗ30 ΜΑΘΗΜΑ 3.2ΠΛΗ30 ΜΑΘΗΜΑ 3.2
ΠΛΗ30 ΜΑΘΗΜΑ 3.2
 
ΠΛΗ20 ΜΑΘΗΜΑ 5.4
ΠΛΗ20 ΜΑΘΗΜΑ 5.4ΠΛΗ20 ΜΑΘΗΜΑ 5.4
ΠΛΗ20 ΜΑΘΗΜΑ 5.4
 
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 5
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 5ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 5
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 5
 
ΠΛΗ30 ΜΑΘΗΜΑ 3.4
ΠΛΗ30 ΜΑΘΗΜΑ 3.4ΠΛΗ30 ΜΑΘΗΜΑ 3.4
ΠΛΗ30 ΜΑΘΗΜΑ 3.4
 
ΠΛΗ30 ΜΑΘΗΜΑ 6.4
ΠΛΗ30 ΜΑΘΗΜΑ 6.4ΠΛΗ30 ΜΑΘΗΜΑ 6.4
ΠΛΗ30 ΜΑΘΗΜΑ 6.4
 
ΠΛΗ20 ΜΑΘΗΜΑ 1.3
ΠΛΗ20 ΜΑΘΗΜΑ 1.3ΠΛΗ20 ΜΑΘΗΜΑ 1.3
ΠΛΗ20 ΜΑΘΗΜΑ 1.3
 
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 2ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 2
 
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 7
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 7ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 7
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 7
 
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 1ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ20 ΕΠΑΝΑΛΗΨΗ 1
 
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.2
ΠΛΗ30 ΜΑΘΗΜΑ 1.2ΠΛΗ30 ΜΑΘΗΜΑ 1.2
ΠΛΗ30 ΜΑΘΗΜΑ 1.2
 
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 2
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 2ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 2
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 2
 
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
ΠΛΗ30 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 3
 
ΠΛΗ30 ΚΑΡΤΑ - ΙΕΡΑΡΧΙΑ ΣΥΝΑΡΤΗΣΕΩΝ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ
ΠΛΗ30 ΚΑΡΤΑ - ΙΕΡΑΡΧΙΑ ΣΥΝΑΡΤΗΣΕΩΝ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣΠΛΗ30 ΚΑΡΤΑ - ΙΕΡΑΡΧΙΑ ΣΥΝΑΡΤΗΣΕΩΝ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ
ΠΛΗ30 ΚΑΡΤΑ - ΙΕΡΑΡΧΙΑ ΣΥΝΑΡΤΗΣΕΩΝ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ
 
ΠΛΗ20 ΜΑΘΗΜΑ 0.1
ΠΛΗ20 ΜΑΘΗΜΑ 0.1ΠΛΗ20 ΜΑΘΗΜΑ 0.1
ΠΛΗ20 ΜΑΘΗΜΑ 0.1
 

Viewers also liked

ΠΛΗ30 ΜΑΘΗΜΑ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΜΑΘΗΜΑ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 2.2 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΜΑΘΗΜΑ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 2.1 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3
Dimitris Psounis
 
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3 (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.4 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.4 (4in1)ΠΛΗ30 ΜΑΘΗΜΑ 1.4 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.4 (4in1)
Dimitris Psounis
 
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.4
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.4ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.4
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.4
Dimitris Psounis
 
ΠΛΗ30 ΚΑΡΤΑ 1.4 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.4 (4sl)ΠΛΗ30 ΚΑΡΤΑ 1.4 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.4 (4sl)
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ30 ΚΑΡΤΑ 1.3 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.3 (4sl)ΠΛΗ30 ΚΑΡΤΑ 1.3 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.3 (4sl)
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.3 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.3 (4in1)ΠΛΗ30 ΜΑΘΗΜΑ 1.3 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.3 (4in1)
Dimitris Psounis
 
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.3
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.3ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.3
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.3
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.2 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.2 (4in1)ΠΛΗ30 ΜΑΘΗΜΑ 1.2 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.2 (4in1)
Dimitris Psounis
 
ΠΛΗ30 ΚΑΡΤΑ 1.2 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.2 (4sl)ΠΛΗ30 ΚΑΡΤΑ 1.2 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.2 (4sl)
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4sl)
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4sl)ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4sl)
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4sl)
Dimitris Psounis
 

Viewers also liked (18)

ΠΛΗ30 ΜΑΘΗΜΑ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΜΑΘΗΜΑ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 2.2 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
 
ΠΛΗ30 ΜΑΘΗΜΑ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΜΑΘΗΜΑ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 2.1 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3
 
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3 (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.3 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.4 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.4 (4in1)ΠΛΗ30 ΜΑΘΗΜΑ 1.4 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.4 (4in1)
 
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.4
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.4ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.4
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.4
 
ΠΛΗ30 ΚΑΡΤΑ 1.4 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.4 (4sl)ΠΛΗ30 ΚΑΡΤΑ 1.4 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.4 (4sl)
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ (ΕΚΤΥΠΩΣΗ)ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ (ΕΚΤΥΠΩΣΗ)
ΠΛΗ30 ΜΑΘΗΜΑ 1.6 ΚΑΡΤΑ (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ30 ΚΑΡΤΑ 1.3 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.3 (4sl)ΠΛΗ30 ΚΑΡΤΑ 1.3 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.3 (4sl)
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.3 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.3 (4in1)ΠΛΗ30 ΜΑΘΗΜΑ 1.3 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.3 (4in1)
 
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.3
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.3ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.3
ΠΛΗ30 ΚΑΡΤΑ ΜΑΘΗΜΑ 1.3
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.2 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.2 (4in1)ΠΛΗ30 ΜΑΘΗΜΑ 1.2 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.2 (4in1)
 
ΠΛΗ30 ΚΑΡΤΑ 1.2 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.2 (4sl)ΠΛΗ30 ΚΑΡΤΑ 1.2 (4sl)
ΠΛΗ30 ΚΑΡΤΑ 1.2 (4sl)
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4sl)
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4sl)ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4sl)
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4sl)
 

Similar to ΠΛΗ30 ΜΑΘΗΜΑ 2.2

ΠΛΗ30 ΤΕΣΤ 8
ΠΛΗ30 ΤΕΣΤ 8ΠΛΗ30 ΤΕΣΤ 8
ΠΛΗ30 ΤΕΣΤ 8
Dimitris Psounis
 
ΠΛΗ30 ΤΕΣΤ 7
ΠΛΗ30 ΤΕΣΤ 7ΠΛΗ30 ΤΕΣΤ 7
ΠΛΗ30 ΤΕΣΤ 7
Dimitris Psounis
 
ΠΛΗ30 ΤΕΣΤ 10
ΠΛΗ30 ΤΕΣΤ 10ΠΛΗ30 ΤΕΣΤ 10
ΠΛΗ30 ΤΕΣΤ 10
Dimitris Psounis
 
ΠΛΗ30 ΤΕΣΤ 11
ΠΛΗ30 ΤΕΣΤ 11ΠΛΗ30 ΤΕΣΤ 11
ΠΛΗ30 ΤΕΣΤ 11
Dimitris Psounis
 
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
Dimitris Psounis
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
Dimitris Psounis
 
ΠΛΗ31 ΜΑΘΗΜΑ 1.4
ΠΛΗ31 ΜΑΘΗΜΑ 1.4 ΠΛΗ31 ΜΑΘΗΜΑ 1.4
ΠΛΗ31 ΜΑΘΗΜΑ 1.4
Dimitris Psounis
 
ΠΛΗ30 ΤΕΣΤ 6
ΠΛΗ30 ΤΕΣΤ 6ΠΛΗ30 ΤΕΣΤ 6
ΠΛΗ30 ΤΕΣΤ 6
Dimitris Psounis
 
ΠΛΗ30 ΜΑΘΗΜΑ 6.1
ΠΛΗ30 ΜΑΘΗΜΑ 6.1ΠΛΗ30 ΜΑΘΗΜΑ 6.1
ΠΛΗ30 ΜΑΘΗΜΑ 6.1
Dimitris Psounis
 
λυγάτσικας ζήνων ασκήσεις άλγεβρας B΄λυκείου 2015-6
λυγάτσικας ζήνων   ασκήσεις άλγεβρας B΄λυκείου 2015-6λυγάτσικας ζήνων   ασκήσεις άλγεβρας B΄λυκείου 2015-6
λυγάτσικας ζήνων ασκήσεις άλγεβρας B΄λυκείου 2015-6
Christos Loizos
 
ΠΛΗ30 ΤΕΣΤ 26
ΠΛΗ30 ΤΕΣΤ 26ΠΛΗ30 ΤΕΣΤ 26
ΠΛΗ30 ΤΕΣΤ 26
Dimitris Psounis
 
ΠΛΗ30 ΤΕΣΤ 21
ΠΛΗ30 ΤΕΣΤ 21ΠΛΗ30 ΤΕΣΤ 21
ΠΛΗ30 ΤΕΣΤ 21
Dimitris Psounis
 
ΠΛΗ30 ΤΕΣΤ 21
ΠΛΗ30 ΤΕΣΤ 21ΠΛΗ30 ΤΕΣΤ 21
ΠΛΗ30 ΤΕΣΤ 21
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7 ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 1.2
ΠΛΗ10 ΜΑΘΗΜΑ 1.2ΠΛΗ10 ΜΑΘΗΜΑ 1.2
ΠΛΗ10 ΜΑΘΗΜΑ 1.2
Dimitris Psounis
 
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 8
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 8ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 8
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 8
Dimitris Psounis
 
Epanalipsi g gymnasiou
Epanalipsi g gymnasiouEpanalipsi g gymnasiou
Epanalipsi g gymnasiou
Christos Loizos
 
ΠΛΗ30 ΤΕΣΤ 9
ΠΛΗ30 ΤΕΣΤ 9ΠΛΗ30 ΤΕΣΤ 9
ΠΛΗ30 ΤΕΣΤ 9
Dimitris Psounis
 

Similar to ΠΛΗ30 ΜΑΘΗΜΑ 2.2 (20)

ΠΛΗ30 ΤΕΣΤ 8
ΠΛΗ30 ΤΕΣΤ 8ΠΛΗ30 ΤΕΣΤ 8
ΠΛΗ30 ΤΕΣΤ 8
 
ΠΛΗ30 ΤΕΣΤ 7
ΠΛΗ30 ΤΕΣΤ 7ΠΛΗ30 ΤΕΣΤ 7
ΠΛΗ30 ΤΕΣΤ 7
 
ΠΛΗ30 ΤΕΣΤ 10
ΠΛΗ30 ΤΕΣΤ 10ΠΛΗ30 ΤΕΣΤ 10
ΠΛΗ30 ΤΕΣΤ 10
 
ΠΛΗ30 ΤΕΣΤ 11
ΠΛΗ30 ΤΕΣΤ 11ΠΛΗ30 ΤΕΣΤ 11
ΠΛΗ30 ΤΕΣΤ 11
 
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
 
ΠΛΗ31 ΜΑΘΗΜΑ 1.4
ΠΛΗ31 ΜΑΘΗΜΑ 1.4 ΠΛΗ31 ΜΑΘΗΜΑ 1.4
ΠΛΗ31 ΜΑΘΗΜΑ 1.4
 
ΠΛΗ30 ΤΕΣΤ 6
ΠΛΗ30 ΤΕΣΤ 6ΠΛΗ30 ΤΕΣΤ 6
ΠΛΗ30 ΤΕΣΤ 6
 
ΠΛΗ30 ΜΑΘΗΜΑ 6.1
ΠΛΗ30 ΜΑΘΗΜΑ 6.1ΠΛΗ30 ΜΑΘΗΜΑ 6.1
ΠΛΗ30 ΜΑΘΗΜΑ 6.1
 
λυγάτσικας ζήνων ασκήσεις άλγεβρας B΄λυκείου 2015-6
λυγάτσικας ζήνων   ασκήσεις άλγεβρας B΄λυκείου 2015-6λυγάτσικας ζήνων   ασκήσεις άλγεβρας B΄λυκείου 2015-6
λυγάτσικας ζήνων ασκήσεις άλγεβρας B΄λυκείου 2015-6
 
ΠΛΗ30 ΤΕΣΤ 26
ΠΛΗ30 ΤΕΣΤ 26ΠΛΗ30 ΤΕΣΤ 26
ΠΛΗ30 ΤΕΣΤ 26
 
ΠΛΗ30 ΤΕΣΤ 21
ΠΛΗ30 ΤΕΣΤ 21ΠΛΗ30 ΤΕΣΤ 21
ΠΛΗ30 ΤΕΣΤ 21
 
ΠΛΗ30 ΤΕΣΤ 21
ΠΛΗ30 ΤΕΣΤ 21ΠΛΗ30 ΤΕΣΤ 21
ΠΛΗ30 ΤΕΣΤ 21
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7 ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
 
ΠΛΗ10 ΜΑΘΗΜΑ 1.2
ΠΛΗ10 ΜΑΘΗΜΑ 1.2ΠΛΗ10 ΜΑΘΗΜΑ 1.2
ΠΛΗ10 ΜΑΘΗΜΑ 1.2
 
ΠΛΗ31 ΜΑΘΗΜΑ 1.1
ΠΛΗ31 ΜΑΘΗΜΑ 1.1ΠΛΗ31 ΜΑΘΗΜΑ 1.1
ΠΛΗ31 ΜΑΘΗΜΑ 1.1
 
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 8
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 8ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 8
ΠΛΗ30 ΔΙΑΓΩΝΙΣΜΑ 8
 
Epanalipsi g gymnasiou
Epanalipsi g gymnasiouEpanalipsi g gymnasiou
Epanalipsi g gymnasiou
 
ΠΛΗ30 ΤΕΣΤ 9
ΠΛΗ30 ΤΕΣΤ 9ΠΛΗ30 ΤΕΣΤ 9
ΠΛΗ30 ΤΕΣΤ 9
 

More from Dimitris Psounis

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Dimitris Psounis
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
Dimitris Psounis
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Dimitris Psounis
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
Dimitris Psounis
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
Dimitris Psounis
 

More from Dimitris Psounis (20)

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
 

ΠΛΗ30 ΜΑΘΗΜΑ 2.2

  • 1. ΠΛΗ30 ΕΝΟΤΗΤΑ 2: ΣΧΕ∆ΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός∆υναµικός Προγραµµατισµός ∆ηµήτρης Ψούνης
  • 2. ΠΕΡΙΕΧΟΜΕΝΑ Α. Σκοπός του Μαθήµατος 1. ∆υναµικός Προγραµµατισµός 1. Η ακολουθία Fibonacci 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων 3. Μέγιστη Κοινή Υπακολουθία Β.Ασκήσεις 2∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Β.Ασκήσεις 1. Εφαρµογές
  • 3. Α. Σκοπός του Μαθήµατος Οι στόχοι του µαθήµατος είναι: Επίπεδο Α (-) Επίπεδο Β Η τεχνική σχεδίασης αλγόριθµων ∆υναµικός Προγραµµατισµός 3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Η τεχνική σχεδίασης αλγόριθµων ∆υναµικός Προγραµµατισµός Ο αλγόριθµος ∆.Π. για την ακολουθία Fibonacci Επίπεδο Γ Ο αλγόριθµος ∆.Π. για τον αλυσιδωτό πολλαπλασιασµό πινάκων Ο αλγόριθµος ∆.Π. για την εύρεση της Μέγιστης Κοινής Υπακολουθίας
  • 4. B. Θεωρία Τεχνικές Σχεδίασης Αλγορίθµων 4∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Στην 2η ενότητα του µαθήµατος ασχολούµαστε µε τεχνικές που έχουν αναπτυχθεί, ως γενικές µεθοδολογίες για την κατασκευή ενός αλγορίθµου: Η τεχνική ∆ιαίρει και Βασίλευε (Μάθηµα 2.1) Η τεχνική του ∆υναµικού Προγραµµατισµού (Μάθηµα 2.2) Η κατασκευή των Άπληστων Αλγόριθµων (Μάθηµα 2.3) Υπάρχουν ακόµη δεκάδες τεχνικές κατασκευής αλγορίθµων που είναι εκτός ύλης.
  • 5. B. Θεωρία 1. ∆υναµικός Προγραµµατισµός 5∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Όταν έχουµε ένα πρόβληµα που έχει τις εξής ιδιότητες: Ιδιότητα των Βέλτιστων Επιµέρους ∆οµών: Οτί για να λύσουµε το πρόβληµα αρκεί να υπολογίσουµε την βέλτιστη λύση σε κάποια υποπροβλήµατα, συνήθως µε αναδροµή. Μικρός Αριθµός Υποπροβληµάτων: Το πλήθος των υποπροβληµάτων πουΜικρός Αριθµός Υποπροβληµάτων: Το πλήθος των υποπροβληµάτων που πρέπει να λύσουµε είναι µικρό (δηλαδή πολυωνυµικό ως προς το µέγεθος του προβλήµατος) Επικαλυπτόµενα Επιµέρους Προβλήµατα: Ότι λύνουµε πολλές φορές τα ίδια υποπροβλήµατα µε αποτέλεσµα να χάνουµε χρόνο Ο ∆υναµικός προγραµµατισµός είναι η λύση! Αντί να λύνουµε από το µεγαλύτερο όλο και µικρότερα προβλήµατα Ξεκινάµε από το µικρότερο και υπολογίζουµε όλο και µεγαλύτερα προβλήµατα!! Αποθηκεύοντας τις ενδιάµεσες λύσεις για να τις αξιοποιήσουµε αργότερα!
  • 6. B. Θεωρία 1. ∆υναµικός Προγραµµατισµός 6∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Για να κατασκευάσουµε έναν αλγόριθµο ∆υναµικού Προγραµµατισµού κάνουµε τα εξής βήµατα: 1. Περιγράφουµε έναν αναδροµικό αλγόριθµο που λύνει το πρόβληµα 2. ∆ίνουµε την αναδροµική σχέση που υπολογίζει την βέλτιστη λύση (επίλυση από πάνω προς τα κάτω)πάνω προς τα κάτω) 3. ∆ιαπιστώνουµε ότι ισχύουν οι τρεις συνθήκες για την κατασκευή του αλγορίθµου δυναµικού προγραµµατισµού. 4. Με βάση την αναδροµική σχέση, κατασκευάζουµε την διαδικασία επίλυσης από τα µικρά προβλήµατα σε όλο και µεγαλύτερα (επίλυση από κάτω προς τα πάνω) 5. ∆ίνουµε τον επαναληπτικό αλγόριθµο που κάνει την επίλυσή του προβλήµατος 6. Υπολογίζουµε την πολυπλοκότητα του επαναληπτικού αλγορίθµου
  • 7. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 1. Η ακολουθία Fibonacci 7∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός ΠΡΟΒΛΗΜΑ: ∆ίνεται ένας φυσικός αριθµός n. Να υπολογιστεί ο n-ός αριθµός Fibonacci. Οι πρώτοι 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 Και τυπικά η ακολουθία ορίζεται µέσω της αναδροµικής σχέσης: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610    >+ == = −− 2, 21,1 21 nff nήn f nn n
  • 8. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 1. Η ακολουθία Fibonacci (1.∆ιατύπωση Αναδροµικού Αλγορίθµου) 8∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Ένας αναδροµικός αλγόριθµος που υλοποιεί την παραπάνω διαδικασία είναι ο εξής: procedure FibRec(n) if n=1 or n=2 then return 1 else O αλγόριθµος έχει πολυπλοκότητα που περιγράφεται από την αναδροµική σχέση: 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 Θ = = = − + − +Θ >
  • 9. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 1. Η ακολουθία Fibonacci (1.∆ιατύπωση Αναδροµικού Αλγορίθµου) 9∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Η αναδροµική σχέση T’(n)=T’(n-1)+T’(n-2)+1 µπορεί να προσεγγιστεί µέσω φραγµάτων ΥΠΟΛΟΓΙΣΜΟΣ ΑΝΩ ΦΡΑΓΜΑΤΟΣ Ισχύει '( ) '( 1) '( 2) 1 '( 1) '( 1) 1T n T n T n T n T n= − + − + ≤ − + − + 1)1(2)( +−= nAnAΣυνεπώς λύνουµε την αναδροµή άρα 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 n n n nn kk A knA nA nA nAnA Θ= − − +Θ= =+++++= == =+++++−= == =+++−= =++−= =+−= +− − − )2()( n nT Ο=
  • 10. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 1. Η ακολουθία Fibonacci (1.∆ιατύπωση Αναδροµικού Αλγορίθµου) 10∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Η αναδροµική σχέση T’(n)=T’(n-1)+T’(n-2)+1 µπορεί να προσεγγιστεί µέσω φραγµάτων ΥΠΟΛΟΓΙΣΜΟΣ ΚΑΤΩ ΦΡΑΓΜΑΤΟΣ Ισχύει '( ) '( 1) '( 2) 1 '( 2) '( 2) 1T n T n T n T n T n= − + − + ≥ − + − + 1)2(2)( +−= nKnKΣυνεπώς λύνουµε την αναδροµή άρα 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 n n n nn kk K knK nK nK nKnK Θ= − − +Θ= =+++++= == =+++++−= == =+++−= =++−= =+−= +− − − )2()( 2/n nT Ω=
  • 11. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 1. Η ακολουθία Fibonacci (1.∆ιατύπωση Αναδροµικού Αλγορίθµου) 11∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Η πολυπλοκότητα του αλγορίθµου είναι και Είναι πολύ αργός αλγόριθµος!! Λόγω του τρόπου εκτέλεσης της αναδροµικής διαδικασίας. Π.χ. για n=5: )2()( 2/n nT Ω= )2()( n OnT = )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
  • 12. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 1. Η ακολουθία Fibonacci (3.Συνθήκες του ∆.Π.) 12∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Επαληθεύουµε ότι ισχύουν οι συνθήκες για την κατασκευή ενός αλγόριθµου ∆υναµικού Προγραµµατισµού: ΕΠΑΛΗΘΕΥΣΗ ΤΩΝ Ι∆ΙΟΤΗΤΩΝ ΤΟΥ ∆.Π. για την ακολουθία Fibonacci: Ιδιότητα των Βέλτιστων Επιµέρους ∆οµών: Πράγµατι για να υπολογίσουµε τη λύση, υπολογίζουµε την λύση στα δύο αµέσως προηγούµενα υποπροβλήµα- τα.τα. Μικρός Αριθµός Υποπροβληµάτων: Το πλήθος των υποπροβληµάτων πρέπει να λύσουµε είναι µικρό (συγκεκριµένα πρέπει να λύσουµε n υποπροβλήµατα) Επικαλυπτόµενα Επιµέρους Προβλήµατα: Πράγµατι αναγκαζόµαστε να λύσουµε πολλές φορές τα ίδια υποπροβλήµατα, λόγω του τρόπου εκτέλεσης της αναδροµικής διαδικασίας.
  • 13. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 1. Η ακολουθία Fibonacci (4. ∆ιαδικασία Επίλυσης) 13∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Ο δυναµικός προγραµµατισµός προτείνει: Να λύσουµε το πρόβληµα «από κάτω προς τα πάνω», δηλαδή να λύσουµε διαδοχικά τα υποπροβλήµατα: Fib(1) Fib(2)Fib(2) … Fib(n) 1 2 3 4 5 6 … n 1 1 … fib(n)
  • 14. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 1. Η ακολουθία Fibonacci (5.Επαναληπτικος Αλγόριθµος και 6.Πολυπλοκότητα) 14∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Ένας αλγόριθµος δυναµικού προγραµµατισµού που υλοποιεί την παραπάνω διαδικασία είναι ο εξής: 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
  • 15. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων 15∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.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 Αλγόριθµοι: Προφανής αλγόριθµος: Κάνε τις πράξεις από αριστερά προς τα δεξιά: Πρώτα A1 x A2 = C1 έπειτα C1 x A3 κ.ο.κ. Οι πράξεις που γίνονται είναι: d0d1d2 + d0d2d3 + …+ d0dn-1dn Αλγόριθµος ∆υναµικού Προγραµµατισµού: Επέλεξε την σειρά µε την οποία θα γίνουν οι πολλαπλασιασµοί των πινάκων. Επιτυγχάνεται σηµατική βελτίωση στην πολυπλοκότητα.
  • 16. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων 16∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Ας δούµε γιατί έχει αξία ένας αλγόριθµος καθορισµού της σειράς των πολλαπλασιασµών. Παράδειγµα: A1 x A2 x A3 όπου Α1: 5x8, A2: 8x4, A3: 4x2 οι πράξεις µπορούν να γίνουν: (A1 x A2) x A3 Για τον υπολογισµό του A1 x A2: 5x8x4=160 πράξεις και προκύπτειΓια τον υπολογισµό του A1 x A2: 5x8x4=160 πράξεις και προκύπτει πίνακας 5x4, έστω C Για τον υπολογισµό του C x A3: 5x4x2=40 πράξεις και προκύπτει ο πίνακας-γινόµενο 5 x 2 Σύνολο 200 πράξεις A1 x (A2 x A3) Για τον υπολογισµό του A2 x A3: 8x4x2=64 πράξεις και προκύπτει πίνακας 8x2, έστω C Για τον υπολογισµό του Α1 x C: 5x8x2=80 πράξεις και προκύπτει ο πίνακας-γινόµενο 5 x 2 Σύνολο 144 πράξεις Άρα µε άλλη σειρά γινοµένου, γλιτώνουµε πολλές πράξεις!
  • 17. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων 17∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Για περισσότερους πίνακες υπάρχουν περισσότεροι τρόποι να κάνουµε τον πολλαπλασιασµό, άρα και µεγαλύτερο όφελος στις πράξεις: A1 x A2 x A3 x A4 µπορεί να παρενθετοποιηθεί ως εξής: ((A1 A2) A3) A4) ((A1A2)(A3A4))((A1A2)(A3A4)) (A1(A2A3))A4 A1((A2A3)A4) A1(A2(A3A4)) Πως θα επιλέξουµε την καλύτερη παρενθετοποίηση χωρίς να χρειαστεί να τις µελετήσουµε την κάθε µία ξεχωριστα;
  • 18. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (1. Επίλυση µε αναδροµή) 18∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Για την επίλυση µε αναδροµή του προβλήµατος σκεφτόµαστε ως εξής: Θεωρούµε ότι έχουµε µια διαδικασία Τ(i,j) που έχει ήδη οριστεί και δουλεύει ορθά που όταν παίρνει ως όρισµα µια ακολουθία Ai…Aj παράγει την βέλτιστη παρενθετοποίηση. Έστω τώρα το γενικό στιγµιότυπο: A1A2…An-1An. Θα επιλέξουµε το καλύτερο από τα γινόµενα: 1 2 n-1 n από τα γινόµενα: A1(A2…An) (A1A2)(A3…An) … (A1…An-2)(An-1An) (A1…An-1)An Ο υπολογισµός της βέλτιστης παρενθετοποίησης για κάθε υποπρόβληµα γίνεται µε κλήση της διαδικασίας T(i,j) Οριακή Συνθήκη θα έχουµε όταν έχουµε µόνο έναν πίνακα (0 πράξεις)
  • 19. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (2. Αναδροµική Σχέση) 19∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Ο αλγόριθµος που υλοποιεί την παραπάνω διαδικασία µε αναδροµή είναι ο ακόλουθος: procedure MatMult(Ai,Ai+1,…,Aj) if i=j then return 0 else Με βάση τα παραπάνω το βέλτιστο πλήθος των πολλαπλασιασµών της ακολουθίας πινάκων Ai,…,Aj δίδεται από την αναδροµική σχέση: for k=i to j-1 ck=MatMult(Ai,…,Ak)+MatMult(Ak+1,…,Aj)+di-1dkdj end for end if return το ελάχιστο από ck για k=i,…,j-1 end procedure { }    <+++ = = − <≤ jidddjkMkiM ji jiM jki jki ,],1[],[min ,0 ],[ 1
  • 20. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (3.Συνθήκες του ∆.Π.) 20∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Επαληθεύουµε ότι ισχύουν οι συνθήκες για την κατασκευή ενός αλγόριθµου ∆υναµικού Προγραµµατισµού: ΕΠΑΛΗΘΕΥΣΗ ΤΩΝ Ι∆ΙΟΤΗΤΩΝ ΤΟΥ ∆.Π. για τον Αλυσιδωτο Πολ/µό Πινάκων: Ιδιότητα των Βέλτιστων Επιµέρους ∆οµών: Πράγµατι για να υπολογίσουµε τη βελτιστη λύση, αρκεί να υπολογίσουµε την βέλτιστη λύση στα υποπροβλήµατα που προκύπτουν από την αναδροµική σχέση. Συνεπώς θα προσεγγίσουµε το πρόβληµα µε ∆υναµικό Προγραµµατισµό. Θα ξεκινήσουµε από µικρά υποπροβλήµατα και θα λύνουµε ολοένα και µεγαλύτερα µε σύνθεση των µικρότερων υποπροβληµάτων. υποπροβλήµατα που προκύπτουν από την αναδροµική σχέση. Μικρός Αριθµός Υποπροβληµάτων: Τα υποπροβλήµατα που καλούµαστε να λύσουµε είναι το πολύ n(n+1)/2 (όλες οι τιµές µε 1≤i<j ≤n) Επικαλυπτόµενα Επιµέρους Προβλήµατα: Πράγµατι αναγκαζόµαστε να υπολογίσουµε πολλές φορές για παράδειγµα τα γινόµενα ΑiAi+1
  • 21. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (4.Σειρά Επίλυσης Υποπροβ/των) 21∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Για να αποφασίσουµε µε ποια σειρά πρέπει να κάνουµε τις πράξεις παρατηρούµε από ποια υποπροβλήµατα εξαρτάται η επίλυση κάθε υποπροβλήµατος. Π.χ. αν θεωρήσουµε ότι πολλπλασιάζουµε 5 πίνακες, τότε οι πράξεις πρέπι να γίνουν µε την εξής σειρά: 1 2 3 4 5 γίνουν µε την εξής σειρά: Πρέπει πρώτα να υπολογίσουµε γινόµενα 1 πίνακα, µετά 2 πινάκων, µετά 3 πινάκων κ.ο.κ. Το κελί (i,j) θα αποθηκεύει το βέλτιστο πλήθος πράξεων που απαιτούνται στο για τον πολ/σµό της ακολουθίας πινάκων Ai,Ai+1,…Aj 1 2 3 4 5 1 2 3 4 5
  • 22. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (4.Σειρά Επίλυσης Υποπροβ/των) 22∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Παράδειγµα Εκτέλεσης για τον πολλαπλασιασµό πινάκων Α1Α2Α3Α4, όταν Α1: 5x3, A2: 3x4, A3: 4x8, A4:8x2, A5: 2x3 1 2 3 4 5 4 A44 A4 0 3 A3 0 A3A4 4x8x2=64 2 A2 0 A2A3 3x4x8=96 A2A3A4 (A2A3)A4=96+3x8x2=96+48=144 A2(A3A4)=64+3x4x2=64+24=88 88 1 A1 0 A1A2 5x3x4=60 A1A2A3 (A1A2)A3=60+5x4x8=220 A1(A2A3)=96+5x3x8=216 216 A1A2A3A4 A1(A2A3A4):88+5x3x2=88+30=118 (A1A2)(A3A4):60+64+5x4x2=164 (A1A2A3)A4:216+5x8x2=296 118
  • 23. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (5. Επαναληπτικός Αλγόριθµος) 23∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Ο αλγόριθµος που υλοποιεί την παραπάνω διαδικασία σειράς πράξεων είναι ο ακόλουθος: 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
  • 24. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (6. Ανάλυση Πολυπλοκότητας) 24∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Ακολουθεί ανάλυση πολυπλοκότητας: • Το πρώτο for έχει πολυπλοκότητα Θ(n) • Τα δύο επόµενα for υλοποιούν την διαδικασία υπολογισµού των κελιών κατά διαγώνιους όπως είδαµε στην διαδικασία επίλυσης. Τα κελιά αυτά είναι n2/2, άρα οι πράξεις αυτών των for, θα εκτελεστούν Θ(n2) φορές. • Οι πράξεις που γίνονται σε κάθε επανάληψη είναι Ο(n) • Συνεπώς η τελική πολυπλοκότητα είναι O(n3)
  • 25. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (Αποµνηµόνευση Λύσης) 25∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Ο αλγόριθµος που έχουµε κατασκευάσει: Υπολογίζει την βέλτιστη λύση, αποθηκεύοντας την τιµή για την βέλτιστη παρενθετοποιήση κάθε ακολουθίας πινάκων που αντιστοιχεί σε ένα ορισµένο κελί του πίνακα. ∆ΕΝ επιστρέφει την βέλτιστη λύση, ούτε καταγράφει πως γίνεται η βέλτιστη παρενθετοποιήση Για το λόγο αυτό τροποποιούµε ελαφρά τον κώδικά µας, ώστε να κάνει και αποµνηµόνευση της βέλτιστης λύσης κάθε κελιού.
  • 26. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (Αποµνηµόνευση Λύσης) 26∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Τροποποιούµε τον αλγόριθµο ως εξής: 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 εντολή που προστέθηκε συµβολίζει ότι το σηµείο του διαχωρισµού του πολλαπλασιασµού πινάκων AiAi+1…Aj γίνεται στο σηµείο s[i,j]=k, δηλαδή ότι η βέλτιστη παρνεθετοποίηση είναι η (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
  • 27. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 2. Αλυσιδωτός Πολλαπλασιασµός Πινάκων (Αποµνηµόνευση Λύσης) 27∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός ∆εδοµένου αυτού του πίνακα, µπορούµε να παράγουµε την κατασκευή της βέλτιστης λύσης µε την βέλτιστη παρενθετοποίηση, ως εξής: procedure MatrixChainProduct(Ai,A2,…,Aj,s[1…n]) if i<j X=MatrixChainProduct(Ai,…As[i,j],s) Y=MatrixChainProduct(A ,…A ,s) Όπου MatMult(X,Y) είναι ο γνωστός αλγόριθµος πολλαπλασιασµού πινάκων που µελετήσαµε στο Μάθηµα 2.1 Y=MatrixChainProduct(As[i,j+1],…Aj,s) C=MatMult(X,Y) return C else return Ai end if end procedure
  • 28. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 3. Μέγιστη Κοινή Υπακολουθία 28∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός ΠΡΟΒΛΗΜΑ: ∆ίδονται ακολουθίες χαρακτήρων X=x1x2x3…xn και Y=y1y2…ym. Να βρεθεί η µέγιστη κοινή υπακολουθία τους. Ορισµός: ∆εδοµένης µιας ακολουθίας X=x1x2…xn, υπακολουθία της X ονοµάζεται οποιαδήποτε ακολουθία µπορεί να παραχθεί µε διαγραφή κάποιων στοιχείων της. Στιγµιοτύπα:Στιγµιοτύπα: X=abcdf Y=dbdaf, τότε Z=bdf X=aabaabb Y=abacba τότε Z=abab Αλγόριθµοι: Προφανής αλγόριθµος: Υπολογίζουµε όλες τις υπακολουθίες των δύο και τις συγκρίνουµε ανά δύο. Πολυπλοκότητα O(2m2n(m+n)) Αλγόριθµος ∆υναµικού Προγραµµατισµού: Επιτυγχάνεται πολυπλοκότητα Θ(mn).
  • 29. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 3. Μέγιστη Κοινή Υπακολουθία (1. Επίλυση µε αναδροµή) 29∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Για την επίλυση µε αναδροµή του προβλήµατος σκεφτόµαστε ως εξής: Θεωρούµε ότι έχουµε µια διαδικασία Τ(x1x2…xi, y1y2…yj) που έχει ήδη οριστεί και δουλεύει ορθά που όταν παίρνει ως όρισµα δύο ακολουθίες Χ,Υ παράγει την µεγαλύτερη υπακολουθία τους Ζ Παίρνουµε τώρα το γενικό στιγµιότυπο: Χ=x1x2…xn-1xn και Υ=y1y2…yn-1ym Θα επιλέξουµε το καλύτερο από τα ακόλουθα: Αν ισχύει 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. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 3. Μέγιστη Κοινή Υπακολουθία (2. Αναδροµική Σχέση) 30∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Η αναδροµική σχέση που υπολογίζει την βέλτιστη λύση είναι:      ≠>−− =>+−− == = ji jin yxjijicjic yxjijic jήi f και και 0,},],1[],1,[max{ 0,,1]1,1[ 00,0  ji
  • 31. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 3. Μέγιστη Κοινή Υπακολουθία (3.Συνθήκες του ∆.Π.) 31∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Επαληθεύουµε ότι ισχύουν οι συνθήκες για την κατασκευή ενός αλγόριθµου ∆υναµικού Προγραµµατισµού: ΕΠΑΛΗΘΕΥΣΗ ΤΩΝ Ι∆ΙΟΤΗΤΩΝ ΤΟΥ ∆.Π. για την Μεγιστη Κοινή Υπακολουθία: Ιδιότητα των Βέλτιστων Επιµέρους ∆οµών: Πράγµατι για να υπολογίσουµε τη βελτιστη λύση, αρκεί να υπολογίσουµε την βέλτιστη λύση στα υποπροβλήµατα που προκύπτουν από την αναδροµική σχέση. Συνεπώς θα προσεγγίσουµε το πρόβληµα µε ∆υναµικό Προγραµµατισµό. Θα ξεκινήσουµε από µικρά υποπροβλήµατα και θα λύνουµε ολοένα και µεγαλύτερα µε σύνθεση των µικρότερων υποπροβληµάτων. υποπροβλήµατα που προκύπτουν από την αναδροµική σχέση. Μικρός Αριθµός Υποπροβληµάτων: Τα υποπροβλήµατα που καλούµαστε να λύσουµε είναι το πολύ nm (όλες οι τιµές µε 1≤i,j ≤n) Επικαλυπτόµενα Επιµέρους Προβλήµατα: Λόγω της λειτουργίας της αναδροµής, υπολογίζονται πολλές φορές οι ίδιες υπακολουθίες.
  • 32. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 3. Μέγιστη Κοινή Υπακολουθία (4.Σειρά Επίλυσης Υποπροβ/των) 32∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Για να αποφασίσουµε µε ποια σειρά πρέπει να κάνουµε τις πράξεις παρατηρούµε από ποια υποπροβλήµατα εξαρτάται η επίλυση κάθε υποπροβλήµατος. Π.χ. αν θεωρήσουµε ότι έχουµε 2 ακολουθίες µε µήκος 6 και 5. Το στοιχείο Μ[i,j] συµβολίζει ότι συγκρίνω τις ακολουθίες x x ….x και y y …yΜ[i,j] συµβολίζει ότι συγκρίνω τις ακολουθίες x1x2….xi και y1y2…yj 1 2 3 4 5 6 5 4 3 2 1
  • 33. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 3. Μέγιστη Κοινή Υπακολουθία (4.Σειρά Επίλυσης Υποπροβ/των) 33∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Παράδειγµα εκτέλεσης για X=abcdf Y=dbdaf 1 2 3 4 5 5 X=abcdf Y=d c=1 X=abcdf Y=db c=1 X=abcdf Y=dbd c=2 X=abcdf Y=dbda c=2 X=abcdf Y=dbdaf c=3c=1 c=1 c=2 c=2 c=3 4 X=abcd Y=d c=1 X=abcd Y=db c=1 X=abcd Y=dbd c=2 X=abcd Y=dbda c=2 X=abcd Y=dbdaf c=2 3 X=abc Y=d c=0 X=abc Y=db c=1 X=abc Y=dbd c=1 X=abc Y=dbda c=1 X=abc Y=dbdaf c=1 2 X=ab Y=d c=0 X=ab Y=db c=1 X=ab Y=dbd c=1 X=ab Y=dbda c=1 X=ab Y=dbdaf c=1 1 X=a Y=d c=0 X=a Y=db c=0 X=a Y=dbd c=0 X=a Y=dbda c=1 X=a Y=dbdaf c=1
  • 34. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 3. Μέγιστη Κοινή Υπακολουθία (5. Επαναληπτικός Αλγόριθµος) 34∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Ο αλγόριθµος που υλοποιεί την παραπάνω διαδικασία σειράς πράξεων είναι ο ακόλουθος: 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
  • 35. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 3. Μέγιστη Κοινή Υπακολουθία (Κατασκευή Βέλτιστης Λύσης) ∆εδοµένου πίνακα C[M,N] που κατασκευάσαµε µπορούµε να εξάγουµε την βέλτιστη λύση σε χρόνο Θ(m+n) µε την ακόλουθη αναδροµική ρουτίνα: 35∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός 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
  • 36. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 3. Μέγιστη Κοινή Υπακολουθία (Εκτέλεση του αλγόριθµου κατασκευής Β.Λ.) Βλέπουµε πως θα τρέξει ο αναδροµικός αλγόριθµος για την κατασκευή της βέλτιστης λύσης: 36∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός 1 2 3 4 5 5 X=abcdf Y=d c=1 X=abcdf Y=db c=1 X=abcdf Y=dbd c=2 X=abcdf Y=dbda c=2 X=abcdf Y=dbdaf c=3c=1 c=1 c=2 c=2 c=3 4 X=abcd Y=d c=1 X=abcd Y=db c=1 X=abcd Y=dbd c=2 X=abcd Y=dbda c=2 X=abcd Y=dbdaf c=2 3 X=abc Y=d c=0 X=abc Y=db c=1 X=abc Y=dbd c=1 X=abc Y=dbda c=1 X=abc Y=dbdaf c=1 2 X=ab Y=d c=0 X=ab Y=db c=1 X=ab Y=dbd c=1 X=ab Y=dbda c=1 X=ab Y=dbdaf c=1 1 X=a Y=d c=0 X=a Y=db c=0 X=a Y=dbd c=0 X=a Y=dbda c=1 X=a Y=dbdaf c=1
  • 37. Β. Θεωρία 1. ∆υναµικός Προγραµµατισµός 3. Μέγιστη Κοινή Υπακολουθία (6.Πολυπλοκότητα Αλγορίθµου∆Π) 37∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός Υπολογισµός Πολυπλοκότητας: Οι πρώτες 2 for έχουν πολυπλοκότητα Θ(n) Έπειτα για nm φορές γίνονται Θ(1) πράξεις. Συνεπώς η πολυπλοκότητα είναι Θ(nm). Συνεπώς η συνολική πολυπλοκότητα είναι Θ(n)+Θ(nm)=Θ(nm)
  • 38. Γ. Ασκήσεις Εφαρµογή 1 ∆ίδεται η ακολουθία ακεραίων αριθµών που δηµιουργείται από την X(n) = 4X(n-2) + 2 X(n-4), για n >3, και X(n) = 1, n=0,1,2,3 1. Σχεδιάστε έναν αναδροµικό αλγόριθµο που θα υπολογίζει τον n-οστό όρο 38∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός 1. Σχεδιάστε έναν αναδροµικό αλγόριθµο που θα υπολογίζει τον n-οστό όρο της ακολουθίας. Γράψτε την αναδροµική σχέση που δίνει τον χρόνο εκτέλεσης του αλγόριθµου. Βρείτε συµβατά άνω και κάτω όρια για τον χρόνο εκτέλεσης του αλγορίθµου (δηλαδή ακριβές όριο Θ). 2. Σχεδιάστε έναν αλγόριθµο δυναµικού προγραµµατισµού που λύνει το ίδιο πρόβληµα Ποιος είναι τώρα ο χρόνος εκτέλεσης?
  • 39. Γ. Ασκήσεις Εφαρµογή 2 Έστω ένας πίνακας ακεραίων αριθµών Α που αποτελείται από m γραµµές και n στήλες. Θεωρούµε ένα παιχνίδι όπου ξεκινώντας από οποιοδήποτε κελί της κάτω γραµµής του πίνακα, προσπαθούµε να φτάσουµε σε κάποιο κελί της πάνω γραµµής του πίνακα περνώντας από κελιά ελάχιστου συνολικού κόστους. Σαν κόστος Α(i,j) ενός κελιού (i,j) θεωρούµε τον αριθµό που αναγράφεται στο συγκεκριµένο κελί. Από ένα κελί του πίνακα µπορούµε να κινηθούµε είτε προς το κελί που βρίσκεται ακριβώς από πάνω του, είτε 39∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός µπορούµε να κινηθούµε είτε προς το κελί που βρίσκεται ακριβώς από πάνω του, είτε διαγώνια αριστερά, είτε διαγώνια δεξιά. Για παράδειγµα, στον πίνακα του πιο κάτω σχήµατος, από το κελί (2,2) µπορούµε να κινηθούµε προς κάποιο από τα κελιά (3,1), (3,2) ή (3,3). Σηµειώνουµε ότι σαν γραµµή µε αριθµό 1 θεωρείται η κάτω γραµµή του πίνακα. Τα κελιά µε έντονη γραφή δείχνουν τη βέλτιστη διαδροµή στον συγκεκριµένο πίνακα, συνολικού κόστους ίσου µε 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
  • 40. Γ. Ασκήσεις Εφαρµογή 2 α) Να περιγράψετε µία λύση του πιο πάνω προβλήµατος µε τη βοήθεια του ∆υναµικού Προγραµµατισµού. (β) Να δώσετε τον αντίστοιχο αλγόριθµο (ψευδοκώδικα) υπολογισµού του ελάχιστου κόστους µετάβασης από την πρώτη γραµµή του πίνακα προς την τελευταία. (γ) Ποια η πολυπλοκότητα χρόνου και χώρου του αλγόριθµου αυτού; Θα µπορούσε να εφαρµοστεί ισοδύναµος αλγόριθµος µε µικρότερη πολυπλοκότητα χώρου; Για το 40∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός εφαρµοστεί ισοδύναµος αλγόριθµος µε µικρότερη πολυπλοκότητα χώρου; Για το τελευταίο ερώτηµα αρκεί να περιγράψετε τον τρόπο µείωσης της πολυπλοκότητας χώρου, χωρίς να δώσετε ακριβή περιγραφή του νέου αλγόριθµου. (δ) Να εφαρµόσετε τον αλγόριθµο που περιγράψατε στα προηγούµενα σκέλη στον πιο κάτω πίνακα: 4 3 4 2 3 4 4 1 3 4 4 3
  • 41. Γ. Ασκήσεις Εφαρµογή 3 Οι διοργανωτές ερασιτεχνικού ποδηλατικού αγώνα θέλουν να σχεδιάσουν, για ευνόητους λόγους µειωµένης φυσικής κατάστασης των συµµετεχόντων ερασιτεχνών ποδηλάτων, την οδική διαδροµή µικρότερης συνολικής ανωφέρειας (ανηφορικής κλίσεως). Ο χάρτης µε τη διαδροµή (άκυκλο κατευθυνόµενο γράφηµα) εµφανίζεται παρακάτω, όπου κάθε δρόµος αναγράφει την ανωφέρεια του. Η αφετηρία του αγώνα είναι η πόλη P0 και τέλος η πόλη P8. 41∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.2: ∆υναµικός Προγραµµατισµός είναι η πόλη P0 και τέλος η πόλη P8. (1) Σχεδιάστε αλγόριθµο δυναµικού προγραµµατισµού που υπολογίζει την συνολική ελάχιστη ανωφέρεια. (2) Τρέξτε τον αλγόριθµο στο παράδειγµα του χάρτη.