Δομές Δεδομένων (Data...

Click here to load reader

  • date post

    10-Jan-2020
  • Category

    Documents

  • view

    3
  • download

    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.

     Χώρος δεδομένων: ποσό μνήμης που απαιτείται για την: (α) αποθήκευση των τιμών όλων των σταθερών και μεταβλητών (β) Στοίβα περιβάλλοντος: κάθε φορά που καλείται μια συνάρτηση στη στ