ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Σχετικά έγγραφα
ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Εισαγωγή στους Αλγορίθμους Ενότητα 11η

Ταξινόμηση με συγχώνευση Merge Sort

Outline. 6 Edit Distance

Εισαγωγή στους Αλγορίθμους Ενότητα 8η

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

Κεφάλαιο 4. Δυναµικός Προγραµµατισµός (Dynamic Programming) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Άπληστοι Αλγόριθμοι. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Άπληστοι Αλγόριθμοι. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

Αλγοριθμικές Τεχνικές

Κεφάλαιο 4. Άπληστοι Αλγόριθµοι (Greedy Algorithms) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 6

Άπληστοι Αλγόριθμοι. Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Μάθημα 20: Δυναμικός Προγραμματισμός (DP)

2η Σειρά Γραπτών Ασκήσεων

Δομές Δεδομένων & Αλγόριθμοι

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Άπληστοι Αλγόριθµοι. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Άπληστοι Αλγόριθµοι 1

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Εισαγωγή στους Αλγορίθμους Ενότητα 11η

Θέματα Εφαρμογών Βάσεων Δεδομένων: Ιδιωτικότητα Δεδομένων

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Εισαγωγή στους Αλγορίθμους Ενότητα 8η

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 10

Δυναμικός Προγραμματισμός

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11

Κεφάλαιο 1. Πέντε Αντιπροσωπευτικά Προβλήματα. Έκδοση 1.4, 30/10/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός

Συντομότερες Διαδρομές

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

Συντομότερες Διαδρομές

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Ταχεία Ταξινόμηση Quick-Sort

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Συντομότερες ιαδρομές

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

Αλγόριθµοι και Πολυπλοκότητα

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Αλγόριθµοι και Πολυπλοκότητα

υναμικός Προγραμματισμός

Συντομότερες ιαδρομές

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Δυναμικός Προγραμματισμός

Διωνυµικοί Συντελεστές. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Δυναµικός Προγραµµατισµός 1

Αλγόριθμοι και Πολυπλοκότητα

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων

Δυναμικός Προγραμματισμός

Εισαγωγή στους Αλγορίθμους

Αλγόριθμοι και Πολυπλοκότητα

Αναδρομικοί Αλγόριθμοι

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα

Σχεδίαση & Ανάλυση Αλγορίθμων

Αλγόριθµοι και Πολυπλοκότητα

Τεχνικές Σχεδιασμού Αλγορίθμων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

Scheduling on Unrelated Parallel Machines

Εισαγωγή στην Ανάλυση Αλγορίθμων

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Σχεδίαση και Ανάλυση Αλγορίθμων

υναμικός Προγραμματισμός

Fast Fourier Transform

Σχεδίαση και Ανάλυση Αλγορίθμων

Μια Επισκόπηση της Ύλης & Μερικές Οδηγίες

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Διδάσκων: Παναγιώτης Ανδρέου

Προσεγγιστικοί Αλγόριθμοι

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

Δυναμικός Προγραμματισμός

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1,

Αλγόριθµοι και Πολυπλοκότητα

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

1o Φροντιστήριο ΗΥ240

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II

Δομές Δεδομένων & Αλγόριθμοι

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

Συντομότερες ιαδρομές

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Αναζήτηση και ταξινόμηση

Δομές Δεδομένων & Αλγόριθμοι

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

Transcript:

ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 2016 - I. ΜΗΛΗΣ ΑΠΛΗΣΤΟΙ ΑΛΓΟΡΙΘΜΟΙ Greedy Algorithms 1

Greedy algorithms H βασική ιδέα: Άρχισε από ένα υπο-πρόβλημα μικρού μεγέθους Επαναληπτικά, μέχρι το μέγεθος του αρχικού προβλήματος: o Κάνε την επιλογή που φαίνεται η καλύτερη τώρα o Η επιλογή αυτή Εξαρτάται από τις προηγούμενες αλλά ΟΧΙ από τις επόμενες ΔΕΝ μπορεί να αλλάξει στο μέλλον Οδηγεί στη λύση ενός μεγαλύτερου μεγέθους υπο-προβλήματος (και τελικά στη λύση του αρχικού προβλήματος) ΠΟΛΥΠΛΟΚΟΤΗΤΑ o Απλοί επαναληπτικοί αλγόριθμοι (μέτρημα βημάτων) ΟΡΘΟΤΗΤΑ o Όχι προφανής όπως στους αλγόριθμους D&C o Απέδειξε ότι οι τοπικές επιλογές οδηγούν στη βέλτιστη λύση 2

Algorithm design methods DIVIDE AND CONQUER Ανεξάρτητα Υπο-προβλήματα Αναδρομικοί Αλγόριθμοι Ορθότητα= Ορθότητα CONQUER Πολυπλοκότητα: Αναδρομική σχέση GREEDY Υπο-προβλήματα αυξανόμενου μεγέθους Επαναληπτικοί Αλγόριθμοι Ορθότητα: ΑΠΟΔΕΙΞΗ Πολυπλοκότητα: Υλοποίηση + Μέτρημα 3

Coin Changing ΕΙΣΟΔΟΣ: Ποσό Ε και σύνολο n νομισμάτων με αξίες V={v n, v n-1,,v 2,v 1 } EΡΩΤΗΣΗ: Ο ελάχιστος αριθμός νομισμάτων με συνολική αξία E Example 1: E = 67, V= {100, 25, 10, 5, 1} E = 2x25 +10 +5+2x1, c=6 = OPT Example 2 : E = 13, V= {100, 25, 10, 5} ΑΔΥΝΑΤΟ ΜΕΛΕΤΑΜΕ εισόδους με μικρότερη αξία το 1: ΤΟΤΕ υπάρχει πάντα λύση στο πρόβλημα OPT = βέλτιστο Example 3: E =13, V= {10, 1} E = 10+ 3 1, c = 4 = OPT Αλγόριθμος? 4

Coin Changing - Greedy Greedy algorithm: Διάλεξε πάντα το μεγαλύτερο νόμισμα που μπορείς Change (E,V) Sort(V) // v n > v n-1 > >v 2 >v 1 c = 0 for i = n downto 1: c = c + (E div v i ) E = E mod v i return c Example 1: E = 40, V= {20, 10, 5, 2, 1}: E = 2 x20, c=2=opt Example 2 : E = 40, V= {25, 20, 10, 5, 2,1 }: E = 25 +10 +5, c=3 E = 2 20, OPT =2!!! O greedy ΔΕΝ ΔΙΝΕΙ ΠΑΝΤΑ ΤΗΝ ΒΕΛΤΙΣΤΗ ΛΥΣΗ! ΠΟΤΕ? Canonical values system, όχι εύκολη περιγραφή ΑΛΛΟΙΩΣ? ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 5

Coin Changing - Correctness ΟΡΘΟΤΗΤΑ για V= {100, 25, 10, 5, 1} x i = # νομισμάτων αξίας v i, i=1,2,,n 100 25 10 5 1 Για ΚΑΘΕ βέλτιστη λύση ισχύει ότι: (i) x 1 4: αντικατέστησε 5 λεπτά με ένα 5λεπτο (ii) x 2 1: αντικατέστησε 2 5λεπτα με ένα 10λεπτο (iii) x 2 + x 3 2 (ξέρουμε ότι x 2 1) : (iv) x 4 x 5 x 4 x 3 x 2 x 1 αντικατέστησε 3 10λεπτα με ένα 25λεπτο και ένα 5λεπτο αντικατέστησε 2 10λεπτα και ένα 5λεπτο με ένα 25λεπτο 3: αντικατέστησε 4 25λεπτα με ένα 100λεπτο 6

Coin Changing - Correctness ΟΡΘΟΤΗΤΑ για V= {100, 25, 10, 5, 1} x i = # νομισμάτων αξίας v i, i=1,2,,n 100 25 10 5 1 x 5 x 4 x 3 x 2 x 1 Μ=Μέγιστη αξία βέλτιστης λύσης ΜΟΝΟ με νομίσματα αξιών v 1, v 2,,v k k v k max x k x M 1 1 x 1 4 4 (4x1) 2 5 x 2 1 9 (5x1 +4) 3 10 x 2 + x 3 2 24 (2x10 +4) 4 25 x 4 3 99 (3x25 +24) 5 100 απεριόριστα απεριόριστα 7

Coin Changing - Correctness Ο greedy Change επιστρέφει την βέλτιστη λύση για V= {100, 25, 10, 5, 1} Απόδειξη (επαγωγή στο Ε) Έστω v k+1 > E v k ΚΑΘΕ βέλτιστη λύση έχει το νόμισμα αξίας v k Διαφορετικά θα πρέπει για την αξία Ε να έχει μόνο νομίσματα αξιών v 1, v 2,,v k-1 Δεν υπάρχει τέτοια βέλτιστη λύση για την αξία Ε (βλ. πίνακα) k v k max x k x M 1 1 x 1 4 4 (4x1) 2 5 x 2 1 9 (5x1 +4) 3 10 x 2 + x 3 2 24 (2x10 +4) 4 25 x 4 3 99 (3x25 +24) 5 100 απεριόριστα απεριόριστα Το πρόβλημα ανάγεται σε αξία Ε- v k το οποίο (επαγωγικά) λύνεται βέλτιστα από τον greedy αλγόριθμο 8

Activity Selection (Interval Scheduling) ΕΙΣΟΔΟΣ: Σύνολο n εργασιών κάθε μία με διάρκεια από τη χρονική στιγμή s i (χρόνος αρχής) μέχρι τη χρονική στιγμή f i (χρόνος τέλους). EΡΩΤΗΣΗ: Ο μέγιστος αριθμός εργασιών που μπορείτε να εκτελέσετε χωρίς να επικαλύπτονται (συμβατές compatible) Greedy αλγόριθμος? OPT = βέλτιστο =? 9

Activity Selection Επέλεξε την εργασία που αρχίζει πρώτη c=1, OPT=4! Επέλεξε τη συντομότερη εργασία c=1, OPT=2! Επέλεξε την εργασία με τις λιγότερες επικαλύψεις c=3, OPT=4! AΛΛΗ ΙΔΕΑ? 10

Activity Selection - Greedy Επέλεξε την εργασία που τελειώνει πρώτη f 1 f 2 f 3 f n Διέγραψε τις επικαλυπτόμενες και συνέχισε 11

Activity Selection - Greedy Επέλεξε την εργασία που τελειώνει πρώτη Greedy EFF (EarliestFinishingFirst); Sort intervals so that f 1 f 2 f n A = {} // set of jobs selected for j = 1 to n if (job j is compatible with A): A = A U {j} return A ΟΡΘΟΤΗΤΑ? ΠΟΛΥΠΛΟΚΟΤΗΤΑ? 12

Activity Selection Correctness Η επιλογή κάθε φορά της εργασίας που τελειώνει πρώτη οδηγεί στη βέλτιστη λύση Απόδειξη (επαγωγή σε άτοπο) Υπόθεση: ο EFF δεν είναι βέλτιστος Έστω i 1, i 2,, i k οι εργασίες που επιλέχθηκαν από τον EFF Έστω j 1, j 2,, j m οι εργασίες μιας βέλτιστης λύσης Έστω r o μικρότερος δείκτης τέτοιος ώστε i r+1 j r+1 H εργασία i r+1 υπάρχει και τελειώνει πριν την j r+1 Γιατί δεν ανταλλάσουμε την j r+1 με την i r+1? 13

Activity Selection Correctness Η επιλογή κάθε φορά της εργασίας που τελειώνει πρώτη οδηγεί στη βέλτιστη λύση Απόδειξη (επαγωγή σε άτοπο) Υπόθεση: ο EFF δεν είναι βέλτιστος Έστω i 1, i 2,, i k οι εργασίες που επιλέχθηκαν από τον EFF Έστω j 1, j 2,, j m οι εργασίες μιας βέλτιστης λύσης Έστω r o μικρότερος δείκτης τέτοιος ώστε i r+1 j r+1 H εργασία i r+1 υπάρχει και τελειώνει πριν την j r+1 Λύση επίσης βέλτιστη! 14

Activity Selection - Complexity Επέλεξε την εργασία που τελειώνει πρώτη Greedy EFF (EarliestFinishingFirst); Sort intervals so that f 1 f 2 f n A = {} // set of jobs selected for j = 1 to n if (job j is compatible with A): A = A U {j} return A ΠΟΛΥΠΛΟΚΟΤΗΤΑ: O(n log n) Έστω j* η εργασία που προστέθηκε τελευταία στο σύνολο Α Η εργασία j είναι συμβατή με το Α εάνν s j f j* Ταξινόμηση: O(n log n) 15

Interval Partitioning ΕΙΣΟΔΟΣ: Σύνολο n διαλέξεων κάθε μία με διάρκεια από τη χρονική στιγμή s i (χρόνος αρχής) μέχρι τη χρονική στιγμή f i (χρόνος τέλους). EΡΩΤΗΣΗ: Ο ελάχιστος αριθμός αιθουσών που χρειάζεται για να γίνουν ΟΛΕΣ οι διαλέξεις. Παράδειγμα: 10 διαλέξεις σε 4 αίθουσες 16

Interval Partitioning ΕΙΣΟΔΟΣ: Σύνολο n διαλέξεων κάθε μία με διάρκεια από τη χρονική στιγμή s i (χρόνος αρχής) μέχρι τη χρονική στιγμή f i (χρόνος τέλους). EΡΩΤΗΣΗ: Ο ελάχιστος αριθμός αιθουσών που χρειάζεται για να γίνουν ΟΛΕΣ οι διαλέξεις. Παράδειγμα: 10 διαλέξεις σε 3 αίθουσες Greedy αλγόριθμος? OPT = βέλτιστο =? 17

Interval Partitioning Εκτέλεσε την εργασία που τελειώνει πρώτη c=3! OPT=2 Εκτέλεσε τη συντομότερη εργασία c=3! Εκτέλεσε την εργασία με τις λιγότερες επικαλύψεις c=3! AΛΛΗ ΙΔΕΑ? 18

Interval Partitioning - Greedy Εκτέλεσε την εργασία που αρχίζει πρώτη Greedy ESF (EarliestSrartingFirst); Sort intervals so that s 1 s 2 s n d = 0 // # of classrooms for j = 1 to n if (lecture j is compatible with some classroom k): schedule lecture j in classroom k else: allocate a new classroom d + 1 schedule lecture j in classroom d + 1 d = d + 1 19

Interval Partitioning Correctness Εκτέλεσε την εργασία που αρχίζει πρώτη Greedy ESF (EarliestSrartingFirst); Sort intervals so that s 1 s 2 s n d = 0 // # of classrooms for j = 1 to n if (lecture j is compatible with some classroom k): schedule lecture j in classroom k else: allocate a new classroom d + 1 schedule lecture j in classroom d + 1 d = d + 1 ΠΑΡΑΤΗΡΗΣΗ 1: Ο αλγόριθμος δεν αναθέτει δύο επικαλυπτόμενες διαλέξεις στην ίδια αίθουσα 20

Interval Partitioning Correctness Oρισμός: Βάθος (depth) ενός συνόλου διαλέξεων (ανοικτών διαστημάτων) είναι ο μέγιστος αριθμός τους που περιέχει την ίδια χρονική στιγμή. ΠΑΡΑΤΗΡΗΣΗ 2: ελάχιστος # αιθουσών βάθος 21

Interval Partitioning Correctness ΠΑΡΑΤΗΡΗΣΗ 1: Ο αλγόριθμος δεν αναθέτει δύο επικαλυπτόμενες διαλέξεις στην ίδια αίθουσα ΠΑΡΑΤΗΡΗΣΗ 2: ελάχιστος # αιθουσών βάθος Η επιλογή κάθε φορά της εργασίας που τελειώνει πρώτη οδηγεί στη βέλτιστη λύση Απόδειξη O αλγόριθμος ESF επιστρέφει d αίθουσες Η αίθουσα d άνοιξε γιατί μία διάλεξη j ήταν ασύμβατη με ΟΛΕΣ τις d-1 άλλες αίθουσες (ήταν γεμάτες τη χρονική στιγμή s j +ε) Έχουμε άρα d διαλέξεις που επικαλύπτονται τη χρονική στιγμή s j +ε Άρα βάθος =d Αλλά, ελάχιστος # αιθουσών βάθος Άρα ο ESF είναι βέλτιστος 22

Interval Partitioning Complexity Greedy ESF (EarliestSrartingFirst); Sort intervals so that s 1 s 2 s n d = 0 for j = 1 to n if (lecture j is compatible with some classroom k): schedule lecture j in classroom k else: allocate a new classroom d + 1 schedule lecture j in classroom d + 1 d = d + 1 Για κάθε αίθουσα αποθηκεύουμε το χρόνο που τελειώνει η τελευταία εργασία που αποθηκεύτηκε σε αυτή την αίθουσα ΥΛΟΠΟΙΗΣΗ? Πίνακας: O(n 2 ) Ουρά Προτεραιότητας (Heap) (πράξεις σε χρόνο O(log n) ): O(n logn) 23