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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση

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

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

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

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

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

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

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

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

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

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

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

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

Πληροφορική ΙΙ Ενότητα 1

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα Μελανέρυθρα δεντρα

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

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

Λογισμός 3. Ενότητα 19: Θεώρημα Πεπλεγμένων (γενική μορφή) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

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

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

Εισαγωγή στους Υπολογιστές

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

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

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

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

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

Προγραμματισμός Η/Υ. 8 η ενότητα: Περιβαλλοντικά και μαθηματικά προβλήματα. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων

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

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

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

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

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

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

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

Υπολογιστική άλγεβρα Ενότητα 3: Πολυώνυμα τρίτου βαθμού

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

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

ΔΡΔ: Διαγράμματα Ροής Δεδομένων

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

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

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

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

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

Υπολογιστική άλγεβρα Ενότητα 10: Βάσεις Groebner ενός ιδεώδους ΙΙΙ

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

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

Transcript:

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

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

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

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

Μετασχημάτισε και Κυριάρχησε Μπορούμε να επιλύσουμε ένα πρόβλημα με μετασχηματισμό σε: Ένα περισσότερο βολικό στιγμιότυπο του ιδίου προβλήματος (απλοποίηση στιγμιότυπου) Προταξινόμηση, Gaussian απαλοιφή, αντιστροφή πίνακα, υπολογισμός ορίζουσας Μία διαφορετική αναπαράσταση του ίδιου στιγμιότυπου (αλλαγή αναπαράστασης) Ισοζυγισμένα δυαδικά δένδρα, σωροί και ταξινόμηση με σωρό, υπολογισμός πολυωνύμου με τον κανόνα του Horner, γρήγορος μετασχηματισμός Fourier ένα τελείως διαφορετικό πρόβλημα (αναγωγή προβλήματος) Μείωση σε προβλήματα γράφων, γραμμικός προγραμματισμός 5

Απλοποίηση στιγμιότυπου - Προταξινόμηση Ένα στιγμιότυπο ενός προβλήματος επιλύεται μετασχηματίζοντάς το σε ένα απλούστερο/ευκολότερο στιγμιότυπο του ιδίου προβλήματος Προταξινόμηση: Πολλά προβλήματα με λίστες επιλύονται ευκολότερα αν οι λίστες είναι ταξινομημένες Μοναδικότητα στοιχείου Υπολογισμός της τυπικής τιμής (mode) Υπολογισμός επαναλαμβανόμενων στοιχείων Αναζήτηση Υπολογισμός του μεσαίου 6

Εύρεση επαναλαμβανόμενων στοιχείων Αλγόριθμος ωμής βίας: Θ(n 2 ) Αλγόριθμος με προταξινόμηση: Ταξινόμηση με συγχώνευση: Θ(nlgn) Σάρωσε τον πίνακα για την εύρεση ίδιων διαδοχικών στοιχείων: Θ(n) Συνολικά: Θ(nlgn) Συμπέρασμα: η προταξινόμηση βελτιώνει σημαντικά 7

Έλεγχος της τυπικής τιμής Τυπική τιμή (mode) είναι το συχνότερο στοιχείο Ωμή βία: Σάρωσε τη λίστα, υπολόγισε τις συχνότητες, βρες τη μεγαλύτερη Algorithm PresortedMode Sort the array A i ; modefrequency ; while i n-1 do runlength 1; runvalue A[i]; while i+runlength n-1 and A[i+runlength]=runvalue runlength runlength+1 if runlength>modefrequency modefrequency runlength, modevalue runvalue i i+runlength return modevalue Συμπέρασμα: η προταξινόμηση και πάλι βοηθά την επίδοση 8

Έλεγχος μοναδικότητας στοιχείου Αλγόριθμος ωμής βίας: Θ(n 2 ) Algorithm PresortedElementUniqueness Sort the array A for i to n-2 do if A[i]=A[i+1] return false else return true Συμπέρασμα: η προταξινόμηση βελτιώνει την επίδοση Ίδια βελτίωση για την εύρεση της τυπικής τιμής 9

Το πρόβλημα της επιλογής Βρες το k-οστό μικρότερο στοιχείο μεταξύ των A[1],,A[n] Το ελάχιστο: k = 1, το μέγιστο: k = n, το μεσαίο: k = n/2 με προταξινόμηση Ταξινόμησε τη λίστα Επίστρεψε το A[k] με διαμερισμό (μείωσε και βασίλευε): Με διαμερισμό τοποθέτησε τον pivot στη θέση A[s] Αν s=k, τότε επίστρεψε A[s] Αλλιώς αν s<k, τότε επανάλαβε με την υπολίστα A[s+1],,A[n] Αλλιώς αν s>k, τότε επανάλαβε με την υπολίστα A[1],,A[s-1] 1

Σημειώσεις στο πρόβλημα της με προταξινόμηση: Ω(nlgn) + Θ(1) = Ω(nlgn) επιλογής με διαμερισμό (μείωσε και βασίλευε): Χειρότερη περίπτωση: T(n) =T(n-1) + (n+1) Θ(n 2 ) Καλύτερη περίπτωση: Θ(n) Μέση περίπτωση: T(n) =T(n/2) + (n+1) Θ(n) Bonus: βρίσκει επίσης τα k μικρότερα στοιχεία Ειδικές περιπτώσεις max, min: καλύτεροι και απλούστεροι γραμμικοί αλγόριθμοι (ωμή βία) Συμπέρασμα: η προταξινόμηση δεν βοηθά την περίπτωση αυτή 11

Gaussian απαλοιφή Δίνεται σύστημα δύο εξισώσεων με δύο αγνώστους a 11 x + a 12 y = b 1 a 21 x + a 22 y = b 2 Έχει μία μοναδική λύση εκτός αν οι συντελεστές είναι ανάλογοι Εκφράζουμε τη μία μεταβλητή ως συνάρτηση της άλλης και αντικαθιστούμε για να επιλύσουμε μία εξίσωση Τι συμβαίνει σε σύστημα με n εξισώσεις και n αγνώστους; 12

Gaussian απαλοιφή (2) Μετασχηματίζουμε τη Ax=b σε A x=b, όπου ο πίνακας A είναι άνω τριγωνικός Η λύση είναι εφικτή με αντικατάσταση προς τα πίσω Βασικές πράξεις Ανταλλαγή εξισώσεων Αντικατάσταση μίας εξίσωσης με ένα πολλαπλάσιο (μη μηδενικό) Αντικατάσταση μίας εξίσωσης με το άθροισμα ή τη διαφορά της εξίσωσης αυτής με το πολλαπλάσιο μίας άλλης Παράδειγμα 2x 1 - x 2 + x 3 = 1 4x 1 + x 2 - x 3 = 5 x 1 + x 2 + x 3 = 13

Gaussian απαλοιφή (3) Algorithm GaussElimination for i 1 to n do A[i,n+1] b[i] for i 1 to n-1 do for j i+1 to n do for k i to n+1 do A[j,k] A[j,k]- A[i,k]*A[j,i]/A[i,i] Προβληματική λύση αν το A[i,i] είναι ή πολύ μικρό 14

Gaussian απαλοιφή (μερική περιστροφή) Algorithm GaussElimination2 for i 1 to n do A[i,n+1] b[i] for i 1 to n-1 do pivotrow i for j i+1 to n do if A[j,i] > A[pivot,i] pivotrow j for k i to n+1 do swap(a[i,k],a[pivotrow,k]) for j i+1 to n do temp A[j,i]/A[i,i] for k I to n+1 do A[j,k] A[j,k]-A[I,k]*temp 15

LU αποσύνθεση Υποπροϊόν της Gaussian απαλοιφής Παράδειγμα A=LU LUx=b. Συμβολίζουμε y=ux Ly=b Επιλύουμε το Ly=b, και μετά το Ux=y Επιλύουμε όσες φορές χρειάζεται με διαφορετικά b Δεν χρειάζεται έξτρα χώρος 16

Αντιστροφή πίνακα AA -1 =I Ο ιδιάζων (singular) πίνακας δεν έχει αντίστροφο Ένας πίνακας είναι ιδιάζων αν και μόνο αν κάποια από τις γραμμές είναι γραμμικός συνδυασμός άλλων γραμμών Εφαρμογή Gaussian απαλοιφής. Αν προκύψει άνωτριγωνικός πίνακας χωρίς κάποιο μηδενικό στη διαγώνιο, τότε ο πίνακας δεν είναι ιδιάζων Πως θα βρούμε τον αντίστροφο ενός πίνακα; Ax j =e j 17

Υπολογισμός της ορίζουσας Ο γνωστός αναδρομικός τύπος Τι συμβαίνει αν το n είναι μεγάλο; Απόδοση; Εφαρμογή Gaussian απαλοιφής Η ορίζουσα ενός άνω-τριγωνικού πίνακα ισούται με το γινόμενο των στοιχείων της διαγωνίου Απόδοση; Ο κανόνας του Cramer 18

Ταξινόμηση αλγορίθμων αναζήτησης Στοιχειώδεις αλγόριθμοι αναζήτησης Σειριακή αναζήτηση Δυαδική αναζήτηση Αναζήτηση δυαδικού δένδρου Αναζήτηση ισοζυγισμένου δένδρου Δένδρα AVL Κόκκινα-μαύρα δένδρα Πολυκατευθυνόμενα ισοζυγισμένα δένδρα (δένδρα 2-3, δένδρα 2-3-4, B-δένδρα) Κατακερματισμός Ξεχωριστές αλυσίδες Ανοικτές διευθύνσεις 19

Ισοζυγισμένα δένδρα: δένδρα AVL Σε κάθε κόμβο, η διαφορά των υψών του αριστερού και του δεξιού υποδένδρου είναι το πολύ 1 Η ιδιότητα AVL διατηρείται με περιστροφές, κάθε φορά που το δένδρο δεν είναι ισοζυγισμένο lg n h 1.444 lg (n + 2) - 1.3277 στη μέση περίπτωση: 1.1 lg n +.1 για μεγάλα n Μειονέκτημα: θέλει έξτρα χώρο για την διατήρηση του παράγοντα ισοζυγισμού των κόμβων Μία παρόμοια ιδέα: τα κόκκινα-μαύρα δένδρα (τα ύψη των υποδένδρων μπορούν να διαφέρουν μέχρι 2 φορές) 2

Γενική περίπτωση: απλή R- περιστροφή r c c r T 3 T 1 T 1 T 2 T 2 T 3 21

Διπλή LR-περιστροφή r g c c r g T 4 T 2 T 3 T 1 T 2 T 3 T 1 ή T 4 ή 22

Παράγοντας ισοζυγισμού Ο αλγόριθμος διατηρεί έναν παράγοντα ισοζυγισμού για κάθε κόμβο 1 1 2 2 3 R 2 1 3-2 1-1 2 3 L 1 2 3 23

AVL περιστροφές Μικρά παραδείγματα: 1, 2, 3 3, 2, 1 1, 3, 2 3, 1, 2 Μεγαλύτερο παράδειγμα: 4, 5, 7, 2, 1, 3, 6 Στα προηγούμενα σχήματα δίνονται οι γενικές περιπτώσεις των περιστροφών 24

Επιπλεόν Παράδειγμα Κατασκευή ενός AVL δέντρου για τη λίστα: 5, 6, 8, 3, 2, 4, 7-5 -1 5 6-2 5-1 6 8 L(5) 5 8 6 3 1 5 1 6 8 2 1 3 2 5 2 6 8 R(5) 2 3 1 6 5 8 25

Συνέχεια Παραδείγματος 26 8 6 2 5 3 2 1-1 4 6 5-1 4 3 2 8 LR(6) 6 5-2 -1 4 3 2 8 1 7 7 5 4 3 2 8 6 RL(6)

Σωρός Ορισμός: Ο σωρός (heap) είναι ένα δυαδικό δένδρο με τις εξής προϋποθέσεις: Είναι σχεδόν πλήρες: Το κλειδί κάθε κόμβου είναι από τα κλειδιά των παιδιών του 27

Συνέπειες ορισμού Δεδομένου του n, υπάρχει ένα μοναδικό δυαδικό δένδρο με n κόμβους που είναι σχεδόν πλήρες με h= lg n Η ρίζα έχει το μεγαλύτερο κλειδί Καθένα από τα δύο υποδένδρα είναι επίσης σωροί 28

Ταξινόμηση με σωρό 1. Κτίζουμε το σωρό 2. Απομακρύνουμε τη ρίζα ανταλλάσσουμε με το τελευταίο (δεξιότερο) φύλλο 3. Φτιάχνουμε και πάλι το σωρό (πλην του τελευταίου φύλλου) 4. Επαναλαμβάνουμε τα βήματα 2,3 μέχρι ο σωρός να περιέχει ένα μόνο στοιχείο 29

Κτίσιμο του σωρού Εισάγουμε τα στοιχεία με τη δεδομένη σειρά στο δυαδικό δένδρο με bfs Ξεκινώντας από τον τελευταίο (δεξιότερο) κόμβο που είναι πατέρας, τακτοποιούμε τον αντίστοιχο σωρό, αν δεν ικανοποιεί τις συνθήκες του ορισμού: 1. Ανταλλάσσουμε με το μεγαλύτερο παιδί 2. Τακτοποιούμε το υποδένδρο που βρίσκεται στη θέση του μεγαλύτερου παιδιού 3

Παράδειγμα: Κτίσιμο σωρού Παράδειγμα: 2, 9, 7, 6, 5, 8 2 2 2 9 7 9 8 9 8 6 5 8 6 5 7 6 5 7 2 9 9 9 8 2 8 6 8 6 5 7 6 5 7 2 5 7 31

Διαγραφή ρίζας Η ρίζα του σωρού εξάγεται και ο σωρός τακτοποιείται ως εξής: Η ρίζα ανταλλάσσεται με το τελευταίο φύλλο Η νέα ρίζα συγκρίνεται με κάθε παιδί της και αν ένα από αυτά είναι μεγαλύτερο από τη ρίζα, τότε το ανταλλάσσουμε με αυτή Συνεχίζουμε τις συγκρίσεις/ανταλλαγές με τα παιδιά της νέας ρίζας μέχρι να φθάσει σε ένα επίπεδο του δένδρου όπου θα είναι μεγαλύτερη από τα αντίστοιχα παιδιά 32

Αναπαράσταση Χρησιμοποιούμε ένα πίνακα για να αποθηκεύσουμε το σωρό με bfs Παράδειγμα: 1 9 5 3 4 2 1 2 3 4 5 6 9 5 3 1 4 2 Το αριστερό παιδί του κόμβου j είναι το 2j Το δεξιό παιδί του κόμβου j είναι το 2j+1 Ο πατέρας του κόμβου j είναι ο j /2 Οι πατρικοί κόμβοι βρίσκονται στις πρώτες n /2 θέσεις 33

Αλγόριθμος κατασκευής σωρού Algorithm HeapBottomUp (H[1... n]) //Constructs a heap from the elements of a given array //by the bottom-up algorithm //Input: An array H[1... n] of orderable items //Output: A heap H[1... n] for i n/2 downto 1 do k i; v H[k]; heap false while not heap and 2 * k n do j 2 * k if j < n //there are two children if H[j] < H[j+1]: j j + 1 if v H[j]: heap true else H[k] H[j]; k j H[k] v 34

Ανάλυση της ταξινόμησης με σωρό Με βάση την προηγούμενη διαφάνεια Η τακτοποίηση του σωρού στο ύψος j απαιτεί 2j συγκρίσεις Για το υποδένδρο στο επίπεδο i εκτελούνται 2(h-i) συγκρίσεις Συνολικά: h-1 Σ 2(h-i) 2 i i= = 2 ( n lg (n + 1)) = Θ(n) # nodes at level i 35

Ανάλυση της ταξινόμησης με σωρό (2) Συνολικά για τον αλγόριθμο: 1. Κτίσιμο σωρού: Θ(n) 2. Εξαγωγή ρίζας ανταλλαγή με το τελευταίο φύλλο 3. Τακτοποίηση σωρού (εκτός του τελευταίου φύλλου): Θ(logn) 4. Επανάληψη (n-1) φορές των 2, 3 μέχρι ο σωρός να περιέχει ένα φύλλο Χειρότερη περίπτωση: Θ(n) + Θ(n log n) = Θ(n log n) Μέση περίπτωση επίσης Θ(n log n) 36

Παράδειγμα Heapsort Να ταξινομηθεί η λίστα 2, 9, 7, 6, 5, 8 Κτίσιμο σωρού Διαγραφή ρίζας 1 9 7 6 5 8 9 6 8 2 5 7 2 9 8 6 5 7 7 6 8 2 5 9 2 9 8 6 5 7 8 6 7 2 5 9 9 2 8 6 5 7 5 6 7 2 8 9 9 6 8 2 5 7 7 6 5 2 8 9 2 6 5 7 8 9 6 2 5 7 8 9 5 2 6 7 8 9 5 2 6 7 8 9 2 5 6 7 8 9 37

Εισαγωγή σε σωρό Εισαγωγή στοιχείου στην τελευταία θέση του σωρού Σύγκριση με τον πατέρα, αν παραβιάζει ο ορισμός, τότε τους ανταλλάσουμε Συνεχίζουμε τις συγκρίσεις του νέου στοιχείου με τους κόμβους που βρίσκονται στο μονοπάτι προς τη ρίζα μέχρι να ισχύει ο ορισμός του σωρού Παράδειγμα: εισαγωγή του στοιχείου 9 8 8 9 5 7 5 9 5 8 1 4 6 9 Αποτελεσματικότητα: O(log n) 1 4 6 7 1 4 6 7 38

Κατασκευή σωρού Από επάνω προς τα κάτω: Ο σωρός μπορεί να κατασκευασθεί με διαδοχικές εισαγωγές σε ένα αρχικά κενό σωρό Από κάτω προς τα επάνω: Βάζουμε όλα τα στοιχεία στον πίνακα και τα τακτοποιούμε Ποιο είναι καλύτερο; 39

Ουρά προτεραιότητας Η ουρά προτεραιότητας είναι ένας αφηρημένος τύπος δεδομένων (ADT) ενός αταξινόμητου συνόλου με τις εξής πράξεις: Βρες το στοιχείο με τη μεγαλύτερη προτεραιότητα Διάγραψε το στοιχείο με τη μεγαλύτερη προτεραιότητα Εισάγαγε ένα στοιχείο με τυχαίο προτεραιότητα Ο σωρός είναι ιδανική δομή για την υλοποίηση ουρών προτεραιότητας 4

Ο κανόνας του Horner Ανακοινώθηκε στις αρχές του 19 ου αιώνα Κατά τον Knuth, η μέθοδος χρησιμοποιήθηκε από το Νεύτωνα Υπολογισμός του πολυωνύμου στο σημείο x p(x) = a n x n + a n-1 x n-1 + + a 1 x + a p(x) = ( (a n x + a n-1 ) x + )x + a Παράδειγμα: υπολογισμός του p(x)=2x 4 -x 3 +3x 2 +x-5 στο x=3 p(x) = x (x (x (2x-1) + 3) + 1) - 5 Οπτικοποίηση με πίνακα 41

Ο κανόνας του Horner (2) Algorithm Horner(P[..n],x) // Evaluate polynomial at a given point // Input: an array P[..n] of coefficients and a number x //Output: the value of polynomial at point x p P[n] for i n-1 down to do p x*p + P[i] return p Αποτελεσματικότητα? Παραπροϊόν: συντελεστές του πηλίκου της διαίρεσης του p(x) δια (x-x ) 42

Δυαδική εκθετικοποίηση Ο κανόνας του Horner δεν είναι αποτελεσματικός για τον υπολογισμό του p(x)=x n at x=a. Εκφυλίζεται σε ωμή βία Έστω η δυαδική αναπαράσταση n=b l b l-1 b i b 1 b n = p(x) = b l x l + b l-1 x l-1 + + b 1 x + b για x=2 Algorithm LeftRightBinaryExponentiation product a for i l-1 down to do product product * product if b i 1 then product product*a return product Παράδειγμα: υπολογισμός a 13, n=13=111 Αποδοτικότητα 43

Δυαδική εκθετικοποίηση (2) Υπολογισμός a n. Θεωρούμε n = b l 2 l + b l-1 2 l-1 + + b 1 2 + b και πολλαπλασιάζουμε ανεξαρτήτους όρους Algorithm RightLeftBinaryExponentiation term a if b =1 then product a else product 1 for i 1 to l do term term * term if b i = 1 then product product * term return product Παράδειγμα: υπολογισμός a 13, n=13=111 Αποδοτικότητα 44

Ελάχιστο κοινό πολλαπλάσιο lcm(24,6)=12, lcm(11,5)=55 Παράδειγμα: 24 = 2 x 2 x 2 x 3 6 = 2 x 2 x 3 x 5 lcm(24,6) = (2x2x3) x 2 x 5 Αποτελεσματικότητα (απαιτείται λίστα πρώτων) lcm(m,n) = mn / gcd(m,n) 45

Μέτρηση μονοπατιών σε γράφο Το πλήθος των διαφορετικών μονοπατιών μήκους k> από τον κόμβο i στον κόμβο j ισούται με το στοιχείο (i,j) του πίνακα A k, όπου A ο πίνακας γειτνίασης Παράδειγμα Αποδοτικότητα 46

Μείωση σε προβλήματα γράφων Εφαρμόζεται σε πλήθος προβλημάτων παιχνιδιών και γρίφων Κτίζουμε το γράφο του χώρου καταστάσεων Παράδειγμα: χωρικός, λύκος, κατσίκα, λάχανο Διασχίζουμε το γράφο εφαρμόζοντας ; 47

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

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

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

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

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

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