Φροντιστήριο: Επανάληψη για την ενδιάμεση εξέταση Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1
Μαθηματική Επαγωγή Να αποδείξετε ότι 1 3 5... (2 1) 2 για >0. Απόδειξη: Επαληθεύουμε την Π(1) ως εξής: 1 1 Υποθέτουμε ότι ισχύει η Π(k), δηλαδή ότι Και θα αποδείξουμε ότι ισχύει η Π(k+1): 1 3 5... (2k 1) (2( k 1) 1) [ 1 3 5... (2k 1)] (2k 1) 2 k 2k 1 [Επαγωγική υπόθεση] 2 ( k 1) [Το οποίο είναι το ζητούμενο] 2 1 3 5... (2k 1) k 1 3 5... (2( k 1) 1) ( k 1) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 2 2
Επανάληψη Χρήσιμων Μαθηματικών Ορισμών Ορισμός 1: log x a = b iff x b = a Χρήσιμοι νόμοι λογάριθμων: log ab = log a + log b log a b = b. log a log ab = log a log b log a b = (log c b) (log c a) b log b x = x log a = 1 log 2 = (log ) 2 = log * log log 2 = log +log =2xlog log 10 (commo), log e (l atural), log 2 (lg biary) π.χ., log 2 2=1 log 2 1=0 log 2 0 δεν ορίζεται Ορισμός 2: π.χ., x max{ a a x,it( a)} x mi{ a a x,it( a)} 63 11 (floor) (ceilig) 5. 6, 5.1634 5 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 3
Ακολουθίες και Αθροίσματα ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4 1 2 1 *2 2 1 2 1 2 2 1 log 2 1 log2 log2 0 i i Το οποίο προκύπτει αλλιώς ως: Άθροισμα Γεωμετρικής Προόδου 1 2 1 2... 4 / 2 / 2 1 1 1 2 2 6 ) 1 2 )( 1 ( 2 ) 1 ( 2 log 0 1 0 1 0 0 2 0 a a a i i i i i i i i i i
Παράδειγμα: Ανάλυση Χρόνου Εκτέλεσης void mystery1(){ for (i=0; i<lg; i++){ for (j=0;j<i 2 ;j++){ sum++; } } } Εσωτερικός Βρόγχος Εξωτερικός Βρόγχος Ανάλυση Εσωτερικός Βρόγχος: Εξωτερικός Βρόγχος: OL lg i 0 IL lg i 0 i IL i 2 j 0 1 i 2 lg lg 12 lg 1 6 2 lg 3 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5
Παράδειγμα: Ανάλυση Χρόνου Εκτέλεσης void mystery2(){ for (i=0; i<; i++){ for (j=0;j<*i;j++){ sum++; } } } Εσωτερικός Βρόγχος Εξωτερικός Βρόγχος Ανάλυση Εσωτερικός Βρόγχος: Εξωτερικός Βρόγχος: OL i 0 IL i 0 i IL i 0 * i i j 1 1 2 1 i 3 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 6
Παράδειγμα: Ανάλυση Χρόνου Εκτέλεσης void mystery3(){ for (i=0; i<; i++){ for (j=*i;j>0;j ){ sum++; } } } Εσωτερικός Βρόγχος Εξωτερικός Βρόγχος Ανάλυση Εσωτερικός Βρόγχος: Εξωτερικός Βρόγχος: OL i 0 IL i 0 i IL i 0 * i i j 1 1 2 1 i 3 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 7
Παράδειγμα: Αντικατάσταση void mystery4(it ){ for (i=0; i<; i++){ sum++; } } if(>1) retur mystery4(/2) + mystery4(/2); else retur 1; Μορφή T() = + 2xT(/2) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 8
Παράδειγμα: Αντικατάσταση Έχουμε την αναδρομική εξίσωση Τ() = 2T(/2) +, για κάθε >1 T(1) = 1 Τότε, αντικαθιστώντας το Τ(/2) με την τιμή του παίρνουμε Τ() = 2T(/2) + // Εκτέλεση 1 = 2(2T(/4) + /2) + // Εκτέλεση 2 = 2²Τ(/4) + + // Πράξεις = 2³Τ(/8) + + + // Εκτέλεση 3 = 2 k Τ(/2 k ) + k. // k=log 2 2 k = = 2 k Τ(1) + k. // =2 k, Τ(/2 k )=T(1)=1 = 2 log + log 2. // Πράξεις = + log 2 // =2 k, Τ(/2 k )=T(1)=1 Θ(log 2 ) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 9
Παράδειγμα: Αντικατάσταση T() = 2xT(/2) + a=2, b=2, c=1, d=1 b d =2 1 =2 a=b d T() O( 1 log 2 ()) T() O(log 2 ()) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 10
Ποιος είναι ο βαθμός του κόμβου 99; 50 42 5 46 61 99 43 58 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 11
Ποιος είναι ο βαθμός του κόμβου 61; 50 42 5 46 61 99 43 58 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 12
Ποιος είναι ο βαθμός του δέντρου; 50 42 5 46 61 99 43 58 63 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 13
Ποιο είναι το ύψος του κόμβου 51; 50 42 5 46 61 99 43 58 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 14
Ποιο είναι το ύψος του κόμβου 58; 50 42 5 46 61 99 43 58 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 15
Ποιο είναι το ύψος του κόμβου ; 50 42 5 46 61 99 43 58 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 16
Ποιο είναι το ύψος του δέντρου; 50 42 5 46 61 99 43 58 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 17
Ποιο είναι το βάθος του κόμβου 50; 50 42 5 46 61 99 43 58 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 18
Ποιο είναι το βάθος του κόμβου 46; 50 42 5 46 61 99 43 58 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 19
Ποιο είναι το βάθος του κόμβου 51; 50 42 5 46 61 99 43 58 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 20
Suffix Trie Κατασκευάστε ένα suffix trie για τις λέξεις: BIG, BID, BAG, GOOD, BAD, GET ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 21
Suffix Trie Κατασκευάστε ένα suffix trie για τις λέξεις: BIG, BID, BAG, GOOD, BAD, GET Β G A I E O D G D G T O $ $ $ $ $ D $ ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 22
Patricia Trie Μετατρέψετε το προηγούμενο suffix trie σε patricia trie ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 23
Patricia Trie Μετατρέψετε το προηγούμενο suffix trie σε patricia trie Β G A I ET OOD D G D G $ $ $ $ $ $ ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 24
Πιο θα είναι το αποτέλεσμα της προθεματικής διάσχισης? 50 42 5 46 61 99 43 58 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 25
Πιο θα είναι το αποτέλεσμα της προθεματικής διάσχισης? 50 42 5 46 61 99 43 58 51 50, 42, 5, 46, 43,, 61, 58, 51,, 99 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 26
Πιο θα είναι το αποτέλεσμα της μεταθεματικής διάσχισης? 50 42 5 46 61 99 43 58 51 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 27
Πιο θα είναι το αποτέλεσμα της μεταθεματικής διάσχισης? 50 42 5 46 61 99 43 58 51 5, 43, 46, 42, 51, 58,, 61, 99,, 50 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 28
Πιο θα είναι το αποτέλεσμα της μεταθεματικής διάσχισης? 50 42 5 46 61 99 43 58 51 5, 43, 46, 42, 51, 58,, 61, 99,, 50 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 29
Δυαδικά Δέντρα Ποιος είναι ο ύψος ενός δυαδικού δέντρου όταν εισάξουμε τα στοιχεία 1,2,3,4,5,6,7 με αυτή τη σειρά; Ποιος θα είναι ο χρόνος αναζήτησης χείριστης περίπτωσης στο πιο πάνω δέντρο σε σχέση με το ; ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 30
Δυαδικά Δέντρα Ποιος είναι ο ύψος ενός δυαδικού δέντρου όταν εισάξουμε τα στοιχεία 1,2,3,4,5,6,7 με αυτή τη σειρά; Ποιος θα είναι ο χρόνος αναζήτησης χείριστης περίπτωσης στο πιο πάνω δέντρο σε σχέση με το ; Ο() 1 2 3 4 5 6 7 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 31
Δυαδικά Δέντρα Με ποια σειρά πρέπει να εισάξουμε τα στοιχεία 1,2,3,4,5,6,7 ώστε να πάρουμε το πιο κάτω δέντρο; 4 2 6 1 3 5 7 Τι είναι το πιο πάνω δέντρο; ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 32
Δυαδικά Δέντρα Με ποια σειρά πρέπει να εισάξουμε τα στοιχεία 1,2,3,4,5,6,7 ώστε να πάρουμε το πιο κάτω δέντρο; 4,2,6,1,3,5,7 4 2 6 1 3 5 7 Τι είναι το πιο πάνω δέντρο; Τέλειο ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 33
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το 1; 26 9 2 21 1 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 34
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το 1; 26 26 9 9 9 2 26 2 21 2 21 1 21 1 1 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 35
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το 3; 26 9 2 21 3 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 36
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το 3; 26 26 9 9 9 2 26 3 21 2 21 2 21 3 3 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 37
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το 95; 26 9 60 90 95 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 38
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το 95; 26 26 9 9 26 90 60 90 60 90 9 60 95 95 95 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 39
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το ; 26 9 60 90 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 40
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το ; 26 Α 26 9 Α 9 Α 60 90 60 90 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 41
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το ; 26 26 9 9 60 90 60 90 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 42
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το ; 9 26 26 9 60 60 90 90 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 43
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το ; 26 26 9 60 9 60 90 90 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 44
AVL Δέντρα Τι περιστροφή πρέπει να γίνει όταν εισαχθεί το ; 26 60 9 60 26 9 90 90 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 45
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 46
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 47
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 76 76 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 48
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 71 NULL προαγωγή 71 71 76 76 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 49
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 79 71 76 79 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 50
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 82 71 προαγωγή 79 76 82 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 51
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 82 71 79 76 82 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 52
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 73 71 79 73 76 82 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 53
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 84 71 79 73 76 82 84 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 54
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 71 79 82 84 προαγωγή 73 76 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 55
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του NULL προαγωγή 73 71 79 76 82 84 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 56
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 73 71 79 76 82 84 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 57
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 77 73 71 79 76 77 82 84 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 58
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 83 73 71 79 76 77 83 προαγωγή 82 84 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 59
2 3 Δέντρα Εισάγετε τα στοιχεία, 76, 71, 79, 82, 73, 84,, 77, 83 σε ένα 2 3 δέντρο Εισαγωγή του 83 73 71 79 83 76 77 82 84 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 60