Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 11: ΠΡΟΒΛΗΜΑ ΔΙΑΤΡΕΞΗΣ ΓΡΑΦΗΜΑΤΟΣ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών
ΠΕΡΙΕΧΟΜΕΝΟ Το πρόβλημα Επίλυση του Προβλήματος Αλγόριθμος Αναζήτησης Πρώτα κατά Πλάτος Αλγόριθμος Αναζήτησης Πρώτα κατά Βάθος Παραδείγματα 2
ΤΟ ΠΡΟΒΛΗΜΑ Ορισμός: Σε πολλές εφαρμογές που μοντελοποιούνται με τη χρήση διγραφήματος πρέπει να γίνει επίσκεψη σε όλες τις κορυφές του διγραφήματος και εκεί να εκτελεσθεί κάποιο έργο που καθορίζεται από τη συγκεκριμένη εφαρμογή. Ο χρόνος που απαιτείται για να εκτελεστεί ένα έργο σε μια κορυφή θεωρείται ότι είναι σταθερός και ίδιος για κάθε κορυφή. Αν V i και V j είναι δυο κορυφές μπορεί να γίνει επίσκεψη από τη V i στη V j μόνο αν υπάρχει διαδρομή από V i σε V j. 3
ΔΙΑΤΡΕΞΗ ΓΡΑΦΗΜΑΤΟΣ Ορισμός Διάτρεξη (traversal) γραφήματος ονομάζεται η συστηματική επίσκεψη σε όλες τις κορυφές του γραφήματος, όχι αναγκαστικά μια μόνο φορά για κάθε κορυφή. 4
ΑΛΓΟΡΙΘΜΟΣ ΔΙΑΤΡΕΞΗΣ Παράγει μια διαδρομή που περιλαμβάνει όλες τις κορυφές τουλάχιστο μια φορά. Εικασία: Η πρώτη κορυφή που επισκεπτόμαστε είναι αυτή με το μικρότερο δείκτη. Ζητούμενο: Τιμές που αποθηκεύονται σε έναν πίνακα neo(), όπου neo(i)=j, όταν η κορυφή V i κατέχει τη θέση j στη σειρά επίσκεψης. Εναλλακτικό Ζητούμενο: Τιμές που αποθηκεύονται σε έναν πίνακα εγκατ(), όπου εγκατ(i)=j, όταν η κορυφή V i κατέχει τη θέση j στη σειρά εγκατάλειψης, δηλαδή είναι η j-στη κορυφή στην οποία έγινε η τελευταία επίσκεψη και μετά την εγκαταλείψαμε οριστικά. 5
ΜΕΘΟΔΟΙ ΔΙΑΤΡΕΞΗΣ ΓΡΑΦΗΜΑΤΟΣ Δυο μέθοδοι: Αναζήτηση Πρώτα κατά Πλάτος (ΑΠΠ) Αναζήτηση Πρώτα κατά Βάθος (ΑΠΒ) Υπόθεση Και στις δυο μεθόδους, θεωρούμε ότι για κάθε κορυφή i εκτελείται κάποιο έργο (φόρτος) που εκπροσωπείται από έναν αλγόριθμο fortos(i), αλλά μόνο κατά την πρώτη φορά επίσκεψης στην κορυφή αυτή. 6
ΑΝΑΖΗΤΗΣΗ ΠΡΩΤΑ ΚΑΤΑ ΠΛΑΤΟΣ-ΑΠΠ Κανόνας: 1. Αρχίζοντας με την κορυφή V 1, επισκεπτόμαστε πρώτα όλες τις κορυφές όπου μπορούμε να πάμε απευθείας από τη V 1. 2. Αφού έχουμε επισκεφτεί όλες τις γειτονικές κορυφές, ξεκινώντας από καθεμιά από αυτές επισκεπτόμαστε όλες τις κορυφές στις οποίες μπορούμε να πάμε απευθείας. 3. Σταματάμε όταν έχουμε επισκεφτεί όλες τις κορυφές του γραφήματος στις οποίες μπορούμε να πάμε. 4. Πρέπει να έχουμε προκαθορίσει έναν κανόνα βάσει του οποίου να επιλύουμε περιπτώσεις ισοπαλίας. Ένας τέτοιος κανόνας είναι σε περιπτώσεις ισοπαλίας να προηγούνται οι κορυφές με το μικρότερο δείκτη. 7
ΑΝΑΖΗΤΗΣΗ ΠΡΩΤΑ ΚΑΤΑ ΠΛΑΤΟΣ- ΙΔΙΟΤΗΤΕΣ Η χρήση ουράς Q είναι κατάλληλη. Χρειάζεται να εξαντλήσουμε πρώτα όλες τις κορυφές στις οποίες μπορεί να γίνει επίσκεψη από την ίδια κορυφή για να συνεχίσουμε τη διείσδυση στο γράφημα. Σε περίπτωση που μετά την εκτέλεση του ΑΠΠ δεν έχει γίνει επίσκεψη σε κάποιες κορυφές, πρέπει ο αλγόριθμος να ξανακληθεί με αρχή μια από τις κορυφές όπου δεν έχει γίνει επίσκεψη. 8
ΑΝΑΖΗΤΗΣΗ ΠΡΩΤΑ ΚΑΤΑ ΠΛΑΤΟΣ- ΨΕΥΔΟΚΩΔΙΚΑΣ /*Αρχικοποίηση*/ for i=1 to n do neo(i)=0 end_for neo(1)=1 fortos(i) Τοποθέτησε το δείκτη 1 στην ουρά Q pos=1 /*Επίσκεψη στις υπόλοιπες κορυφές*/ while Q!=0 do βγάλε το δείκτη i από την Q for j τέτοιο ώστε e i, j AND neo(j)==0 do pos=pos+1 neo(j)=pos fortos(j) Τοποθέτησε το δείκτη j στην ουρά Q end_for end_while 9
ΑΝΑΖΗΤΗΣΗ ΠΡΩΤΑ ΚΑΤΑ ΠΛΑΤΟΣ- ΠΑΡΑΔΕΙΓΜΑ Εφαρμόστε τον αλγόριθμο ΑΠΠ στο παρακάτω διγράφημα: 1 2 3 5 4 6 7 8 10
ΑΠΑΝΤΗΣΗ (1/2) Ξεκινούμε από τη V 1. Από τη V 1 πηγαίνουμε στη V 2 και στη V 5. Από τη V 2 επισκεπτόμαστε τη V 3 και τη V 4. Από τη V 5 δε μπορούμε να πάμε πουθενά. Από τη V 3 επισκεπτόμαστε τη V 6. Από τη V 4 επισκεπτόμαστε τη V 7 και τη V 8. Τερματισμός. Σειρά επίσκεψης: 1, 2, 5, 3, 4, 6, 7, 8 11
ΑΠΑΝΤΗΣΗ (2/2) 1 2 4 1 2 3 5 3 5 4 6 6 7 7 8 8 12
ΑΝΑΖΗΤΗΣΗ ΠΡΩΤΑ ΚΑΤΑ ΒΑΘΟΣ-ΑΠΒ Κανόνας: 1. Με τη χρήση του αλγορίθμου ΑΠΒ από μια κορυφή επισκεπτόμαστε μια νέα κορυφή, όταν υπάρχει πλευρά που να συνδέει τις δυο κορυφές και αυτό επαναλαμβάνεται για κάθε νέα κορυφή συνεχώς αν είναι δυνατό. 2. Αν έγινε επίσκεψη από μια κορυφή V i σε μια κορυφή V j με ΑΠΒ και δε μπορούμε από τη V j να πάμε σε κάποια άλλη κορυφή είτε γιατί δεν υπάρχουν πλευρές που να εκκινούν από τη V j είτε γιατί όσες υπάρχουν καταλήγουν σε κορυφές V k όπου ήδη έχει γίνει επίσκεψη (neo(k)!=0), τότε οπισθοχωρούμε από τη V j στην κορυφή προέλευσης. 3. Η οπισθοχώρηση δεν έχει ανάγκη ύπαρξης πλευράς από V j σε V i. 4. Στο σημείο αυτό γίνεται οριστική εγκατάλειψη της V j, οπότε τοποθετείται κατάλληλα και η τιμή εγκατάλειψης εγκατ(j).
ΑΝΑΖΗΤΗΣΗ ΠΡΩΤΑ ΚΑΤΑ ΒΑΘΟΣ- ΙΔΙΟΤΗΤΕΣ Αναδρομική μέθοδος. Η χρήση στοίβας είναι κατάλληλη. Διαφορά με ΑΠΠ: Δε χρειάζεται να εξαντλήσουμε πρώτα όλες τις κορυφές στις οποίες μπορεί να γίνει επίσκεψη από την ίδια κορυφή. 14
ΑΝΑΖΗΤΗΣΗ ΠΡΩΤΑ ΚΑΤΑ ΒΑΘΟΣ- ΨΕΥΔΟΚΩΔΙΚΑΣ /*Αρχικοποίηση*/ for i=1 to n do neo(i)=0 end_for pos=0 for i=1 to n do if neo(i)=0 then APB(i, pos) end_for APB (i, pos) pos=pos+1 neo(i)=pos fortos(i) for all j τέτοια ώστε e do i, j if neo(j)=0 then APB(j, pos) end_for 15
ΑΝΑΖΗΤΗΣΗ ΠΡΩΤΑ ΚΑΤΑ ΒΑΘΟΣ vs. ΑΡΙΘΜΗΣΕΙΣ ΔΕΝΤΡΩΝ Αρίθμηση προδιάταξης (preorder): Ίδια με σειρά επίσκεψης του ΑΠΒ, δηλαδή η αρίθμηση που δίνεται από τον πίνακα neo(). Αρίθμηση μεταδιάταξης (postorder): Ίδια με σειρά εγκατάλειψης του ΑΠΒ. Μπορεί να παρέχεται από έναν πίνακα εγκατ() σε κάθε θέση i του οποίου υπάρχει ένας αριθμός που δηλώνει την σειρά εγκατάλειψης της κορυφής V i από τον ΑΠΒ. Επειδή η εγκατάλειψη μιας κορυφής V i γίνεται κατά την επιστροφή από τον ΑΠΒ, αρκεί να ορίσω έναν μετρητή, count=0 μετά το pos=0 και στο τέλος του ΑΠΒ να προσθέσω τις εντολές: count=count+1 εγκατ(i)=count 16
ΑΝΑΖΗΤΗΣΗ ΠΡΩΤΑ ΚΑΤΑ ΒΑΘΟΣ- ΑΝΑΛΥΣΗ Έστω ένα διγράφημα G με n κορυφές και m πλευρές. Σε κάθε κορυφή γίνεται επίσκεψη μια φορά. Άρα έχουμε Ο(n) βήματα. Για κάθε κορυφή εξετάζονται ακριβώς μια φορά όλες οι πλευρές που εκκινούν από αυτή πριν αυτή εγκαταλειφθεί. Ακόμη, για κάθε κορυφή εκτελείται ο αλγόριθμος fortos που έχει σταθερή πολυπλοκότητα ως προς τις παραμέτρους m, n. Πολυπλοκότητα: O(m)+O(n)= max[o(m), O(n)]=O(max(m, n)) 17
ΑΝΑΖΗΤΗΣΗ ΠΡΩΤΑ ΚΑΤΑ ΒΑΘΟΣ- ΠΑΡΑΔΕΙΓΜΑ Εφαρμόστε τον αλγόριθμο ΑΠΒ στο παρακάτω διγράφημα: 1 2 3 5 4 6 7 8 18
ΑΠΑΝΤΗΣΗ (1/3) Ξεκινούμε από τη V 1. Επισκεπτόμαστε τη V 2. Από τη V 2 πηγαίνουμε στη V 3. Από τη V 3 πηγαίνουμε στη V 6. Από τη V 6 επισκεπτόμαστε τη V 8. Από τη V 8 πηγαίνουμε στη V 7. Από τη V 7 δε μπορούμε να πάμε πουθενά, οπότε γυρνούμε στη V 8. Από τη V 8 δε μπορούμε να πάμε πουθενά, οπότε γυρνούμε στη V 6. Από τη V 6 δε μπορούμε να πάμε πουθενά, οπότε γυρνούμε στη V 3. Από τη V 3 δε μπορούμε να πάμε πουθενά, οπότε γυρνούμε στη V 2. Από τη V 2 πηγαίνουμε στη V 4. 19
ΑΠΑΝΤΗΣΗ (2/3) Από τη V 4 δε μπορούμε να πάμε πουθενά, οπότε γυρνούμε στη V 2. Από τη V 2 δε μπορούμε να πάμε πουθενά, οπότε γυρνούμε στη V 1. Από τη V 1 πηγαίνουμε στη V 5. Τερματισμός. Σειρά επίσκεψης: 1, 2, 3, 6, 8, 7, 4, 5. Σειρά εγκατάλειψης: 7, 8, 6, 3, 4, 2, 5, 1. 20
ΑΠΑΝΤΗΣΗ (3/3) 1 2 3 1 2 3 5 8 7 4 6 4 7 6 8 5 21
ΧΡΗΜΑΤΟΔΟΤΗΣΗ Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Πατρών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 22
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ Το παρόν έργο αποτελεί την έκδοση 1.0. 23
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ Copyright Πανεπιστήμιο Πατρών, Δημήτριος Κουκόπουλος. «Σχεδίαση και Ανάλυση Αλγορίθμων. ΠΡΟΒΛΗΜΑ ΔΙΑΤΡΕΞΗΣ ΓΡΑΦΗΜΑΤΟΣ». Έκδοση: 1.0. Πάτρα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/culture109/. 24
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 25
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. 26