ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Advertisements

Αλγόριθμοι Αναζήτησης
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Γλώσσα C & Unix Τμήμα Πληροφορικής, ΑΠΘ B’ εξάμηνο
Διακριτά Μαθηματικά ΙI Δυαδικά Δέντρα Αναζήτησης
Δομές Δεδομένων - Δυαδικά Δένδρα (binary trees)
Ψηφιακά Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να χρησιμοποιήσουμε την παραπάνω αναπαράσταση.
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL
1Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΓΡΑΦΟΙ (GRAPHS) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Νίκος Παπασπύρου.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Ταξινόμηση και Αναζήτηση.
ΤΕΛΕΣΤΕΣ II ΜΑΘΗΜΑ 5.
Υποθετικός τελεστής Ο υποθετικός τελεστής (?:) αποτελείται από δύο σύμβολα. Ανήκει στην κατηγορία των τελεστών που αποτελούνται από συνδυασμό συμβόλων.
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Διάσχιση.
Ε. ΠετράκηςΣτοίβες, Ουρές1 Στοίβες  Στοίβα: περιορισμένη ποικιλία λίστας  τα στοιχεία μπορούν να εισαχθούν ή να διαγραφούν μόνο από μια άκρη : λίστες.
Ουρά Προτεραιότητας: Heap
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής,
Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Eξάμηνο 4ο1 Μείωσε και Βασίλευε Μειώνουμε το στιγμιότυπο του προβλήματος σε ένα μικρότερο στιγμιότυπο.
Ταξινόμηση και Αναζήτηση
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος ( ) Νίκος Παπασπύρου
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2-3 Δένδρα, Υλοποίηση και πράξεις Β-δένδρα B-Δένδρα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Παράδειγμα B + -Tree Υποθέτουμε B + -Tree τάξης 3 (α=2, b=3)  Κάθε φύλλο θα έχει 2 ως 3 το πολύ στοιχεία  Κάθε εσωτερικός κόμβος θα έχει 2 ως 3 το πολύ.
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
Διαφάνειες παρουσίασης #2
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
9-1 ΜΑΘΗΜΑ 9 ο Δυαδικά Δένδρα, Διάσχιση Δυαδικών Δένδρων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 1 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ ΔΕΝΔΡΑ.
ΤΕΙ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΕΡΡΕΣ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Πτυχιακή εργασία Μάρθα Τσολακίδου.
Δένδρα & Ανίχνευση Πρώτη ανίχνευση σε βάθος. Δένδρα & Ανίχνευση Πρώτη ανίχνευση σε πλάτος –Level 0: 1 –Level 1: 2, 10, 11 –Level 2: 3, 9, 12, 14 –Level.
Δυναμικός Κατακερματισμός
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Διερεύνηση γραφήματος
12η Διάλεξη Διάσχιση Δέντρων και Ουρές Προτεραιότητας Ε. Μαρκάκης
Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε χρόνο εκτέλεσης
Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
19η Διάλεξη Εξωτερική Αναζήτηση και Β-δέντρα Ε. Μαρκάκης
14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης Ε. Μαρκάκης
(2,4) Trees 11/15/2018 8:56 PM (2,4) Δέντρα (2,4) Δέντρα.
Δυναμικός Κατακερματισμός
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Μεταγράφημα παρουσίασης:

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Διαφάνειες παρουσίασης #8 (β) 4 Δένδρα γενικής μορφής 4 Διάσχιση δυαδικών δένδρων 4 Αριθμητικές εκφράσεις 4 Δυαδικά δένδρα αναζήτησης

2Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Δένδρα γενικής μορφής u Κάθε κόμβος k έχει n k απογόνους, όπου n k  Ν u Κωδικοποίηση με δυαδικά δένδρα

3Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές u Σειρά με την οποία διασχίζονται οι κόμβοι l κατά βάθος (depth first) l κατά πλάτος (breadth first) Διάσχιση δυαδικών δένδρων(i) u Κατά βάθος 42, 10, 7, 14, 12, 30, 50, 55, 52 u Κατά πλάτος 42, 10, 50, 7, 14, 55, 12, 30, 52

4Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Διάσχιση δυαδικών δένδρων(ii) u Εκτύπωση κατά βάθος l πολύ απλά, με χρήση αναδρομής u Υλοποίηση void treePrintDF (tree t) { if (t != NULL) { printf("%d ", t->data); treePrintDF(t->left); treePrintDF(t->right); } }

5Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Διάσχιση δυαδικών δένδρων(iii) u Εκτύπωση κατά πλάτος l με τη βοήθεια ουράς για την αποθήκευση δεικτών προς τους κόμβους που δεν έχουμε επισκεφθεί u Υλοποίηση void treePrintBF (tree t) { queue q = queueEmpty; if (t != NULL) queueInsert(&q, t);

6Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Διάσχιση δυαδικών δένδρων(iv) u Εκτύπωση κατά πλάτος, υλοποίηση (συνέχεια) while (!queueIsEmpty(q)) { TreeNode * n = queueRemove(&q); printf("%d ", n->data); if (n->left != NULL) queueInsert(&q, n->left); if (n->right != NULL) queueInsert(&q, n->right); } }

7Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Αριθμητικές εκφράσεις(i) u Παράδειγμα 3 * (24 / 2) + (9 - 3) u Παράσταση σε μορφή δυαδικού δένδρου l οι αριθμοί στα φύλλα l οι τελεστές στους υπόλοιπους κόμβους + *– / 9 u Διάσχιση κατά βάθος

8Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Αριθμητικές εκφράσεις(ii) u Ενθεματική παράσταση l infix notation l ο τελεστής ανάμεσα στα τελούμενα l διφορούμενη: χρειάζονται παρενθέσεις l η συνήθης μορφή για τον άνθρωπο u Αποτέλεσμα (3 * (24 / 2)) + (9 - 3) + *– / 9

9Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Αριθμητικές εκφράσεις(iii) u Προθεματική παράσταση l prefix notation l ο τελεστής πριν τα τελούμενα l όχι διφορούμενη, δε χρειάζονται παρενθέσεις l απλή μηχανική ανάγνωση u Αποτέλεσμα + * 3 / *– / 9

10Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Αριθμητικές εκφράσεις(iv) u Επιθεματική παράσταση l postfix notation l ο τελεστής μετά τα τελούμενα l όχι διφορούμενη, δε χρειάζονται παρενθέσεις l απλή μηχανική αποτίμηση u Αποτέλεσμα / * *– / 9

11Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Δυαδικά δένδρα αναζήτησης(i) u Binary search trees u Δυαδικά δένδρα με τις παρακάτω ιδιότητες για κάθε κόμβο: l όλοι οι κόμβοι του αριστερού παιδιού έχουν τιμές μικρότερες ή ίσες της τιμής του κόμβου l όλοι οι κόμβοι του δεξιού παιδιού έχουν τιμές μεγαλύτερες ή ίσες της τιμής του κόμβου

12Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Δυαδικά δένδρα αναζήτησης(ii) u Τα δυαδικά δένδρα αναζήτησης διευκολύνουν την αναζήτηση στοιχείων u Αναδρομική αναζήτηση l αν η τιμή που ζητείται είναι στη ρίζα, βρέθηκε l αν είναι μικρότερη από την τιμή της ρίζας, αρκεί να αναζητηθεί στο αριστερό παιδί l αν είναι μεγαλύτερη από την τιμή της ρίζας, αρκεί να αναζητηθεί στο δεξί παιδί u Κόστος αναζήτησης: O(log n) l υπό την προϋπόθεση το δένδρο να είναι ισοζυγισμένο

13Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Δυαδικά δένδρα αναζήτησης(iii) u Αναζήτηση TreeNode * treeSearch (tree t, int key) { if (t == NULL) return NULL; /* not found */ if (t->data == key) return t; /* found */ if (t->data > key) return treeSearch(t->left, key); else return treeSearch(t->right, key); }