Δομές Δεδομένων (Data...
date post
10-Jan-2020Category
Documents
view
3download
0
Embed Size (px)
Transcript of Δομές Δεδομένων (Data...
Δομές Δεδομένων (Data Structures)
Ανάλυση - Απόδοση Αλγορίθμων
• Έλεγχος Αλγορίθμων.
• Απόδοση Προγραμμάτων.
• Χωρική/Χρονική Πολυπλοκότητα.
• Ασυμπτωτικός Συμβολισμός.
• Παραδείγματα.
Δομές Δεδομένων 2010/11, Κεφάλαιο 2:Απόδοση - Ανάλυση Αλγορίθμων
Αλγόριθμοι: Βασικές Έννοιες
Αλγόριθμος: μια μέθοδος ή μια διαδικασία που ακολουθείται για την επίλυση ενός προβλήματος (π.χ. αναζήτηση, ταξινόμηση, κλπ.).
Ένας αλγόριθμος παίρνει την δεδομένα (input) ενός προβλήματος, εκτελεί λειτουργίες (π.χ. συναρτήσεις) και παρέχει αποτελέσματα (output).
Ένα πρόβλημα μπορεί να επιλύεται με πολλούς εναλλακτικούς αλγορίθμους. Χρειάζεται να συγκρίνουμε τους αλγόριθμους μεταξύ τους.
Το βασικότερο κριτήριο είναι ο χρόνος εκτέλεσης του προγράμματος.
Δομές Δεδομένων 2010/11, Κεφάλαιο 2:Απόδοση - Ανάλυση Αλγορίθμων
Έλεγχος Αλγορίθμων
Η επιλογή του αλγορίθμου (και της κατάλληλης δομής δεδομένων) επηρεάζουν το χρόνο εκτέλεσης ενός προγράμματος.
Ο χρόνος εκτέλεσης μπορεί να κυμαίνεται από λίγα δευτερόλεπτα έως μερικές ώρες/μέρες/εβδομάδες/...
Μια λύση λέγεται αποδοτική, εάν επιλύει το πρόβλημα εντός των περιορισμών που υπάρχουν ως προς τους πόρους:
Χώρος
Χρόνος
Το κόστος μιας λύσης είναι το ποσό των πόρων που αυτή η λύση δαπανά.
Δομές Δεδομένων 2010/11, Κεφάλαιο 2:Απόδοση - Ανάλυση Αλγορίθμων
Αλγορίθμοι – Δομές Δεδομένων
Επιλογή της κατάλληλης δομής δεδομένων (ΔΔ):
1. Αναλύουμε το πρόβλημα, καθορίζουμε τους περιορισμούς πόρων, στους οποίους πρέπει να υπόκειται μια λύση
2. Καθορίζουμε τις βασικές λειτουργίες που πρέπει να υποστηρίζονται – Εισαγωγή δεδομένων: Είτε όλα τα δεδομένα εισάγονται από την αρχή ή
παρεμβάλλονται ανάμεσα σε άλλες λειτουργίες. – Πως γίνεται η διαχείριση των δεδομένων; – Όλα τα δεδομένα υφίστανται επεξεργασία σε μια καθορισμένη σειρά ή
επιτρέπεται τυχαία προσπέλαση;
3. Επιλέγουμε τη δομή δεδομένων που ικανοποιεί καλύτερα αυτούς τους περιορισμούς
Δομές Δεδομένων 2010/11, Κεφάλαιο 2:Απόδοση - Ανάλυση Αλγορίθμων
Δομές Δεδομένων – Μην Ξεχνάτε:
• Κάθε δομή δεδομένων έχει πλεονεκτήματα και μειονεκτήματα. Σπάνια μια δομή δεδομένων είναι καλύτερη από μια άλλη σε όλες τις περιπτώσεις.
• Μια δομή δεδομένων απαιτεί: Χώρο για κάθε αντικείμενο δεδομένων που αποθηκεύει Χρόνο για να εκτελέσει κάθε βασική λειτουργία Προγραμματιστική προσπάθεια
• Κάθε πρόβλημα έχει περιορισμούς ως προς το διαθέσιμο χώρο και χρόνο.
Δομές Δεδομένων 2010/11, Κεφάλαιο 2:Απόδοση - Ανάλυση Αλγορίθμων
Έλεγχος Αλγορίθμων: Σχεδιάζοντας Δεδομένα Ελέγχου
1) Μέθοδοι Μαύρου Κουτιού (ΜΜΚ): Ελέγχουμε κυρίως τη λειτουργία του προγράμματος.
Π.χ. Διαμερίζουμε το χώρο δεδομένων (Ι/Ο) σε κλάσεις. Δεδομένα σε διαφορετικές κλάσεις εμφανίζουν διαφορετικές συμπεριφορές.
2) Μέθοδοι Άσπρου Κουτιού (ΜΑΚ): Ελέγχουμε κυρίως τον κώδικα.
Κάλυψη Εντολών: Το σύνολο των ελέγχων θα πρέπει να προκαλεί την εκτέλεση κάθε εντολής προγράμματος τουλάχιστον 1 φορά.
Κάλυψη Αποφάσεων: Απαιτούμε κάθε συνθήκη μέσα στο πρόγραμμα να πάρει και τις δύο πιθανές τιμές (true, false).
Κάλυψη Μονοπατιών Εκτέλεσης: Απαιτούμε την κάλυψη/εκτέλεση όλων των μονοπατιών εκτέλεσης στο πρόγραμμα. Πολύ απαιτητική, συχνά αδύνατη συνθήκη.
Δομές Δεδομένων 2010/11, Κεφάλαιο 2:Απόδοση - Ανάλυση Αλγορίθμων
Αποσφαλμάτωση (Debugging)
• Διαδικασία καθορισμού της αιτίας ασυμφωνίας μεταξύ επιθυμητής και παρατηρούμενης συμπεριφοράς.
Τρόποι αποσφαλμάτωσης:
Αναλύστε διεξοδικά το πρόβλημα - Χρησιμοποιήστε τη λογική
Έλεγχος: ξεκινήστε από μια συνάρτηση/κλάση που είναι ανεξάρτητη από τις άλλες. Κατόπιν προχωρήστε σε περισσότερες.
Επανασχεδιάσετε το πρόβλημα αφού πρώτα βρείτε το αίτιο.
Βεβαιωθείτε ότι η διόρθωση δεν προκαλεί άλλα σφάλματα.
Δομές Δεδομένων 2010/11, Κεφάλαιο 2:Απόδοση - Ανάλυση Αλγορίθμων
Απόδοση Προγραμμάτων
• Ορισμός: ποσό μνήμης (χωρική απόδοση) και χρόνου (χρονική απόδοση) υπολογιστή τα οποία απαιτούνται για να «τρέξει» το πρόγραμμα.
• Καθορισμός: (α) Ανάλυση απόδοσης: αναλυτικές μεθόδους (β) Μέτρηση απόδοσης: διεξάγουμε «πειράματα»
Μέτρηση απόδοσης: a) Εμπειρική σύγκριση (τρέξιμο προγραμμάτων) b) Ασυμπτωτική ανάλυση αλγορίθμων
Σχεδόν πάντα, ο χρόνος εκτέλεσης (τρεξίματος) εξαρτάται από το ‘μέγεθος’ του προβλήματος (των δεδομένων), π.χ. μέγεθος λίστας, πινάκων, … κλπ.
Ο χρόνος εκτέλεσης εκφράζεται ως Τ(n) για κάποια συνάρτηση Τ πάνω στο μέγεθος n που δίνεται (input) κατά την εκτέλεση του προγράμματος.
Δομές Δεδομένων 2010/11, Κεφάλαιο 2:Απόδοση - Ανάλυση Αλγορίθμων
Εμπειρική Σύγκριση - Τρέξιμο Προγραμμάτων
• Αναπτύσσουμε πρόγραμμα που επιλύει ένα πρόβλημα.
Εκτελούμε-«τρέχουμε» το πρόγραμμα για διαφορετικό μέγεθος εισόδου και δεδομένων (input).
Χρησιμοποιούμε συναρτήσεις που μετρούν τον πραγματικό χρόνο που απαιτείται για την εκτέλεση του προγράμματος.
Σχεδιάζουμε τα αποτελέσματα.
Δομές Δεδομένων 2010/11, Κεφάλαιο 2:Απόδοση - Ανάλυση Αλγορίθμων
Απόδοση Προγραμμάτων
Χωρική Πολυπλοκότητα: ποσό μνήμης που απαιτείται
Χώρος εντολών: ποσό μνήμης που απαιτούν οι εντολές. Εξαρτάται από: compiler, flags, hardware.
Χώρος δεδομένων: ποσό μνήμης που απαιτείται για την: (α) αποθήκευση των τιμών όλων των σταθερών και μεταβλητών (β) Στοίβα περιβάλλοντος: κάθε φορά που καλείται μια συνάρτηση στη στ