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

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

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

Ελάχιστο Γεννητικό Δένδρο. Παράδειγμα - Αλγόριθμος Prim. Γιατί δουλεύουν αυτοί οι αλγόριθμοι;

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

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

Διάλεξη 21: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους

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

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

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

Άσκηση 1. Ψευδοκώδικας Kruskal. Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα.

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

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

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

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

Ελαφρύτατες διαδρομές

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

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

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

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

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

Δρομολόγηση μιας οντότητας ανάμεσα σε δύο σημεία ενός δικτύου έτσι ώστε να ελαχιστοποιήσουμε ένα κόστος, μια διάρκεια, κτλ.

Περιεχόμενα. 1. Εισαγωγή: Κάποια αντιπροσωπευτικά προβλήματα Βασικά στοιχεία ανάλυσης αλγορίθμων Γραφήματα...

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Δρομολόγηση μιας οντότητας ανάμεσα σε δύο σημεία ενός δικτύου έτσι ώστε να ελαχιστοποιήσουμε ένα κόστος, μια διάρκεια, κτλ.

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

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

Κατανεμημένα Συστήματα Ι

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

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

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

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

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

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

Αλγόριθμοι Γραφημάτων

Outline 1 Άσκηση 1 2 Άσκηση 2 3 Άσκηση 3 4 Άσκηση 4 5 Άσκηση 5 6 Προγραμματιστική Άσκηση 1 7 Προγραμματιστική Άσκηση 2 (CoReLab - NTUA) Αλγόριθμοι - 3

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

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

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

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

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k

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

Θεωρία Γραφημάτων 5η Διάλεξη

Μη γράφετε στο πίσω μέρος της σελίδας

Γράφοι: κατευθυνόμενοι και μη

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 2: Μαθηματικό Υπόβαθρο

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

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

q(g \ S ) = q(g \ S) S + d = S.

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

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

u v 4 w G 2 G 1 u v w x y z 4

Φροντιστήριο 11 Λύσεις

Maximal Independent Set

Κατανεμημένα Συστήματα Ι

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

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

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

Αλγόριθμοι Γραφημάτων

Αριθμητική Ανάλυση και Εφαρμογές

Θεωρία Γραφημάτων 6η Διάλεξη

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Προηγμένα Συστήματα Πληροφορικής»

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

Θεωρία Γραφημάτων 5η Διάλεξη

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

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

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

Κατανεμημένα Συστήματα Ι

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Φεβρουάριος 2005 Σύνολο μονάδων: 91

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 7 Φεβρουαρίου / 38

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

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

4.3 Ορθότητα και Πληρότητα

Σημειωματάριο Δευτέρας 4 Δεκ. 2017

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

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Σειρά Προβλημάτων 1 Λύσεις

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

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

Γράφοι (συνέχεια) Ο αλγόριθµος Dijkstra για εύρεση βραχυτέρων µονοπατιών Ta µονοπάτια Euler

ΣΥΝΕΚΤΙΚΟΤΗΤΑ ΓΡΑΦΗΜΑΤΩΝ

Κατανεμημένα Συστήματα Ι

ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΩΝ ΜΟΝΟΠΑΤΙΩΝ & ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

Ενότητα 5: Αλγόριθμοι γράφων και δικτύων

Αλγόριθμοι για αυτόματα

d(v) = 3 S. q(g \ S) S

Στοιχεία Θεωρίας Γράφων (Graph Theory)

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

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

Κατευθυνόμενα γραφήματα. Μαθηματικά Πληροφορικής 6ο Μάθημα. Βρόχοι. Μη κατευθυνόμενα γραφήματα. Ορισμός

Θεωρία Υπολογισμού και Πολυπλοκότητα Μαθηματικό Υπόβαθρο

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

Εισαγωγή Στις Αρχές Της Επιστήμης Των Η/Υ. Η έννοια του Προβλήματος - ΚΕΦΑΛΑΙΟ 2

Transcript:

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα.0 Αλγοριθμική Τεχνική Απληστίας Ελάχιστες Διαδρομές Dijkstra, Bllman-Ford Ελάχιστα Συνδετικά Δένδρα Kruskal, Prim Σταύρος Δ. Νικολόπουλος 0- Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Wbag: www.cs.uoi.gr/~stavros

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Στην εμβληματική ταινία Wall Strt του 0, ο Michal Douglas σηκώνεται μπροστά σε ένα πλήθος μετόχων και διακηρύσσει... Η απληστία είναι καλή! Η απληστία είναι σωστή!! Η απληστία αποδίδει!!!

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Στη εμβληματική σχεδίαση αλγορίθμων ταινία Wall Strt του 0, ο Michal Douglas σηκώνεται μπροστά σε ένα πλήθος μετόχων και διακηρύσσει... Η απληστία είναι καλή? Η απληστία είναι σωστή?? Η απληστία αποδίδει???

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Δεν είναι εύκολο να ορίσουμε με ακρίβεια τι εννοούμε με τον όρο άπληστος αλγόριθμος (grdy algorithm). Ένας αλγόριθμος είναι άπληστος όταν δομεί μια λύση με μικρά βήματα, παίρνοντας «μυωπικές αποφάσεις» σε κάθε βήμα, με στόχο τη βελτιστοποίηση κάποιου κριτηρίου.

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Ένας άπληστος αλγόριθμος ακολουθεί την ευρετική (huristic) επίλυση προβλημάτων κάνοντας σε κάθε βήμα μια τοπική βέλτιστη επιλογή, με την «ελπίδα» τελικά να βρει μια ολική βέλτιστη λύση του προβλήματος!!! Θεμελιώδες χαρακτηριστικό : Σε κάθε βήμα ένας άπληστος αλγόριθμος κάνει μια τοπικά βέλτιστη επιλογή και δεν «ξανασκέφτεται» αυτή την επιλογή του!!!

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Εύλογο Ερώτημα!!!????? Κάνοντας μια τοπική βέλτιστη επιλογή σε κάθε βήμα, μπορούμε να επιτύχουμε ένα ολικό βέλτιστο? δηλ. μια βέλτιστη λύση του προβλήματός μας? δεδομένου ότι η άπληστη τεχνική δεν επιτρέπει να αναθεωρήσουμε επιλογές που έχουμε ήδη κάνει!!!

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Σε πολλά προβλήματα, η άπληστη στρατηγική αποτυγχάνει να δώσει βέλτιστη λύση!!! Μ Για παράδειγμα, στην κατάκτηση του υψηλότερου σημείου μιας οροσειράς! Τοπική βέλτιστη επιλογή : m «σε κάθε επανάληψη επίλεξε να μεταβαίνεις σε υψηλότερη θέση, ξεκινώντας από το σημείο Α»!!! Απληστία : σημείο οροσειράς m Βέλτιστο: σημείο οροσειράς Μ A

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Σε πολλά προβλήματα, η άπληστη στρατηγική αποτυγχάνει να δώσει βέλτιστη λύση!!! Για παράδειγμα, στην εύρεση μιας max διαδρομής σε ένα δένδρο! Τοπική βέλτιστη επιλογή : «σε κάθε επανάληψη επίλεξε τον κόμβο με το μεγαλύτερο κόστος και πρόσθεσέ τον στην διαδρομή»!!! Απληστία : κόστος διαδρομής Βέλτιστο: κόστος διαδρομής 0

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Σε πολλά προβλήματα, η άπληστη στρατηγική αποτυγχάνει να δώσει βέλτιστη λύση!!! Για παράδειγμα, στην εύρεση μιας max διαδρομής σε ένα δένδρο! Τοπική βέλτιστη επιλογή : «σε κάθε επανάληψη επίλεξε τον κόμβο με το μεγαλύτερο κόστος και πρόσθεσέ τον στην διαδρομή»!!! Απληστία : κόστος διαδρομής Βέλτιστο: κόστος διαδρομής 0

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Σε άλλα προβλήματα, η άπληστη τεχνική δίδει βέλτιστη λύση!!! Όπως, για παράδειγμα, στην ανταλλαγή ενός νομίσματος αξίας (Euro, USD, ) με το ελάχιστο πλήθος κερμάτων αξίας,, 0, 0. 0 = 0 = = = Τοπική βέλτιστη επιλογή : «σε κάθε επανάληψη επίλεξε το κέρμα με την μεγαλύτερη αξία που δεν ξεπερνάει το ποσό που θα πληρωθεί»! Απληστία = Βέλτιστο : = =0

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Σε άλλα προβλήματα, η άπληστη τεχνική δίδει βέλτιστη λύση!!! Τέλεια!!!... Η απληστία δουλεύει καλά!!! Νόμισμα αξίας: Κέρματα :,, 0,, 00 Απληστία :,,,,, Βέλτιστο:,,,,,!!!!!

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Σε άλλα προβλήματα, η άπληστη τεχνική δίδει βέλτιστη λύση!!! Τέλεια!!!... Η απληστία δουλεύει καλά!!! Νόμισμα αξίας:. $ Κέρματα :,, 0,, 00 Απληστία : x00, x, 0, x Βέλτιστο: x00, x, 0, x!!!!!

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Σε άλλα προβλήματα, η άπληστη τεχνική δίδει βέλτιστη λύση!!! Τέλεια!!!... Η απληστία δουλεύει καλά!!! Γραμματόσημα αξίας: 0 $ Γραμματόσημα :, 0,,, 0, 00, 0,, 00 Απληστία : 00,,,,,,,!!!!!

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Σε άλλα προβλήματα, η άπληστη τεχνική δίδει βέλτιστη λύση!!! Τέλεια!!!... Η απληστία δουλεύει καλά!!! Γραμματόσημα αξίας: 0 $ Γραμματόσημα :, 0,,, 0, 00, 0,, 00 Απληστία : 00,,,,,,, Βέλτιστο: 0, 0 Αποτυχία!!!?????

Αλγοριθμικές Τεχνικές Τεχνική Απληστίας Η απληστία θέλει μεγάλη προσοχή!!!????? Μεταφορικά, με την άπληστη τεχνική είναι σαν να «περπατάμε» σε «ναρκοθετημένο» πεδίο!!! Όλα φαίνονται καλά στην επιφάνεια, αλλά εάν λίγο δεν προσέξουμε οι κρυμμένες λεπτομέρειες μπορεί να πυροδοτήσουν την «έκρηξη»!!!... δηλ. την αποτυχία!!!... που είναι η κατάρρευση της ιδέας του αλγορίθμου μας!!!

Αλγοριθμική Τεχνική Απληστίας Τεχνική Απληστίας Είναι εύκολο να επινοήσουμε άπληστους αλγορίθμους για σχεδόν οποιοδήποτε πρόβλημα!!! Η πρόκληση είναι : Η εύρεση περιπτώσεων στις οποίες οι άπληστοι αλγόριθμοι λειτουργούν καλά, και η απόδειξη ότι πράγματι αποδίδουν!! Ας δούμε με ένα απλό παράδειγμα πόσο εύκολα μπορεί κάποιος να παρασυρθεί σε λάθος άπληστες προσεγγίσεις!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Παράδειγμα Ας εξετάσουμε το πρόβλημα του Χρονοπρογραμματισμού Διαστημάτων (Intrval Schduling Problm).

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Στο πρόβλημα του Χρονοπρογραμματισμού Διαστημάτων έχουμε : Ένα πόρο : Για παράδειγμα, έναν υπερυπολογιστή, ένα ηλεκτρονικό μικροσκόπιο, ή μια αίθουσα διδασκαλίας, και πολλοί ζητούν να τον χρησιμοποιήσουν για κάποιες χρονικές περιόδους (ο πόρος μπορεί να χρησιμοποιηθεί το πολύ από ένα άτομο την φορά). Αιτήματα : Θέλω να χρησιμοποιήσω τον πόρο από την ώρα si έως την ώρα fi. Στόχος : Έχοντας ένα σύνολο n αιτημάτων A = {,,, n}, θέλουμε να μεγιστοποιήσουμε το πλήθος των αιτημάτων που θα γίνουν αποδεκτά!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Έστω ένα σύνολο αιτημάτων A = {,,, n}. Το αίτημα i αντιστοιχεί σε ένα χρονικό διάστημα [s(i), f(i)]. Μοντελοποίηση: s() f() s() f()

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Ένα σύνολο αιτημάτων S λέγεται συμβατό (comatibl) εάν ανά δύο τα αιτήματά του δεν επικαλύπτονται χρονικά. Στόχος είναι να υπολογίσουμε ένα συμβατό υποσύνολο με το μέγιστο πλήθος διαστημάτων, το οποίο ονομάζουμε βέλτιστο (otimal).

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Ένα σύνολο αιτημάτων S λέγεται συμβατό (comatibl) εάν ανά δύο τα αιτήματά του δεν επικαλύπτονται χρονικά. Στόχος είναι να υπολογίσουμε ένα συμβατό υποσύνολο με το μέγιστο πλήθος διαστημάτων, το οποίο ονομάζουμε βέλτιστο (otimal). Συμβατό: S = {,, }

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Ένα σύνολο αιτημάτων S λέγεται συμβατό (comatibl) εάν ανά δύο τα αιτήματά του δεν επικαλύπτονται χρονικά. Στόχος είναι να υπολογίσουμε ένα συμβατό υποσύνολο με το μέγιστο πλήθος διαστημάτων, το οποίο ονομάζουμε βέλτιστο (otimal). Μη-συμβατό : S = {,,, }

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Ένα σύνολο αιτημάτων S λέγεται συμβατό (comatibl) εάν ανά δύο τα αιτήματά του δεν επικαλύπτονται χρονικά. Στόχος είναι να υπολογίσουμε ένα συμβατό υποσύνολο με το μέγιστο πλήθος διαστημάτων, το οποίο ονομάζουμε βέλτιστο (otimal). Βέλτιστο : S = {,,, }

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Ένα σύνολο αιτημάτων S λέγεται συμβατό (comatibl) εάν ανά δύο τα αιτήματά του δεν επικαλύπτονται χρονικά. Στόχος είναι να υπολογίσουμε ένα συμβατό υποσύνολο με το μέγιστο πλήθος διαστημάτων, το οποίο ονομάζουμε βέλτιστο (otimal). Βέλτιστο : S = {,,, }

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Βασική ιδέα ενός άπληστου αλγόριθμου o Χρησιμοποίησε έναν απλό κανόνα για την τοπική βέλτιστη επιλογή του πρώτου αιτήματος i (άπληστη επιλογή), απορρίπτοντας τα μη-συμβατά αιτήματα με αυτό. o Επίλεξε με βάση τον κανόνα το επόμενο αίτημα i, απορρίπτοντας τα μη-συμβατά αιτήματα με το i, και συνέχισε έως να εξαντληθούν όλα τα αιτήματα.

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Βασική ιδέα ενός άπληστου αλγόριθμου o Χρησιμοποίησε έναν απλό κανόνα για την τοπική βέλτιστη επιλογή του πρώτου αιτήματος i (άπληστη επιλογή), απορρίπτοντας τα μη-συμβατά αιτήματα με αυτό. o Επίλεξε με βάση τον κανόνα το επόμενο αίτημα i, απορρίπτοντας τα μη-συμβατά αιτήματα με το i, και συνέχισε έως να εξαντληθούν όλα τα αιτήματα.

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Βασική ιδέα ενός άπληστου αλγόριθμου o Χρησιμοποίησε έναν απλό κανόνα για την τοπική βέλτιστη επιλογή του πρώτου αιτήματος i (άπληστη επιλογή), απορρίπτοντας τα μη-συμβατά αιτήματα με αυτό. o Επίλεξε με βάση τον κανόνα το επόμενο αίτημα i, απορρίπτοντας τα μη-συμβατά αιτήματα με το i, και συνέχισε έως να εξαντληθούν όλα τα αιτήματα.

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Βασική ιδέα ενός άπληστου αλγόριθμου o Χρησιμοποίησε έναν απλό κανόνα για την τοπική βέλτιστη επιλογή του πρώτου αιτήματος i (άπληστη επιλογή), απορρίπτοντας τα μη-συμβατά αιτήματα με αυτό. o Επίλεξε με βάση τον κανόνα το επόμενο αίτημα i, απορρίπτοντας τα μη-συμβατά αιτήματα με το i, και συνέχισε έως να εξαντληθούν όλα τα αιτήματα.

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Βασική ιδέα ενός άπληστου αλγόριθμου o Χρησιμοποίησε έναν απλό κανόνα για την τοπική βέλτιστη επιλογή του πρώτου αιτήματος i (άπληστη επιλογή), απορρίπτοντας τα μη-συμβατά αιτήματα με αυτό. o Επίλεξε με βάση τον κανόνα το επόμενο αίτημα i, απορρίπτοντας τα μη-συμβατά αιτήματα με το i, και συνέχισε έως να εξαντληθούν όλα τα αιτήματα.

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Βασική ιδέα ενός άπληστου αλγόριθμου o Χρησιμοποίησε έναν απλό κανόνα για την τοπική βέλτιστη επιλογή του πρώτου αιτήματος i (άπληστη επιλογή), απορρίπτοντας τα μη-συμβατά αιτήματα με αυτό. o Επίλεξε με βάση τον κανόνα το επόμενο αίτημα i, απορρίπτοντας τα μη-συμβατά αιτήματα με το i, και συνέχισε έως να εξαντληθούν όλα τα αιτήματα. Άπληστη λύση : S = {,,, }

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής Η πρόκληση για το σχεδιασμό ενός καλού άπληστου αλγόριθμου βρίσκεται στην απόφαση για τον απλό κανόνα για την επιλογή!!! Για το πρόβλημα του Χρονοπρογραμματισμού Διαστημάτων, όπως και για πολλά άλλα, υπάρχουν πολλοί φυσικοί (καλοί και κακοί) κανόνες! Για παράδειγμα, απλοί κανόνες επιλογής θα μπορούσαν να είναι: Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα, ή Αυτό που απαιτεί το μικρότερο χρονικό διάστημα ολοκλήρωσης, ή ακόμα Το διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων, ή Το διαθέσιμο διάστημα που τελειώνει νωρίτερα.

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα δηλ. το αίτημα με το μικρότερο s(i)!!! Ιδέα της άπληστης επιλογής : Ο πόρος μας θα ξεκινά να χρησιμοποιείται όσο το δυνατόν νωρίτερα και έτσι θα μείνει χρόνος για να ικανοποιηθούν περισσότερα αιτήματα!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα δηλ. το αίτημα με το μικρότερο s(i)!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα δηλ. το αίτημα με το μικρότερο s(i)!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα δηλ. το αίτημα με το μικρότερο s(i)!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα δηλ. το αίτημα με το μικρότερο s(i)!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα δηλ. το αίτημα με το μικρότερο s(i)!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα δηλ. το αίτημα με το μικρότερο s(i)!!! Άπληστη λύση : S = {,,, } Βέλτιστη

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα δηλ. το αίτημα με το μικρότερο s(i)!!! Ερώτηση: Ο Κανόνας Τοπικής Επιλογής δίνει πάντα βέλτιστη λύση?????

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα δηλ. το αίτημα με το μικρότερο s(i)!!! Αντιπαράδειγμα????

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα δηλ. το αίτημα με το μικρότερο s(i)!!! Αντιπαράδειγμα????

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που ξεκινάει νωρίτερα δηλ. το αίτημα με το μικρότερο s(i)!!! Αντιπαράδειγμα???? Ο κανόνας αποτυγχάνει!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απαιτεί το μικρότερο χρονικό διάστημα δηλ. το αίτημα για το οποίο το δ(i) = f(i)-s(i) είναι όσο το δυνατό μικρότερο!!! Ιδέα της άπληστης επιλογής : Το επιλεγόμενο αίτημα έχοντας με μικρό χρόνο εξυπηρέτησης εκτιμάται ότι θα απορρίπτει το λιγότερο δυνατό πλήθος μη-συμβατών αιτημάτων κάθε φορά!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απαιτεί το μικρότερο χρονικό διάστημα δηλ. το αίτημα για το οποίο το δ(i) = f(i)-s(i) είναι όσο το δυνατό μικρότερο!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απαιτεί το μικρότερο χρονικό διάστημα δηλ. το αίτημα για το οποίο το δ(i) = f(i)-s(i) είναι όσο το δυνατό μικρότερο!!! δ()

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απαιτεί το μικρότερο χρονικό διάστημα δηλ. το αίτημα για το οποίο το δ(i) = f(i)-s(i) είναι όσο το δυνατό μικρότερο!!! δ()

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απαιτεί το μικρότερο χρονικό διάστημα δηλ. το αίτημα για το οποίο το δ(i) = f(i)-s(i) είναι όσο το δυνατό μικρότερο!!! δ()

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απαιτεί το μικρότερο χρονικό διάστημα δηλ. το αίτημα για το οποίο το δ(i) = f(i)-s(i) είναι όσο το δυνατό μικρότερο!!! δ()

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απαιτεί το μικρότερο χρονικό διάστημα δηλ. το αίτημα για το οποίο το δ(i) = f(i)-s(i) είναι όσο το δυνατό μικρότερο!!! Άπληστη λύση : S = {,,, } Βέλτιστη

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απαιτεί το μικρότερο χρονικό διάστημα δηλ. το αίτημα για το οποίο το δ(i) = f(i)-s(i) είναι όσο το δυνατό μικρότερο!!! Ερώτηση: Ο Κανόνας Τοπικής Επιλογής δίνει πάντα βέλτιστη λύση?????

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απαιτεί το μικρότερο χρονικό διάστημα δηλ. το αίτημα για το οποίο το δ(i) = f(i)-s(i) είναι όσο το δυνατό μικρότερο!!! Αντιπαράδειγμα????

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απαιτεί το μικρότερο χρονικό διάστημα δηλ. το αίτημα για το οποίο το δ(i) = f(i)-s(i) είναι όσο το δυνατό μικρότερο!!! Αντιπαράδειγμα δ(.)????

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απαιτεί το μικρότερο χρονικό διάστημα δηλ. το αίτημα για το οποίο το δ(i) = f(i)-s(i) είναι όσο το δυνατό μικρότερο!!! Αντιπαράδειγμα???? Αυτός ο κανόνας αποτυγχάνει!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!! Ιδέα της άπληστης επιλογής : Το αίτημα να επιλέγεται έτσι ώστε πράγματι να απορρίπτει το λιγότερο δυνατό πλήθος μη-συμβατών αιτημάτων κάθε φορά!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!! Άπληστη λύση : S = {,,, } Βέλτιστη

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!! Ερώτηση: Ο Κανόνας Τοπικής Επιλογής δίνει πάντα βέλτιστη λύση?????

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!! Αντιπαράδειγμα????

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!! Αντιπαράδειγμα????

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!! Αντιπαράδειγμα????

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!! Αντιπαράδειγμα????

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που απορρίπτει το μικρότερο πλήθος μη-συμβατών αιτημάτων δηλ. το αίτημα με τις λιγότερες «διενέξεις»!!! Αντιπαράδειγμα???? Και αυτός ο κανόνας αποτυγχάνει!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που τελειώνει νωρίτερα δηλ. το αίτημα με το μικρότερο f(i)!!! Αυτή είναι επίσης μια αρκετά φυσική ιδέα: διασφαλίσουμε ότι οι πόροι μας απελευθερώνονται όσο το δυνατόν πιο σύντομα, και έτσι μεγιστοποιούμε το χρόνο που απομένει για την ικανοποίηση των άλλων αιτημάτων!!! Αυτός ο άπληστος κανόνας οδηγεί σε βέλτιστη λύση!!!!!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που τελειώνει νωρίτερα δηλ. το αίτημα με το μικρότερο f(i)!!! Αυτός ο άπληστος κανόνας οδηγεί σε βέλτιστη λύση!!!!!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που τελειώνει νωρίτερα δηλ. το αίτημα με το μικρότερο f(i)!!! Αυτός ο άπληστος κανόνας οδηγεί σε βέλτιστη λύση!!!!!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που τελειώνει νωρίτερα δηλ. το αίτημα με το μικρότερο f(i)!!! Αυτός ο άπληστος κανόνας οδηγεί σε βέλτιστη λύση!!!!!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που τελειώνει νωρίτερα δηλ. το αίτημα με το μικρότερο f(i)!!! Αυτός ο άπληστος κανόνας οδηγεί σε βέλτιστη λύση!!!!!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που τελειώνει νωρίτερα δηλ. το αίτημα με το μικρότερο f(i)!!! Αυτός ο άπληστος κανόνας οδηγεί σε βέλτιστη λύση!!!!!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που τελειώνει νωρίτερα δηλ. το αίτημα με το μικρότερο f(i)!!! Αυτός ο άπληστος κανόνας οδηγεί σε βέλτιστη λύση!!!!!!!

Αλγοριθμική Τεχνική Απληστίας Χρονοπρογραμματισμός Διαστημάτων Κανόνας Επιλογής : Επίλεξε πάντα το διαθέσιμο διάστημα που τελειώνει νωρίτερα δηλ. το αίτημα με το μικρότερο f(i)!!! Προσοχή! Αυτό είναι ένα παράδειγμα και όχι απόδειξη! Απαιτείται απόδειξη ότι αυτός ο άπληστος κανόνας δίδει πάντα βέλτιστη λύση!!! Αυτός ο άπληστος κανόνας οδηγεί σε βέλτιστη λύση!!!!!!!

Αλγοριθμική Τεχνική Απληστίας Χαρακτηριστικά της Τεχνικής Τα προβλήματα βελτιστοποίησης όπου η άπληστη τεχνική λειτουργεί καλά έχουν δύο κοινά χαρακτηριστικά: Ιδιότητα άπληστης επιλογής (Grdy choic rorty): Από ένα τοπικό βέλτιστο μπορούμε να επιτύχουμε ένα ολικό βέλτιστο, δηλ. μια βέλτιστη λύση του προβλήματος, χωρίς να αναθεωρούμε αποφάσεις που έχουμε ήδη πάρει! Ιδιότητα Βέλτιστης υποδομής (Otimal substructur rorty): Μια βέλτιστη λύση του προβλήματος μπορεί να κατασκευαστεί από βέλτιστες λύσεις των υποπροβλημάτων του!!

Αλγοριθμική Τεχνική Απληστίας Χαρακτηριστικά της Τεχνικής Τα υπέρ και τα κατά της απληστίας : ) Οι άπληστοι αλγόριθμοι κυρίως (αλλά όχι πάντα) αποτυγχάνουν να βρουν μια βέλτιστη λύση, επειδή συνήθως δεν λειτουργούν εξαντλητικά σε όλα τα δεδομένα. ) Αναλαμβάνουν δεσμεύσεις πολύ νωρίς για ορισμένες επιλογές που τους εμποδίζουν αργότερα να βρουν την καλύτερη συνολική λύση. o Για παράδειγμα, όλοι οι γνωστοί άπληστοι αλγόριθμοι για το πρόβλημα του χρωματισμού γραφημάτων, και για όλα τα άλλα NP-πλήρη προβλήματα, αποτυγχάνουν να δώσουν βέλτιστες λύσεις. ) Παρόλα αυτά, είναι χρήσιμοι επειδή είναι γρήγοροι και συχνά δίνουν καλές προσεγγίσεις στο βέλτιστο!!!

Αλγοριθμική Τεχνική Απληστίας Χαρακτηριστικά της Τεχνικής Τα υπέρ και τα κατά της απληστίας : ) Όταν ένας άπληστος αλγόριθμος επιλύει βέλτιστα ένα πρόβλημα, αυτό μας δείχνει κάτι ενδιαφέρον και χρήσιμο για τη δομή του ίδιου του προβλήματος: υπάρχει ένας τοπικός κανόνας αποφάσεων τον οποίο μπορεί κανείς να χρησιμοποιήσει για να κατασκευάσει βέλτιστες λύσεις! ) Η τοπικά βέλτιστη επιλογή που κάνει ένας άπληστος αλγόριθμος σε ένα βήμα δεν βασίζεται στις μελλοντικές επιλογές! ) Οι άπληστοι αλγόριθμοι μπορούν να χαρακτηριστούν ως «κοντόφθαλμοι» και είναι ιδανικοί μόνο για προβλήματα που έχουν την ιδιότητα της βέλτιστης υποδομής.

Αλγοριθμική Τεχνική Απληστίας Χαρακτηριστικά της Τεχνικής Τα υπέρ και τα κατά της απληστίας : ) Σε ορισμένες περιπτώσεις υπάρχουν πολλές άπληστες παραδοχές, αλλά μόνο λίγες από αυτές δίνουν βέλτιστη λύση (χρονοπρογραμματισμός διαστημάτων). ) Γενικά οι άπληστοι αλγόριθμοι είναι απλοί, γρήγοροι και εύκολα υλοποιήσιμοι καθώς βασίζονται μόνο σε τοπικές επιλογές και όχι σε μελλοντικές επιλογές ούτε σε λύσεις υποπροβλημάτων. ) Η απόδειξη της ορθότητας τους μπορεί να απαιτήσει αυστηρές μαθηματικές αποδείξεις και μερικές φορές είναι εξαιρετικά δύσκολη!! 0) Ωστόσο, όταν δεν έχουμε τίποτα άλλο στη διάθεσή μας η άπληστη τεχνική μπορεί να είναι η μόνη «σωτηρία» μας!!!

Αλγοριθμική Τεχνική Απληστίας Χαρακτηριστικά της Τεχνικής Τα υπέρ και τα κατά της απληστίας : ) Δεν υπάρχει γενικός κανόνας εφαρμογής της άπληστης μεθόδου σε ένα δεδομένο πρόβλημα, ωστόσο οι ίδιες οι προδιαγραφές του προβλήματος μπορεί να σας δώσουν μια καλή ιδέα! ) Οι προχωρημένες μαθηματικές έννοιες μπορεί να μας βοηθήσουν να αποδείξουμε ότι ένα πρόβλημα μπορεί να λυθεί βέλτιστα με την άπληστη τεχνική, αλλά τελικά όλα καταλήγουν στην διαίσθηση, την εμπειρία και την βαθιά γνώση του επιστήμονα! ) Παρά την αυστηρότητα της απληστίας, θα πρέπει να «κοιτάμε» τις άπληστες προσεγγίσεις με το μάτι ενός «ντετέκτιβ» και όχι ενός «επιστήμονα»!!!

Αλγοριθμική Τεχνική Απληστίας Χαρακτηριστικά της Τεχνικής Τα υπέρ και τα κατά της απληστίας : ) Η άπληστη τεχνική προτιμάται έναντι άλλων μεθόδων, όπως είναι ο δυναμικός προγραμματισμός, όταν αποδειχθεί ότι δίδει βέλτιστη λύση σε μια κλάση προβλημάτων!!! ) Παραδείγματα προβλημάτων και άπληστων αλγορίθμων βέλτιστης λύσης είναι: οι γνωστοί μας αλγόριθμοι συγχώνευσης και τοπολογικής ταξινόμησης, ο αλγόριθμος του Dijkstra για την εύρεση ελάχιστων διαδρομών, οι αλγόριθμοι των Kruskal και Prim για την εύρεση ελάχιστων συνδετικών δέντρων, και ο αλγόριθμος για την εύρεση βέλτιστων δέντρων Huffman.

Άπληστοι Αλγόριθμοι Ελάχιστες Διαδρομές dijkstra bllman-ford shortst ath algorithms

Άπληστοι Αλγόριθμοι Ελάχιστες Διαδρομές dijkstra bllman-ford shortst ath algorithms

Πρόβλημα Οδικό Δίκτυο

Πρόβλημα Οδικό Δίκτυο

Πρόβλημα 0 km Ελάχιστες Διαδρομές από την πόλη S km S km

Πρόβλημα Ελάχιστες Διαδρομές 0 0 S από την πόλη S

Πρόβλημα Ελάχιστες Διαδρομές 0 X 0 S από την πόλη S

Πρόβλημα Ελάχιστες Διαδρομές 0 S από την πόλη S X 0 d(s, X) =

Πρόβλημα Ελάχιστες Διαδρομές 0 S Y από την πόλη S X 0 d(s, X) =

Πρόβλημα Ελάχιστες Διαδρομές 0 S Y από την πόλη S X 0 d(s, X) = d(s, Y) =

Πρόβλημα Ελάχιστες Διαδρομές 0 0 από την πόλη S S Δένδρο Ελαχίστων Διαδρομών

Ελάχιστες Διαδρομές Βάρος ή Κόστος Διαδρομής Έστω G=(V,E) ένα γράφημα (κατευθυνόμενο ή μη), έμβαρο (δηλ. γράφημα στο οποίο κάθε ακμή φέρει κάποιο βάρος ή κόστος που κατά κανόνα δίδεται από μια συνάρτηση βάρους w : E R), και έστω P = (v, v,, vk) μια διαδρομή του G από τον κόμβο v στον vk. Το βάρος ή κόστος της διαδρομής P ορίζεται ως εξής: Όροι: Διαδρομή = Μονοπάτι

Ελάχιστες Διαδρομές Βάρος ή Κόστος Ελάχιστης Διαδρομής Ορίζουμε το βάρος ή κόστος μιας ελάχιστης διαδρομής (shortst ath) P = (v, v,, vk) ενός έμβαρου γραφήματος G από τον κόμβο v στον vk ως εξής: min{w(p): v d(v,vk) vk } σε κάθε άλλη περίπτωση Όροι: Ελάχιστη Διαδρομή = Συντομότατη Διαδρομή

Ελάχιστες Διαδρομές - Ιδιότητες Βασικές Παρατηρήσεις Είδαμε ότι τα προβλήματα όπου η άπληστη τεχνική λειτουργεί καλά έχουν δύο κοινά χαρακτηριστικά: Ιδιότητα άπληστης επιλογής (Grdy choic rorty): Από ένα τοπικό βέλτιστο μπορούμε να επιτύχουμε ένα ολικό βέλτιστο χωρίς να αναθεωρούμε αποφάσεις που έχουμε ήδη πάρει! Ιδιότητα Βέλτιστης υποδομής (Otimal substructur rorty): Μια βέλτιστη λύση του προβλήματος μπορεί να κατασκευαστεί από βέλτιστες λύσεις των υποπροβλημάτων του!! Εύλογο Ερώτημα Τι ισχύει για το πρόβλημα των Ελαχίστων Διαδρομών???????

Ελάχιστες Διαδρομές - Ιδιότητες Βασικές Παρατηρήσεις Ιδιότητα Βέλτιστης υποδομής (Otimal substructur rorty): Οι αλγόριθμοι υπολογισμού ελάχιστων διαδρομών βασίζονται κατά κανόνα στην ιδιότητα ότι μία ελάχιστη διαδρομή P : x ~> y ενός γραφήματος εμπεριέχει άλλες ελάχιστες διαδρομές!!! Η Ιδιότητα της Βέλτιστης Υποδομής των ελάχιστων διαδρομών διατυπώνεται ακριβέστερα στο Λήμμα. Υπενθυμίζουμε ότι η Ιδιότητα της Βέλτιστης Υποδομής αποτελεί μία από τις βασικές «ενδείξεις» για την δυνατότητα εφαρμογής τόσο της άπληστης τεχνικής όσο και του δυναμικού προγραμματισμού. Παρατήρηση: Ο αλγόριθμος του Dijkstra ανήκει στην κατηγορία των άπληστων αλγορίθμων, ενώ ο αλγόριθμος των Floyd-Watshall, τον οποίο θα εξετάσουμε σε επόμενη ενότητα, εμπίπτει στον δυναμικό προγραμματισμό!!!

Ελάχιστες Διαδρομές - Ιδιότητες Βασικές Παρατηρήσεις Έστω G=(V,E) ένα έμβαρο γράφημα, s V ένας κόμβος αφετηρίας και έστω d(s,u) το κόστος της ελάχιστης διαδρομής s ~> u. Τότε, για κάθε ακμή (u,v) E ισχύει: d(s,v) d(s,u) + w(u,v) u s 0 x Τριγωνική Ιδιότητα (Triangl Prorty) 0 v

Ελάχιστες Διαδρομές - Ιδιότητες Βασικές Παρατηρήσεις Έστω δύο ελάχιστες διαδρομές P και Q ενός γραφήματος. P ελάχιστη διαδρομή x ~> y Q ελάχιστη διαδρομή y ~> z? P Q ελάχιστη x ~> z y x z

Ελάχιστες Διαδρομές - Ιδιότητες Βασικές Παρατηρήσεις Έστω ότι η ελάχιστη διαδρομή x ~> z z x y η οποία αποτελείται από την διαδρομή P : x ~> y ακολουθούμενη από την Q : y ~> z Τότε: P είναι ελάχιστη διαδρομή x ~> y Q είναι ελάχιστη διαδρομή y ~> z

Ελάχιστες Διαδρομές - Ιδιότητες Ιδιότητα Βέλτιστης Υποδομής Λήμμα (Οι υποδιαδρομές από ε.δ αποτελούν ε.δ) Έστω G έμβαρο, P = (v,v,,vn) μια ε.δ v ~> vn και Q = (v,v+,,vq) μια υποδιαδρομή vp ~> vq της P. Τότε, η υποδιαδρομή Q είναι ελάχιστη διαδρομή vp ~> vq v P v Q vq P Q Εάν υπήρχε Q συντομότερη της Q, τότε P δεν θα ήταν ε.δ. vn

Ελάχιστες Διαδρομές - Ιδιότητες Ιδιότητα Βέλτιστης Υποδομής Πόρισμα (Οι υποδιαδρομές από ε.δ αποτελούν ε.δ) Έστω ότι η ελάχιστη διαδρομή P = (s,, v) διαμερίζεται P: s P u v Τότε, d(s,v) = d(s,u) + w(u,v) Απόδειξη: Από Λήμμα, η διαδρομή P είναι ελάχιστη από το κόμβο s στο κόμβο u. Επομένως, d(s,v) = w(p) = w(p ) + w(u,v) = d(s,u) + w(u,v)

Αλγόριθμος Dijkstra!!!!!!. Αλγόριθμος Dijkstra Βασική Ιδέα!!! x y s u S v V-S Επέκταση του Δένδρου Ελάχιστων Αποστάσεων κατά ένα κόμβο σε κάθε επανάληψη!... Άπληστη προσέγγιση!!!

Αλγόριθμος Dijkstra Βασική Ιδέα!!! x Άπληστη προσέγγιση!!! Ο αλγόριθμος διατηρεί ένα σύνολο S από κόμβους u για τους οποίους έχει υπολογίσει το κόστος d(s,u)=d(u) των ε.δ από τον κόμβο s. y s u v S V-S Δένδρο Ελαχίστων Διαδρομών με κόμβους του S Σε κάθε βήμα, ακλουθώντας ένα κριτήριο άπληστης επιλογής, κάνει τα εξής: ελέγχει τους κόμβους v V-S για τους οποίους υπάρχει διαδρομή της μορφής (s,,u,v), όπου (s,,u) η ε.δ s ~> u στο S και (u,v) Ε, και επιλέγει αυτόν που έχει την ελάχιστη τέτοια διαδρομή και τον προσθέτει στο S.

Αλγόριθμος Dijkstra Βασική Ιδέα!!! x Άπληστη προσέγγιση!!! Αρχικά S={s} και του d(s)=0 y s u S v V-S Στο βήμα i ( i n), κάνει τα εξής: () για κάθε κόμβο v V-S για τον οποίο διαδρομή της μορφής (s,,u,v), υπολογίζει το κόστος d (v) της συντομότερης διαδρομής μεταξύ όλων των διαδρομών αυτής της μορφής, δηλ. d (v) = min{d(u) + w(u,v)} u S : (u,v) Ε, και () επιλέγει τον κόμβο v V-S που ελαχιστοποιεί την ποσότητα d (v) μεταξύ όλων των κόμβων v V-S για τους οποίους διαδρομή (s,,u,v) και τον προσθέτει στο S θέτοντας d(v) = d (v).

Αλγόριθμος Dijkstra Παράδειγμα u s y Μια ενδιάμεση κατάσταση εκτέλεσης του Αλγόριθμου Το αρχικό (αρχικοποίηση), και δύο επαναλήψεις. x v S Στο Σχήμα έχουν εκτελεστεί Βήματα: z V-S Στο σύνολο S έχουν προστεθεί κόμβοι: ο κόμβος εκκίνησης s,και οι κόμβοι v και u.

Αλγόριθμος Dijkstra Παράδειγμα Βήμα u Αρχικοποίηση: S={s} και d(s)=0 s y x Βήμα Επέλεξε τον κόμβο v V-S, και τον πρόσθεσε στο S θέτοντας d(v) = v S d(s) = 0 d(v) = d(u) = z V-S d(x) =, d(y) =, d(z) = Βήμα Επέλεξε τον κόμβο u V-S, και τον πρόσθεσε στο S θέτοντας d(u) =

Αλγόριθμος Dijkstra Παράδειγμα Βήμα u d (v) = min{d(u) + w(u,v)} s y d (x) = min{+,0+,+} = x d (z) = min{+} = v S d(s) = 0 d(v) = d(u) = d (y) = min{+,+} = z V-S d(x) =, d(y) =, d(z) =

Αλγόριθμος Dijkstra Παράδειγμα Βήμα u d (v) = min{d(u) + w(u,v)} s y d (x) = min{+,0+,+} = x d (z) = min{+} = v S d(s) = 0 d(v) = d(u) = d (y) = min{+,+} = z V-S d(x) =, d(y) =, d(z) = Επιλέγει τον κόμβο x V-S διότι ελαχιστοποιεί την ποσότητα d (x) μεταξύ των κόμβων {y,x,z}.

Αλγόριθμος Dijkstra Παράδειγμα Βήμα y u d (y) = min{+,+} = x s d (v) = min{d(u) + w(u,v)} d (x) = min{+,0+,+} = d (z) = min{+} = v S d(s) = 0 d(v) = d(u) = z V-S d(x) =, d(y) =, d(z) = Προσθέτει τον κόμβο x στο S θέτοντας d(v) = Tο Δένδρο Ελαχίστων Διαδρομών επεκτείνεται με τον κόμβο x και με την ακμή (u,x) γιατί?

Αλγόριθμος Dijkstra Παράδειγμα Βήμα y u d (y) = min{+,+,+} = x s d (z) = min{+,+} = v S d(s) = 0 d(v) = d(u) = d (v) = min{d(u) + w(u,v)} z V-S d(x) =, d(y) =, d(z) =

Αλγόριθμος Dijkstra Παράδειγμα Βήμα y u d (y) = min{+,+,+} = x s d (z) = min{+,+} = v S d(s) = 0 d(v) = d(u) = d (v) = min{d(u) + w(u,v)} z V-S d(x) =, d(y) =, d(z) = Επιλέγει τον κόμβο y V-S διότι ελαχιστοποιεί την ποσότητα d (y) μεταξύ των κόμβων {y,z}.

Αλγόριθμος Dijkstra Παράδειγμα Βήμα d (v) = min{d(u) + w(u,v)} u d (y) = min{+,+,+} = x s y d (z) = min{+,+} = Προσθέτει τον κόμβο y στο S θέτοντας d(y) = v S d(s) = 0 d(v) = d(u) = z V-S d(x) =, d(y) =, d(z) = Tο Δένδρο Ελαχίστων Διαδρομών επεκτείνεται με τον κόμβο y και με την ακμή (x,y)!!!

Αλγόριθμος Dijkstra Παράδειγμα Βήμα d (v) = min{d(u) + w(u,v)} u d (z) = min{+,+} = x s y v S d(s) = 0 d(v) = d(u) = z V-S d(x) =, d(y) =, d(z) =

Αλγόριθμος Dijkstra Παράδειγμα Βήμα d (v) = min{d(u) + w(u,v)} u d (z) = min{+,+} = x s y Επιλέγει τον κόμβο z V-S διότι ελαχιστοποιεί την ποσότητα d (z) μεταξύ των κόμβων {z}. v S d(s) = 0 d(v) = d(u) = z V-S d(x) =, d(y) =, d(z) =

Αλγόριθμος Dijkstra Παράδειγμα Βήμα d (v) = min{d(u) + w(u,v)} u d (z) = min{+,+} = x s y Προσθέτει τον κόμβο z στο S θέτοντας d(z) = z v S d(s) = 0 d(v) = d(u) = Tο Δένδρο Ελαχίστων Διαδρομών επεκτείνεται με τον κόμβο z και με την ακμή (x,z)!!! V-S d(x) =, d(y) =, d(z) =

Αλγόριθμος Dijkstra Παράδειγμα Βήμα d (v) = min{d(u) + w(u,v)} u d (z) = min{+,+} = x s y Προσθέτει τον κόμβο z στο S θέτοντας d(z) = z v S d(s) = 0 d(v) = d(u) = Tο Δένδρο Ελαχίστων Διαδρομών επεκτείνεται με τον κόμβο z και με την ακμή (x,z)!!! V-S Ισοδύναμη επιλογή d(x) =, d(y) =, d(z) = Κόμβος z και ακμή (v,z)!!!

Αλγόριθμος Dijkstra Ορθότητα!!! x Στο παράδειγμα είδαμε ότι ο αλγόριθμος του Dijjstra κάνει το σωστό και αποφεύγει τις «παγίδες»!!! y s u v S V-S Η επαύξηση του συνόλου S με λανθασμένο κόμβο v μπορεί να οδηγήσει σε υπερεκτίμηση του κόστους της ε.δ από τον s προς τον v!!! Εύλογο Ερώτημα: Είναι πάντοτε αληθές ότι, όταν ο αλγόριθμος του Dijjstra προσθέτει έναν κόμβο v στο σύνολο S, παίρνουμε πραγματικά το κόστος της ελάχιστης διαδρομής από τον s προς τον v?

Ορθότητα Αλγόριθμου Dijkstra Θεώρημα Έστω G=(V,E) έμβαρο γράφημα με μη-αρνητικά βάρη, έστω s V ένας κόμβος αφετηρίας και (S,V-S) μια διαμέριση του V : s S και d(s,u) u S. x y s S u v V-S Εάν (u,v) είναι η ακμή που ελαχιστοποιεί την ποσότητα d(s,u) + w(u,v) μεταξύ όλων των ακμών (x, y) με x S και y V-S, τότε P = (s,,u,v) είναι ε.δ. s ~> v.

Ορθότητα Αλγόριθμου Dijkstra Απόδειξη y s u S v Έστω = (u,v) και έστω (s,,u) η ελάχιστη διαδρομή s ~> u. Για την διαδρομή P = (s,,u,v) από τον s στον v ισχύει : w(p) = d(s,u) + w() () V-S

Ορθότητα Αλγόριθμου Dijkstra Απόδειξη x y s u S v V-S Έστω Q = (s,,x,y,,v) μια ελάχιστη διαδρομή s ~> v στο G, και έστω y ο πρώτος κόμβος της διαδρομής Q : y V-S. Θα δείξουμε ότι w(p) w(q).

Ορθότητα Αλγόριθμου Dijkstra Απόδειξη x y s u S v V-S Από την Eq.() και από το κριτήριο επιλογής της ακμής = (u,v), έχουμε: w(p) = d(s,u) + w() d(s,x) + w(x,y) ()

Ορθότητα Αλγόριθμου Dijkstra Απόδειξη x y s u S v V-S Η διαδρομή (s,,x) είναι ελάχιστη με τιμή d(s,x). Από την Ιδιότητα Βέλτιστης Υποδομής, επειδή (s,,x,y) είναι υποδιαδρομή της ε.δ Q = (s,,x,y,,v) και οι ακμές έχουν μη-αρνητικά βάρη, ισχύει: d(s,x) + w(x,y) w(q) ()

Ορθότητα Αλγόριθμου Dijkstra Απόδειξη x y s u S v V-S Από Eq.() και Eq.(), δηλ. Eq.() : w(p) = d(s,u) + w() d(s,x) + w(x,y) Eq.() : d(s, x) + w(x, y) παίρνουμε: w(p) w(q) w(q)

Ορθότητα Αλγόριθμου Dijkstra Θεώρημα (Ορθότητα Αλγορίθμου Dijkstra) Έστω G=(V,E) έμβαρο γράφημα με μη-αρνητικά βάρη και s V. Ο αλγόριθμος του Dijkstra υπολογίζει τις ε.δ από τον κόμβο s προς κάθε άλλο κόμβο v V του G που είναι προσπελάσιμος από τον s. Απόδειξη Με επαγωγή στην ακολουθία των κόμβων όπως αυτή δημιουργείται από την πρόσθεσή τους στο δένδρο ελάχιστων-διαδρομών. Χρήση του Θεωρήματος.

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις Δύο Σημαντικές Παρατηρήσεις!!! Παρατήρηση. Ο αλγόριθμος του Dijkstra δεν δίνει πάντα σωστό αποτέλεσμα όταν το γράφημα περιέχει ακμές με αρνητικά βάρη!!! Πολλές εφαρμογές περιλαμβάνουν αρνητικά βάρη ακμών, και σε αυτή την περίπτωση απαιτείται ένας πιο πολύπλοκος αλγόριθμος όπως αυτός των Bllman-Ford!!! Παρατήρηση. Ο αλγόριθμος του Dijkstra είναι, κατά μία έννοια, πολύ πιο απλούστερος απ ότι τον περιγράψαμε!!! Ο αλγόριθμος στην πραγματικότητα είναι μια «έξυπνη» εκδοχή του αλγορίθμου διερεύνησης BFS, και το κίνητρό του προέρχεται από μια φυσική διαισθητική ιδέα που θα περιγράψουμε στη συνέχεια!!!

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αρνητικά Βάρη!!! a 0 s c - - - - b d h g - - - q f - - - - Κόστος ελάχιστης διαδρομής: d(s,d) = w(s,c) + w(c,d) = Διαδρομές: (s,,f), (s,,f,,f), (s,,f,,f,,f), (s,,f,,,f) Κύκλος αρνητικού κόστους: (,f,) = w(,f) + w(f,) = - < 0

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αρνητικά Βάρη!!! Αντιπαράδειγμα Ελάχιστη διαδρομή P από τον s στον v: P = (s,u,v) d(v) = Ο αλγόριθμος του Dijkstra δεν δίνει πάντα σωστό αποτέλεσμα όταν το γράφημα περιέχει ακμές με αρνητικά βάρη u s - v

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αρνητικά Βάρη!!! Αντιπαράδειγμα Ελάχιστη διαδρομή P από τον s στον v: Βήμα P = (s,u,v) d(v) = Αρχικοποίηση: S={s} και d(s)=0 u s S - v V-S

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αρνητικά Βάρη!!! Αντιπαράδειγμα Ελάχιστη διαδρομή P από τον s στον v: Βήμα P = (s,u,v) d(v) = Αρχικοποίηση: S={s} και d(s)=0 u Βήμα Επιλέγει τον κόμβο v V-S, διότι d (u) = min{0+} = s S - v V-S d (v) = min{0+} =

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αρνητικά Βάρη!!! Αντιπαράδειγμα Ελάχιστη διαδρομή P από τον s στον v: Βήμα P = (s,u,v) d(v) = Αρχικοποίηση: S={s} και d(s)=0 u Βήμα Επιλέγει τον κόμβο v V-S, διότι d (u) = min{0+} = - s d (v) = min{0+} = v και τον προσθέτει στο S θέτοντας d(v) =!!! S V-S

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αρνητικά Βάρη!!! Αντιπαράδειγμα Ελάχιστη διαδρομή P από τον s στον v: Βήμα P = (s,u,v) d(v) = Αρχικοποίηση: S={s} και d(s)=0 u Βήμα Επιλέγει τον κόμβο v V-S, διότι d (u) = min{0+} = - s d (v) = min{0+} = v και τον προσθέτει στο S θέτοντας d(v) =!!! S V-S Λάθος, διότι d(v) = και από την στιγμή που ο v προστίθεται στο S το d(v) δεν αλλάζει!!!

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αρνητικά Βάρη!!! Σε αυτή την περίπτωση προσφεύγουμε στον Αλγόριθμο των Ελάχιστη διαδρομή P από τον s στον v: P = (s,u,v) d(v) = u Bllman-Ford s - v Επιτρέπει αρνητικά βάρη ακμών Εντοπίζει κύκλους αρνητικού βάρους (κόστους)

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αλγοριθμικές Σκέψεις!!! BFS-tr s a s b BFS d(s,s)=0 d(s,b)= d(s,a)= a b c d d(s,d)= c d(s,c)= d d(s,)=

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αλγοριθμικές Σκέψεις!!! s s a d c b b a c d

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αλγοριθμικές Σκέψεις!!! BFS-tr s s a d c b b a c d

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αλγοριθμικές Σκέψεις!!! BFS-tr s d(s,s)=0 s d()= a b d d(s,a)= c a b d()= d()= d()= d()= d()= d()= c d()= d(s,d)= d(s,b)= d d()= d(s,c)= d(s,)=

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αλγοριθμικές Σκέψεις!!! G s 0 s 00 00 a 0 b Έμβαρο γράφημα G 00 a b 00

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις. Αλγοριθμικές Σκέψεις!!! G s 0 = d(s,s) s 00 00 a 0 BFS b Έμβαρο γράφημα G 00 a b 00 0

Ελάχιστες Διαδρομές Αλγοριθμικές Σκέψεις Αλγόριθμος «Αφύπνισης» d(s,s) = 0 Ρύθμισε ένα ρολόι για τον κόμβο s να χτυπήσει την χρονική στιγμή 0 s d(s,a) = a d Επανάλαβε έως ότου χτυπήσουν όλα τα ρολόγια: c b Έστω ότι το επόμενο ρολόι χτυπά την χρονική στιγμή t για τον κόμβο u, τότε: Η απόσταση του u από τον s είναι d(s,u) = t Για κάθε γείτονα x του u στο G: Ρύθμισε την αφύπνιση του x ίση με t + w(u,x) εάν δεν αφύπνιση για τον x ή κάποια τη χρονική στιγμή t > t + w(u,x), άλλως μη κάνεις τίποτε!

Ελάχιστες Διαδρομές Διαδικασία Udat() Αλγοριθμική Ρύθμιση της «Αφύπνισης» d(s, v) = d(v) Εκτιμητής Ελάχιστη Απόσταση Udat(u,v,w): if d(v) > d(u) + w(u,v) thn d(v) d(u) + w(u,v) rv(v) u d(v) = d(u) = u v d(v) = d(u) = u v

Αλγόριθμοι Dijkstra & Bllman-Ford Χρήση της διαδικασίας Udat(u,v,w)!!! Θα παρουσιάσουμε τον αλγόριθμο του Dijkstra και τον αλγόριθμο των Bllman-Ford για τον υπολογισμό των ελάχιστων διαδρομών από ένα κόμβο s σε ένα έμβαρο γράφημα, βασιζόμενοι στην διαδικασία Udat(u,v,w). Αλγόριθμος Dijkstra. Αλγόριθμος Bllman-Ford S

Αλγόριθμοι Dijkstra & Bllman-Ford Χαρακτηριστικά των Δύο Αλγορίθμων!!!. Αλγόριθμος Dijkstra Επιτρέπει μόνο μη-αρνητικά βάρη ακμών.. Αλγόριθμος Bllman-Ford Επιτρέπει αρνητικά βάρη ακμών. Εντοπίζει κύκλους αρνητικού βάρους (κόστους).

Udat() Αλγόριθμος Dijkstra!!!!!!. Αλγόριθμος Dijkstra Επέκταση Βασικής Ιδέας!!! d(v) = d(u) = u u ss v d(v) = d(u) = v u v Μπορούμε να αποδώσουμε πιο απλά την ίδια ακριβώς λειτουργία του αλγορίθμου του Dijkstra που περιγράψαμε, χρησιμοποιώντας την διαδικασία Udat()!

Udat() Αλγόριθμος Dijkstra!!!!!!. Αλγόριθμος Dijkstra Επέκταση Βασικής Ιδέας!!! x y s u S v V-S Επιλέγει τον κόμβο v από το σύνολο V-S με τον min εκτιμητή d(v), επεκτείνει το Δένδρο Ελαχίστων Διαδρομών προσθέτοντας τον v στο S), και ενημερώνει με Udat() τους γείτονες του v στο σύνολο V-S!

Udat() Αλγόριθμος Dijkstra Ενδιαφέρουσες Παρατηρήσεις Βήμα u d (x) = min{+,0+,+} = s d (v) = min{d(u) + w(u,v)} d (y) = min{+,+} = 0 y x d (z) = min{+} = Udat(u,v,w) v S z V-S if d(v) > d(u) + w(u,v) thn d(v) d(u) + w(u,v)

Udat() Αλγόριθμος Dijkstra Ενδιαφέρουσες Παρατηρήσεις Βήμα u 0 y d (y) = min{+,+,+} = d (z) = min{+,+} = x s Udat(u,v,w) v S d (v) = min{d(u) + w(u,v)} z V-S if d(v) > d(u) + w(u,v) thn d(v) d(u) + w(u,v)

Udat() Αλγόριθμος Dijkstra Ενδιαφέρουσες Παρατηρήσεις Ισοδυναμία κριτηρίων: u 0 y Το κόστος d (v) της συντομότερης διαδρομής μεταξύ όλων των διαδρομών από τον s στον v της μορφής(s,,u,v) Ισούται x s v S z V-S Με τον εκτιμητή ελάχιστης απόστασης d(v) του κόμβου v που υπολογίζεται με την συνάρτηση Udat(u,v,w).

Udat() Αλγόριθμος Dijkstra Ενδιαφέρουσες Παρατηρήσεις Κριτήριο άπληστης επιλογής: u 0 y z x s v S V-S Επίλεξε τον κόμβο v από το σύνολο V-S με τον min εκτιμητή d(v), πρόσθεσέ τον στο S, και ενημερώνει με Udat() τους γείτονες του v στο σύνολο V-S!

Udat() Αλγόριθμος Dijkstra. Αλγόριθμος Dijkstra u Initializ(G,s). για κάθε κόμβο v V: d(v) rv(v) NIL. d(s) 0 0 v s w

Udat() Αλγόριθμος Dijkstra. Αλγόριθμος Dijkstra u Dijkstra(G,w,s). Initializ(G,s). S ; Q V = V-S. whil Q : 0 v s w u xtract-min(q); S S {u} για κάθε ακμή (u,v) E: Udat(u,v,w). rturn d(), rv() if d(v) > d(u) + w(u,v) thn d(v) d(u) + w(u,v) rv(v) u

Udat() Αλγόριθμος Dijkstra Παράδειγμα Είσοδος Αλγόριθμου x q 0 s y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Initializ(G,s) x για κάθε κόμβο v V: d(v) rv(v) NIL q d(s) 0 0 0 s y d(s)=0 rv(s)=nil d(x)= rv(x)=λ d(y)= d()= rv(y)=λ rv()=λ d(q)= rv(q)=λ

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {s,x,y,,q} x S={} 0 q 0 s y d(s)=0 rv(s)=nil d(x)= rv(x)=λ d(y)= d()= rv(y)=λ rv()=λ d(q)= rv(q)=λ

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {s,x,y,,q} whil Q : x S={} 0 q 0 s y d(s)=0 rv(s)=nil d(x)= rv(x)=λ d(y)= d()= rv(y)=λ rv()=λ d(q)= rv(q)=λ

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {s,x,y,,q} whil Q : x S={} 0 u xtract-min(q); q 0 s y d(s)=0 rv(s)=nil d(x)= rv(x)=λ d(y)= d()= rv(y)=λ rv()=λ d(q)= rv(q)=λ

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,y,,q} whil Q : x S={} 0 u xtract-min(q); q 0 s y d(s)=0 rv(s)=nil

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,y,,q} whil Q : x S u xtract-min(q); S S {u} q 0 0 s y d(s)=0 rv(s)=nil

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,y,,q} whil Q : x S u xtract-min(q); S S {u} q Udat(u,v,w) 0 0 s y d(s)=0 rv(s)=nil

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,y,,q} 0 x S whil Q : u xtract-min(q); S S {u} q Udat(u,v,w) 0 0 s y d(s)=0 rv(s)=nil

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,y,,q} 0 x S whil Q : u xtract-min(q); S S {u} q Udat(u,v,w) 0 0 s y d(s)=0 rv(s)=nil

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,y,,q} whil Q : 0 x S u xtract-min(q); q 0 0 s y d(s)=0 rv(s)=nil

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,,q} whil Q : 0 x S u xtract-min(q); q 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,,q} whil Q : 0 x S u xtract-min(q); S S {u} q 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,,q} whil Q : 0 x S u xtract-min(q); S S {u} q Udat(u,v,w) 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,,q} whil Q : 0 x S u xtract-min(q); S S {u} q Udat(u,v,w) 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,,q} whil Q : 0 x S u xtract-min(q); S S {u} q Udat(u,v,w) 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,,q} whil Q : 0 x S u xtract-min(q); S S {u} q Udat(u,v,w) 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,,q} whil Q : x S u xtract-min(q); q 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,q} whil Q : x S u xtract-min(q); q 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,q} whil Q : x S u xtract-min(q); S S {u} q 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,q} whil Q : x S u xtract-min(q); S S {u} q Udat(u,v,w) 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {x,q} whil Q : x S u xtract-min(q); q 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {q} whil Q : x S u xtract-min(q); q 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y d(x)= rv(x)=y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {q} whil Q : x S u xtract-min(q); S S {u} q 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y d(x)= rv(x)=y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {q} whil Q : x S u xtract-min(q); S S {u} q Udat(u,v,w) 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y d(x)= rv(x)=y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {q} whil Q : x S u xtract-min(q); S S {u} q Udat(u,v,w) 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y d(x)= rv(x)=y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {q} whil Q : x S u xtract-min(q); q 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y d(x)= rv(x)=y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {} whil Q : x S u xtract-min(q); q 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y d(x)= rv(x)=y d(q)= rv(q)=x

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {} whil Q : x S u xtract-min(q); S S {u} q 0 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y d(x)= rv(x)=y d(q)= rv(q)=x

Udat() Αλγόριθμος Dijkstra Παράδειγμα Q = {} whil Q : rturn d(), rv() x q 0 s y d(s)=0 rv(s)=nil d(y)= rv(y)=s d()= rv()=y d(x)= rv(x)=y d(q)= rv(q)=x

Udat() Αλγόριθμος Dijkstra Παράδειγμα Έξοδος Αλγόριθμου x Κόστος ελάχιστων διαδρομών q 0 0 s y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Έξοδος Αλγόριθμου x Προκάτοχοι ελάχιστων διαδρομών rv(q)=x rv(x)=y q 0 s rv(s)=nil y rv(y)=s rv()=y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Δένδρο Ελάχιστων Διαδρομών x q x q 0 s y s y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Δένδρο Ελάχιστων Διαδρομών ΚΑΤΑΣΚΕΥΗ rv(x)=y rv(q)=x x q x q 0 rv(s)=λ s y rv(y)=s s rv()=y y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Δένδρο Ελάχιστων Διαδρομών ΚΑΤΑΣΚΕΥΗ rv(x)=y rv(q)=x x q x q 0 rv(s)=λ s y rv(y)=s s rv()=y y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Δένδρο Ελάχιστων Διαδρομών ΚΑΤΑΣΚΕΥΗ rv(x)=y rv(q)=x x q x q 0 rv(s)=λ s y rv(y)=s s rv()=y y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Δένδρο Ελάχιστων Διαδρομών ΚΑΤΑΣΚΕΥΗ rv(x)=y rv(q)=x x q x q 0 rv(s)=λ s y rv(y)=s s rv()=y y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Δένδρο Ελάχιστων Διαδρομών ΚΑΤΑΣΚΕΥΗ rv(x)=y rv(q)=x x q x q 0 rv(s)=λ s y rv(y)=s s rv()=y y

Udat() Αλγόριθμος Dijkstra Παράδειγμα Δένδρο Ελάχιστων Διαδρομών ΚΑΤΑΣΚΕΥΗ x s q 0 s y y x q

Πολυπλοκότητα Dijkstra Πολυπλοκότητα Αλγόριθμου Dijkstra Δομικά παρόμοιος με τον αλγόριθμο BFS Πιο αργός από BFS (ουρά προτεραιότητας vs απλής ουράς) Απαιτεί n λειτουργίες insrt στην ουρά, και επομένως: n xtract-min n+m insrt/udata Υλοποίηση ουράς με Ha O((n+m)logn)

Αλγόριθμος Bllman-Ford. Αλγόριθμος Bllman-Ford Βασική Ιδέα!!! u - ss v!!!!!! Ο αλγόριθμος των Bllman-Ford επιλύει το πρόβλημα των ελαχίστων διαδρομών στην πιο γενική περίπτωση όπου το γράφημα μπορεί να έχει αρνητικά ακμικά βάρη. Ενημερώνει με Udat() ΟΛΛΕΣ τις ακμές του γραφήματος G=(V,E) n- φορές, όπου n= V!

Από Dijkstra σε Bllman-Ford Ενδιαφέρουσες Παρατηρήσεις Ο αλγόριθμος του Dijkstra λειτουργεί σωστά διότι η ε.δ s ~> v «περνάει» αποκλειστικά από κόμβους που είναι πιο κοντά στον s. Η ε.δ (s,a,b) από τον s στον b «περνά» μέσω του a που είναι πιο κοντά στον s. s Αυτό ΔΕΝ ισχύει με αρνητικά βάρη! Η ε.δ (s,b,a) από τον s στον b «περνά» μέσω του b που είναι πιο μακριά στον s. a b a s - b

Από Dijkstra σε Bllman-Ford Ενδιαφέρουσες Παρατηρήσεις Πράγματι, εδώ ο Dijkstra δεν λειτουργεί σωστά!!! Θα δώσει λανθασμένα : d(s,a)= Ενώ ισχύει: d(s,a)= s - Τι πρέπει να αλλάξουμε στον Dijkstra a? b

Από Dijkstra σε Bllman-Ford Ενδιαφέρουσες Παρατηρήσεις Ιδιότητα των τιμών d(.) Κατά τη διάρκεια λειτουργίας του Dijkstra, ισχύει: d(.) είναι είτε υπερεκτιμημένες είτε βέλτιστες!!! Αρχικοποιούνται d(.)= και αλλάζουν μόνο: Udat(u,v,w): d(v) min{d(v), d(u) + w(u,v)} a s - b

Από Dijkstra σε Bllman-Ford Ενδιαφέρουσες Παρατηρήσεις Η διαδικασία Udat(u,v,w): () Δίνει την τιμή της ε.δ. στην d(v) όταν ο κόμβος u είναι προτελευταίος στην ε.δ. s ~> v () Δεν δίνει ποτέ στην d(v) τιμή < από την τιμή της ε.δ. s ~> v Όταν η d(v) πάρει την τιμή της ε.δ, στη συνέχεια όσες φορές και να εφαρμόσουμε την Udat(u,v,w) η τιμή της d(v) δεν αλλάζει!!!

Από Dijkstra σε Bllman-Ford Ενδιαφέρουσες Παρατηρήσεις Αλγόριθμο του Dijkstra: «Μια ακολουθία εκτελέσεων της Udat()» H ακολουθία των Udat() του Dijkstra δεν λειτουργεί σωστά με αρνητικά βάρη!????? Ερώτημα!!! Υπάρχει κάποια άλλη ακολουθία από Udat() που λειτουργεί σωστά? Εάν ναι, τι ιδιότητες πρέπει να έχει? a s - b (s,a), (s,b), (a,b)

Από Dijkstra σε Bllman-Ford Ενδιαφέρουσες Παρατηρήσεις Η Ρ σε γράφημα τάξης n έχει το πολύ n- ακμές (γιατί?) Έστω P: s ~> v μια ε.δ. s u u u uk v Εάν η ακολουθία εκτελέσεων Udat() είναι: (s,u), (u,u), (u,u),, (uk,v) τότε, λόγω τις (), η τιμή d(v) θα υπολογιστεί σωστά! () H διαδικασία Udat(u,v,w) δίνει την τιμή της ε.δ. στην d(v) όταν ο κόμβος u είναι προτελευταίος στην ε.δ s ~> v

Από Dijkstra σε Bllman-Ford Ενδιαφέρουσες Παρατηρήσεις Η Ρ σε γράφημα τάξης n έχει το πολύ n- ακμές (γιατί?) Έστω P: s ~> v μια ε.δ. s u u u uk v Όταν υπολογιστεί η βέλτιστη τιμή d(v), λόγω της (), όποιες άλλες ενημερώσεις Udat() γίνουν στις ακμές (s,u), (u,u), (u,u),, (uk,v) δεν επηρεάζουν το αποτέλεσμα! () Δεν θα δώσει ποτέ στην d(v) τιμή μικρότερη από την τιμή της ε.δ s ~> v

Από Dijkstra σε Bllman-Ford Ενδιαφέρουσες Παρατηρήσεις Όμως!!! ΔΕΝ γνωρίζουμε εκ των προτέρων όλες τις ε.δ του G και, επομένως, ΔΕΝ είμαστε βέβαιοι ότι ενημερώνουμε, με Udat(), τις σωστές ακμές με τη σωστή σειρά!?????? s u u u Πρόβλημα!!!... Μπορώ να σκεφτώ κάτι? uk v

Από Dijkstra σε Bllman-Ford Ορίστε μια Λύση!!!! s u u u uk v Ενημέρωσε, με Udat(), ΟΛΕΣ τις ακμές n- φορές! Η διαδικασία αυτή είναι, απλά, ο γνωστός αλγόριθμος των Bllman-Ford

Αλγόριθμος Bllman-Ford. Αλγόριθμος Bllman-Ford u Initializ(G,s). για κάθε κόμβο v V: d(v) rv(v) NIL. d(s) 0 0 v - s w

Αλγόριθμος Bllman-Ford. Αλγόριθμος Bllman-Ford u Bllman-Ford(G,w,s). Initializ(G,s). επανάλαβε n- φορές: για κάθε ακμή (u,v) E: Udat(u,v,w). rturn d(.) 0 v - s w

Αλγόριθμος Bllman-Ford Παραδείγματα u n = m = x 0 - s Udat στις ακμές φορές y v - V = {s, u, v, x, y} Ε = {(y,x),(u,x),(y,v),(s,u),(x,v),(s,v)}

Αλγόριθμος Bllman-Ford Παράδειγμα u n = m = x 0 - s Udat στις ακμές φορές η y v Επανάληψη - S: (y,x), (u,x), (y,v), (s,u), (x,v), (s,v)

Αλγόριθμος Bllman-Ford Παράδειγμα u x 0 - s n = m = Udat στις ακμές φορές η y v Επανάληψη - S: (y,x), (u,x), (y,v), (s,u), (x,v), (s,v)

Αλγόριθμος Bllman-Ford Παράδειγμα u n = m = x 0 - s Udat στις ακμές φορές η y v - Επανάληψη Καμία Αλλαγή! S: (y,x), (u,x), (y,v), (s,u), (x,v), (s,v)

Αλγόριθμος Bllman-Ford Παράδειγμα u n = m = x 0 - s Udat στις ακμές φορές η y v - Επανάληψη Καμία Αλλαγή! Γιατί? S: (y,x), (u,x), (y,v), (s,u), (x,v), (s,v)

Αλγόριθμος Bllman-Ford Παράδειγμα u x 0 - s n = m = Udat στις ακμές φορές η y v Επανάληψη - S: (s,u), (u,x), (y,x), (s,v), (x,v), (y,v)

Αλγόριθμος Bllman-Ford Παράδειγμα u n = m = x 0 - s Udat στις ακμές φορές η y v - Επανάληψη Καμία Αλλαγή! Γιατί? S: (s,u), (u,x), (y,x), (s,v), (x,v), (y,v)

Αλγόριθμος Bllman-Ford Παρατήρηση!!! x u 0 n = m = Udat στις ακμές φορές s y v 0 s u v x y

Αλγόριθμος Bllman-Ford Παρατήρηση!!!. επανάλαβε n- φορές: για κάθε ακμή (u,v) E: Udat(u,v,w) k Διάμετρος G = (V,E) k

Αλγόριθμος Bllman-Ford Αρνητικοί Κύκλοι? u u 0 s v - w 0 s v -? w? Εάν υπάρχει αρνητικός κύκλος δεν έχει νόημα να αναζητούμε ελάχιστες διαδρομές!!!

Αλγόριθμος Bllman-Ford Αρνητικοί Κύκλοι? u Bllman-Ford(G,w,s). Initializ(G,s). επανάλαβε n- φορές: για κάθε ακμή (u,v) E: Udat(u,v,w). για κάθε ακμή (u,v) E: if d(v) > d(u) + w(u,v) thn rturn FALSE. rturn d(.) 0 s - w? v?

Αλγόριθμος Bllman-Ford Πολυπλοκότητα Bllman-Ford Βήμα : Αρχικές τιμές: O(n), n= V Βήμα : Εκτελείται n- φορές και γίνεται Udat() σε m ακμές κάθε φορά. Επομένως, η πολυπλοκότητα του βήματος είναι Ο(n m)

Αλγόριθμος Bllman-Ford Πολυπλοκότητα Bllman-Ford Βήμα : Ελέγχεται m φορές η συνθήκη: d(v) > d(u) + w(u,v) Επομένως, η πολυπλοκότητα του βήματος είναι Ο(n m) Συνολική Πολυπλοκότητα: Ο(n m)

Ελάχιστες Διαδρομές Παρατηρήσεις Παρατήρηση!!! Dijkstra Bllman-Ford u xtract-min(q); για κάθε ακμή (u,v) E: επανάλαβε n- φορές: για κάθε ακμή (u,v) E: Udat(u,v,w) if d(v) > d(u) + w(u,v) thn d(v) d(u) + w(u,v) Udat(u,v,w)

Ελάχιστες Διαδρομές Παρατηρήσεις Παρατήρηση!!! Dijkstra Bllman-Ford u xtract-min(q); για κάθε ακμή (u,v) E: επανάλαβε n- φορές: για κάθε ακμή (u,v) E: Udat(u,v,w) if d(v) > d(u) + w(u,v) thn d(v) d(u) + w(u,v) rv(v) u Udat(u,v,w)

Ελάχιστες Διαδρομές Παρατηρήσεις Παρατήρηση!!! Dijkstra Bllman-Ford u xtract-min(q); για κάθε ακμή (u,v) E: επανάλαβε n- φορές: για κάθε ακμή (u,v) E: Udat(u,v,w) Udat(u,v,w) if d(v) > d(u) + w(u,v) thn d(v) d(u) + w(u,v) rv(v) u f(v) charactristic(u)

Ελάχιστες Διαδρομές Παρατηρήσεις Μπορούμε να υπολογίσουμε Ελάχιστες Διαδρομές σε ένα γράφημα χρησιμοποιώντας Δυναμικό Προγραμματισμό Επόμενη Ενότητα!

Άπληστοι Αλγόριθμοι Ελάχιστα Συνδετικά Δέντρα kruskal rim minimum sanning tr algorithms

Άπληστοι Αλγόριθμοι Ελάχιστα Συνδετικά Δέντρα kruskal rim minimum sanning tr algorithms

Πρόβλημα Οδικό Δίκτυο

Πρόβλημα Οδικό Δίκτυο

Πρόβλημα Καταστροφή Δικτύου