Δένδρα. συνεκτικό μη κατευθυνόμενο γράφημα που δεν περιέχει απλά κυκλώματα

Σχετικά έγγραφα
Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

Δένδρα. συνεκτικό μη κατευθυνόμενο γράφημα που δεν περιέχει απλά κυκλώματα

Θέματα υπολογισμού στον πολιτισμό

Αλγόριθμοι εύρεσης ελάχιστων γεννητικών δέντρων (MST)

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1

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

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

ΠΛΗ 20, 6 η ΟΣΣ: Δέντρα Εξετάσεις

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

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

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

Ελάχιστο Συνδετικό Δέντρο

Ελάχιστο Συνδετικό Δέντρο

Το πρόβλημα μονοδρόμησης (The One-Way Street Problem)

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

Ελάχιστο Συνδετικό έντρο

Ελάχιστο Συνδετικό Δέντρο

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

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

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

Ελάχιστο Συνδετικό έντρο

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

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

Αλγόριθμοι ελαχιστοποίησης κατανάλωσης ενέργειας σε ασύρματα αδόμητα δίκτυα

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π.

Αλγόριθμοι ελαχιστοποίησης κατανάλωσης ενέργειας σε ασύρματα αδόμητα δίκτυα

2 ) d i = 2e 28, i=1. a b c

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 3: Δένδρα

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Αναζήτηση Κατά Πλάτος

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βάλια

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

Πανεπιστήμιο Στερεάς Ελλάδας Τμήμα Πληροφορικής Εξάμηνο ΣΤ ΘΕΩΡΙΑ ΓΡΑΦΩΝ

Αλγόριθμοι ελαχιστοποίησης κατανάλωσης ενέργειας σε ασύρματα αδόμητα δίκτυα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ουρές Προτεραιότητας. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Αναζήτηση Κατά Πλάτος

Αναζήτηση Κατά Πλάτος

Βασικές Έννοιες Θεωρίας Γραφημάτων

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

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

Αναζήτηση Κατά Πλάτος

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

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

Διδάσκων: Κωνσταντίνος Κώστα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Ασκήσεις στους Γράφους. 2 ο Σετ Ασκήσεων. Δέντρα

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

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

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

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

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

Βασικές Έννοιες Θεωρίας Γραφημάτων

Επαναληπτικές Ασκήσεις. Ρίζου Ζωή

ιακριτά Μαθηµατικά και Μαθηµατική Λογική ΠΛΗ20 Ε ρ γ α σ ί α 4η Θεωρία Γραφηµάτων

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

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

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

ΑΣΚΗΣΗ 1 Για τις ερωτήσεις 1-4 θεωρήσατε τον ακόλουθο γράφο. Ποιές από τις παρακάτω προτάσεις αληθεύουν και ποιές όχι;

Θεωρία Πληροφορίας. Διάλεξη 4: Διακριτή πηγή πληροφορίας χωρίς μνήμη. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 3 : Γραφήματα & Αποδείξεις. Αλέξανδρος Τζάλλας

Επιχειρησιακή Έρευνα I

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

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

ΔΕΝΔΡΙΚΑ ΓΡΑΦΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 3

1 Διάσχιση κατευθυνόμενων γραφημάτων

Ειδικά θέματα σε κινητά και ασύρματα δίκτυα

Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα

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

Κεφ.11: Ευρετήρια και Κατακερματισμός

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

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

Αναζήτηση στους γράφους. - Αναζήτηση η κατά βάθος Συνεκτικές Συνιστώσες - Αλγόριθμος εύρεσης συνεκτικών συνιστωσών

Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem

Εισαγωγή στην Επιστήμη των Υπολογιστών

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

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

(elementary graph algorithms)

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

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

Θεωρία Γραφημάτων: Ορολογία και Βασικές Έννοιες

Θεωρία Γραφημάτων: Ορολογία και Βασικές Έννοιες

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

Transcript:

Δένδρα

Δένδρα Ειδική κατηγορία γραφημάτων: συνεκτικά γραφήματα που δεν περιέχουν απλά κυκλώματα [1857] Arthur Cayley: για απαρίθμηση ορισμένων ειδών χημικών ενώσεων Χρησιμοποιούνται σε πληθώρα προβλημάτων, όπως: Εντοπισμός αντικειμένων σε λίστα Κωδικοποίηση (π.χ., Huffman) για κατασκευή αποδοτικών κωδίκων για μετάδοση και αποθήκευση δεδομένων Μελέτη παιχνιδιών (π.χ., ντάμα, σκάκι, κτλ) για καθορισμό νικητήριων στρατηγικών Κατασκευή μοντέλων διαδικασιών που εκτελούνται με χρήση σειράς αποφάσεων Συστηματική εξερεύνηση κορυφών γραφημάτων: αναζήτηση κατά πλάτος (breadth-first search) και κατά βάθος (depth-first search)

Δένδρα συνεκτικό μη κατευθυνόμενο γράφημα που δεν περιέχει απλά κυκλώματα

Δένδρα συνεκτικό μη κατευθυνόμενο γράφημα που δεν περιέχει απλά κυκλώματα

Δένδρα συνεκτικό μη κατευθυνόμενο γράφημα που δεν περιέχει απλά κυκλώματα

Δάση Γραφήματα που δεν περιέχουν απλά κυκλώματα ΑΛΛΑ μπορεί να μην είναι συνεκτικά Κάθε μια από τις συνεκτικές τους συνιστώσες είναι δένδρο Ένα γράφημα με 3 συνεκτικές συνιστώσες

Μη κατευθυνόμενο γράφημα Τ είναι δένδρο υπάρχει μοναδικό απλό μονοπάτι μεταξύ 2 οποιωνδήποτε κορυφών του Απόδειξη (μέρος Ι) Αν Τ δένδρο Τ συνεκτικό γράφημα χωρίς απλά κυκλώματα Έστω ότι x και y κορυφές του Τ Επειδή Τ συνεκτικό υπάρχει απλό μονοπάτι μεταξύ των x και y Το μονοπάτι αυτό είναι μοναδικό Αν ΔΕΝ ήταν θα δημιουργούταν κύκλωμα

Μη κατευθυνόμενο γράφημα Τ είναι δένδρο υπάρχει μοναδικό απλό μονοπάτι μεταξύ 2 οποιωνδήποτε κορυφών του Απόδειξη (μέρος ΙΙ) Αν υπάρχει μοναδικό μονοπάτι μεταξύ 2 οποιωνδήποτε κορυφών του Τ Τ συνεκτικό αφού υπάρχει διαδρομή μεταξύ οποιωνδήποτε 2 κορυφών του Επιπλέον, το Τ δε μπορεί να περιέχει απλά κυκλώματα Αν το Τ περιείχε απλό κύκλωμα με τις κορυφές x και y θα υπήρχαν 2 απλά μονοπάτια μεταξύ των κορυφών αυτών (άτοπο)

Ριζωμένο δένδρο Ρίζα του δένδρου: μία συγκεκριμένη κορυφή του Υπάρχει μοναδικό μονοπάτι από τη ρίζα προς οποιαδήποτε κορυφή του δένδρου υπάρχει κατεύθυνση από τη ρίζα προς τις υπόλοιπες κορυφές Δένδρο + ρίζα του = κατευθυνόμενο γράφημα που καλείται ριζωμένο δένδρο

Ριζωμένο δένδρο Μπορούμε να αλλάξουμε δένδρο χωρίς ρίζα σε ριζωμένο δένδρο Επιλέγοντας διαφορετική ρίζα λαμβάνουμε διαφορετικό ριζωμένο δένδρο Κατά το σχεδιασμό: Η ρίζα τοποθετείται στο ψηλότερο σημείο Παραλείπονται τα βέλη γιατί η κατεύθυνση υπονοείται

Δένδρα Η ορολογία προέρχεται από βοτανική και γενεολογία ρίζα Γονέας της h Απόγονοι της b Παιδί της g Αδέλφια της h Φύλλα (δεν έχουν παιδιά)_

Δένδρα Η ορολογία προέρχεται από βοτανική και γενεολογία Εσωτερικές κορυφές (έχουν παιδιά) Υποδένδρο

Παράδειγμα Να βρεθεί Ο γονέας της c Τα παιδιά της g Τα αδέλφια της h Όλοι οι πρόγονοι της e Όλοι οι απόγονοι της b Όλες οι εσωτερικές κορυφές Όλα τα φύλλα Ποιο είναι το υποδένδρο με ρίζα στην κορυφή b;

Παράδειγμα Να βρεθεί Ο γονέας της c Τα παιδιά της g Τα αδέλφια της h Όλοι οι πρόγονοι της e Όλοι οι απόγονοι της b Όλες οι εσωτερικές κορυφές Όλα τα φύλλα Ποιο είναι το υποδένδρο με ρίζα στην κορυφή b;

Παράδειγμα Να βρεθεί Ο γονέας της c Τα παιδιά της g Τα αδέλφια της h Όλοι οι πρόγονοι της e Όλοι οι απόγονοι της b Όλες οι εσωτερικές κορυφές Όλα τα φύλλα Ποιο είναι το υποδένδρο με ρίζα στην κορυφή b;

Παράδειγμα Να βρεθεί Ο γονέας της c Τα παιδιά της g Τα αδέλφια της h Όλοι οι πρόγονοι της e Όλοι οι απόγονοι της b Όλες οι εσωτερικές κορυφές Όλα τα φύλλα Ποιο είναι το υποδένδρο με ρίζα στην κορυφή b;

Παράδειγμα Να βρεθεί Ο γονέας της c Τα παιδιά της g Τα αδέλφια της h Όλοι οι πρόγονοι της e Όλοι οι απόγονοι της b Όλες οι εσωτερικές κορυφές Όλα τα φύλλα Ποιο είναι το υποδένδρο με ρίζα στην κορυφή b;

Παράδειγμα Να βρεθεί Ο γονέας της c Τα παιδιά της g Τα αδέλφια της h Όλοι οι πρόγονοι της e Όλοι οι απόγονοι της b Όλες οι εσωτερικές κορυφές Όλα τα φύλλα Ποιο είναι το υποδένδρο με ρίζα στην κορυφή b;

Παράδειγμα Να βρεθεί Ο γονέας της c Τα παιδιά της g Τα αδέλφια της h Όλοι οι πρόγονοι της e Όλοι οι απόγονοι της b Όλες οι εσωτερικές κορυφές Όλα τα φύλλα Ποιο είναι το υποδένδρο με ρίζα στην κορυφή b;

Παράδειγμα Να βρεθεί Ο γονέας της c Τα παιδιά της g Τα αδέλφια της h Όλοι οι πρόγονοι της e Όλοι οι απόγονοι της b Όλες οι εσωτερικές κορυφές Όλα τα φύλλα Ποιο είναι το υποδένδρο με ρίζα στην κορυφή b;

Παράδειγμα Να βρεθεί Ο γονέας της c Τα παιδιά της g Τα αδέλφια της h Όλοι οι πρόγονοι της e Όλοι οι απόγονοι της b Όλες οι εσωτερικές κορυφές Όλα τα φύλλα Ποιο είναι το υποδένδρο με ρίζα στην κορυφή b;

Ριζωμένα δένδρα τάξης m Κάθε εσωτερική κορυφή δεν έχει περισσότερα από m παιδιά Το δένδρο ονομάζεται πλήρες αν κάθε εσωτερική κορυφή έχει ακριβώς m παιδιά m=2: πλήρες δυαδικό δένδρο (complete binary tree)

Ριζωμένα δένδρα τάξης m Κάθε εσωτερική κορυφή δεν έχει περισσότερο από m παιδιά Το δένδρο ονομάζεται πλήρες αν κάθε εσωτερική κορυφή έχει ακριβώς m παιδιά m=2: πλήρες δυαδικό δένδρο (complete binary tree)

Τα δένδρα ως μοντέλα Τα δένδρα χρησιμοποιούνται για να μοντελοποιήσουν ιεραρχία Χημεία Οργανισμοί Σύστημα αρχείων Η/Υ

Τα δένδρα ως μοντέλα: χημεία [1857] Arthur Cayley (Κέλι) Απαρίθμηση των ισομερών χημικών ενώσεων που ονόμασε κορεσμένους υδρογονάνθρακες (CnH2n+2) Βουτάνιο Ισοβουτάνιο

Τα δένδρα ως μοντέλα: παράσταση οργανισμών

Τα δένδρα ως μοντέλα: συστήματα αρχείων Η/Υ φάκελοι αρχεία

Δένδρο με n κορυφές έχει n-1 ακμές Απόδειξη με επαγωγή ΒΑΣΙΚΟ ΒΗΜΑ: όταν n=1, δένδρο με 1 κορυφή δεν έχει ακμές (άρα πλήθος ακμών = 0) ΕΠΑΓΩΓΙΚΗ ΥΠΟΘΕΣΗ: Έστω ότι ισχύει πως κάθε δένδρο με k κορυφές έχει k-1 ακμές, όπου k θετικός ακέραιος ΕΠΑΓΩΓΙΚΟ ΒΗΜΑ: Έστω δένδρο με k+1 κορυφές. Διαλέγουμε αυθαίρετο φύλλο του και διαγράφουμε το φύλλο αυτό και την ακμή που το συνδέει με το γονέα του λαμβάνουμε ένα νέο γράφημα με k κορυφές λόγω Ε.Υ. το γράφημα αυτό θα έχει k-1 ακμές Επιπλέον, το γράφημα αυτό παραμένει συνεκτικό και χωρίς κύκλους είναι δένδρο Προσθέτοντας ξανά το φύλλο και την ακμή που απομακρύναμε πριν έχουμε δένδρο με k+1 κορυφές και k-1+1=k ακμές

Πλήρες δένδρο τάξης m με i εσωτερικές κορυφές περιέχει n=m*i+1 κορυφές ΓΙΑΤΙ; Κάθε κορυφή εκτός από τη ρίζα είναι παιδί κάποιας εσωτερικής κορυφής Υπάρχουν m*i τέτοιες κορυφές + ρίζα = m*i +1 κορυφές συνολικά

Ύψος δένδρου Επίπεδο μιας κορυφής σε ένα ριζωμένο δένδρο: το μήκος της μοναδικής διαδρομής από τη ρίζα προς την κορυφή αυτή Επίπεδο ρίζας = 0 Ύψος ριζωμένο δένδρου: το μέγιστο των επιπέδων των κορυφών Ύψος = 4

Υπάρχουν το πολύ m h φύλλα σε δένδρο τάξης m ύψους h m m 2 m 3 Για πλήρες δυαδικό δένδρο με ύψος h και k φύλλα ισχύει k=2 h h=logk logk: λογάριθμος του k - σε ποια δύναμη πρέπει να υψώσω το 2 για να πάρω k; Π.χ., log16=4 γιατί 2 4 =16

Πλήρες δυαδικό δένδρο με Ν φύλλα έχει 2*Ν-1 κορυφές 1=2 0 2=2 1 4=2 2 8=2 3 Επίπεδο 1 Επίπεδο 2 Επίπεδο 3 Επίπεδο 4 Ν Επίπεδο logn Συνολικά, υπάρχουν 1+2+4+8+ +Ν κορυφές = 2 0 +2 1 +2 2 +2 3 + +2 logν Έχουμε άθροισμα των logn πρώτων όρων γεωμετρικής προόδου με λόγο 2 = 1-2 logn+1 /1-2=2 logn+1-1= 2*2 logn -1=2*N-1

Άσκηση: ποια από τα γραφήματα είναι δένδρα;

Άσκηση: ποια από τα γραφήματα είναι δένδρα;

Άσκηση

Άσκηση Να αποδειχθεί ότι απλό γράφημα είναι δένδρο αν και μόνον αν είναι συνεκτικό αλλά η διαγραφή οποιασδήποτε ακμής του δίνει γράφημα που δεν είναι συνεκτικό (α) Αν έχουμε γράφημα που είναι δένδρο είναι συνεκτικό και έχει μοναδικό μονοπάτι μεταξύ οποιωνδήποτε 2 κορυφών του Απομακρύνοντας 1 αυθαίρετη ακμή δεν υπάρχει πλέον μονοπάτι μεταξύ των κορυφών στα άκρα της ακμής αυτής το γράφημα που προκύπτει ΔΕΝ είναι πλέον συνεκτικό (β) Έστω ότι έχουμε συνεκτικό γράφημα και η διαγραφή οποιασδήποτε ακμής του δίνει γράφημα που δεν είναι συνεκτικό μεταξύ οποιωνδήποτε 2 κορυφών του υπάρχει μοναδικό μονοπάτι το εν λόγω γράφημα είναι δένδρο

Ασκήσεις Πόσες ακμές έχει δένδρο με 10.000 κορυφές; 10.000-1=9.999 ακμές Πόσες ακμές έχει πλήρες δένδρο τάξης 5 με 100 εσωτερικές κορυφές; 5*100=500 ακμές Πόσες ακμές έχει πλήρες δυαδικό δένδρο με 1.000 εσωτερικές κορυφές; 2*1.000=2.000 ακμές Είτε να σχεδιαστεί πλήρες δυαδικό δένδρο με 100 φύλλα και ύψος 7, είτε να αποδειχθεί ότι δεν υπάρχει αυτό το δένδρο Επειδή 100 2 7 =128 δε μπορεί να κατασκευαστεί το ζητούμενο δένδρο

Εφαρμογές: δένδρα δυαδικής αναζήτησης (binary search trees) Αναζήτηση αντικειμένων σε ταξινομημένο κατάλογο Χρησιμοποιούμε δένδρο δυαδικής αναζήτησης Δυαδικό δένδρο Κάθε παιδί κορυφής ορίζεται σα δεξιό ή σαν αριστερό παιδί Καμία κορυφή δεν έχει περισσότερα από ένα δεξιό ή ένα αριστερό παιδί Κάθε κορυφή ονομάζεται με ένα κλειδί που είναι ένα από τα αντικείμενα

Εφαρμογές: δένδρα δυαδικής αναζήτησης (binary search trees) Αναδρομική διαδικασία κατασκευής δένδρου δυαδικής αναζήτησης Ξεκινάμε με δένδρο που περιέχει μία μόνο κορυφή: τη ρίζα το πρώτο αντικείμενο του καταλόγου ονομάζεται κλειδί της ρίζας Για να προσθέσουμε νέο αντικείμενο, το συγκρίνουμε με τα κλειδιά των κορυφών που ήδη βρίσκονται στο δένδρο ξεκινώντας από τη ρίζα και πηγαίνοντας προς τα αριστερά (εφόσον υπάρχει αριστερό παιδί) αν το αντικείμενο είναι μικρότερο από το κλειδί της αντίστοιχης κορυφής Αν δεν υπάρχει αριστερό παιδί, εισάγουμε νέα κορυφή με το αντικείμενο σαν κλειδί της τα δεξιά (εφόσον υπάρχει δεξιό παιδί) αν το αντικείμενο είναι μεγαλύτερο από το κλειδί της αντίστοιχης κορυφής Αν δεν υπάρχει δεξιό παιδί, εισάγουμε νέα κορυφή με το αντικείμενο σαν κλειδί της

Εφαρμογές: δένδρα δυαδικής αναζήτησης (binary search trees) Σχηματισμός δένδρου δυαδικής αναζήτησης για τις λέξεις mathematics, physics, geography, zoology, meteorology, geology, psychology, chemistry με χρήση αλφαβητικής σειράς

Εφαρμογές: δένδρα αποφάσεων (decision trees) Κατασκευή μοντέλων προβλημάτων όπου μια σειρά αποφάσεων οδηγεί σε λύση Π.χ., εντοπισμός αντικειμένων σε βάση δεδομένων μέσω σειράς συγκρίσεων Κάθε σύγκριση υποδεικνύει αν έχει εντοπιστεί το αντικείμενο ή αν θα πρέπει να αναζητηθεί στο αριστερό ή δεξί υποδένδρο Δένδρο αποφάσεων: ριζωμένο δένδρο όπου Κορυφή = απόφαση Υποδένδρα κορυφής = δυνατά αποτελέσματα της απόφασης αυτής Δυνατές λύσεις = μονοπάτια προς τα φύλλα Χρησιμοποιούμε δένδρο δυαδικής αναζήτησης Δυαδικό δένδρο Κάθε παιδί κορυφής ορίζεται σα δεξιό ή σαν αριστερό παιδί Καμία κορυφή δεν έχει περισσότερα από ένα δεξιό ή ένα αριστερό παιδί Κάθε κορυφή ονομάζεται με ένα κλειδί που είναι ένα από τα αντικείμενα

Εφαρμογές: δένδρα αποφάσεων (decision trees) Έστω ότι υπάρχουν 7 νομίσματα που όλα έχουν το ίδιο βάρος και 1 κάλπικο νόμισμα που ζυγίζει λιγότερο από τα άλλα. Πόσες ζυγίσεις χρειάζονται με μια ζυγαριά για να προσδιορίσουμε ποιο από τα 8 νομίσματα είναι το κάλπικο; Κάθε ζύγιση έχει 3 πιθανά αποτελέσματα Και οι δύο δίσκοι της ζυγαριάς δείχνουν το ίδιο βάρος Ο αριστερά δίσκος δείχνει μεγαλύτερο βάρος Ο δεξιά δίσκος δείχνει μεγαλύτερο βάρος το δένδρο αποφάσεων για το πρόβλημα είναι τάξης 3 Στο δένδρο αποφάσεων υπάρχουν 8 φύλλα που αναπαριστούν τα 8 δυνατά αποτελέσματα: 1 από τα 8 νομίσματα είναι το κάλπικο Το μέγιστο πλήθος απαιτούμενων ζυγίσεων είναι το ύψος, h, ενός πλήρους δένδρου τάξης 3 με 8 φύλλα Ισχύει h άνω ακέραιο μέρος log τάξη δένδρουφύλλα h= άνω ακέραιο μέρος log38 = άνω ακέραιο μέρος 1,892789261=2 Θα χρειαστούν τουλάχιστον 2 ζυγίσεις

Εφαρμογές: δένδρα αποφάσεων (decision trees) Έστω ότι υπάρχουν 7 νομίσματα που όλα έχουν το ίδιο βάρος και 1 κάλπικο νόμισμα που ζυγίζει λιγότερο από τα άλλα. Πόσες ζυγίσεις χρειάζονται με μια ζυγαριά για να προσδιορίσουμε ποιο από τα 8 νομίσματα είναι το κάλπικο; Πώς γίνονται οι ζυγίσεις αυτές;

Εφαρμογές: δένδρα αποφάσεων (decision trees) Ειδική περίπτωση: Δυαδικές συγκρίσεις συγκρίνω 2 στοιχεία κάθε φορά Δένδρο αποφάσεων για σύγκριση των στοιχείων της λίστας a,b,c

Εφαρμογές: κωδικοποίηση Huffman Δεδομένο: συχνότητες εμφάνισης συνόλου χαρακτήρων (π.χ., σε ένα κείμενο) Ζητούμενο: ανάθεση δυαδικών ακολουθιών (με 0 και 1) στους χαρακτήρες ώστε να ελαχιστοποιείται συνολικά το πλήθος των χρησιμοποιούμενων συμβόλων (0/1) Λύση: προτάθηκε από το David Huffman to 1951 όταν ήταν μεταπτυχιακός φοιτητής στο ΜΙΤ Εγγυάται το ελάχιστο μέσο πλήθος bit / σύμβολο DAVID A. HUFFMAN (1925 1999)

Εφαρμογές: κωδικοποίηση Huffman Ξεκινάμε από τη διαταγμένη (από το μικρότερο στο μεγαλύτερo) λίστα των συμβόλων με βάση τις συχνότητες εμφάνισής τους Ενώνουμε τα δύο αριστερότερα στοιχεία σε ένα νέο δένδρο όπου η ρίζα έχει τιμή ίση με το άθροισμα των τιμών των παιδιών της Το αριστερό παιδί είναι ο χαρακτήρας με τη μεγαλύτερη συχνότητα και το δεξιό παιδί είναι ο χαρακτήρας με τη μικρότερη συχνότητα Η ακμή μεταξύ ρίζας και αριστερού παιδιού επιγράφεται με 0 ενώ η ακμή μεταξύ ρίζας και δεξιού παιδιού επιγράφεται με 1 Τοποθετούμε το νέο κατασκεύασμα-δένδρο στη σωστή θέση στην λίστα με τα στοιχεία συμβόλων Σταματάμε όταν έχει σχηματιστεί 1 μοναδικό δένδρο Διαβάζοντας τις επιγραφές του μονοπατιού που οδηγεί από τη ρίζα σε κάθε σύμβολο λαμβάνουμε τη δυαδική κωδικοποίηση του συμβόλου αυτού

Μέσο πλήθος bit/σύμβολο=2,45

Εφαρμογές: δένδρα παιγνίων Δένδρα παιγνίων: δένδρα που χρησιμοποιούνται για την ανάλυση παιχνιδιών όπως η τρίλιζα, η ντάμα, το σκάκι, κτλ Υπάρχουν 2 παίκτες που παίζουν ο ένας μετά τον άλλον (ακολουθιακά) Κάθε παίκτης γνωρίζει τις κινήσεις που έκανε ο άλλος χωρίς να μαντεύει (δεν υπεισέρχεται η τύχη) Κορυφές: θέσεις που μπορεί να βρίσκεται το παιχνίδι καθώς εξελίσσεται Για οικονομία χώρου, συμμετρικές θέσεις του παιχνιδιού συμπεριλαμβάνονται στην ίδια κορυφή Κορυφές άρτιων επιπέδων: κουτάκια Στα άρτια επίπεδα παίζει ο πρώτος παίκτης Κορυφές περιττών επιπέδων: κύκλοι Στα περιττά επίπεδα παίζει ο δεύτερος παίκτης Ακμές: έγκυρες κινήσεις μεταξύ των θέσεων αυτών Ρίζα: θέση εκκίνησης Φύλλα: τελικές θέσεις παιχνιδιού Αναθέτουμε τιμή σε κάθε φύλλο που δείχνει τη βαθμολογία του πρώτου παίκτη όταν το παιχνίδι τελειώνει στη θέση αυτή

Εφαρμογές: δένδρα παιγνίων

Άσκηση Να κατασκευαστεί δένδρο δυαδικής αναζήτησης για τις λέξεις: banana, peach, apple, pear, coconut, mango, papaya με χρήση αλφαβητικής σειράς

Άσκηση Πόσες ζυγίσεις με ζυγαριά χρειάζονται για να βρεθεί το κάλπικο ανάμεσα σε 4 νομίσματα, αν το κάλπικο νόμισμα είναι είτε ελαφρύτερο είτε βαρύτερο από τα άλλα; ζυγίσεις Περιγράψτε τρόπο (δηλ., αλγόριθμο) εντοπισμού του κάλπικου νομίσματος Συγκρίνω τα 1 και 2 1-3 = 1-3 = = Το 3 κάλπικο Το 2 κάλπικο Το 4 κάλπικο Το 1 κάλπικο

Άσκηση a: 11; b: 101; c: 100; d: 01; e: 00; 2.25 bits

Άσκηση

Γεννητικά δέντρα (Spanning Trees) Το γράφημα δείχνει το οδικό δίκτυο στην πολιτεία Maine των ΗΠΑ Για να διατηρούνται ανοιχτοί οι δρόμοι το χειμώνα πρέπει να εκχιονίζονται συχνά Η υπηρεσία πολιτικής προστασίας θέλει να καθαρίζει τους λιγότερους δυνατούς δρόμους ώστε να υπάρχει πάντα σύνδεση μεταξύ οποιωνδήποτε 2 πόλεων Πώς γίνεται αυτό;

Γεννητικά δέντρα (Spanning Trees) Τουλάχιστον 5 δρόμοι πρέπει να εκχιονιστούν για να υπάρχει πάντα επικοινωνία μεταξύ οποιωνδήποτε 2 πόλεων Το υπογράφημα που δείχνει αυτούς τους δρόμους είναι δέντρο αφού είναι συνεκτικό και περιέχει 6 κορυφές και 5 ακμές Το πρόβλημα λύθηκε με ένα συνεκτικό υπογράφημα με ελάχιστο πλήθος ακμών που περιέχει όλες τις κορυφές του αρχικού γραφήματος Ένα τέτοιο γράφημα πρέπει να είναι δέντρο

Γεννητικά δέντρα (Spanning Trees) Έστω G απλό γράφημα Ένα γεννητικό δέντρο (spanning tree) στο G είναι ένα υπογράφημα του G που είναι δέντρο και περιέχει όλες τις κορυφές του G Απλό γράφημα που περιέχει spanning tree είναι συνεκτικό αφού στο spanning tree υπάρχει μονοπάτι μεταξύ οποιωνδήποτε 2 κορυφών Ισχύει και το αντίστροφο: κάθε συνεκτικό απλό γράφημα περιέχει ένα spanning tree

Παράδειγμα Να βρεθεί spanning tree στο παρακάτω απλό γράφημα Χ Χ Χ

Παράδειγμα Να βρεθεί spanning tree στο παρακάτω απλό γράφημα Υπάρχουν κι άλλα spanning trees για το G

Απλό γράφημα είναι συνεκτικό αν και μόνον αν περιέχει ένα spanning tree Έστω απλό γράφημα G που περιέχει ένα spanning tree T το T περιέχει όλες τις κορυφές του G υπάρχει μονοπάτι μεταξύ οποιωνδήποτε 2 κορυφών του T Επειδή το T είναι υπογράφημα του G στο G υπάρχει μονοπάτι μεταξύ οποιωνδήποτε 2 κορυφών του το G είναι συνεκτικό

Απλό γράφημα είναι συνεκτικό αν και μόνον αν περιέχει ένα spanning tree Έστω G απλό γράφημα που είναι συνεκτικό Αν το G δεν είναι δέντρο περιέχει κύκλωμα Αφαιρούμε μια ακμή e από το κύκλωμα Το υπογράφημα που προκύπτει έχει 1 ακμή λιγότερη αλλά περιέχει όλες τις κορυφές του G και είναι συνεκτικό αφού κάθε ζευγάρι κορυφών που συνδέεται με μονοπάτι που περιέχει την e συνδέεται και με μονοπάτι που δεν την περιέχει Αν το νέο υπογράφημα δεν είναι δέντρο περιέχει κύκλωμα Όπως πριν, αφαιρούμε μια ακμή e1 από το κύκλωμα και συνεχίζουμε έτσι έως ότου δεν υπάρχει κύκλωμα Αυτό είναι δυνατόν αφού υπάρχει πεπερασμένο πλήθος ακμών στο γράφημα Η διαδικασία τερματίζει όταν δεν υπάρχουν κυκλώματα Τελικά, παράγεται δέντρο αφού το γράφημα παραμένει συνεκτικό μετά την απομάκρυνση των ακμών Το δέντρο αυτό είναι spanning tree αφού περιέχει όλες τις κορυφές του G

Spanning trees: ΙP multicasting Τα spanning trees είναι σημαντικά για multicasting σε δίκτυα IP Για να σταλούν δεδομένα από κάποιον υπολογιστή-πηγή σε πολλούς υπολογιστές-προορισμούς τα δεδομένα μπορούν να σταλούν χωριστά σε κάθε υπολογιστή-προορισμό Η διαδικασία λέγεται unicasting και είναι αναποδοτική γιατί πολλά αντίγραφα των ίδιων δεδομένων μεταδίδονται στο δίκτυο Για να γίνει αποδοτικότερη η διαδικασία χρησιμοποιείται IP multicasting IP multicasting: ο υπολογιστής-πηγή στέλνει ένα αντίγραφο των δεδομένων στο δίκτυο και το αντίγραφο τελικά προωθείται σε όλους τους υπολογιστές-προορισμούς

Spanning trees: ΙP multicasting Για να ληφθούν τα δεδομένα όσο γρηγορότερα γίνεται δεν πρέπει να υπάρχουν ανακυκλώσεις (δηλ., κύκλοι ή κυκλώματα) στο μονοπάτι που ακολουθούν τα δεδομένα στο δίκτυο όταν τα δεδομένα φτάσουν σε κάποιον υπολογιστή (router) δεν πρέπει να επιστρέψουν ποτέ σε αυτόν Για την αποφυγή ανακυκλώσεων χρησιμοποιούνται αλγόριθμοι που κατασκευάζουν ένα spanning tree στο γράφημα που περιέχει τον υπολογιστή-πηγή, ενδιάμεσους υπολογιστές (routers) και τους υπολογιστές-προορισμούς ως κορυφές και τους συνδέσμους μεταξύ υπολογιστών ως ακμές Ρίζα του spanning tree είναι ο υπολογιστής-πηγή Οι υπολογιστές-προορισμοί είναι τα φύλλα του δέντρου

Πώς βρίσκουμε spanning trees σε γραφήματα; Αντί να παράγουμε spanning trees σβήνοντας ακμές (μη αποδοτικό γιατί πρέπει να εντοπιστούν όλα τα απλά κυκλώματα) χτίζουμε spanning trees προσθέτοντας ακμές DFS (Depth First Search) BFS (Breadth First Search)

Πώς διασχίζουμε ένα γράφημα; Τρόπος 1: Ξεκινάμε από μία κορυφή και μέσω επίσκεψης της γειτονιάς επισκεπτόμαστε ολόκληρο το γράφημα: Αναζήτηση κατά πλάτος (Breadth-First Search-BFS) Τρόπος 2: Ξεκινάμε από μία κορυφή και επισκεπτόμαστε το πρώτο της παιδί και προχωράμε μέχρι να φτάσουμε σε κορυφή που δεν έχει παιδιά μετά επιστρέφουμε στην πρώτη κορυφή που δεν έχουμε επεξεργαστεί και κάνουμε το ίδιο - Αναζήτηση κατά βάθος (Depth- First Search-DFS)

Κατασκευή spanning tree με DFS Διαλέγουμε αυθαίρετη κορυφή του γραφήματος να είναι η ρίζα του spanning tree Σχηματίζουμε μονοπάτι ξεκινώντας από τη ρίζα και προσθέτοντας κορυφές και ακμές ώστε κάθε ακμή που προστίθεται να πρόσκειται στην τελευταία κορυφή στο μονοπάτι και σε κάποια κορυφή εκτός του ήδη σχηματισμένου μονοπατιού συνεχίζοντας όσο γίνεται Αν το μονοπάτι που προκύπτει περνάει από όλες τις κορυφές του γραφήματος αποτελεί ένα spanning tree Αν το μονοπάτι που προκύπτει δεν περνάει από όλες τις κορυφές του γραφήματος πρέπει να προστεθούν και άλλες κορυφές και ακμές Επιστρέφουμε στην προτελευταία κορυφή του μονοπατιού και ξεκινώντας από αυτήν - αν γίνεται - χτίζουμε ένα νέο μονοπάτι που περνάει από κορυφές που δεν έχουν επισκεφθεί ακόμα Αν αυτό δεν γίνεται, επιστρέφουμε στην προ-προτελευταία κορυφή και ξαναδοκιμάζουμε Συνεχίζουμε με τον ίδιο τρόπο έως ότου δεν μπορούν να προστεθούν άλλες ακμές Επειδή το γράφημα είναι συνεκτικό και έχει πεπερασμένο πλήθος ακμών η διαδικασία τερματίζει με την παραγωγή ενός spanning tree Η DFS αναζήτηση λέγεται και backtracking, γιατί ο αλγόριθμος επιστρέφει σε κορυφές που έχει ήδη επισκεφθεί για να προσθέσει νέα μονοπάτια

Κατασκευή spanning tree με DFS

Κατασκευή spanning tree με DFS Time complexity: Ο(e) ή Ο(n 2 ) e= E, n= V Για να χτίσουμε το spanning tree επισκεπτόμαστε κάθε ακμή το πολύ 2 φορές Για κάθε γράφημα ισχύει: e n(n 1)/2 (ΓΙΑΤΙ;)

Κατασκευή spanning tree με ΒFS Διαλέγουμε αυθαίρετη κορυφή για να είναι η ρίζα του spanning tree που θα κατασκευάσουμε Στη συνέχεια, προσθέτουμε στο spanning tree όλες τις ακμές που πρόσκεινται στην κορυφή αυτή Οι κορυφές που προστίθενται σε αυτό το βήμα διατάσσονται αυθαίρετα και αποτελούν κορυφές επιπέδου 1 στο spanning tree Για κάθε κορυφή επιπέδου 1 προσθέτουμε στο spanning tree κάθε προσκείμενη ακμή της εφόσον δεν δημιουργεί κύκλωμα Διατάσσουμε αυθαίρετα τα παιδιά κάθε κορυφής επιπέδου 1 τα οποία αποτελούν τις κορυφές επιπέδου 2 στο spanning tree Συνεχίζουμε με τον ίδιο τρόπο έως ότου προστεθούν όλες οι κορυφές του γραφήματος στο spanning tree Η διαδικασία τερματίζει αφού υπάρχει πεπερασμένο πλήθος ακμών στο γράφημα Παράγεται spanning tree αφού δημιουργήσαμε δέντρο που περιέχει όλες τις κορυφές του γραφήματος

Κατασκευή spanning tree με ΒFS

Κατασκευή spanning tree με ΒFS Time complexity: Ο(e) ή Ο(n 2 ) e= E, n= V Για να χτίσουμε το spanning tree επισκεπτόμαστε κάθε ακμή το πολύ 2 φορές Για κάθε γράφημα ισχύει: e n(n 1)/2 (ΓΙΑΤΙ;)

Back tracking: Sums of Subsets Sums of Subsets Δίνεται σύνολο θετικών ακεραίων x 1, x 2,..., x n Ζητείται υποσύνολο αυτού του συνόλου ακεραίων με έχει άθροισμα ίσο με M Πώς μπορούμε να χρησιμοποιήσουμε backtracking για να λύσουμε το πρόβλημα αυτό;

Back tracking: Sums of Subsets Ξεκινάμε με μηδενικό άθροισμα Χτίζουμε το άθροισμα προσθέτοντας όρους Ένας ακέραιος από την ακολουθία προστίθεται ως όρος αν το άθροισμα παραμένει μικρότερο του M με την πρόσθεση του ακεραίου στο τρέχον άθροισμα Αν προκύψει το άθροισμα μεγαλύτερο από το ζητούμενο επιστρέφουμε (backtrack) και εξαιρούμε τον τελευταίο όρο του αθροίσματος

Back tracking: Sums of Subsets Μια λύση με χρήση backtracking στο πρόβλημα εύρεσης υποσυνόλου του {31, 27, 15, 11, 7, 5} με άθροισμα ίσο με 39

DFS σε κατευθυνόμενα γραφήματα Ο αλγόριθμος για DFS (και για BFS) μπορεί να τροποποιηθεί ώστε να τρέχει και για κατευθυνόμενα γραφήματα Ωστόσο, θα παράγει σαν αποτέλεσμα όχι απαραίτητα spanning tree αλλά σίγουρα spanning forest Προσθέτουμε ακμή εφόσον εξέρχεται από κάποια κορυφή που επισκεπτόμαστε και κατευθύνεται προς κορυφή που δεν έχει ακόμα προστεθεί Αν σε κάποιο βήμα του αλγορίθμου δεν υπάρχει ακμή που να ξεκινάει από κάποια ήδη προστεθειμένη κορυφή και να καταλήγει σε κορυφή που δεν έχει προστεθεί ακόμα, η νέα κορυφή που προστίθεται αποτελεί τη ρίζα ενός νέου δέντρου στο spanning forest

DFS σε κατευθυνόμενα γραφήματα

Εφαρμογή DFS/BFS search στο Web Μηχανές Αναζήτησης - Web Spiders Για τη δημιουργία ευρετηρίων για τα websites, οι μηχανές αναζήτησης (π.χ., Google, Yahoo) εξερευνούν συστηματικά το Web ξεκινώντας από γνωστά sites Χρησιμοποιούν προγράμματα που λέγονται Web Spiders ή crawlers ή bots που επισκέπτονται websites και αναλύουν το περιεχόμενό τους Οι Web Spiders χρησιμοποιούν DFS και BFS για τη δημιουργία ευρετηρίων (indices) Οι Web pages και οι σύνδεσμοι μεταξύ τους μοντελοποιούνται με κατευθυνόμενο γράφημα που λέγεται Web graph Web pages κορυφές, σύνδεσμοι ακμές

Εφαρμογή DFS/BFS search στο Web Μηχανές Αναζήτησης - Web Spiders Με χρήση DFS, επιλέγεται μια αρχική Web page, ακολουθείται εφόσον υπάρχει - ένας σύνδεσμος (link) σε μια επόμενη Web page και μετά ένας σύνδεσμος σε μια άλλη Web page και η διαδικασία συνεχίζεται έως ότου δεν υπάρχουν άλλοι σύνδεσμοι Χρησιμοποιείται backtracking για την εξέταση συνδέσμων στο προηγούμενο επίπεδο Για πρακτικούς λόγους οι Web Spiders έχουν περιορισμούς στο βάθος της αναζήτησης Με χρήση BFS, επιλέγεται μια αρχική Web page, ακολουθείται εφόσον υπάρχει - ένας σύνδεσμος (link) σε μια επόμενη Web page, μετά ακολουθείται κάποιος άλλος σύνδεσμος στην αρχική σελίδα κ.ο.κ. μέχρι να εξαντληθούν όλοι οι σύνδεσμοι της αρχικής σελίδας Μετά ακολουθούνται οι σύνδεσμοι σε σελίδες του επόμενου επιπέδου κ.τ.λ.

Ελάχιστα Γεννητικά Δέντρα (Minimum Spanning Trees - MST) Μια εταιρεία σχεδιάζει να φτιάξει ένα δίκτυο για να συνδέσει τα 5 υπολογιστικά κέντρα της Κάθε ζευγάρι υπολογιστικών κέντρων μπορεί να συνδεθεί με μισθωμένη γραμμή Ποιες συνδέσεις πρέπει να επιλέξει ώστε να υπάρχει μονοπάτι ανάμεσα σε οποιαδήποτε 2 υπολογιστικά κέντρα και να ελαχιστοποιείται το συνολικό κόστος;

Ελάχιστα Γεννητικά Δέντρα (Minimum Spanning Trees - MST) Μπορούμε να λύσουμε το πρόβλημα βρίσκοντας ένα γεννητικό δέντρο τέτοιο ώστε το άθροισμα των βαρών των ακμών του να γίνεται ελάχιστο Ένα τέτοιο spanning tree λέγεται Minimum Spanning Tree - MST

Ελάχιστα Γεννητικά Δέντρα (Minimum Spanning Trees - MST)

Πώς βρίσκουμε Ελάχιστα Γεννητικά Δέντρα (MST) σε γραφήματα; Αλγόριθμος του Kruskal και αλγόριθμος του Prim Και οι 2 αλγόριθμοι κατασκευάζουν MST προσθέτοντας ακμές ελάχιστου βάρους από ακμές με συγκεκριμένη ιδιότητα που δεν έχουν ακόμα προστεθεί Και οι 2 αλγόριθμοι είναι άπληστοι Άπληστος αλγόριθμος είναι μια διαδικασία που κάνει τη βέλτιστη επιλογή σε κάθε βήμα Αλλά: βελτιστοποίηση σε κάθε βήμα δεν εγγυάται πάντα και βέλτιστη συνολική λύση Ωστόσο, αυτοί οι 2 αλγόριθμοι παράγουν βέλτιστες λύσεις

Αλγόριθμος Kruskal για εύρεση MST Βήμα 1: Διάταξε όλες τις ακμές σε αύξουσα σειρά ως προς το βάρος τους Βήμα 2: Διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο T (αν υπάρχουν περισσότερες από μία, διάλεξε τυχαία) Βήμα 3: Από τις ακμές που μένουν, διάλεξε αυτή με τα μικρότερο βάρος που δε σχηματίζει κύκλο και πρόσθεσέ την στο T Βήμα 4: Επανάλαβε το Βήμα 3 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ. μέχρι να συνδεθούν όλες οι κορυφές

Αλγόριθμος Kruskal για εύρεση MST Βήμα 1: Διάταξε όλες τις ακμές σε αύξουσα σειρά ως προς το βάρος τους Βήμα 2: Διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο T (αν υπάρχουν περισσότερες από μία, διάλεξε τυχαία) Βήμα 3: Από τις ακμές που μένουν, διάλεξε αυτή με τα μικρότερο βάρος που δε σχηματίζει κύκλο και πρόσθεσέ την στο T Βήμα 4: Επανάλαβε το Βήμα 3 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ. μέχρι να συνδεθούν όλες οι κορυφές ΑΕ=2 EC=4 AC=4 BC=5 AB=6 BE=6 DE=7 AD=8 BD=8 CD=9

Αλγόριθμος Kruskal για εύρεση MST Βήμα 1: Διάταξε όλες τις ακμές σε αύξουσα σειρά ως προς το βάρος τους Βήμα 2: Διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο T (αν υπάρχουν περισσότερες από μία, διάλεξε τυχαία) Βήμα 3: Από τις ακμές που μένουν, διάλεξε αυτή με τα μικρότερο βάρος που δε σχηματίζει κύκλο και πρόσθεσέ την στο T Βήμα 4: Επανάλαβε το Βήμα 3 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ. μέχρι να συνδεθούν όλες οι κορυφές ΑΕ=2 (1) EC=4 AC=4 BC=5 AB=6 BE=6 DE=7 AD=8 BD=8 CD=9

Αλγόριθμος Kruskal για εύρεση MST Βήμα 1: Διάταξε όλες τις ακμές σε αύξουσα σειρά ως προς το βάρος τους Βήμα 2: Διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο T (αν υπάρχουν περισσότερες από μία, διάλεξε τυχαία) Βήμα 3: Από τις ακμές που μένουν, διάλεξε αυτή με τα μικρότερο βάρος που δε σχηματίζει κύκλο και πρόσθεσέ την στο T Βήμα 4: Επανάλαβε το Βήμα 3 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ. μέχρι να συνδεθούν όλες οι κορυφές ΑΕ=2 (1) EC=4 (2) AC=4 BC=5 AB=6 BE=6 DE=7 AD=8 BD=8 CD=9

Αλγόριθμος Kruskal για εύρεση MST Βήμα 1: Διάταξε όλες τις ακμές σε αύξουσα σειρά ως προς το βάρος τους Βήμα 2: Διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο T (αν υπάρχουν περισσότερες από μία, διάλεξε τυχαία) Βήμα 3: Από τις ακμές που μένουν, διάλεξε αυτή με τα μικρότερο βάρος που δε σχηματίζει κύκλο και πρόσθεσέ την στο T Βήμα 4: Επανάλαβε το Βήμα 3 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ. μέχρι να συνδεθούν όλες οι κορυφές ΑΕ=2 (1) EC=4 (2) AC=4 (κύκλος) BC=5 AB=6 BE=6 DE=7 AD=8 BD=8 CD=9

Αλγόριθμος Kruskal για εύρεση MST Βήμα 1: Διάταξε όλες τις ακμές σε αύξουσα σειρά ως προς το βάρος τους Βήμα 2: Διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο T (αν υπάρχουν περισσότερες από μία, διάλεξε τυχαία) Βήμα 3: Από τις ακμές που μένουν, διάλεξε αυτή με τα μικρότερο βάρος που δε σχηματίζει κύκλο και πρόσθεσέ την στο T Βήμα 4: Επανάλαβε το Βήμα 3 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ. μέχρι να συνδεθούν όλες οι κορυφές ΑΕ=2 (1) EC=4 (2) AC=4 (κύκλος) BC=5 (3) AB=6 BE=6 DE=7 AD=8 BD=8 CD=9

Αλγόριθμος Kruskal για εύρεση MST Βήμα 1: Διάταξε όλες τις ακμές σε αύξουσα σειρά ως προς το βάρος τους Βήμα 2: Διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο T (αν υπάρχουν περισσότερες από μία, διάλεξε τυχαία) Βήμα 3: Από τις ακμές που μένουν, διάλεξε αυτή με τα μικρότερο βάρος που δε σχηματίζει κύκλο και πρόσθεσέ την στο T Βήμα 4: Επανάλαβε το Βήμα 3 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ. μέχρι να συνδεθούν όλες οι κορυφές ΑΕ=2 (1) EC=4 (2) AC=4 (κύκλος) BC=5 (3) AB=6 (κύκλος) BE=6 (κύκλος) DE=7 AD=8 BD=8 CD=9

Αλγόριθμος Kruskal για εύρεση MST Βήμα 1: Διάταξε όλες τις ακμές σε αύξουσα σειρά ως προς το βάρος τους Βήμα 2: Διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο T (αν υπάρχουν περισσότερες από μία, διάλεξε τυχαία) Βήμα 3: Από τις ακμές που μένουν, διάλεξε αυτή με τα μικρότερο βάρος που δε σχηματίζει κύκλο και πρόσθεσέ την στο T Βήμα 4: Επανάλαβε το Βήμα 3 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ. μέχρι να συνδεθούν όλες οι κορυφές ΑΕ=2 (1) EC=4 (2) AC=4 (κύκλος) BC=5 (3) AB=6 (κύκλος) BE=6 (κύκλος) DE=7 (4) AD=8 BD=8 CD=9

Αλγόριθμος Kruskal για εύρεση MST Ο αλγόριθμος τερματίζει αφού: Έχουμε ST με n-1 (=5-1=4) ακμές, ή εναλλακτικά, Έχουμε ST που περιέχει όλες τις κορυφές του δοσμένου γραφήματος Παρατηρήστε ότι καμία από τις AD, BD, CD δε μπορεί έτσι κι αλλιώς να προστεθεί στο ST γιατί θα δημιουργούσε κύκλο Το MST που βρήκε περιέχει τις ακμές: ΑΕ (2), ΕC (4), BC (5), DE (=7) και έχει συνολικό βάρος 2+4+5+7=18 ΑΕ=2 (1) EC=4 (2) AC=4 (κύκλος) BC=5 (3) AB=6 (κύκλος) BE=6 (κύκλος) DE=7 (4) AD=8 BD=8 CD=9

Αλγόριθμος Prim για εύρεση MST Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Δες ποιες ακμές από κορυφές στο T συνδέονται με κορυφές εκτός του Τ και διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο Τ (αν υπάρχουν παραπάνω από μία, διάλεξε τυχαία) Βήμα 3: Επανάλαβε το Βήμα 2 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ., μέχρι να συνδεθούν όλες οι κορυφές

Αλγόριθμος Prim για εύρεση MST Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Δες ποιες ακμές από κορυφές στο T συνδέονται με κορυφές εκτός του Τ και διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο Τ (αν υπάρχουν παραπάνω από μία, διάλεξε τυχαία) Βήμα 3: Επανάλαβε το Βήμα 2 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ., μέχρι να συνδεθούν όλες οι κορυφές

Αλγόριθμος Prim για εύρεση MST Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Δες ποιες ακμές από κορυφές στο T συνδέονται με κορυφές εκτός του Τ και διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο Τ (αν υπάρχουν παραπάνω από μία, διάλεξε τυχαία) Βήμα 3: Επανάλαβε το Βήμα 2 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ., μέχρι να συνδεθούν όλες οι κορυφές

Αλγόριθμος Prim για εύρεση MST Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Δες ποιες ακμές από κορυφές στο T συνδέονται με κορυφές εκτός του Τ και διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο Τ (αν υπάρχουν παραπάνω από μία, διάλεξε τυχαία) Βήμα 3: Επανάλαβε το Βήμα 2 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ., μέχρι να συνδεθούν όλες οι κορυφές

Αλγόριθμος Prim για εύρεση MST Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Δες ποιες ακμές από κορυφές στο T συνδέονται με κορυφές εκτός του Τ και διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο Τ (αν υπάρχουν παραπάνω από μία, διάλεξε τυχαία) Βήμα 3: Επανάλαβε το Βήμα 2 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ., μέχρι να συνδεθούν όλες οι κορυφές

Αλγόριθμος Prim για εύρεση MST Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Δες ποιες ακμές από κορυφές στο T συνδέονται με κορυφές εκτός του Τ και διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο Τ (αν υπάρχουν παραπάνω από μία, διάλεξε τυχαία) Βήμα 3: Επανάλαβε το Βήμα 2 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ., μέχρι να συνδεθούν όλες οι κορυφές

Αλγόριθμος Prim για εύρεση MST Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Δες ποιες ακμές από κορυφές στο T συνδέονται με κορυφές εκτός του Τ και διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο Τ (αν υπάρχουν παραπάνω από μία, διάλεξε τυχαία) Βήμα 3: Επανάλαβε το Βήμα 2 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ., μέχρι να συνδεθούν όλες οι κορυφές

Αλγόριθμος Prim για εύρεση MST Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Δες ποιες ακμές από κορυφές στο T συνδέονται με κορυφές εκτός του Τ και διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο Τ (αν υπάρχουν παραπάνω από μία, διάλεξε τυχαία) Βήμα 3: Επανάλαβε το Βήμα 2 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ., μέχρι να συνδεθούν όλες οι κορυφές

Αλγόριθμος Prim για εύρεση MST Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Δες ποιες ακμές από κορυφές στο T συνδέονται με κορυφές εκτός του Τ και διάλεξε την ακμή με το μικρότερο βάρος να ανήκει στο Τ (αν υπάρχουν παραπάνω από μία, διάλεξε τυχαία) Βήμα 3: Επανάλαβε το Βήμα 2 μέχρι να υπάρχουν n-1 ακμές στο Τ δηλ., μέχρι να συνδεθούν όλες οι κορυφές MST: AE EC BC ED 2 4 5 7 Συνολικό βάρος: 18

Αλγόριθμος Prim για εύρεση MST (με χρήση πίνακα) Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Αρίθμησε τη στήλη της νέας κορυφής στην κορυφαία γραμμή. Διάγραψε τη γραμμή του πίνακα που αντιστοιχεί στη νέα κορυφή Βήμα 3: Βρες το μικρότερο βάρος σε μη διαγραμμένες θέσεις σε στήλες που αντιστοιχούν σε κορυφές του Τ και κύκλωσέ το (αν υπάρχουν παραπάνω από ένα διάλεξε τυχαία). Η κυκλωμένη κορυφή είναι η επόμενη κορυφή του Τ Βήμα 4: Επανάλαβε τα Βήματα 2 και 3 μέχρι να διαγραφούν όλες οι γραμμές του πίνακα

Αλγόριθμος Prim για εύρεση MST (με χρήση πίνακα) Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Αρίθμησε τη στήλη της νέας κορυφής στην κορυφαία γραμμή. Διάγραψε τη γραμμή του πίνακα που αντιστοιχεί στη νέα κορυφή Βήμα 3: Βρες το μικρότερο βάρος σε μη διαγραμμένες θέσεις σε στήλες που αντιστοιχούν σε κορυφές του Τ και κύκλωσέ το (αν υπάρχουν παραπάνω από ένα διάλεξε τυχαία). Η κυκλωμένη κορυφή είναι η επόμενη κορυφή του Τ Βήμα 4: Επανάλαβε τα Βήματα 2 και 3 μέχρι να διαγραφούν όλες οι γραμμές του πίνακα

Αλγόριθμος Prim για εύρεση MST (με χρήση πίνακα) Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Αρίθμησε τη στήλη της νέας κορυφής στην κορυφαία γραμμή. Διάγραψε τη γραμμή του πίνακα που αντιστοιχεί στη νέα κορυφή Βήμα 3: Βρες το μικρότερο βάρος σε μη διαγραμμένες θέσεις σε στήλες που αντιστοιχούν σε κορυφές του Τ και κύκλωσέ το (αν υπάρχουν παραπάνω από ένα διάλεξε τυχαία). Η κυκλωμένη κορυφή είναι η επόμενη κορυφή του Τ Βήμα 4: Επανάλαβε τα Βήματα 2 και 3 μέχρι να διαγραφούν όλες οι γραμμές του πίνακα

Αλγόριθμος Prim για εύρεση MST (με χρήση πίνακα) Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Αρίθμησε τη στήλη της νέας κορυφής στην κορυφαία γραμμή. Διάγραψε τη γραμμή του πίνακα που αντιστοιχεί στη νέα κορυφή Βήμα 3: Βρες το μικρότερο βάρος σε μη διαγραμμένες θέσεις σε στήλες που αντιστοιχούν σε κορυφές του Τ και κύκλωσέ το (αν υπάρχουν παραπάνω από ένα διάλεξε τυχαία). Η κυκλωμένη κορυφή είναι η επόμενη κορυφή του Τ Βήμα 4: Επανάλαβε τα Βήματα 2 και 3 μέχρι να διαγραφούν όλες οι γραμμές του πίνακα

Αλγόριθμος Prim για εύρεση MST (με χρήση πίνακα) Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Αρίθμησε τη στήλη της νέας κορυφής στην κορυφαία γραμμή. Διάγραψε τη γραμμή του πίνακα που αντιστοιχεί στη νέα κορυφή Βήμα 3: Βρες το μικρότερο βάρος σε μη διαγραμμένες θέσεις σε στήλες που αντιστοιχούν σε κορυφές του Τ και κύκλωσέ το (αν υπάρχουν παραπάνω από ένα διάλεξε τυχαία). Η κυκλωμένη κορυφή είναι η επόμενη κορυφή του Τ Βήμα 4: Επανάλαβε τα Βήματα 2 και 3 μέχρι να διαγραφούν όλες οι γραμμές του πίνακα

Αλγόριθμος Prim για εύρεση MST (με χρήση πίνακα) Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Αρίθμησε τη στήλη της νέας κορυφής στην κορυφαία γραμμή. Διάγραψε τη γραμμή του πίνακα που αντιστοιχεί στη νέα κορυφή Βήμα 3: Βρες το μικρότερο βάρος σε μη διαγραμμένες θέσεις σε στήλες που αντιστοιχούν σε κορυφές του Τ και κύκλωσέ το (αν υπάρχουν παραπάνω από ένα διάλεξε τυχαία). Η κυκλωμένη κορυφή είναι η επόμενη κορυφή του Τ Βήμα 4: Επανάλαβε τα Βήματα 2 και 3 μέχρι να διαγραφούν όλες οι γραμμές του πίνακα

Αλγόριθμος Prim για εύρεση MST (με χρήση πίνακα) Βήμα 1: Διάλεξε αυθαίρετη κορυφή να είναι η πρώτη στο δέντρο T Βήμα 2: Αρίθμησε τη στήλη της νέας κορυφής στην κορυφαία γραμμή. Διάγραψε τη γραμμή του πίνακα που αντιστοιχεί στη νέα κορυφή Βήμα 3: Βρες το μικρότερο βάρος σε μη διαγραμμένες θέσεις σε στήλες που αντιστοιχούν σε κορυφές του Τ και κύκλωσέ το (αν υπάρχουν παραπάνω από ένα διάλεξε τυχαία). Η κυκλωμένη κορυφή είναι η επόμενη κορυφή του Τ Βήμα 4: Επανάλαβε τα Βήματα 2 και 3 μέχρι να διαγραφούν όλες οι γραμμές του πίνακα ΑΕ 2 ΕC 4 ΒC 5 DΕ 7 MST 18

Kruskal vs Prim: time complexity Για την εύρεση ελάχιστου γεννητικού δέντρου σε γράφημα με m ακμές και n κορυφές Ο αλγόριθμος του Kruskal απαιτεί O(mlog m) λειτουργίες Ο αλγόριθμος του Prim απαιτεί O(mlog n) λειτουργίες Σε αραιά (sparse) γραφήματα αποδοτικότερος είναι ο αλγόριθμος του Kruskal Το m είναι πολύ μικρότερο από n(n 1)/2