ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 5: Μείωσε και Βασίλευε. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Σχετικά έγγραφα
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

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

Δομές Δεδομένων Ενότητα 6

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 12: Αντιμετώπιση Περιορισμών Αλγοριθμικής Ισχύος

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

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 3: Ωμή Βία. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

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

Αλγόριθμοι και πολυπλοκότητα Ταχυταξινόμηση (Quick-Sort)

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Διοικητική Λογιστική

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

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

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

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

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 8: Δυναμικός Προγραμματισμός. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Βέλτιστος Έλεγχος Συστημάτων

Αλγόριθμοι και πολυπλοκότητα Οριζόντια διερεύνηση

Μηχανολογικό Σχέδιο Ι

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

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Δομές Δεδομένων Ενότητα 3

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Δομές Δεδομένων Ενότητα 1

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 11: Περιορισμοί της Αλγοριθμικής Ισχύος

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διοίκηση Επιχειρήσεων

Τεχνολογία Πολιτισμικού Λογισμικού

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 1: Δικτυωτή Ανάλυση (Θεωρία Γράφων)

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Βάσεις Περιβαλλοντικών Δεδομένων

Αλγόριθμοι και πολυπλοκότητα Bucket-Sort και Radix-Sort

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 7: Χωρικοί Χρονικοί Συμβιβασμοί. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Δομές Δεδομένων Ενότητα 4

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Ιστορία της μετάφρασης

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Ψηφιακή Επεξεργασία Εικόνων

Μηχανολογικό Σχέδιο Ι

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Βάσεις Περιβαλλοντικών Δεδομένων

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Κβαντική Επεξεργασία Πληροφορίας

Διοικητική Λογιστική

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ΑΛΓΟΡΙΘΜΟΣ HEAPSORT

4 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Ψηφιακή Επεξεργασία Εικόνων

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Δομές Δεδομένων Ενότητα 2

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 4: Διαίρει και Βασίλευε. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Θέματα Εφαρμοσμένης. Ενότητα 14.2: Η ψήφος στα πρόσωπα. Θεόδωρος Χατζηπαντελής Τμήμα Πολιτικών Επιστημών ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 9: Άπληστοι Αλγόριθμοι. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι και πολυπλοκότητα Διαίρει και Κυρίευε

Εισαγωγή στον δομημένο προγραμματισμό

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Εκκλησιαστικό Δίκαιο

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 3: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΓΡΑΦΗΜΑΤΑ

Διδακτική της Πληροφορικής

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

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

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

ΑΛΓΟΡΙΘΜΟΙ Ενότητα 10

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 11: ΠΡΟΒΛΗΜΑ ΔΙΑΤΡΕΞΗΣ ΓΡΑΦΗΜΑΤΟΣ

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 5: Μείωσε και Βασίλευε Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μείωσε και Βασίλευε Μείωση κατά ένα, Μείωση κατά ένα σταθερό όρο, Μείωση κατά μεταβλητό μέγεθος

Μείωσε και Βασίλευε 1. Μειώνουμε το στιγμιότυπο του προβλήματος σε ένα μικρότερο στιγμιότυπο του ιδίου προβλήματος 2. Επιλύουμε το μικρότερο στιγμιότυπο 3. Επεκτείνουμε τη λύση του μικρότερου προβλήματος για να λύσουμε το αρχικό πρόβλημα Συναντάται και με τις δύο μορφές: «από κάτω προς τα πάνω (bottom-up» και «από πάνω προς τα κάτω (top-down)» Αναφέρεται επίσης και ως επαγωγική (inductive) ή επαυξητική (incremental) προσέγγιση 5

Παραδείγματα «Μείωσε και Βασίλευε» Μείωση κατά ένα: Ταξινόμηση με εισαγωγή αναζήτησης σε γράφους: DFS, BFS, τοπολογική ταξινόμηση για τη δημιουργία διατάξεων, υποσυνόλων Μείωση κατά ένα σταθερό όρο: Δυαδική αναζήτηση Προβλήματα κίβδηλων νομισμάτων Πολλαπλασιασμός αλά ρωσικά Πρόβλημα του Josephus Μείωση κατά μεταβλητό μέγεθος: Αλγόριθμος του Ευκλείδη Επιλογή με διαμέριση 6

Ποιά είναι η διαφορά; Έστω το πρόβλημα της ύψωσης σε δύναμη: a n Ωμή Βία: a*a*a*a*...*a Διαίρει και Βασίλευε: a n/2 * a n/2 Μείωσε κατά ένα: a n-1 * a Μείωσε κατά ένα σταθερό όρο: (a n/2 ) 2 7

Ταξινόμηση με εισαγωγή Algorithm InsertionSort(A[0..n-1]) // Sorts a given array by insertion sort // Input: An array A[0..n-1] of n orderable elements // Output: Array A[0..n-1] sorted in nondecreasing order for i 1 to n-1 do v A[i]; j i-1; while j 0 and A[j] > v do A[j+1] v A[j+1] A[j]; j j-1; Βελτιώσεις: κόμβος φρουρός, δυαδική εισαγωγή, ταξινόμηση του Shell Αποδοτικότητα? 8

Ανάλυση της ταξινόμησης με εισαγωγή Χρονική αποδοτικότητα C worst (n) = n(n-1)/2 Θ(n 2 ) C avg (n) n 2 /4 Θ(n 2 ) C best (n) = n - 1 Θ(n) (είναι γρήγορη και για σχεδόν ταξινομημένους πίνακες) Χωρική αποδοτικότητα: επιτόπιος αλγόριθμος (inplace) Ευστάθεια: ναι 9

Ταξινόμηση με εισαγωγή - παράδειγμα Παράδειγμα: Ταξινόμησε τους αριθμούς 6, 4, 1, 8, 5 6 4 1 8 5 4 6 1 8 5 1 4 6 8 5 1 4 6 8 5 1 4 5 6 8 10

Διάσχιση γράφων Πολλά προβλήματα απαιτούν τη συστηματική επεξεργασία των κορυφών ενός γράφου διάσχισης γράφου: Αναζήτηση κατά βάθος (depth-first search - DFS) Αναζήτηση κατά πλάτος (breadth-first search - BFS) 11

Αναζήτηση κατά βάθος (DFS) Εξερευνούμε το γράφο G=(V,E) κινούμενοι πάντοτε όσο το δυνατό μακρύτερα από την τελευταία επισκεφθείσα κορυφή Ομοιότητα με την προδιατεταγμένη διάσχιση δένδρου Algorithm DFS(G) count :=0 mark each vertex with 0 (unvisited) for each vertex v V do if v is marked with 0: dfs(v) dfs(v) count count + 1 mark v with count for each vertex w adjacent to v do if w is marked with 0: dfs(w) 12

Αναζήτηση κατά βάθος (συνέχεια) Χρησιμοποιείται μία στοίβα Ένας κόμβος ωθείται στην στοίβα όταν επισκέπτεται για πρώτη φορά. Ένας κόμβος απωθείται από τη στοίβα όταν δεν υπάρχει γειτονικός κόμβος που δεν έχει επισκεπτεί, δηλ. απωθείται ένας κόμβος όταν καθίσταται αδιέξοδο. 13

Παράδειγμα DFS Μη κατευθυνόμενος γράφος Σειρά επίσκεψης με αναζήτηση κατά βάθος; a b c d e f g h 14

Τύποι ακμών σε ένα δάσος DFS Δενδρικές ακμές (tree edges): ακμές που σχηματίζουν το δένδρο Οπίσθιες ακμές (back edges): ακμές προς κόμβους-προγόνους 15

Αναζήτηση κατά βάθος Η DFS μπορεί να υλοποιηθεί με γράφους που αναπαρίστανται: Πίνακα γειτνίασης: Θ(V 2 ) Συνδεδεμένες λίστες γειτνίασης: Θ(V+E) Δίνει δύο διακριτές διατάξεις κορυφών: καθώς οι κορυφές συναντώνται για πρώτη φορά (όταν ωθούνται σε μία στοίβα) καθώς οι κορυφές συναντώνται για δεύτερη φορά (όταν απωθούνται από τη στοίβα) Εφαρμογές (Hopcroft-Tarjan): Έλεγχος συνδεσιμότητας, εύρεση συνδεδεμένων συνιστωσών Έλεγχος κύκλων, σημεία συναρμογής Εύρεση του χώρου καταστάσεων του προβλήματος προς επίλυση (AI) 16

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

Αλγόριθμος αναζήτησης κατά πλάτος Algorithm BFS(G) (1) // Implements a breadth first search traversal of a given graph // Input: Graph G = (V,E) // Output: Graph G with its vertices marked with consecutive integers in the order they've been first encountered by the BFS traversal mark each vertex in V with 0 to denoted "unvisited" count <- 0 for each vertex v in V do if v is marked with 0 bfs(v) 18

Αλγόριθμος αναζήτησης κατά πλάτος bfs(v) (2) // visits all the unvisited vertices connected to vertex v by a path and assigns them the numbers in the order they are visited via global variable count count <- count + 1; mark v with count and initialize a queue with v while the queue is not empty do for each vertex w in V adjacent to the front vertex do if w is marked with 0 count <- count + 1; mark w with count add w to the queue remove the front vertex from the queue 19

Παράδειγμα BFS Μη κατευθυνόμενος γράφος Σειρά επίσκεψης με αναζήτηση κατά πλάτος; a b c d e f g h 20

Αναζήτηση κατά πλάτος: σημειώσεις Η BFS έχει την ίδια αποτελεσματικότητα με τη DFS αναλόγως αν ο γράφος υλοποιείται με: Πίνακες γειτνίασης: Θ(V 2 ) Συνδεδεμένες λίστες γειτνίασης: Θ(V+E) Δίνει μόνο μία διάταξη των κορυφών (η σειρά εισαγωγής/εξαγωγής από την ουρά είναι ίδια) 21

Κατευθυνόμενος άκυκλος γράφος (dag) Dag είναι ένας κατευθυνόμενος γράφος χωρίς κύκλους Προκύπτουν σε πολλά προβλήματα όπως: Δομές με προαπαιτούμενα Τροφικές αλυσίδες Βασίζονται σε μερικές διατάξεις του πεδίου Τοπολογική ταξινόμηση: να βρεθεί μία διάταξη κορυφών για την οποία κάθε ακμή να εξέρχεται από μία κορυφή που εμφανίζεται νωρίτερα από την κορυφή που εισέρχεται. 22

Παράδειγμα DFS κατευθυνόμενος γράφος Σειρά επίσκεψης με αναζήτηση κατά βάθος; a b c d e f g h 23

Τύποι ακμών σε ένα δάσος DFS Δενδρικές ακμές (tree edges): ακμές που σχηματίζουν το δένδρο Οπίσθιες ακμές (back edges): ακμές προς κόμβους-προγόνους Εμπρόσθιες ακμές (forward edges): ακμές προς κόμβους-απογόνους Διασταυρούμενες ακμές (cross edges): καμία περίπτωση από τις ανωτέρω 24

Παράδειγμα Κατευθυνόμενος γράφος Σειρά επίσκεψης με αναζήτηση κατά πλάτος; a b c d e f g h 25

Τοπολογική ταξινόμηση Nα βρεθεί μία συνολική διάταξη συμβατή με την τροφική αλυσίδα τίγρης άνθρωπος ψάρι γαρίδα πλαγκτόν σιτάρι πρόβατο Το πρόβλημα επιλύεται αν και μόνο αν ο γράφος είναι dag 26

τοπολογικής ταξινόμησης 1. βασισμένοι σε DFS: Διασχίζουμε με DFS και καταγράφουμε τη διάταξη με την οποία οι κόμβοι απωθούνται από τη στοίβα Αναστρέφοντας τη διάταξη επιλύεται το πρόβλημα Αν συναντηθούν οπίσθιες ακμές δεν είναι dag! 2. Αλγόριθμος με διαγραφή πηγής (source) Διαδοχικά βρίσκει και απομάκρυνει μία πηγή (ένας κόμβος χωρίς εισερχόμενες ακμές) μαζί με όλες τις εξερχόμενες ακμές της Κοινή επίδοση Θ(V+E) με συνδεδεμένες λίστες γειτνίασης 27

Δημιουργία μεταθέσεων Χρήσιμη σε εξαντλητικούς αλγορίθμους αναζήτησης Απαίτηση ελάχιστης μεταβολής (minimal-change requirement) Δίνεται: ένα σύνολο μεταθέσεων k-1 αντικειμένων Μέθοδος: Δημιουργία μίας νέας μετάθεσης εισάγοντας το k-οστό αντικείμενο σε όλες τις δυνατές θέσεις μετακινούμενοι κατά μία κατεύθυνση (από τα δεξιά προς τα αριστερά) για την 1 η από τις μεταθέσεις μεγέθους k-1. Στη συνέχεια, για την επόμενη μετάθεση μεγέθους k-1, εισάγουμε το k-οστό αντικείμενο εναλλάσσοντας την κατεύθυνση (από τα αριστερά προς τα δεξιά) 28

Δημιουργία μεταθέσεων Johnson- Trotter Τέχνασμα: ένας βέλος δείχνει την κατεύθυνση ενός αντικειμένου. Ένα αντικείμενο ονομάζεται κινητό (mobile) αν δείχνει σε ένα μικρότερο αντικείμενο. Δεν δημιουργούνται στιγμιότυπα μικρότερου μεγέθους. Αλγόριθμος Johnson-Trotter Initialize the first permutation 1 2 3 n while there exist a mobile integer k do find the largest mobile integer k swap k and the adjacent integer its arrow points to reverse the direction of all integers that are larger than k Παράδειγμα 123, 132, 312, 321, 231, 213 Επίδοση 29

Δημιουργία μεταθέσεων Ο αλγόριθμος Johnson-Trotter δεν παράγει μεταθέσεις σε λεξικογραφική διάταξη Παράδειγμα 123, 132, 213, 231, 312, 321 Λύση: Σαρώνουμε από δεξιά προς τα αριστερά μέχρι να βρούμε ένα ζεύγος (a i, a i+1 ) που να ισχύει a i < a i +1. Κατόπιν, βρίσκουμε το μικρότερο στοιχείο στις θέσεις i+1, n που είναι μεγαλύτερο του a i και το τοποθετούμε στη θέση i. Τα υπόλοιπα στοιχεία δεξιά από αυτή τη θέση μπαίνουν σε αύξουσα σειρά. 30

Δημιουργία υποσυνόλων (1) Χρήσιμη στο πρόβλημα του σάκου (εξαντλητική λύση). Δυναμοσύνολο : ένα σύνολο 2 n συνόλων Μείωση κατά ένα Ιδέα: δημιουργούμε ένα δυναμοσύνολο με τα αντικείμενα {1,2,, n-1} και εισάγουμε το αντικείμενο n στο καθένα από αυτά. 31

Δημιουργία υποσυνόλων (2) Χρησιμοποιούμε ένα bitstring για την αναπαράσταση των συνόλων: 101 {a 1, a 3 } Παράδειγμα: για 3 αντικείμενα έχουμε 8 σύνολα που αναπαρίστανται με 000, 001, 010,, 110, 111. Επεκτάσεις Ταυτόχρονα λεξικογραφική διάταξη, συμπιεσμένη διάταξη (squashed order) Διάταξη με ελάχιστη αλλαγή (minimal change order) Gray code: 000, 001, 011, 010, 110, 111, 101, 100 32

Μείωση κατά σταθερό όρο: κίβδηλο νόμισμα Μεταξύ n νομισμάτων με ίδια όψη, το ένα είναι κίβδηλο. Έστω ότι είναι ελαφρύτερο. Χωρίζουμε τα νομίσματα σε δύο κατηγορίες από n/2 νομίσματα, συν 1 νόμισμα αν το n είναι περιττός αριθμός Αναδρομική εξίσωση: Τι θα συμβεί αν χωρίσουμε σε 3 κατηγορίες; 33

Πολλαπλασιασμός αλά ρωσικά Αλλιώς καλείται μέθοδος του ρώσου χωρικού Έστω δύο θετικοί ακέραιοι n και m Αν το n είναι άρτιο, τότε : n. m = n/2. 2m Αν το n είναι περιττό, τότε : n. m = (n-1)/2. 2m + m Παράδειγμα : 20 * 26 n m 20 26 10 52 5 104 104 2 208 + 1 416 416 = 520 34

Το πρόβλημα του Josephus Ιστορικό πρόβλημα N αποκλεισμένοι άνδρες, για να μην παραδοθούν, θα σκοτώσουν διαδοχικά ο ένας τον άλλο. Να βρεθεί ο τελευταίος επιζών. Παράδειγμα για N = 6, 7 Αναδρομική εξίσωση για τη θέση του επιζώντα J(2k) = 2J(k)-1 J(2k+1) = 2J(k)+1 35

Μείωση κατά μεταβλητό μέγεθος: υπολογισμός μέσου Στατιστικά διατάξεων: βρες τον k-οστό αριθμό Μία λύση είναι να ταξινομήσουμε και να επιλέξουμε τον k-οστό Καλύτερα να διαμερίσουμε όπως στη γρήγορη ταξινόμηση Παράδειγμα : 4, 1, 10, 9, 7, 12, 8, 2, 15 Επίδοση στην καλύτερη, χειρότερη και μέση περίπτωση 36

Παράδειγμα εύρεσης μέσου Παράδειγμα: 4 1 10 9 7 12 8 2 15 n = 9, k = 9/2 = 5 1 2 3 4 5 6 7 8 9 4 1 10 9 7 12 8 2 15 4 1 2 9 7 12 8 10 15 2 1 4 9 7 12 8 10 15 s=3<k=5 9 7 12 8 10 15 9 7 8 12 10 15 8 7 9 12 10 15 s=6>k=5 8 7 7 8 s=k=5 Λύση: median = 8 37

Αναζήτηση παρεμβολής Η δυαδική αναζήτηση δεν είναι πανάκεια Δοθέντος ενός ταξινομημένου πίνακα A, όπου το A[l] είναι το ελάχιστο και A[r] το μέγιστο, να βρεθεί η θέση της τιμής v. Λύση : δοκίμασε τη θέση x = l + (v-a[l])(r-l)/(a[r]-a[l]) Επίδοση της καλύτερης, χειρότερης και μέσης περίπτωσης: O(1), O(log logn), O(n) 38

Δυαδικά δένδρα αναζήτησης Τοποθέτηση κλειδιών σε ένα δυαδικό δένδρο με την ιδιότητα του δυαδικού δένδρου αναζήτησης: k Παράδειγμα 1: 5, 10, 3, 1, 7, 12, 9 Παράδειγμα 2: 4, 5, 7, 2, 1, 3, 6 <k >k 39

Αναζήτηση και εισαγωγή σε δυαδικό δένδρο Αναζήτηση εύκολη δουλειά Εισαγωγή αναζήτηση κλειδιού και εισαγωγή στο φύλλο όπου καταλήγει η αναζήτηση Στη χειρότερη περίπτωση: h+1 συγκρίσεις κλειδιών lgn h n 1 Κατά μέσο όρο για τυχαία αρχεία: h = 1.41 lg n Άρα: Χειρότερη περίπτωση: Θ(n) Μέση περίπτωση: Θ(lgn) Πλεονέκτημα: η ενδοδιατεταγμένη διάσχιση παράγει ταξινομημένες λίστες 40

Σημείωμα Αναφοράς Copyright, Ιωάννης Μανωλόπουλος, Αναστάσιος Γούναρης. «.». Έκδοση: 1.0. Θεσσαλονίκη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: http://eclass.auth.gr/courses/ocrs417/

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο [1] http://creativecommons.org/licenses/by-nc-sa/4.0/

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Τέλος ενότητας Επεξεργασία: Ανδρέας Κοσματόπουλος Θεσσαλονίκη, Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.00.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.