Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Ενότητα ΔΕΝΔΡΑ Σταύρος Δ. Νικολόπουλος 2017-18 www.cs.uoi.gr/~stavros
Εισαγωγή Ένα γράφημα G είναι δένδρο αν: 1. Είναι συνδεδεμένο και δεν έχει κύκλους. 2. Είναι συνδεδεμένο και έχει n-1 ακμές. 3. Δεν έχει κύκλους και έχει n-1 ακμές.. Είναι συνδεδεμένος κατά ελάχιστο τρόπο. 5. Αν υπάρχει ένα μόνο μονοπάτι μεταξύ δύο οποιονδήποτε κόμβων. 2
Εισαγωγή Εκκεντρικότητα: μέγιστη απόσταση ενός κόμβου από τον πλέον απομακρυσμένο κόμβο του γραφήματος. Κέντρο: υπογράφημα που επάγεται από κόμβους με την μικρότερη εκκεντρικότητα. Ακτίνα: η εκκεντρικότητα του κέντρου. Διάμετρος: το μήκος του μακριότερου (μεγαλύτερου) μονοπατιού. Ακτίνα Διάμετρος 3
Εισαγωγή Πόρισμα: Ένα δάσος (δένδρων) με n κόμβους και k συνιστώσες δένδρα, έχει n-k ακμές. Θεώρημα: Ένα δένδρο έχει κέντρο που αποτελείται από 1 ή 2 κόμβους.
Ποσοτικά Στοιχεία Μη αύξουσα ακολουθία S: d 1, d 2, d 3,, d n ανήκει σε ένα Τ, μόνο εάν d i θετικός αριθμός και ισχύει: Σ i=1..n d i = 2(n-1) Αναγκαία συνθήκη, όχι ικανή! Σε κάθε δένδρο υπάρχουν τουλάχιστον 2 εκκρεμείς ακμές. Ισχύει: 2m = 2(n-1) 5
Δένδρο n κόμβων n-1 ακμές 6
1857 Cayley C k H 2k+2, # ισομερών Θεώρημα: Ο αριθμός των διακριτών δένδρων με επιγραφές που έχουν n κόμβους είναι n n-2 (10 αποδείξεις). (K n πλήθος των σκελετικών δένδρων = n n-2 ) 7
Θεώρημα: Ο αριθμός των διακριτών δένδρων με επιγραφές που έχουν n κόμβους είναι n n-2 (10 αποδείξεις). 8
Επιγράφουμε τους κόμβους του δένδρου με 1, 2,..., n. Βρίσκουμε τον εκκρεμή κόμβο με τη μικρότερη επιγραφή, έστω a 1. Τον διαγράφουμε και έστω b 1 ο γειτονικός της κόμβος. Επαναλαμβάνουμε την διαδικασία στο υπογράφημα που μένει. Έτσι, μετά από n-2 διαγραφές, το δένδρο εκφυλίζεται σε μία ακμή, και έχουμε δημιουργήσει S: (b 1, b 2,..., b n-2 ). 2 3 7 1 5 8 6 S = (, 1, 5, 3,, 5) 9
Επιγράφουμε τους κόμβους του δένδρου με 1, 2,..., n. Βρίσκουμε τον εκκρεμή κόμβο με τη μικρότερη επιγραφή, έστω a 1. Τον διαγράφουμε και έστω b 1 ο γειτονικός της κόμβος. Επαναλαμβάνουμε την διαδικασία στο υπογράφημα που μένει. Έτσι, μετά από n-2 διαγραφές, το δένδρο εκφυλίζεται σε μία ακμή, και έχουμε δημιουργήσει S: (b 1, b 2,..., b n-2 ). 2 3 7 1 5 8 6 S = () 10
Επιγράφουμε τους κόμβους του δένδρου με 1, 2,..., n. Βρίσκουμε τον εκκρεμή κόμβο με τη μικρότερη επιγραφή, έστω a 1. Τον διαγράφουμε και έστω b 1 ο γειτονικός της κόμβος. Επαναλαμβάνουμε την διαδικασία στο υπογράφημα που μένει. Έτσι, μετά από n-2 διαγραφές, το δένδρο εκφυλίζεται σε μία ακμή, και έχουμε δημιουργήσει S: (b 1, b 2,..., b n-2 ). 3 7 1 5 8 6 S = () 11
Επιγράφουμε τους κόμβους του δένδρου με 1, 2,..., n. Βρίσκουμε τον εκκρεμή κόμβο με τη μικρότερη επιγραφή, έστω a 1. Τον διαγράφουμε και έστω b 1 ο γειτονικός της κόμβος. Επαναλαμβάνουμε την διαδικασία στο υπογράφημα που μένει. Έτσι, μετά από n-2 διαγραφές, το δένδρο εκφυλίζεται σε μία ακμή, και έχουμε δημιουργήσει S: (b 1, b 2,..., b n-2 ). 7 1 5 8 6 S = (, 1) 12
Επιγράφουμε τους κόμβους του δένδρου με 1, 2,..., n. Βρίσκουμε τον εκκρεμή κόμβο με τη μικρότερη επιγραφή, έστω a 1. Τον διαγράφουμε και έστω b 1 ο γειτονικός της κόμβος. Επαναλαμβάνουμε την διαδικασία στο υπογράφημα που μένει. Έτσι, μετά από n-2 διαγραφές, το δένδρο εκφυλίζεται σε μία ακμή, και έχουμε δημιουργήσει S: (b 1, b 2,..., b n-2 ). 7 1 5 8 S = (, 1, 5) 13
Επιγράφουμε τους κόμβους του δένδρου με 1, 2,..., n. Βρίσκουμε τον εκκρεμή κόμβο με τη μικρότερη επιγραφή, έστω a 1. Τον διαγράφουμε και έστω b 1 ο γειτονικός της κόμβος. Επαναλαμβάνουμε την διαδικασία στο υπογράφημα που μένει. Έτσι, μετά από n-2 διαγραφές, το δένδρο εκφυλίζεται σε μία ακμή, και έχουμε δημιουργήσει S: (b 1, b 2,..., b n-2 ). 1 5 8 S = (, 1, 5, 1) 1
Επιγράφουμε τους κόμβους του δένδρου με 1, 2,..., n. Βρίσκουμε τον εκκρεμή κόμβο με τη μικρότερη επιγραφή, έστω a 1. Τον διαγράφουμε και έστω b 1 ο γειτονικός της κόμβος. Επαναλαμβάνουμε την διαδικασία στο υπογράφημα που μένει. Έτσι, μετά από n-2 διαγραφές, το δένδρο εκφυλίζεται σε μία ακμή, και έχουμε δημιουργήσει S: (b 1, b 2,..., b n-2 ). 5 8 S = (, 1, 5, 1, ) 15
Επιγράφουμε τους κόμβους του δένδρου με 1, 2,..., n. Βρίσκουμε τον εκκρεμή κόμβο με τη μικρότερη επιγραφή, έστω a 1. Τον διαγράφουμε και έστω b 1 ο γειτονικός της κόμβος. Επαναλαμβάνουμε την διαδικασία στο υπογράφημα που μένει. Έτσι, μετά από n-2 διαγραφές, το δένδρο εκφυλίζεται σε μία ακμή, και έχουμε δημιουργήσει S: (b 1, b 2,..., b n-2 ). 5 S = (, 1, 5, 1,, 5) 8 16
Μπορούμε να κατασκευάσουμε ένα δένδρο Τ κατά μοναδικό τρόπο από την S = (b 1, b 2,..., b n-2 ) που περιέχει μη-εκκρεμείς κόμβους. 2 (Prüfer, 1918) 3 7 1 5 8 6 S = (, 1, 5, 1,, 5) Τ Κάθε στοιχείο της ακολουθία S = (b 1, b 2,..., b n-2 ) μπορεί να πάρει τιμές 1 b i n (όπου 1 i n-2) n n-2. 17
Μπορούμε να κατασκευάσουμε ένα δένδρο Τ κατά μοναδικό τρόπο από την S = (b 1, b 2,..., b n-2 ) που περιέχει μη-εκκρεμείς κόμβους. Έστω, L = (1, 2,, n). Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. (Prüfer, 1918) 18
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 3 7 1 2 5 8 6 (2, ) (3, 1) (6, 5) (7, 1) (1, ) (, 5) (5, 8) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 19
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 20
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 21
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 2 (2, ) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 22
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 2 (2, ) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 23
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 2 (2, ) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 2
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 3 1 2 (2, ) (3, 1) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 25
2 L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 1 3 (2, ) (3, 1) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 26
2 L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 1 3 (2, ) (3, 1) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 27
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 3 1 2 5 6 (2, ) (3, 1) (6, 5) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 28
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 3 1 2 5 6 (2, ) (3, 1) (6, 5) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 29
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 3 7 1 2 5 6 (2, ) (3, 1) (6, 5) (7, 1) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 30
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 3 7 1 2 5 6 (2, ) (3, 1) (6, 5) (7, 1) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 31
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 3 7 1 2 5 6 (2, ) (3, 1) (6, 5) (7, 1) (1, ) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 32
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 3 7 1 2 5 6 (2, ) (3, 1) (6, 5) (7, 1) (1, ) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 33
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 3 7 1 2 5 6 (2, ) (3, 1) (6, 5) (7, 1) (1, ) (, 5) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 3
L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 3 7 1 2 5 6 (2, ) (3, 1) (6, 5) (7, 1) (1, ) (, 5) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 35
2 L = (1, 2, 3,, 5, 6, 7, 8) S = (, 1, 5, 1,, 5) 1 3 7 5 8 6 (2, ) (3, 1) (6, 5) (7, 1) (1, ) (, 5) (5, 8) Επιλέγουμε από την L την μικρότερη επιγραφή, έστω l 1, που δεν ανήκει στην S. Η ακμή (l 1, s 1 ) ανήκει στο Τ. Διαγράφουμε l 1 από L και s1 από S. Επαναλαμβάνουμε με τις νέας ακολουθίες L και S. 36
: Κάθε στοιχείο της ακολουθία b 1, b 2,..., b n-2, μπορεί να πάρει τιμές 1 b i n (όπου 1 i n-2) n n-2. Θεώρημα: Το πλήθος των διακριτών ένριζων δένδρων (rooted trees) με n κόμβους είναι n n-1. 3 7 1 2 5 8 6 37
Γενετικά Δένδρα Θεώρημα: Κάθε συνδεδεμένο γράφημα έχει τουλάχιστον ένα γενετικό δένδρο. (i) G = T, οεδ. (ii) G T, διαγράφουμε ακμές που συμμετέχουν σε κύκλους, έως ότου απομείνουν μόνο γέφυρες. Ερώτηση: Πόσα γενετικά δένδρα έχει ένα γράφημα; Θεώρημα: Σε πλήρες γράφημα K n υπάρχουν n n-2 διακριτά γενετικά δένδρα. 38
Γενετικά Δένδρα Θεώρημα: Στο διμερές γράφημα Κ m,n το πλήθος των διακριτών γενετικών δένδρων είναι m n-1 n m-1. Θεώρημα: K 2,n n 2 n-1 39
Γενετικά Δένδρα Θεώρημα: K 3,n n 2 3 n-1 Μονοπάτια μήκους 2 a b c a b c Μονοπάτια μήκους (α): n 3 n-1 (β): 6 n(n-1)/2 3 n-2 Από (α) + (β) = n(n-1) 3 n-1 x y z (α) (β) 0
Γενετικά Δένδρα Θεώρημα: (Matrix-tree theorem) Kirchoff Α: πίνακας γειτνίασης C: πίνακας βαθμών C-A: διαφορά πινάκων B ij =(C-A) ij : ελάσσων πίνακας (-1) i+j B ij : συμπαράγοντας 1 2 3 Το πλήθος των γενετικών δένδρων ισούται με συμπαράγοντα. 1
Γενετικά Δένδρα Θεμελιώδες Κύκλωμα: Ένας κύκλος που δημιουργείται από ένα γενετικό δένδρο και μια χορδή. Σύνολο χορδών: m-n+1 G G = T U T Αριθμός θεμελιωδών κυκλωμάτων: m-n+1 Κυκλικές εναλλαγές παράγουμε όλα τα γενετικά δένδρα. 2
Γενετικά Δένδρα Επιλέγουμε ένα σκελετικό δέντρο Τ Εισάγουμε μια ακμή C i θεμελιώδεις κύκλωμα Διαγράφοντας μια-μια ακμή του C i παράγονται Τ 1, Τ 2, Τ Κ σκελετικά δέντρα Εισάγουμε νέα ακμή C i+1 G T Τυχαία επιλογή του Τ παράγονται όλα τα σκελετικά δέντρα του G 3
Γενετικά Δένδρα Απόσταση γενετικών δένδρων είναι το πλήθος ακμών που ανήκουν στο ένα δένδρο αλλά όχι στο άλλο. dist(t i, T j ) = dist(t j, T i ) dist(t i, T j ) 0, εκτός εάν dist(t i, T i ) = 0 dist(t i, T j ) dist(t i, T u ) + dist(t u, T j ) Κεντρικό λέγεται ένα γενετικό δένδρο T 0 αν max(dist(t 0, T j )) max(dist(t, T j )) για κάθε γενετικό δένδρο T του G. Ζυγισμένα δένδρα: Εύρεση ελάχιστου γενετικού δένδρου (αλγόριθμοι Prim & Kruskal).