1) Ορισμός Συνδετικού Δένδρου
1.1) Διάσχιση Πρώτα Κατά Πλάτος
1.2) Διάσχιση Πρώτα Κατά Βάθος
2) Ελάχιστο Συνδετικό Δένδρο
2.1) Ορισμός Ελάχιστου Συνδετικού Δένδρου
2.2) Ο αλγόριθμος του Prim
3) Σύνοψη για τους Αλγόριθμους
3.1) Συντομότερα Μονοπάτια
3.2) Συνδετικό Δένδρο
3.3) Ελάχιστο Συνδετικό Δένδρο
1) Κύκλος Hamilton
1.1) Ορισμός Κύκλου Hamilton
1.2) Πως δείχνουμε ότι ένα γράφημα έχει κύκλο Hamilton (κατασκευαστικές, θεώρημα Dirac, θεώρημα Ore)
1.3) Πως δείχνουμε ότι ένα γράφημα δεν έχει κύκλο Hamilton (Απόδειξη εξαντλητικής περιπτωσιολογίας).
Ασκήσεις
1) Επίπεδο Γράφημα
1.1) Ορισμοί Επίπεδων Γραφημάτων
1.2) Το άθροισμα των Βαθμών των όψεων ≤ 2m
1.3) Ο τύπος του Euler
2) Το θεώρημα Kuratowski
2.1) Το Κ5 δεν είναι επίπεδο
2.2) Το Κ3,3 δεν είναι επίπεδο
2.3) Ομοιομορφικά Γραφήματα
2.4) Το θεώρημα του Kuratowski
3) Δύο ακόμη Θεωρήματα
Ασκήσεις
1) Κύκλος Hamilton
1.1) Ορισμός Κύκλου Hamilton
1.2) Πως δείχνουμε ότι ένα γράφημα έχει κύκλο Hamilton (κατασκευαστικές, θεώρημα Dirac, θεώρημα Ore)
1.3) Πως δείχνουμε ότι ένα γράφημα δεν έχει κύκλο Hamilton (Απόδειξη εξαντλητικής περιπτωσιολογίας).
Ασκήσεις
1) Επίπεδο Γράφημα
1.1) Ορισμοί Επίπεδων Γραφημάτων
1.2) Το άθροισμα των Βαθμών των όψεων ≤ 2m
1.3) Ο τύπος του Euler
2) Το θεώρημα Kuratowski
2.1) Το Κ5 δεν είναι επίπεδο
2.2) Το Κ3,3 δεν είναι επίπεδο
2.3) Ομοιομορφικά Γραφήματα
2.4) Το θεώρημα του Kuratowski
3) Δύο ακόμη Θεωρήματα
Ασκήσεις
1) Εισαγωγικοί Ορισμοί
1.1) Κατευθυνόνομενο Γράφημα
1.2) Μονοπάτια
1.3) Κύκλοι
1.4) Έσω και Έξω Βαθμός Κορυφής
1.5) Απομονωμένη Κορυφή
1.6) Πλήρες Γράφημα
2) Η Γλώσσα των Κατευθυνόμενων Γραφημάτων
2.1) Η Γλώσσα των Κατευθυνόμενων Γραφημάτων
2.2) Ερμηνείες στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
3) Ασκήσεις στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
3.1) Μετάφραση στα Ελληνικά
3.2) Μετάφραση στα Κατηγορηματικά
3.3) Εύρεση Αλήθειας Προτάσεων
3.4) Εύρεση Ερμηνείας που ικανοποιεί δεδομένη πρόταση
3.5) Συντομογραφίες στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
Ασκήσεις
1) Εισαγωγικοί Ορισμοί
1.1) Μη Κατευθυνόνομενο Γράφημα
2) Ορισμοί στα Μη Κατευθυνόμενα Γραφήματα
2.1) Η Γλώσσα των Μη Κατευθυνόμενων Γραφημάτων
2.1) Η Γλώσσα των Μη Κατευθυνόμενων Γραφημάτων
2.2) Ερμηνείες στην Γλώσσα των Μη Κατευθυνόμενων Γραφημάτων
3) Ασκήσεις στην Γλώσσα των Μη Κατευθυνόμενων Γραφημάτων
3.1) Μετάφραση στα Ελληνικά
3.2) Μετάφραση στα Κατηγορηματικά
3.3) Εύρεση Αλήθειας Προτάσεων
3.4) Εύρεση Ερμηνείας που ικανοποιεί δεδομένη πρόταση
3.5) Συντομογραφίες στην Γλώσσα των Μη Κατευθυνόμενων Γραφημάτων.
Ασκήσεις
1) Ισομορφισμοί Γραφημάτων
1.1) Ισομορφικά Γραφήματα
1.2) Πως δείχνω ότι δύο γραφήματα είναι ισομορφικά
1.3) Πως δείχνω ότι δύο γραφήματα δεν είναι ισομορφικά
1.4) Αποδείξεις Αναλλοίωτων Ιδιοτήτων
2) Συμπληρωματικοί Ορισμοί
2.1) Αυτομορφισμός
2.2) Αυτοσυμπληρωματικό Γράφημα
Ασκήσεις
1) Διανομή σε Υποδοχές
1.1) Διανομή Ομοίων Αντικειμένων σε Υποδοχές
1.2) Διανομή Διαφορετικών Αντικειμένων Χωρίς Σειρά σε Υποδοχές
1.3) Διανομή Διαφορετικών Αντικειμένων Με Σειρά σε Υποδοχές
2) Γνωστά Προβλήματα Διατάξεων
2.1) Εξίσωση
3) Μεθοδολογία Ασκήσεων
3.1) Διανομή Ομάδων Ομοίων
3.2) Διανομή Ομοίων με Περιορισμό
3.3) Διάταξη με Εμφύτευση Υποδοχών
Ασκήσεις
1) Θεωρήματα του Προτασιακού Λογισμού
1.1) Το Θεώρημα Απαγωγής
1.2) Το Θεώρημα Αντιθετοαναστροφής
1.3) Το Θεώρημα Απαγωγής σε Άτοπο
1.4) Το Θεώρημα Εγκυρότητας
1.5) Το Θεώρημα Πληρότητας
2) Τρία Σημαντικά Τυπικά Θεωρήματα
2.1) Το τυπικό Θεώρημα ⊢ φ→φ
2.2) Το τυπικό Θεώρημα ⊢φ→¬¬φ
2.3) Το τυπικό Θεώρημα ⊢ ¬¬ φ→φ
Ασκήσεις
1) Ορισμός Αλήθειας Tarski
1.1) Ο κανόνας της ισότητας
1.2) Ο κανόνας του κατηγορηματικού συμβόλου
1.3) Ο κανόνας του μονοθέσιου συνδέσμου ¬
1.4) Ο κανόνας του διθέσιου συνδέσμου ∧
1.5) Ο κανόνας του διθέσιου συνδέσμου ∨
1.6) Ο κανόνας του διθέσιου συνδέσμου →
1.7) Ο κανόνας του διθέσιου συνδέσμου ↔
1.8) Ο κανόνας του ποσοδείκτη ∀
1.9) Ο κανόνας του ποσοδείκτη ∃
2) Εύρεση Αλήθειας Τύπου
2.1) Μεθοδολογία
2.2) Παραδείγματα
3) Ικανοποιήσιμος Τύπος
3.1) Ορισμός
3.2) Παραδείγματα
4) Ικανοποιήσιμο Σύνολο Τύπων
4.1) Ορισμός
4.2) Παραδείγματα
5) Έγκυρος ή Λογικά Αληθής Τύπος
5.1) Ορισμός
5.2) Παραδείγματα
6) Λογική Συνεπαγωγή
6.1) Ορισμός
6.2) Παραδείγματα
Ασκήσεις
1) Σύνολο Τύπων
1.1) Ικανοποιήσιμο Σύνολο Τύπων
1.2) Μη Ικανοποιήσιμο Σύνολο Τύπων
2) Ταυτολογική Συνεπαγωγή
2.1) Συμβολισμός της ταυτολογίας
3) Ταυτολογικά Ισοδύναμοι Τύποι
Ασκήσεις
1) Εισαγωγικοί Ορισμοί
1.1) Κατευθυνόνομενο Γράφημα
1.2) Μονοπάτια
1.3) Κύκλοι
1.4) Έσω και Έξω Βαθμός Κορυφής
1.5) Απομονωμένη Κορυφή
1.6) Πλήρες Γράφημα
2) Η Γλώσσα των Κατευθυνόμενων Γραφημάτων
2.1) Η Γλώσσα των Κατευθυνόμενων Γραφημάτων
2.2) Ερμηνείες στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
3) Ασκήσεις στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
3.1) Μετάφραση στα Ελληνικά
3.2) Μετάφραση στα Κατηγορηματικά
3.3) Εύρεση Αλήθειας Προτάσεων
3.4) Εύρεση Ερμηνείας που ικανοποιεί δεδομένη πρόταση
3.5) Συντομογραφίες στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
Ασκήσεις
1) Εισαγωγικοί Ορισμοί
1.1) Μη Κατευθυνόνομενο Γράφημα
2) Ορισμοί στα Μη Κατευθυνόμενα Γραφήματα
2.1) Η Γλώσσα των Μη Κατευθυνόμενων Γραφημάτων
2.1) Η Γλώσσα των Μη Κατευθυνόμενων Γραφημάτων
2.2) Ερμηνείες στην Γλώσσα των Μη Κατευθυνόμενων Γραφημάτων
3) Ασκήσεις στην Γλώσσα των Μη Κατευθυνόμενων Γραφημάτων
3.1) Μετάφραση στα Ελληνικά
3.2) Μετάφραση στα Κατηγορηματικά
3.3) Εύρεση Αλήθειας Προτάσεων
3.4) Εύρεση Ερμηνείας που ικανοποιεί δεδομένη πρόταση
3.5) Συντομογραφίες στην Γλώσσα των Μη Κατευθυνόμενων Γραφημάτων.
Ασκήσεις
1) Ισομορφισμοί Γραφημάτων
1.1) Ισομορφικά Γραφήματα
1.2) Πως δείχνω ότι δύο γραφήματα είναι ισομορφικά
1.3) Πως δείχνω ότι δύο γραφήματα δεν είναι ισομορφικά
1.4) Αποδείξεις Αναλλοίωτων Ιδιοτήτων
2) Συμπληρωματικοί Ορισμοί
2.1) Αυτομορφισμός
2.2) Αυτοσυμπληρωματικό Γράφημα
Ασκήσεις
1) Διανομή σε Υποδοχές
1.1) Διανομή Ομοίων Αντικειμένων σε Υποδοχές
1.2) Διανομή Διαφορετικών Αντικειμένων Χωρίς Σειρά σε Υποδοχές
1.3) Διανομή Διαφορετικών Αντικειμένων Με Σειρά σε Υποδοχές
2) Γνωστά Προβλήματα Διατάξεων
2.1) Εξίσωση
3) Μεθοδολογία Ασκήσεων
3.1) Διανομή Ομάδων Ομοίων
3.2) Διανομή Ομοίων με Περιορισμό
3.3) Διάταξη με Εμφύτευση Υποδοχών
Ασκήσεις
1) Θεωρήματα του Προτασιακού Λογισμού
1.1) Το Θεώρημα Απαγωγής
1.2) Το Θεώρημα Αντιθετοαναστροφής
1.3) Το Θεώρημα Απαγωγής σε Άτοπο
1.4) Το Θεώρημα Εγκυρότητας
1.5) Το Θεώρημα Πληρότητας
2) Τρία Σημαντικά Τυπικά Θεωρήματα
2.1) Το τυπικό Θεώρημα ⊢ φ→φ
2.2) Το τυπικό Θεώρημα ⊢φ→¬¬φ
2.3) Το τυπικό Θεώρημα ⊢ ¬¬ φ→φ
Ασκήσεις
1) Ορισμός Αλήθειας Tarski
1.1) Ο κανόνας της ισότητας
1.2) Ο κανόνας του κατηγορηματικού συμβόλου
1.3) Ο κανόνας του μονοθέσιου συνδέσμου ¬
1.4) Ο κανόνας του διθέσιου συνδέσμου ∧
1.5) Ο κανόνας του διθέσιου συνδέσμου ∨
1.6) Ο κανόνας του διθέσιου συνδέσμου →
1.7) Ο κανόνας του διθέσιου συνδέσμου ↔
1.8) Ο κανόνας του ποσοδείκτη ∀
1.9) Ο κανόνας του ποσοδείκτη ∃
2) Εύρεση Αλήθειας Τύπου
2.1) Μεθοδολογία
2.2) Παραδείγματα
3) Ικανοποιήσιμος Τύπος
3.1) Ορισμός
3.2) Παραδείγματα
4) Ικανοποιήσιμο Σύνολο Τύπων
4.1) Ορισμός
4.2) Παραδείγματα
5) Έγκυρος ή Λογικά Αληθής Τύπος
5.1) Ορισμός
5.2) Παραδείγματα
6) Λογική Συνεπαγωγή
6.1) Ορισμός
6.2) Παραδείγματα
Ασκήσεις
1) Σύνολο Τύπων
1.1) Ικανοποιήσιμο Σύνολο Τύπων
1.2) Μη Ικανοποιήσιμο Σύνολο Τύπων
2) Ταυτολογική Συνεπαγωγή
2.1) Συμβολισμός της ταυτολογίας
3) Ταυτολογικά Ισοδύναμοι Τύποι
Ασκήσεις
- The document discusses strategies for improving an organization's performance including restructuring departments, improving processes, and training employees.
- Key recommendations include consolidating overlapping roles, streamlining procedures, and providing skills development opportunities for staff.
- The changes aim to gain efficiencies, reduce costs, and boost productivity across the organization.
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)Dimitris Psounis
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1.Διαχείριση Μνήμης
1.1.Στατική Δέσμευση Μνήμης
1.2.Στατική Δέσμευση Μνήμης για Συνήθεις Μεταβλητές
1.3.Στατική Δέσμευση Μνήμης για Αντικείμενα
2.Δυναμική Δέσμευση Μνήμης
2.1.Δείκτες (Υπενθύμιση από C)
2.2.Οι τελεστές new και delete
2.3.Δυναμική Δέσμευση για Συνήθεις Μεταβλητές
2.4.Δυναμική Δέσμευση για Αντικείμενα
2.5.Δυναμική Δέσμευση και Κατασκευαστές
3.Κλάσεις που περιέχουν δείκτες
3.1.Παράδειγμα κλάσης που περιέχει δείκτες
3.2.…και ένα πρόβλημα (χωρίς λύση για την ώρα)
4..Δυναμική Δέσμευση Μνήμης για Πίνακες
4.1.Μονοδιάστατοι πίνακες
4.2.Παράδειγμα δέσμευσης μνήμης για μονοδιάστατους πίνακες
4.3.Διδιάστατοι πίνακες
4.4.Παράδειγμα δέσμευσης μνήμης για διδιάστατους πίνακες
B. Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1.Διαχείριση Μνήμης
1.1.Στατική Δέσμευση Μνήμης
1.2.Στατική Δέσμευση Μνήμης για Συνήθεις Μεταβλητές
1.3.Στατική Δέσμευση Μνήμης για Αντικείμενα
2.Δυναμική Δέσμευση Μνήμης
2.1.Δείκτες (Υπενθύμιση από C)
2.2.Οι τελεστές new και delete
2.3.Δυναμική Δέσμευση για Συνήθεις Μεταβλητές
2.4.Δυναμική Δέσμευση για Αντικείμενα
2.5.Δυναμική Δέσμευση και Κατασκευαστές
3.Κλάσεις που περιέχουν δείκτες
3.1.Παράδειγμα κλάσης που περιέχει δείκτες
3.2.…και ένα πρόβλημα (χωρίς λύση για την ώρα)
4..Δυναμική Δέσμευση Μνήμης για Πίνακες
4.1.Μονοδιάστατοι πίνακες
4.2.Παράδειγμα δέσμευσης μνήμης για μονοδιάστατους πίνακες
4.3.Διδιάστατοι πίνακες
4.4.Παράδειγμα δέσμευσης μνήμης για διδιάστατους πίνακες
B. Ασκήσεις
Α. Θεωρία
1. Κλάσεις
1.1 Γενικά
1.2 Ορισμός Κλάσης
1.3 Δημόσια (public) στοιχεία της κλάσης
1.4 Ιδιωτικά (private) στοιχεία της κλάσης
1.5 Παράδειγμα (προδιαγραφές)
2 Περισσότερα για τις κλάσεις
2.1 Ορισμός Συναρτήσεων έξω από την Κλάση
2.2 Παρουσίαση Ιδιωτικών – Δημόσιων Μέλων μιας κλάσης
2.3 Χωρισμός σε Αρχεία
3. Ειδικές Μεθόδοι Κλάσεων
3.1 Γενικά
3.2 Κατασκευαστής (constructor)
3.3 Καταστροφέας (destructor)
3.4 Ελεγκτές Πρόσβασης (accessors)
B. Ασκήσεις
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Dimitris Psounis
Α. Θεωρία
1. Κλάσεις
1.1 Γενικά
1.2 Ορισμός Κλάσης
1.3 Δημόσια (public) στοιχεία της κλάσης
1.4 Ιδιωτικά (private) στοιχεία της κλάσης
1.5 Παράδειγμα (προδιαγραφές)
2 Περισσότερα για τις κλάσεις
2.1 Ορισμός Συναρτήσεων έξω από την Κλάση
2.2 Παρουσίαση Ιδιωτικών – Δημόσιων Μέλων μιας κλάσης
2.3 Χωρισμός σε Αρχεία
3. Ειδικές Μεθόδοι Κλάσεων
3.1 Γενικά
3.2 Κατασκευαστής (constructor)
3.3 Καταστροφέας (destructor)
3.4 Ελεγκτές Πρόσβασης (accessors)
B. Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1. Η Γλώσσα C++
1.1. Γενικά
1.2. Ιστορία – Εκδόσεις
1.3. Η αναγκαιότητα της C
1.4. Μεταγλωττιστές
2. Hello World!
2.1. Πηγαίος Κώδικας
2.2. Σχόλια
2.3. Βιβλιοθήκη iostream
2.4. main, block κώδικα, return
2.5 Είσοδος/Έξοδος
2.5.1. Έξοδος με την cout
2.5.2. Οδηγία using
2.5.3. Περισσότερα για την cout
2.5.4. Είσοδος με την cin
3. Στοιχεία της C
3.1. Μεταβλητές
3.2. Σταθερές
3.3. Τελεστές και η Δομή Ελέγχου
3.4. Δομές Επανάληψης
3.5. Συναρτήσεις
3.5.1. Πολυμορφισμός Συναρτήσεων
3.6. Πίνακες
3.7. Συμβολοσειρές
3.8. Δείκτες
B.Ασκήσεις
Εφαρμογή 1
Εφαρμογή 2
Εφαρμογή 3
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)Dimitris Psounis
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1. Η Γλώσσα C++
1.1. Γενικά
1.2. Ιστορία – Εκδόσεις
1.3. Η αναγκαιότητα της C
1.4. Μεταγλωττιστές
2. Hello World!
2.1. Πηγαίος Κώδικας
2.2. Σχόλια
2.3. Βιβλιοθήκη iostream
2.4. main, block κώδικα, return
2.5 Είσοδος/Έξοδος
2.5.1. Έξοδος με την cout
2.5.2. Οδηγία using
2.5.3. Περισσότερα για την cout
2.5.4. Είσοδος με την cin
3. Στοιχεία της C
3.1. Μεταβλητές
3.2. Σταθερές
3.3. Τελεστές και η Δομή Ελέγχου
3.4. Δομές Επανάληψης
3.5. Συναρτήσεις
3.5.1. Πολυμορφισμός Συναρτήσεων
3.6. Πίνακες
3.7. Συμβολοσειρές
3.8. Δείκτες
B.Ασκήσεις
Εφαρμογή 1
Εφαρμογή 2
Εφαρμογή 3
2. ΠΕΡΙΕΧΟΜΕΝΑ
Α. Σκοπός του Μαθήµατος
Β.Θεωρία
1. Συνδετικό ∆ένδρο
1. Ορισµός Συνδετικού ∆ένδρου
2. ∆ιάσχιση Πρώτα Κατά Πλάτος
3. ∆ιάσχιση Πρώτα Κατά Βάθος
2. Ελάχιστο Συνδετικό ∆ένδρο
1. Ορισµός Ελάχιστου Συνδετικού ∆ένδρου
2. Ο αλγόριθµος του Prim
3. Σύνοψη για τους Αλγόριθµους
1. Συντοµότερα Μονοπάτια
2. Συνδετικό ∆ένδρο
3. Ελάχιστο Συνδετικό ∆ένδρο
Γ. Λυµένες Ασκήσεις
∆. Ασκήσεις
1. Ασκήσεις Κατανόησης
2. Ερωτήσεις
3. Εφαρµογές
2∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
3. Α. Σκοπός του Μαθήµατος
Επίπεδο Α
Νέοι Ορισµοί (Συνδετικό ∆ένδρο, Ελάχιστο Συνδετικό ∆ένδρο και Αλγόριθµοι
Κατά Πλάτος, Κατά Βάθος, Prim)
Ασκήσεις: Ερωτήσεις
Ασκήσεις: Ασκήσεις Κατανόησης
Επίπεδο Β
Ασκήσεις: Εφαρµογές
Επίπεδο Γ
Ασκήσεις: Λυµένες Ασκήσεις
3∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
4. Παράδειγµα: Βλέπουµε ένα γράφηµα και δύο συνδετικά του δένδρα (ένα γράφηµα έχει πολλά
συνδετικά δένδρα)
B. Θεωρία
1. Συνδετικά ∆ένδρα
1. Ορισµός Συνδετικού ∆ένδρου
4∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Ορισµός:
• Σε ένα συνδεόµενο µη κατευθυνόµενο γράφηµα , ορίζουµε ως συνδετικό
δένδρο Τ (ή αλλιώς γεννητορικό ή επικαλυπτικό δένδρο) του γραφήµατος:
• Ένα υπογράφηµα του G που είναι δένδρο και περιέχει όλες τις κορυφές του G
, , ′ , ′′
5. Ένα συνδετικό δένδρο:
Είναι ένα δένδρο από τις κορυφές και τις ακµές του γραφήµατος
Άρα πρέπει να αφαιρέσουµε όσες ακµές απαιτούνται, ώστε το γράφηµα να είναι
συνδεόµενο και να έχει n-1 ακµές.
Και µαθαίνουµε δύο αλγόριθµους που βρίσκουν ένα ελάχιστο συνδετικό δένδρο του
γραφήµατος µε συστηµατικό τρόπο:
Τον αλγόριθµο διάσχισης πρώτα κατά πλάτος
Τον αλγόριθµο διάσχισης πρώτα κατά βάθος
B. Θεωρία
1. Συνδετικά ∆ένδρα
1. Ορισµός Συνδετικού ∆ένδρου
5∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
6. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (1.Σκιαγράφηση)
6∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Σκιαγράφηση Αλγόριθµου Πρώτα κατά Πλάτος:
«κατασκευή του δένδρου κατά επίπεδα»
Ο αλγόριθµος δέχεται ως είσοδο ένα συνδεόµενο γράφηµα και παράγει ένα
συνδετικό δένδρο.
Στην αρχικοποίηση:
Τοποθετούµε αυθαίρετα µία κορυφή στο συνδετικό δένδρο
Σε κάθε βήµα:
Επιλέγουµε τρέχουσα κορυφή (µε βάση την σειρά µε την οποία µπήκε
στο συνδετικό δένδρο)
Κάθε γειτονική της κορυφή που δεν έχει µπει στο δένδρο την θέτουµε ως
παιδί της (µε αυθαίρετη σειρά)
Τερµατισµός:
Όταν όλες οι κορυφές εισαχθούν στο δένδρο.
7. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Πλάτος
Βήµα 0: (Αυθαίρετα) τοποθετώ την v1 στο συνδετικό δένδρο
7∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
8. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Πλάτος
Βήµα 1: Εξετάζεται η v1. Οι γειτονές v2,v5 µπαίνουν σαν παιδιά της µε
(αυθαίρεση) σειρά.
8∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
9. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Πλάτος
Βήµα 2: Εξετάζεται η v2. Οι γείτονές της ανήκουν ήδη στο δένδρο.
9∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
10. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Πλάτος
Βήµα 3: Εξετάζεται η v5. Η γειτονική της κορυφή v3 (που δεν είναι ήδη στο
δένδρο) µπαίνει ως παιδί της.
10∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
11. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Πλάτος
Βήµα 4: Εξετάζεται η v3. Οι γειτονικές της κορυφές v4 v6 v8 v9 (που δεν είναι
ήδη στο δένδρο) µπαίνουν ως παιδιά της.
11∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
12. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Πλάτος
Βήµα 5: Εξετάζεται η v4. Οι γείτονές της ανήκουν ήδη στο δένδρο.
12∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
13. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Πλάτος
Βήµα 6: Εξετάζεται η v4. Οι γειτονικές της κορυφές v7 v10 (που δεν είναι ήδη
στο δένδρο) µπαίνουν ως παιδιά της. Ο αλγόριθµος τερµατίζει διότι όλες οι
κορυφές µπήκαν στο δένδρο!
13∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
14. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (3.Παρατηρήσεις)
14∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Κατά την εκτέλεση του αλγορίθµου ακολουθήσαµε δύο συµβάσεις:
Ξεκινήσαµε από την κορυφή v1
Τοποθετήσαµε τα παιδιά κάτω από την τρέχουσα κορυφή µε βάση την
ετικέτα τους (από την µικρότερη στην µεγαλύτερη ετικέτα)
Συχνά στις εκφωνήσεις των ασκήσεων µας δίνονται κανόνες για να µην
παίρνουµε αυθαίρετες αποφάσεις:
Μας δίνεται η κορυφή από την οποία θα ξεκινήσουµε (κορυφή-αφετηρία).
Μας δίνεται µια διάταξη των κορυφών ώστε να τοποθετούµε τα παιδιά µε
ένα µοναδικό τρόπο.
Χρησιµοποιούµε την διάταξη µόνο όταν πρόκειται να τοποθετήσουµε
τα παιδιά κάτω από την τρέχουσα κορυφή και τα τοποθετούµε µε τη
σειρά που τα βλέπουµε στη διάταξη.
15. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (3. Παρατηρήσεις)
Παράδειγµα Εκτέλεσης κάτω από συµβάσεις 1
Εκτέλεση µε αφετηρία τη v4. ∆ιάταξη κορυφών (v4 v7 v5 v2 v9 v10 v8 v1 v3 v6)
15∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
16. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (3. Παρατηρήσεις)
Παράδειγµα Εκτέλεσης κάτω από συµβάσεις 2
Εκτέλεση µε αφετηρία τη v9. ∆ιάταξη κορυφών (v4 v7 v10 v2 v9 v8 v5 v1 v3 v6)
16∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
17. Β. Θεωρία
1. Συνδετικά ∆ένδρα
2. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Πλάτος (4. Ψευδογλώσσα)
17∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 5.4: Ο αλγόριθµος του Dijkstra
-----------------------------------------
Αλγόριθµος Κατά Πλάτος
Είσοδος: Συνδεδεµένος Γράφος G=(V,E)
Έξοδος: Συνδετικό ∆ένδρο T=(V,E’) του G
-----------------------------------------
procedure Breadth-First-Searh(G=(V,E))
Θέσε V’=ᴓ, E’=ᴓ
Θέσε v1 στο V’ και στο επίπεδο 0. Θέσε i=0
Επανέλαβε όσο |V’|<|V| do
Θέσε i=i+1
Για κάθε κορυφή v του επιπέδου i-1 µε τη σειρά που µπήκαν στο επίπεδο
Για όλα τα (v,w)∈E και w∈V-V’
Θέσε (v,w) στο E’ και w στο V’ και στο επίπεδο i σύµφωνα µε τη
διάταξη κορυφών
Τέλος-Επανάληψης
Τέλος-Επανάληψης
Τέλος-Επανάληψης
Επέστρεψε το Τ
end procedure
18. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (1.Σκιαγράφηση)
18∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Σκιαγράφηση Αλγόριθµου Πρώτα κατά Βάθος:
«Βολίδα που εξερευνά το γράφο κατασκευάζοντας το συνδετικό δένδρο»
Ο αλγόριθµος δέχεται ως είσοδο ένα συνδεόµενο γράφηµα και παράγει ένα
συνδετικό δένδρο.
Στην αρχικοποίηση:
Τοποθετούµε την βολίδα σε µια (αυθαίρετη) κορυφή. Την κορυφή την
τοποθετούµε στο συνδετικό δένδρο
Σε κάθε βήµα:
Αν υπάρχει γειτονική κορυφή που δεν έχει επισκεφθεί, µεταβαίνει και την
τοποθετεί στο συνδετικό δένδρο µαζί µε την ακµή µετάβασης.
Αν δεν υπάρχει κορυφή που δεν έχει επισκεφθεί, πηγαίνει στην ακριβώς
προηγούµενη κορυφή που είχε επισκεφθεί.
Τερµατισµός:
Όταν όλες οι κορυφές εισαχθούν στο δένδρο.
19. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Βάθος
Βήµα 0: (Αυθαίρετα) τοποθετώ την v1 στο συνδετικό δένδρο
19∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
20. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Βάθος
Βήµα 1: Μετάβαση της βολίδας στην v2
20∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
21. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Βάθος
Βήµα 2: Μετάβαση της βολίδας στην v5
21∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
22. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Βάθος
Βήµα 3: Μετάβαση της βολίδας στην v3
22∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
23. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Βάθος
Βήµα 4: Μετάβαση της βολίδας στην v4
23∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
24. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Βάθος
Βήµα 5: Μετάβαση της βολίδας στην v6
24∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
25. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Βάθος
Βήµα 6: Μετάβαση της βολίδας στην v7
25∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
26. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Βάθος
Βήµα 7: Οπισθοδρόµηση βολίδας στην v6
26∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
27. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Βάθος
Βήµα 8: Μετάβαση της βολίδας στην v10
27∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
28. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Βάθος
Βήµα 9: Μετάβαση της βολίδας στην v9
28∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ
ΥΠΟ ΚΑΤΑΣΚΕΥΗ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
29. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (2. Παράδειγµα Εκτέλεσης)
Παράδειγµα Πρώτα Κατά Βάθος
Βήµα 10: Μετάβαση της βολίδας στην v8. Ο αλγόριθµος τερµατίζει γιατί όλες
οι κορυφές µπήκαν στο συνδετικό δένδρο.
29∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ
ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ ΤΗΣ ΚΑΤΑ ΒΑΘΟΣ
30. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (3.Παρατηρήσεις)
30∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Κατά την εκτέλεση του αλγορίθµου ακολουθήσαµε δύο συµβάσεις:
Ξεκινήσαµε από την κορυφή v1
Η βολίδα όταν είχε να επιλέξει σε ποιον γείτονα θα πάει διαλέγαµε την
κορυφή µε τον µικρότερο δείκτη κορυφής.
Συχνά στις εκφωνήσεις των ασκήσεων µας δίνονται κανόνες για να µην
παίρνουµε αυθαίρετες αποφάσεις:
Μας δίνεται η κορυφή από την οποία θα ξεκινήσουµε (κορυφή-αφετηρία).
Μας δίνεται µια διάταξη των κορυφών για την ιεράρχιση των κορυφών
Χρησιµοποιούµε την διάταξη µόνο όταν η βολίδα επιλέγει τον γείτονα
που θα επισκεφθεί και συγκεκριµένα επιλέγει τον γείτονα που είναι
αριστερότερα στη διάταξη.
31. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (3. Παρατηρήσεις)
Παράδειγµα Εκτέλεσης κάτω από συµβάσεις 1
Εκτέλεση µε αφετηρία τη v4. ∆ιάταξη κορυφών (v4 v7 v5 v2 v9 v8 v10 v1 v3 v6)
31∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
32. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (3. Παρατηρήσεις)
Παράδειγµα Εκτέλεσης κάτω από συµβάσεις 2
Εκτέλεση µε αφετηρία τη v9. ∆ιάταξη κορυφών (v4 v7 v10 v2 v9 v8 v5 v1 v3 v6)
32∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
ΓΡΑΦΗΜΑ
ΣΥΝΔΕΤΙΚΟ ΔΕΝΔΡΟ
33. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (4. Ψευδογλώσσα)
33∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 5.4: Ο αλγόριθµος του Dijkstra
-----------------------------------------
Αλγόριθµος Κατά Βάθος
Είσοδος: Συνδεδεµένος Γράφος G=(V,E)
Έξοδος: Συνδετικό ∆ένδρο T=(V,E’) του G
-----------------------------------------
procedure Depth-First-Searh(G=(V,E))
Θέσε V’=ᴓ, E’=ᴓ
Θέσε v1 στο V’ και w=v1
Επανέλαβε όσο |V’|<|V| do
Αν (w,vk)∈E µε vk∉V’ και k το µικρότερo δυνατό
Θέσε vk στο V’
Θέσε (w,vk) στο Ε΄
w=vk
Αλλιώς
Θέσε w=πατέρας του w στο Τ
Τέλος αν
Τέλος-Επανάληψης
Επέστρεψε το Τ
end procedure
34. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (3.Παρατηρήσεις)
34∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Οι αλγόριθµοι Κατά Βάθος και Κατά Πλάτος λέγονται και «διασχίσεις» γιατί
δίνουν µια ακολουθία (σειρά) επίσκεψης όλων των κορυφών του γραφήµατος.
Η διάσχιση είναι η σειρά µε την οποία µπήκαν στο συνδέτικο δένδρο
Οι διασχίσεις των 3 εκτελέσεων της κατά πλάτος των προηγούµενων
παραδειγµάτων:
v1 v2 v5 v3 v4 v6 v8 v9 v7 v10
v4 v3 v6 v5 v9 v8 v7 v10 v2 v1
v9 v10 v8 v3 v6 v4 v5 v7 v2 v1
Ενώ αντίστοιχα οι διασχίσεις των 3 εκτελέσεων της κατά βάθος των
προηγούµενων παραδειγµάτων:
v1 v2 v5 v3 v4 v6 v7 v10 v9 v8
v4 v3 v5 v2 v1 v9 v8 v10 v6 v7
v9 v10 v6 v4 v3 v8 v5 v2 v1 v7
35. Β. Θεωρία
1. Συνδετικά ∆ένδρα
3. Ο Αλγόριθµος ∆ιάσχισης Πρώτα κατά Βάθος (3.Παρατηρήσεις)
35∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Γενικές Παρατηρήσεις για τις διασχίσεις:
Ένα γράφηµα έχει συνδετικό δένδρο αν και µόνο αν είναι συνδεόµενο
Ένα γράφηµα µπορεί να έχει πολλά συνδετικά δένδρα.
Ένα δένδρο έχει µόνο ένα συνδετικό δένδρο (τον εαυτό του)
Ισχύει επίσης ότι:
Η κατά πλάτος διάσχιση παράγει το δένδρο συντοµότερων µονοπατιών
από την αφετηρία, όταν όλα τα βάρη είναι ίσα.
36. Παράδειγµα: Βλέπουµε ένα γράφηµα και τρία συνδετικά του δένδρα.
• Το T1 είναι ελάχιστο συνδετικό δένδρο (δηλαδή µεταξύ όλων των συνδετικών δένδρων είναι αυτό
που οι ακµές του έχουν ελάχιστο άθροισµα βαρών)
• Τα Τ2,Τ3 είναι συνδετικά δένδρα, αλλά όχι ελάχιστα συνδετικά δένδρα.
Ο αλγόριθµος του Prim υπολογίζει το ελάχιστο συνδετικό δένδρο ενός γραφήµατος.
B. Θεωρία
2. Ελάχιστο Συνδετικό ∆ένδρο
1. Ορισµός Συνδετικού ∆ένδρου
36∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Ορισµός:
• Σε ένα συνδεόµενο µη κατευθυνόµενο γράφηµα , , ) ορίζουµε ως ελάχιστο
συνδετικό δένδρο Τ (ή αλλιώς ελάχιστο γεννητορικό ή ελάχιστο επικαλυπτικό
δένδρο) του γραφήµατος:
• Ένα υπογράφηµα του G που είναι δένδρο, περιέχει όλες τις κορυφές του G και
έχει ελάχιστο βάρος (άθροισµα βαρών των ακµών του)
, W 5
11
2
4
3
11 3 1
2
4
11
4
W 7 W 6
37. B. Θεωρία
2. Ελάχιστο Συνδετικό ∆ένδρο
2. Ο αλγόριθµος του Prim (1. Σκιαγράφηση)
37∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.3: Άπληστοι Αλγόριθµοι
Σκιαγράφηση Αλγόριθµου Prim:
Στην αρχικοποίηση:
Τοποθετούµε αυθαίρετα µια κορυφή στο συνδετικό δένδρο
Σε κάθε βήµα:
Υποψήφιες ακµές για να µπουν στο συνδετικό δένδρο είναι εκείνες οι
ακµές που έχουν το ένα τους άκρο στο υπο κατασκευή συνδετικό
δένδρο και το άλλο τους άκρο εκτός του συνδετικού δένδρου.
Επιλέγεται η ακµή µε το ελάχιστο βάρος από τις υποψήφιες
Η ακµή εισάγεται στο δένδρο καθώς και το άκρο της που δεν ανήκε στο
δένδρο.
Τερµατισµός:
Όταν όλες οι κορυφές εισαχθούν στο δένδρο.
38. 38∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.3: Άπληστοι Αλγόριθµοι
Ξεκινάµε αυθαίρετα από την κορυφή v1
Βήµα 0:
V1 µπαίνει στο δένδρο
V1
v2 v4
v3
v6
v7
9
4
2
6
7
1
3 9
2
7
1
5
v5
B. Θεωρία
2. Ελάχιστο Συνδετικό ∆ένδρο
2. Ο αλγόριθµος του Prim (2. Παράδειγµα Εκτέλεσης)
39. 39∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.3: Άπληστοι Αλγόριθµοι
Βήµα 1:
V3 µπαίνει στο δένδρο
V1
v2 v4
v3
v6
v7
9
4
2
6
7
1
3 9
2
7
1
5
v5
B. Θεωρία
2. Ελάχιστο Συνδετικό ∆ένδρο
2. Ο αλγόριθµος του Prim (2. Παράδειγµα Εκτέλεσης)
40. 40∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.3: Άπληστοι Αλγόριθµοι
Βήµα 2:
V5 µπαίνει στο δένδρο
V1
v2 v4
v3
v6
v7
9
4
2
6
7
1
3 9
2
7
1
5
v5
B. Θεωρία
2. Ελάχιστο Συνδετικό ∆ένδρο
2. Ο αλγόριθµος του Prim (2. Παράδειγµα Εκτέλεσης)
41. 41∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.3: Άπληστοι Αλγόριθµοι
Βήµα 3:
V6 µπαίνει στο δένδρο
V1
v2 v4
v3
v6
v7
9
4
2
6
7
1
3 9
2
7
1
5
v5
B. Θεωρία
2. Ελάχιστο Συνδετικό ∆ένδρο
2. Ο αλγόριθµος του Prim (2. Παράδειγµα Εκτέλεσης)
42. 42∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.3: Άπληστοι Αλγόριθµοι
Βήµα 4:
V2 µπαίνει στο δένδρο
V1
v2 v4
v3
v6
v7
9
4
2
6
7
1
3 9
2
7
1
5
v5
B. Θεωρία
2. Ελάχιστο Συνδετικό ∆ένδρο
2. Ο αλγόριθµος του Prim (2. Παράδειγµα Εκτέλεσης)
43. 43∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.3: Άπληστοι Αλγόριθµοι
Βήµα 5:
V7 µπαίνει στο δένδρο
V1
v2 v4
v3
v6
v7
9
4
2
6
7
1
3 9
2
7
1
5
v5
B. Θεωρία
2. Ελάχιστο Συνδετικό ∆ένδρο
2. Ο αλγόριθµος του Prim (2. Παράδειγµα Εκτέλεσης)
44. Βήµα 5:
V4 µπαίνει στο δένδρο
Τέλος Αλγορίθµου. Βάρος Ελάχιστου συνδετικού ∆ένδρου: 4+2+1+2+5+1=15
44∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.3: Άπληστοι Αλγόριθµοι
V1
v2 v4
v3
v6
v7
9
4
2
6
7
1
3 9
2
7
1
5
v5
B. Θεωρία
2. Ελάχιστο Συνδετικό ∆ένδρο
2. Ο αλγόριθµος του Prim (2. Παράδειγµα Εκτέλεσης)
45. B. Θεωρία
2. Ελάχιστο Συνδετικό ∆ένδρο
2. Ο αλγόριθµος του Prim (3. Ψευδογλώσσα)
45∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.3: Άπληστοι Αλγόριθµοι
-----------------------------------------
Αλγόριθµος Prim
Είσοδος: Συνδεδεµένος Γράφος G=(V,E,W)
Έξοδος: Ελαχιστο Συνδετικό ∆ένδρο T=(V,E’) του G
-----------------------------------------
procedure Prim(G=(V,E,W))
V’={v1}
while |V’|<|V| do
Βρες την ακµή (v,w)∈E µε v∈V’, w∈V-V’ µε το ελάχιστο βάρος
Θέσε (v,w) στο Ε’ και w στο V’
end while
return T=(V’,E’)
end procedure
46. Β. Θεωρία
2. Ελάχιστα Συνδετικά ∆ένδρα
2. Ο αλγόριθµος του Prim (4.Παρατηρήσεις)
46∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Παρατηρήσεις:
Το ελάχιστο συνδετικό δένδρο δεν είναι µοναδικό. Ο αλγόριθµος του Prim
παράγει ένα ελάχιστο συνδετικό δένδρο. Το ελάχιστο συνδετικό δένδρο είναι
µοναδικό αν όλα τα βάρη είναι διαφορετικά (Εφαρµογή 4)
Η επιλογή της αφετηρίας είναι αυθαίρετη.
Σε περίπτωση ισοπαλίας (δύο ή περισσότερες προς επιλογή ακµές µε το
ίδιο ελάχιστο βάρος) αυθαίρετα επιλέγουµε κάποια από αυτές.
Ιδιότητες ελαχίστων συνδετικών δένδρων:
Αν πολλαπλασιάσουµε κάθε ακµή µε το ίδιο θετικό ακέραιο βάρος, το
ελάχιστο συνδετικό δένδρο διατηρείται (Εφαρµογή 1)
Αν προσθέσουµε σε κάθε ακµή το ίδιο θετικό ακέραιο βάρος, το ελάχιστο
συνδετικό δένδρο διατηρείται (Έφαρµογή 2)
47. Β. Θεωρία
3. Σύνοψη για τους Αλγόριθµους
1. Συντοµότερα Μονοπάτια
47∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Τα συντοµότερα µονοπάτια σε ένα γράφο υπολογίζονται από
Τον αλγόριθµο του Dijkstra
Αν όλα τα βάρη είναι ίδια, τότε το ελάχιστο συνδετικό δένδρο υπολογίζεται και
από:
Τον αλγόριθµο διάσχισης κατά πλάτος
Επίσης:
Αν πολλαπλασιάσουµε κάθε ακµή µε το ίδιο θετικό ακέραιο βάρος, το
συντοµότερο µονοπάτι διατηρείται!
Αν προσθέσουµε σε κάθε ακµή το ίδιο θετικό ακέραιο βάρος, το
συντοµότερο µονοπάτι δεν διατηρείται!
Ο Dikjkstra δεν δουλεύει µε αρνητικά βάρη
48. Β. Θεωρία
3. Σύνοψη για τους Αλγόριθµους
2. Ελάχιστο Συνδετικό ∆ένδρο
48∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Το ελάχιστο συνδετικό δένδρο σε ένα γράφο υπολογίζεται από
Τον αλγόριθµο του Prim
Αν όλα τα βάρη είναι ίδια, τότε τα συντοµότερα µονοπάτια υπολογίζονται και:
Τον αλγόριθµο διάσχισης κατά πλάτος
Τον αλγόριθµο διάσχισης κατά βάθος
Τον αλγόριθµο του Dijkstra (όταν αφήνω να οριστικοποιηθούν όλες οι
κορυφές)
Επίσης:
Αν πολλαπλασιάσουµε κάθε ακµή µε το ίδιο θετικό ακέραιο βάρος, το
ελάχιστο συνδετικό δένδρο διατηρείται!
Αν προσθέσουµε σε κάθε ακµή το ίδιο θετικό ακέραιο βάρος, το ελάχιστο
συνδετικό δένδρο διατηρείται!
Ο Prim δουλεύει µε αρνητικά βάρη
49. Β. Θεωρία
3. Σύνοψη για τους Αλγόριθµους
3. Συνδετικό ∆ένδρο
49∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Το συνδετικό δένδρο σε ένα γράφο υπολογίζεται από
Τον αλγόριθµο Κατά Πλάτος
Τον αλγόριθµο Κατά Βάθος
Επίσης ένα συνδετικό δένδρο του γραφήµατος υπολογίζεται και από:
Τον αλγόριθµο του Prim
Τον αλγόριθµο του Dijkstra (όταν αφήνω να οριστικοποιηθούν όλες οι
κορυφές)
50. Β. Θεωρία
3. Σύνοψη για τους Αλγόριθµους
50∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Dijkstra Prim Κατά
Βάθος
Κατά
Πλάτος
Συντοµότερα
Μονοπάτια
√
× × Αν όλα τα
βάρη ίδια:
√
Ελάχιστο
Συνδετικό
∆ένδρο
Αν όλα τα
βάρη ίδια:
√ √
Αν όλα τα
βάρη ίδια:
√
Αν όλα τα
βάρη ίδια:
√
Συνδετικό
∆ένδρο
√ √
√ √
(23)>0: ∆εν διατηρείται
(4 3)>0: ∆ιατηρείται
(23)>0: ∆ιατηρείται
(4 3)>0: ∆ιατηρείται
Αρν.Βάρη:× Αρν.Βάρη: √
51. ∆. Ασκήσεις
Άσκηση Κατανόησης 1
51∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
∆ίνεται ο παρακάτω γράφος µε διάταξη
κορυφών {v1,d,v12}
Α) Να βρείτε ένα συνδετικό δένδρο του
γράφου κάνοντας µια κατά πλάτος διάσχιση
του γράφου µε αρχική κορυφή την v1. Είναι
το δένδρο που θα βρείτε ένα ελάχιστο
συνδετικό δένδρο του γράφου;
Β) Να βρείτε ένα συνδετικό δένδρο του
γράφου κάνοντας µια κατά βάθος διάσχιση
του γράφου µε αρχική κορυφή την v12. Είναι
το δένδρο που θα βρείτε ένα ελάχιστο
συνδετικό δένδρο του γράφου;
V2
V7
V1
V12
V6
V11
V3
V10V9
V4
V8
V5
2 2
1 4 5
3
3 2 7 6
8 13
2
2
9
4
6 5
7
4 85
2 519
52. ∆. Ασκήσεις
Άσκηση Κατανόησης 2
52∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Για τον παρακάτω γράφο G=(V,E), |V|=n, |E|=m, να βρείτε το ελάχιστο συνδετικό δέντρο
δείχνοντας τα βήµατα κατασκευής του:
Α) Χρησιµοποιώντας τον αλγόριθµο του Prim (ξεκινώντας από την κορυφή G).
Β) Χρησιµοποιώντας τον αλγόριθµο του Kruskal που περιγράφεται παρακάτω:
1. ∅←T
2. ∆ιάταξε τις ακµές του γράφου κατά αύξουσα σειρά βάρους:
)()()( 21 mewewew ≤≤≤ L
3. Ενόσω το T έχει λιγότερες από n-1 ακµές
4. εάν το }{ ieT ∪ δεν περιέχει κύκλο θέσε }{: ieTT ∪=
5. Τέλος-Ενόσω
A
B
C G
F
HED
2
3
8
6
5
4
9
1 14
7 11
10
13
12
53. ∆. Ασκήσεις
Άσκηση Κατανόησης 3
53∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Υποθέτουµε ότι ο G=(V,E) είναι συνδεόµενος απλός γράφος κάθε ακµή του οποίου έχει
διαφορετικό βάρος. Αποδείξτε τα ακόλουθα:
Α) Η ακµή µε το δεύτερο µικρότερο βάρος ανήκει στο ελάχιστο συνδετικό δέντρο του G.
B) Η ακµή µε το τρίτο µικρότερο βάρος δεν ανήκει απαραίτητα στο ελάχιστο συνδετικό
δέντρο του G (δώστε αντιπαράδειγµα).
54. ∆. Ασκήσεις
Άσκηση Κατανόησης 4
54∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Α
1
8
11
4
9
5
10
911
Ζ
Ε
Γ
Β ∆
Για τον διπλανό γράφο βρείτε το ελάχιστο
συνδετικό δέντρο (δείχνοντας τα βήµατα
κατασκευής του):
α) Χρησιµοποιώντας τον αλγόριθµο του
Prim.
β) Χρησιµοποιώντας τον αλγόριθµο του
Kruskal.
γ) Πόσα διαφορετικά ελάχιστα συνδετικά δέντρα έχει ο γράφος;
55. ∆. Ασκήσεις
Ερωτήσεις 1
55∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Στο παρακάτω γράφηµα µε βάρη εµφανίζονται µε
έντονες γραµµές οι ακµές ενός τµήµατος Ελάχιστου
Συνδετικού ∆ένδρου κατά την κατασκευή του από
τον αλγόριθµο του Prim. Ποιες από τις παρακάτω
προτάσεις είναι αληθείς;
1. Η επόµενη ακµή που θα προστεθεί θα είναι η
(v5, v6).
2. Η µεθεπόµενη ακµή που θα προστεθεί θα είναι
η (v5, v6).
3. Η επόµενη ακµή που θα προστεθεί θα είναι η
(v4, v7).
4. Η ακµή (v1, v7) δεν µετέχει σε κανένα ελάχιστο
συνδετικό δένδρο.
38 6
2
107
5 4 1
6
2
V1 V2
V3
V4V5
V6
V7
1
56. ∆. Ασκήσεις
Ερωτήσεις 2
56∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Έστω ένα συνδεόµενο γράφηµα µε n κορυφές στο οποίο όλες οι ακµές έχουν το ίδιο
βάρος. Τότε στο γράφηµα αυτό:
1. Κάθε σύνολο n – 1 ακµών αποτελεί ένα Ελάχιστο Συνδετικό ∆έντρο.
2. Ο αλγόριθµος διάσχισης κατά πλάτος επιστρέφει ένα Ελάχιστο Συνδετικό ∆έντρο.
3. Ο αλγόριθµος διάσχισης κατά βάθος επιστρέφει ένα Ελάχιστο Συνδετικό ∆έντρο.
4. Τα (2) και (3) αλλά µόνο όταν το γράφηµα δεν έχει κύκλους.
57. ∆. Ασκήσεις
Ερωτήσεις 3
57∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Εκτελούµε τους αλγόριθµους αναζήτησης κατά πλάτος και
αναζήτησης κατά βάθος στο γράφηµα του διπλανού
σχήµατος θεωρώντας ως διάταξη κορυφών την u1, u2, u3,
u4, u5. Ποιες από τις παρακάτω προτάσεις αληθεύουν και
ποιες όχι;
1. Υπάρχει µια διάταξη κορυφών για την οποία η
αναζήτηση κατά πλάτος παράγει δέντρο ύψους 3.
2. Στο δέντρο που παράγει η αναζήτηση κατά πλάτος, η
κορυφή u3 είναι παιδί της κορυφής u2.
3. Υπάρχει µια διάταξη κορυφών µε πρώτη κορυφή την
u1 για την οποία η αναζήτηση κατά βάθος παράγει
δέντρο µε διαφορετικό ύψος από αυτό που παράγει
για την διάταξη u1, u2, u3, u4, u5.
4. Στο δέντρο που παράγει η αναζήτηση κατά βάθος, οι
κορυφές u4 και u5 είναι παιδιά της κορυφής u2.
58. ∆. Ασκήσεις
Ερωτήσεις 4
58∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Ποιες από τις παρακάτω προτάσεις αληθεύουν και ποιες όχι;
1. Ο αλγόριθµος διάσχισης κατά πλάτος παράγει το ίδιο δέντρο όταν εφαρµόζεται
στο Kn και στον κύκλο µε n κορυφές.
2. Ο αλγόριθµος διάσχισης κατά βάθος παράγει το ίδιο δέντρο όταν εφαρµόζεται στο
Kn και στον κύκλο µε n κορυφές.
3. Οι αλγόριθµοι διάσχισης κατά βάθος και διάσχισης κατά πλάτος παράγουν το ίδιο
δέντρο όταν εφαρµόζονται στο Kn .
4. Ο αλγόριθµος διάσχισης κατά πλάτος µπορεί να χρησιµοποιηθεί για τον
υπολογισµό του συντοµότερου µονοπατιού από µια κορυφή s σε µια κορυφή t
όταν όλες οι ακµές του γραφήµατος έχουν το ίδιο βάρος.
59. ∆. Ασκήσεις
Εφαρµογή 1
59∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Έστω ένα µη κατευθυνόµενο γράφηµα G=(V,E,W) µε διαφορετικά θετικά βάρη στις
ακµές και έστω Τ το µοναδικό ελάχιστο συνδετικό του δένδρο. Να δείξετε ότι το Τ
παραµένει ελάχιστο συνδετικό δένδρο του G αν πολλαπλασιάσουµε µε τον ίδιο θετικό
ακέραιο αριθµό το βάρος κάθε ακµής του γραφήµατος.
60. ∆. Ασκήσεις
Εφαρµογή 2
60∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Έστω ένα µη κατευθυνόµενο γράφηµα G=(V,E,W) µε διαφορετικά θετικά βάρη στις
ακµές και έστω Τ το µοναδικό ελάχιστο συνδετικό του δένδρο. Να δείξετε ότι το Τ
παραµένει ελάχιστο συνδετικό δένδρο του G αν προσθέσουµε τον ίδιο θετικό ακέραιο
αριθµό στο βάρος κάθε ακµής του γραφήµατος.
61. ∆. Ασκήσεις
Εφαρµογή 3
61∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
Θεωρούµε ένα γράφηµα G=(V,E,W) µε θετικά βάρη στις ακµές. Θέλουµε να βρούµε ένα
ελάχιστο συνδετικό δένδρο στο οποίο όµως πρέπει µια δεδοµένη ακµή να
περιλαµβάνεται οπωσδήποτε (ανεξάρτητα από το βάρος της). Μετατρέψτε τον
αλγόριθµο του Prim ώστε να επιλύει αυτό το πρόβληµα.
62. ∆. Ασκήσεις
Εφαρµογή 4
62∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
1. ∆ώστε (περιγράφοντας µε σαφήνεια τα βήµατα του) έναν αλγόριθµο ο οποίος µε
είσοδο ένα απλό, συνδεόµενο, µη κατευθυνόµενο γράφηµα θα αποφασίζει αν
περιέχει ή όχι κύκλο.
2. Πως µπορείτε να τροποποιήσετε τον αλγόριθµο του (1) ώστε να δουλεύει αν το
γράφηµα δεν είναι κατ’ ανάγκην συνδέοµενο.
63. ∆. Ασκήσεις
Εφαρµογή 5
63∆ηµήτρης Ψούνης, ΠΛΗ20, Μάθηµα 6.2: Συνδετικά ∆ένδρα
∆είξτε ότι αν όλα τα βάρη ενός συνδεόµενου µη κατευθυνόµενου γραφήµατος είναι
διαφορετικά, τότε το ελάχιστο συνδετικό δένδρο είναι µοναδικό.