ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ Φροντιστήριο #: Εύρεση Ελαχίστων Μονοπατιών σε Γραφήματα που Περιλαμβάνουν και Αρνητικά Βάρη: Αλγόριθμος Bellman-Ford. Ελάχιστα Επικαλυπτικά Δένδρα, Αλγόριθμος Prim, Αλγόριθμος Boruvka Άσκηση # Έστω το ακόλουθο βεβαρημένο κατευθυνόμενο γράφημα G=(V,E). Εφαρμόστε τον αλγόριθμο των Bellman-Ford για να βρείτε τα συντομότερα μονοπάτια από την κορυφή S προς οποιαδήποτε άλλη κορυφή. Για κάθε βήμα του αλγορίθμου, καταγράψτε σε έναν πίνακα τις ενδιάμεσες αποστάσεις από την S προς οποιαδήποτε άλλη κορυφή. Εφόσον διαπιστώσετε ότι το γράφημα δεν περιλαμβάνει αρνητικό κύκλο, σχεδιάστε το τελικό δένδρο των συντομότερων μονοπατιών από την S. Υπόδειξη: Η κεντρική φιλοσοφία του αλγορίθμου των Bellman-Ford συμπυκνώνεται στα ακόλουθα βήματα (για μια αναλυτική παρουσίαση δείτε τη σχετική διάλεξη). Αρχικά, υπολογίζουμε τα συντομότερα μονοπάτια από την S χωρίς να χρησιμοποιήσουμε κάποια ακμή. Εξ ορισμού, η S απέχει μονοπάτι μήκους από τον εαυτό της, ενώ όλες οι υπόλοιπες κορυφές απέχουν κατά σύμβαση +. Στο ο βήμα, υπολογίζουμε το συντομότερο μονοπάτι κάθε κορυφής από την S αν χρησιμοποιήσουμε το πολύ μια ακμή. Αν υπάρχει κάποιο μονοπάτι που είναι συντομότερο από το προηγούμενο βήμα, ενημερώνουμε τη σχετική εγγραφή στον πίνακα που υπολογίζουμε τα συντομότερα μονοπάτια. Στο ο βήμα, υπολογίζουμε το συντομότερο μονοπάτι κάθε κορυφής από την S αν χρησιμοποιήσουμε το πολύ δύο ακμές. Αν υπάρχει κάποιο μονοπάτι που είναι συντομότερο από το προηγούμενο βήμα (γιατί μπορεί να συμβεί κάτι τέτοιο;), ενημερώνουμε τη σχετική εγγραφή στον πίνακα που υπολογίζουμε τα συντομότερα μονοπάτια. Κοκ. Αν διαδοχικές στήλες του πίνακα που υπολογίζουμε τα συντομότερα μονοπάτια είναι ίδιες, τότε ο αλγόριθμος έχει ολοκληρωθεί. Σε κάθε περίπτωση, αν
γνωρίζουμε ότι το βεβαρημένο γράφημα δεν περιλαμβάνει αρνητικό κύκλο (αρνητικός κύκλος είναι ένας κύκλος για τον οποίο το άθροισμα των βαρών των ακμών του είναι αρνητικός αριθμός), ο αλγόριθμος θα ολοκληρωθεί το πολύ σε V - βήματα. Για να ελέγξουμε την ύπαρξη αρνητικού κύκλου, αρκεί να εκτελέσουμε τον αλγόριθμο για V επαναλήψεις. Αν τη V-οστή φορά αλλάξει έστω και μια εγγραφή στον πίνακα που υπολογίζουμε τα συντομότερα μονοπάτια, τότε το γράφημα περιλαμβάνει σίγουρα αρνητικό κύκλο. Ο πίνακας συντομότερων αποστάσεων λοιπόν που προκύπτει είναι ο ακόλουθος (Σε κάθε κουτάκι του πίνακα χρησιμοποιώ το συμβολισμό π.χ. /S που δηλώνει ότι το συντομότερο μονοπάτι έχει βάρος και η προτελευταία κορυφή του μονοπατιού είναι η S): S A /S /S /S /C /C /C B -/S -/S -/S -/S -/S -/S C /A -/D -/D -/D -/D D /B /B /B /B /B E /F /F -/F -/F F /A /C -/C -/C -/C Σχόλιο (//): Τα κουτάκια που είναι σημειωμένα με κόκκινο στον πίνακα είχαν τυπογραφικά λάθη στην προηγούμενη έκδοση (δεν επηρέαζαν πάντως το τελικό αποτέλεσμα). Ευχαριστώ τη Μαριαλένα για την επισήμανση. Δεν υπάρχει αρνητικός κύκλος και στο δένδρο συντομότερων μονοπατιών ρίζα είναι το S και Παιδί του S είναι το B Παιδί του Β είναι το D Παιδιά του C είναι τα A, F Παιδί του D είναι το C Παιδί του F είναι το E.
Άσκηση # Έστω το παρακάτω μη κατευθυνόμενο βεβαρημένο συνεκτικό γράφημα G=(V,E,w). Να δείξετε το ελάχιστο επικαλυπτικό δένδρο (Minimum Spanning Tree MST) που προκύπτει μετά την εφαρμογή: a. του αλγορίθμου Prim με αρχική κορυφή την b. του αλγορίθμου Boruvka Σε περιπτώσεις που υπάρχουν παραπάνω από μια επιλογές, προκρίνεται εκείνη η ακμή που ενώνει κορυφές με το μικρότερο άθροισμα. 7 Υπόδειξη: Η κεντρική φιλοσοφία των αλγορίθμων Prim και Boruvka συμπυκνώνεται στα ακόλουθα βήματα (για μια αναλυτική παρουσίαση, δείτε τις σχετικές διαλέξεις). Ο αλγόριθμος του Prim χωρίζει το σύνολο των κορυφών σε σύνολα: Τις κορυφές που ανήκουν στο MST (έστω σύνολο S) και τις κορυφές που δεν ανήκουν στο MST (σύνολο V-S). Αρχικά στο σύνολο S περιλαμβάνεται μόνο η κορυφή από την οποία θα ξεκινήσουμε (και δίνεται στην εκφώνηση). Σε κάθε βήμα του αλγορίθμου, προστίθεται στο MST η ελαφρύτερη ακμή που πληροί το cut property για τα σύνολα S, V-S. Παράλληλα, η κορυφή που αντιστοιχεί στο άκρο της ακμής που ανήκε στο σύνολο V-S, αλλάζει σύνολο και προστίθεται στο S. Η διαδικασία ολοκληρώνεται μετά από V - βήματα. Ο αλγόριθμος του Boruvka θεωρεί ότι κάθε κορυφή είναι από μόνη της μια συνεκτική συνιστώσα (υπάρχουν επομένως V συνεκτικές συνιστώσες) και επεκτείνει κάθε συνεκτική συνιστώσα προς μια άλλη, χρησιμοποιώντας την ελαφρύτερη ακμή που πληροί το cut property για τις V συνεκτικές συνιστώσες. Απόρροια αυτής της διαδικασίας είναι να δημιουργηθούν μεγαλύτερες συνεκτικές συνιστώσες. Στο επόμενο βήμα, επαναλαμβάνεται η ίδια διαδικασία με στόχο τη σύνδεση κάθε συνεκτικής συνιστώσας με μια άλλη, χρησιμοποιώντας την ελαφρύτερη ακμή που πληροί το cut property για τις συνεκτικές συνιστώσες που δημιουργήθηκαν. Η διαδικασία επαναλαμβάνεται μέχρις ότου να υπάρχει μόνο μια συνεκτική συνιστώσα, δηλ. το γράφημα να γίνει συνεκτικό.
Αλγόριθμος Prim 7 Σχήμα : Το MST του γραφήματος μετά την εφαρμογή του Αλγορίθμου του Prim. ο βήμα: Προσθήκη της ακμής (,) που έχει βάρος ο βήμα: Προσθήκη της ακμής (,) που έχει βάρος ο βήμα: Προσθήκη της ακμής (,) που έχει βάρος ο βήμα: Προσθήκη της ακμής (,) που έχει βάρος ο βήμα: Προσθήκη της ακμής (,) που έχει βάρος ο βήμα: Προσθήκη της ακμής (,) που έχει βάρος 7 ο βήμα: Προσθήκη της ακμής (,7) που έχει βάρος Το MST που προκύπτει μετά την εφαρμογή του αλγορίθμου του Prim είναι στο σχήμα. Το κόστος του MST είναι το άθροισμα των βαρών των ακμών δηλ.. Αλγόριθμος Boruvka oς Γύρος Κορυφή : Συνδέεται με την κορυφή με την ακμή (,) που έχει βάρος Κορυφή : Συνδέεται με την κορυφή με την ακμή (,) που έχει βάρος Κορυφή : Συνδέεται με την κορυφή με την ακμή (,) που έχει βάρος Κορυφή : Συνδέεται με την κορυφή με την ακμή (,) που έχει βάρος Κορυφή : Συνδέεται με την κορυφή με την ακμή (,) που έχει βάρος Κορυφή : Συνδέεται με την κορυφή με την ακμή (,) που έχει βάρος Κορυφή : Συνδέεται με την κορυφή με την ακμή (,) που έχει βάρος Κορυφή 7: Συνδέεται με την κορυφή με την ακμή (7,) που έχει βάρος Δημιουργείται το σχήμα που αποτελείται από συνεκτικές συνιστώσες. Την Α= {,}, τη Β={,,} και τη Γ={,,7}.
7 Σχήμα : Το γράφημα μετά την εφαρμογή του Αλγορίθμου του Boruvka στον ο γύρο. oς Γύρος Συνεκτική συνιστώσα Α: Συνδέεται με τη συνεκτική συνιστώσα Β μέσω της ακμής (,) που έχει βάρος. Συνεκτική συνιστώσα Β: Συνδέεται με τη συνεκτική συνιστώσα Α μέσω της ακμής (,) που έχει βάρος. Συνεκτική συνιστώσα Γ: Συνδέεται με τη συνεκτική συνιστώσα Α μέσω της ακμής (,) που έχει βάρος. 7 Σχήμα : Το MST του γραφήματος μετά την ολοκλήρωση του Αλγορίθμου του Boruvka. Το γράφημα που δημιουργήθηκε στο σχήμα αποτελείται από μια συνεκτική συνιστώσα, δηλ. είναι συνεκτικό. Άρα, είναι το ζητούμενο MST που έχει κόστος. Προσέξτε ότι τόσο το κόστος του MST, όσο και το δένδρο που προέκυψε από την εφαρμογή του αλγορίθμου του Boruvka (σχήμα ) συμπίπτει με αυτό του Prim (σχήμα ). Τυχαίο; Δε νομίζω ;-)
Άσκηση # Έστω το ακόλουθο βεβαρημένο κατευθυνόμενο γράφημα G=(V,E). Εφαρμόστε τον αλγόριθμο των Bellman-Ford για να βρείτε τα συντομότερα μονοπάτια από την κορυφή S προς οποιαδήποτε άλλη κορυφή. Για κάθε βήμα του αλγορίθμου, καταγράψτε σε έναν πίνακα τις ενδιάμεσες αποστάσεις από την S προς οποιαδήποτε άλλη κορυφή. Εφόσον διαπιστώσετε ότι το γράφημα δεν περιλαμβάνει αρνητικό κύκλο, σχεδιάστε το τελικό δένδρο των συντομότερων μονοπατιών από την S. Άσκηση # Έστω το ακόλουθο μη κατευθυνόμενο βεβαρημένο συνεκτικό γράφημα G=(V,E,w). Να δείξετε το ελάχιστο επικαλυπτικό δένδρο (Minimum Spanning Tree MST) που προκύπτει μετά την εφαρμογή: a. του αλγορίθμου Prim με αρχική κορυφή την S b. του αλγορίθμου Boruvka Σε περιπτώσεις που υπάρχουν παραπάνω από μια επιλογές, προκρίνεται εκείνη η ακμή που ενώνει κορυφές με το μικρότερο λεξικογραφικό άθροισμα.