Παύλος Εφραιμίδης 1
περιεχόμενα ενθετική ταξινόμηση ανάλυση αλγορίθμων σχεδίαση αλγορίθμων 2
ενθετική ταξινόμηση 3
ενθετική ταξινόμηση Βασική αρχή: Επιλέγει ένα-έναταστοιχείατηςμηταξινομημένης ακολουθίας και τα εισαγάγει σε μια ταξινομημένη λίστα 4
ταξινόμηση τραπουλόχαρτων 5
Ψευδοκώδικας 1. for (int j = 2; j < A.length; j++ ) { 2. κλειδί = Α[j]; 3. // Ενθέτουμε το A[j] στην ταξινομημένη // ακολουθία Α[1..j-1] 4. i = j 1; 5. while (i > 0 && A[i] > κλειδί) { 6. A[i+1]=A[i]; 7. i--; 8. } 9. A[i+1] = κλειδί 10. } 6
παράδειγμα 7
αναλλοίωτες συνθήκες και ορθότητα της ενθετικής ταξινόμησης Κατά την εκτέλεση της ενθετικής ταξινόμησης ισχύει η ακόλουθη αναλλοίωτη συνθήκη: Στην αρχή κάθε επανάληψης του κυρίως βρόχου, η υποσυστοιχία Α[1..j-1] αποτελείται από στοιχεία τα οποία βρίσκονταν εξαρχής στην υποσυστοιχία αυτή, όμως τώρα είναι διατεταγμένα κατά τον επιθυμητό τρόπο. Ορθότητα: Η χρήση της αναλλοίωτης συνθήκης μπορεί να βοηθήσει να καταλάβουμε γιατί ένας αλγόριθμος είναι ορθός 8
αναλλοίωτη συνθήκη μια αναλλοίωτη συνθήκη θα πρέπει να πληροί αποδεδειγμένα τις εξής προϋποθέσεις: αρχικός έλεγχος: η αρχική συνθήκη ισχύει πριν από την πρώτη επανάληψη του βρόχου έλεγχος διατήρησης: αν η συνθήκη ισχύει πριν από μια επανάληψη του βρόχου θα ισχύει και μετά από αυτή επιβεβαίωση αποτελέσματος: όταν ο βρόχος τερματίσει, η αναλλοίωτη συνθήκη μας δίνει μια ιδιότητα που μας βοηθά να αποδείξουμε ότι ο αλγόριθμος είναι ορθός 9
ορθότητα ενθετικής ταξινόμησης μπορούμε να χρησιμοποιήσουμε την έννοια της αναλλοίωτης συνθήκης για να αποδείξουμε την ορθότητα της ενθετικής ταξινόμησης; 10
ψευδοκώδικας θα χρησιμοποιούμε ψευδοκώδικα για την περιγραφή αλγορίθμων θα χρησιμοποιούμε γλώσσα ψευδοκώδικα που χρησιμοποιεί το βιβλίο, καθώς και java-like ψευδοκώδικα 11
ανάλυση αλγορίθμων 12
ανάλυση αλγορίθμου αναφέρεται στην πρόβλεψη των υπολογιστικών πόρων που απαιτεί η εκτέλεση του αλγορίθμου 13
υπολογιστικοί πόροι χρόνος (πλήθος βημάτων) μνήμη επικοινωνιακό εύρος ζώνης hardware (υλισμικό) κατά κανόνα θα μελετάμε την πολυπλοκότητα χρόνου των αλγορίθμων 14
υπολογιστικό μοντέλο για να μελετήσουμε το πλήθος των βημάτων που απαιτεί ένας αλγόριθμος θα πρέπει να προσδιορίσουμε το υπολογιστικό μοντέλο που χρησιμοποιεί ο αλγόριθμος τι είδους εντολές μπορεί να εκτελεί ο αλγόριθμος; ένα απλό και πολύ διαδεδομένο μοντέλο είναι η μηχανή RAM Random Access Machine όχι, δεν είναι η γνωστή μνήμη RAM Random Access Memory που γνωρίζουμε από τους ηλεκτρονικούς υπολογιστές 15
Random Access Machine (RAM) χαρακτηριστικά της RAM απλός σειριακός επεξεργαστής μνήμη άμεσης προσπέλασης (θεωρητικά απεριόριστη) καταχωρητές τύποι δεδομένων ακέραιοι αριθμοί κινητής υποδιαστολής βασικές πράξεις (αριθμητικές, διακλαδώσεως, συγκρίσεις) 16
ανάλυση της ενθετικής ταξινόμησης 17
σχεδίαση αλγορίθμων 18
διαίρει και βασίλευε 19
συγχωνευτική ταξινόμηση 20
Αναφορές/Πηγές Εισαγωγή στους αλγόριθμους, Κεφάλαιο 2 21