ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ"

Transcript

1 ΤΕΧΝΟΛΟΓΙΚΟ ΙΔΡΥΜΑ ΛΑΡΙΣΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΣΗΜΕΙΩΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ Δρ. Ηλίας Κ. Σάββας ΛΑΡΙΣΑ, Ιανουάριος

2 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ...2 ΑΛΓΟΡΙΘΜΟΙ...4 ΠΡΟΓΡΑΜΜΑΤΑ...6 ΣΧΗΜΑΤΑ ΟΡΙΣΜΟΙ & ΟΡΟΛΟΓΙΑ Εισαγωγή Έννοιες Κλειδιά Πολυπλοκότητα & Απόδοση Αλγορίθμων Αλγοριθμική Γλώσσα Παραδείγματα & Λυμένες Ασκήσεις Ασκήσεις ΠΟΛΥΠΛΟΚΟΤΗΤΑ Ορισμοί Αλγόριθμοι Brute-Force Δισδιάστατα Μέγιστα To Πρόβλημα των Ελαχίστων Αποστάσεων (closest-pair problem) Εύρεση Αλφαριθμητικών Ασκήσεις ΒΕΛΤΙΩΜΕΝΗ ΜΕΘΟΔΟΣ ΥΠΟΛΟΓΙΣΜΟΥ ΔΙΣΔΙΑΣΤΑΤΩΝ ΜΕΓΙΣΤΩΝ (Plane-Sweep Algorithm) Αλγόριθμος Σάρωσης του Επιπέδου (Plane-Sweep Algorithm) Πολυπλοκότητα του Αλγόριθμου Σάρωσης του Επιπέδου Ασκήσεις ΑΝΑΔΡΟΜΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ Οι Πύργοι του Hanoi Ασκήσεις «ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ» Εισαγωγή Η Μέθοδος Ταξινόμησης Merge Sort Πολυπλοκότητα της Merge Sort H Μέθοδος Ταξινόμησης Quick Sort Quick Sort: Πολυπλοκότητα και Υλοποίηση Ασκήσεις ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εισαγωγή Πολλαπλασιασμός Πινάκων Ασκήσεις ΑΠΛΗΣΤΟΙ ΑΛΓΟΡΙΘΜΟΙ Προγραμματισμός Εργασιών Knapsack Problem Ασκήσεις ΠΑΡΑΛΛΗΛΟΙ ΑΛΓΟΡΙΘΜΟΙ Εισαγωγικός Αλγόριθμος Κόστος Παράλληλων Αλγόριθμων Τύποι Παράλληλων Υπολογιστικών Μηχανών Το Δείπνο των Φιλοσόφων

3 8.5 Ασκήσεις ΔΕΝΤΡΑ Εισαγωγικές Έννοιες - Ορισμοί Διαπεράσεις Δυαδικού Δέντρου Υλοποίηση Δυαδικού Δέντρου με Πίνακα Δυαδικά Δέντρα Αναζήτησης Ασκήσεις ΓΡΑΦΟΙ (Graphs) Εισαγωγικές Έννοιες - Ορισμοί Αλγόριθμος Ψαξίματος Γράφου Κατά Βάθος (depth-first-search ή dfs) Ο Αλγόριθμος του DIJKSTRA (Οικονομικότεροι δρόμοι) Ασκήσεις ΚΑΤΑΚΕΡΜΑΤΙΣΜΟΣ (Hash tables) Εισαγωγικές Έννοιες / Ορισμοί Άσκηση ΟΙ ΚΛΑΣΕΙΣ P ΚΑΙ NP Αιτιοκρατικοί και μη Αιτιοκρατικοί Αλγόριθμοι Η Κλάση Προβλημάτων P Η Κλάση Προβλημάτων NP Η κλάση των NP-hard και NP-complete Προβλημάτων ΒΙΒΛΙΟΓΡΑΦΙΑ

4 ΑΛΓΟΡΙΘΜΟΙ Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Αλγόριθμος 1: Εξίσωση2 - Επίλυση Εξίσωσης 2 ου Βαθμού (ax 2 +bx+c=0) 10 Αλγόριθμος 2: ΜΚΔ1 (Υπολογισμός Μ.Κ.Δ. των αριθμών χ και ψ με τον αλγόριθμο του Ευκλείδη) 13 Αλγόριθμος 3: Μεταφορά Αραιού Πίνακα 14 Αλγόριθμος 4: Ανάκτηση Στοιχείου Αραιού Πίνακα από τους Δείκτες του 14 Αλγόριθμος 5: Μεταφορά Στοιχείων Κάτω Τριγωνικού Πίνακα 17 Αλγόριθμος 6: Ανάκτηση Στοιχείου Τριγωνικού Πίνακα 18 Αλγόριθμος 7. Δισδιάστατα Μέγιστα Αλγόριθμος Brute-Force 28 Αλγόριθμος 8. Δισδιάστατα Μέγιστα Δεύτερος Αλγόριθμος 28 Αλγόριθμος 9. Πρόβλημα Ελαχίστων Αποστάσεων (Brute-Force) 30 Αλγόριθμος 10: Αναζήτηση συμβολοσειράς (αλγόριθμος brute-force) 33 Αλγόριθμος 11: Βελτιωμένος Αλγόριθμος Επίλυσης του Προβλήματος Εύρεσης Μέγιστων Δισδιάστατου Χώρου (Sweep-Plane) 39 Αλγόριθμος 12: Μη αναδρομικός αλγόριθμος επίλυσης του προβλήματος 47 «Πύργοι του Hanoi» Αλγόριθμος 13: Merge Sort 49 Αλγόριθμος 14: Ενοποίηση ταξινομημένων πινάκων 50 Αλγόριθμος 14: Το πρόβλημα της επιστροφής ρέστων 65 Αλγόριθμος 15: Χρονοπρογραμματισμός εργασιών 68 Αλγόριθμος 16 : Σειριακός Αλγόριθμος Πρόσθεσης 100 Αριθμών 75 Αλγόριθμος 17: Παράλληλος Αλγόριθμος Πρόσθεσης 100 Αριθμών 75 Αλγόριθμος 18: Το δείπνο των φιλοσόφων (πρώτη έκδοση) 79 Αλγόριθμος 19: Το δείπνο των φιλοσόφων (σωστή έκδοση) 80 Αλγόριθμος 20: Αλγόριθμος Depth First Search 93 Αλγόριθμος 21: Αλγόριθμος Dijkstra Οικονομικότεροι δρόμοι 94 Αλγόριθμος 22: Μη αιτιοκρατικός αλγόριθμος αναζήτησης 107 Αλγόριθμος 23: Μη αιτιοκρατικός αλγόριθμος ταξινόμησης 108 4

5 5

6 ΠΡΟΓΡΑΜΜΑΤΑ Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Πρόγραμμα 1: Ανάκτηση Στοιχείου Αραιού Πίνακα 15 Πρόγραμμα 2: Κάτω Τριγωνικός Πίνακας 18 Πρόγραμμα 3: Ενοποίηση Ταξινομημένων Πινάκων 20 Πρόγραμμα 4: Υπολογισμός Δισδιάστατων Μεγίστων 29 Πρόγραμμα 5: Πρόβλημα Ελαχίστων Αποστάσεων 31 Πρόγραμμα 6: Αναζήτηση συμβολοσειράς (αλγόριθμος brute-force) 33 Πρόγραμμα 7: Πρόγραμμα υλοποίησης αλγόριθμου σάρωσης επιπέδου 40 Πρόγραμμα 8: Πρόγραμμα υλοποίησης προβλήματος «Πύργοι του Hanoi» 45 Πρόγραμμα 9: Ενοποίηση ταξινομημένων πινάκων 50 Πρόγραμμα 10: Quick sort 54 Πρόγραμμα 11: Πολλαπλασιασμός αλυσίδας πινάκων 60 Πρόγραμμα 12: Το πρόβλημα της επιστροφής ρέστων 65 Πρόγραμμα 13: Χρονοπρογραμματισμός εργασιών 68 Πρόγραμμα 14: Knapsack problem Αναδρομικός Αλγόριθμος 71 Πρόγραμμα 15: Knapsack problem Άπληστος Αλγόριθμος 72 Πρόγραμμα 16: O αλγόριθμος Dijkstra (Pascal) 99 6

7 7

8 ΣΧΗΜΑΤΑ Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Σχήμα 2.1 Ρυθμός αύξησης συναρτήσεων 26 Σχήμα 2.2 Δισδιάστατα μέγιστα 27 Σχήμα 2.3 Συνάρτηση Πολυπλοκότητας Αλγόριθμου Δισδιάστατων Μεγίστων 29 Σχήμα 2.4 α) Τρεις διαστάσεις β) Τέσσερις διαστάσεις 33 Σχήμα 3.1 Βελτιωμένος Αλγόριθμος Υπολογισμού Δισδιάστατων 36 Μεγίστων Σχήμα 4.1 Πύργοι του Hanoi 41 Σχήμα7.1: Χρονοπρογραμματισμός εργασιών 67 Σχήμα 7.2: Επιλογή εργασιών προς εξυπηρέτηση 70 Σχήμα 7.3: Knapsack problem 70 Σχήμα 7.4: Μία λύση του knapsack problem 71 Σχήμα 8.1: SISD 77 Σχήμα8.2 : MISD 77 Σχήμα 8.3 : SIMD 78 Σχήμα 8.4 : MIMD 78 Σχήμα 8.5: Τοπολογίες παράλληλων συστημάτων 79 Σχήμα 9.1: Δυαδικό δέντρο 84 Σχήμα 10.1: Γράφος 5 κορυφών 92 Σχήμα 10.2: Αλγόριθμος Dijkstra 95 Σχήμα 10.3: Ορθότητα αλγόριθμου Dijkstra, 1 η περίπτωση 96 Σχήμα 10.4: Ορθότητα αλγόριθμου Dijkstra, 2 η περίπτωση 96 Σχήμα 12.1: Σχέση κλάσεων P και NP με την υπόθεση P NP 109 Σχήμα 12.2: Σχέσεις των κλάσεων P, NP, NP-hard και NP-complete 110 8

9 9

10 1. ΟΡΙΣΜΟΙ & ΟΡΟΛΟΓΙΑ 1.1 Εισαγωγή Αλγόριθμος είναι ένα σύνολο οδηγιών οι οποίες επιλύουν ένα συγκεκριμένο πρόβλημα ή μία κλάση προβλημάτων. Επιπλέον ένας αλγόριθμος πρέπει να πληροί και τα ακόλουθα κριτήρια: 1) Είσοδος: Για να λειτουργήσει πρέπει να εισαχθούν Ν δεδομένα από κάποια εξωτερική πηγή (το Ν μπορεί να είναι και μηδέν). 2) Έξοδος: Με το τέλος του αλγόριθμου πρέπει να παράγεται τουλάχιστο ένα αντικείμενο σαν αποτέλεσμα. 3) Καλά ορισμένος: Η κάθε οδηγία πρέπει να είναι απόλυτα καθορισμένη, κατανοητή και να μην αφήνει κανένα περιθώριο αμφισβήτησης (πχ σε κάποια απόφαση). 4) Πεπερασμένος: Να τελειώνει σε πεπερασμένο αριθμό βημάτων. 5) Αποτελεσματικός: Κάθε οδηγία του αλγόριθμου πρέπει να είναι απόλυτα βασική και να μπορεί να εκτελεσθεί από μία υπολογιστική μηχανή. Δηλαδή το τρίτο κριτήριο δεν είναι αρκετό: πρέπει η οδηγία επιπλέον να είναι έτσι ώστε να φέρνει κάποιο αποτέλεσμα. 6) Γενικός: Εάν είναι δυνατόν, ο αλγόριθμος πρέπει να λύνει μία κλάση προβλημάτων και όχι ένα και μοναδικό πρόβλημα. Για παράδειγμα, καλός είναι ο αλγόριθμος που επιλύει την εξίσωση πρώτου βαθμού ax+b=0 και όχι μία συγκεκριμένη εξίσωση σαν την 5x+6=0. Τέλος, ένας αλγόριθμος πρέπει να περιγράφεται αναλυτικά και με τέτοιο τρόπο ώστε να είναι απόλυτα κατανοητός ακόμη και σε κάποιον που δεν ξέρει το πρόβλημα που επιλύει (βλέπε Αλγόριθμος 1). Για την ιστορία, η λέξη αλγόριθμος προήλθε από το όνομα ενός Πέρση που είχε γράψει ένα βιβλίο Μαθηματικών (825 μ.χ.) τον Abu Ja far Mohammed ibn Musa al Khowarizmi. Ανάλογα με την τεχνική επίλυσης ενός προβλήματος οι αλγόριθμοι διακρίνονται σε: Αναδρομικοί (recursive): αλγόριθμοι που χρησιμοποιούν αναδρομικές λύσεις προβλημάτων, πχ πολυώνυμα Hermite, υπολογισμός παραγοντικού, κ.α. Διαίρει και Βασίλευε (divide and conquer): επιλύουν το πρόβλημα αναγάγοντάς το σε μικρότερα ανάλογα προβλήματα, πχ quick sort, merge sort, κα Άπληστοι (greedy): επιλύουν προβλήματα επιλέγοντας κάθε φορά την τοπικά βέλτιστη λύση προσδοκώντας την συνολικά βέλτιστη, πχ πρόβλημα επιστροφής ρέστων, χρονικός προγραμματισμός, κ.α. Δυναμικού Προγραμματισμού (dynamic programming): συνήθως αναδρομικοί αλγόριθμοι οι οποίοι χρησιμοποιούν τις ενδιάμεσα παραγόμενες λύσεις, πχ πολλαπλασιασμός αλυσίδας πινάκων, κα. Παράλληλοι (parallel): εύρεση λύσης όπου το πρόβλημα δεν λύνεται σειριακά αλλά πολλές σχέσεις του εκτελούνται παράλληλα, πχ πολλά προβλήματα πινάκων, τεχνικές τύπου «διαίρει και βασίλευε», κ.α. Επίσης, ανάλογα με την λύση που επιτυγχάνουν μπορούν να διακριθούν σε: 10

11 Βέλτιστοι ή Άριστοι (optimal): εύρεση της βέλτιστης λύσης του προβλήματος, πχ επίλυσης μίας εξίσωσης δευτέρου βαθμού. Προσεγγιστικοί ή ευρεστικοί (approximation heuristics): εύρεση «καλών» λύσεων σε άλυτα ή πολύ δύσκολα προβλήματα, πχ χρονοπρογραμματισμός εργασιών, χρωματισμός χάρτη κ.α. Αλγόριθμος 1: Εξίσωση2 - Επίλυση Εξίσωσης 2 ου Βαθμού (ax 2 +bx+c=0) 1: Εισαγωγή των a, b, και c. 2: Εάν (a=0 ΚΑΙ b=0 ΚΑΙ c=0) Τότε 3: Αόριστη εξίσωση, 4: Τέλος Αλγόριθμου «Εξίσωση2» 5: Τέλος Εάν 6: Εάν (a=0 ΚΑΙ b=0 ΚΑΙ c 0) Τότε 7: Αδύνατη εξίσωση, 8: Τέλος Αλγόριθμου «Εξίσωση2» 9: Τέλος Εάν 10: Υπολόγισε d b 2 4ac b + d 11: Υπολόγισε x 1 2a b d 12: Υπολόγισε x 2 2a 13: Εκτύπωσε τα x 1 και x 2. 14: Τέλος Αλγόριθμου «Εξίσωση2» 1.2 Έννοιες Κλειδιά Για να λειτουργήσει ένας αλγόριθμος χρειάζεται πληροφορίες ή αλλιώς δεδομένα τις οποίες και επεξεργάζεται και δίνει τις πιθανές λύσεις. Τα δεδομένα σε έναν αλγόριθμο κατηγοριοποιούνται σε τρεις γενικές κατηγορίες: Δεδομένα (Πληροφορίες) Αρχικά: Είναι τα δεδομένα εισόδου που πρέπει να εφοδιαστεί ο αλγόριθμος ώστε να μπορέσει να επεξεργαστεί το πρόβλημα, Ενδιάμεσα: Αυτά είναι τα δεδομένα που παράγει ο αλγόριθμος για να μπορέσει να φτάσει στην λύση, και τέλος Αποτελέσματα: Είναι οι πληροφορίες που αφορούν την λύση του προβλήματος. Στον Αλγόριθμο 1, αρχικά δεδομένα είναι τα a, b, και c, ενδιάμεσα το d, και αποτελέσματα τα x 1 και x 2. Τα δεδομένα σε έναν αλγόριθμο περιγράφονται σαν μεταβλητές, δηλαδή υπολογιστικές οντότητες για την αναπαράσταση των δεδομένων σε ένα πρόγραμμα ή αλγόριθμο. Επίσης, τα δεδομένα μπορεί να είναι διαφόρων τύπων. Οι τύποι 11

12 δεδομένων καθορίζουν τις τιμές που επιτρέπεται να πάρει μία μεταβλητή πχ ακέραιος αριθμός, πραγματικός κοκ, αλλά και τους τρόπους διαχείρισης ή επεξεργασίας των τιμών αυτών, δηλαδή τις επιτρεπόμενες πράξεις. Οι τύποι των δεδομένων μπορούν να διαχωριστούν στους απλούς και σύνθετους τύπους. Οι κατηγορίες των απλών τύπων είναι οι: 1) Ακέραιος αριθμός (integer), 2) Πραγματικός αριθμός (real float), 3) Πραγματικός αριθμός μεγάλης ακρίβειας (double), 4) Χαρακτήρας (character), και 5) Boolean (με μοναδικές τιμές: Αληθής / Ψευδής ή 0 / 1). Οι σύνθετοι τύποι δεδομένων ονομάζονται δομές δεδομένων. Δομή Δεδομένων είναι ένα τύπος δεδομένων που αποτελείται από σύνθετες τιμές, δηλαδή τιμές που συντίθενται από άλλες απλούστερες επιμέρους τιμές (κόμβοι) και μεταξύ των οποίων υπάρχει ένα οργανωτικό σχήμα. Μερικές από τις πλέον συνηθισμένες δομές δεδομένων είναι οι: 1) Πίνακας (array), 2) Εγγραφή (record structure), 3) Λίστα (list), 4) Ουρά (queue), 5) Στοίβα ή σωρός (stack), 6) Γράφος (graph), 7) Δένδρα (tree), κλπ και με επιτρεπτές πράξεις: 1) Διαπέραση, 2) Αναζήτηση, 3) Εισαγωγή, 4) Διαγραφή, 5) Διάταξη, κλπ. 1.3 Πολυπλοκότητα & Απόδοση Αλγορίθμων Σαν πολυπλοκότητα ή απόδοση αλγορίθμου ορίζεται το κόστος χρήσης του αλγόριθμου για την επίλυση ενός προβλήματος. Μονάδες μέτρησης κόστους μπορεί να θεωρηθούν: Ο υπολογιστικός χρόνος εκτέλεσης του αλγόριθμου, δηλαδή χρήση της CPU μίας υπολογιστικής μηχανής, Η χρήση αποθηκευτικών χώρων, Η χρήση πόρων δικτύου, ή και σε οποιαδήποτε άλλη μονάδα που μπορεί να εκφράζει χρήση οποιονδήποτε πόρων υπολογιστικών και δικτύων. Βέβαια, ο χρόνος εκτέλεσης ενός αλγόριθμου θεωρείται σαν το πιο σημαντικό μέτρο χαρακτηρισμού του αλγόριθμου. Μάλιστα, επειδή σε πάρα πολλές περιπτώσεις είναι 12

13 εντελώς αδύνατο να υπολογισθεί αυτός ο χρόνος με ακρίβεια, υπολογίζονται συναρτήσεις που αποδίδουν τον καλύτερο, μέσο και χειρότερο χρόνο του. Για παράδειγμα στον Αλγόριθμο 1, ο καλύτερος χρόνος είναι όταν η εξίσωση είναι αόριστη και ο χειρότερος όταν θα υπάρχουν οι δύο λύσεις. 1.4 Αλγοριθμική Γλώσσα Για την περιγραφή των αλγορίθμων έχει προταθεί και χρησιμοποιείται μία «γλώσσα», η λεγόμενη αλγοριθμική γλώσσα η οποία είναι αποδεσμευμένη από τις λεπτομέρειες μιας κανονικής γλώσσας προγραμματισμού σαν την C ή την Pascal, Java και άλλες. Ο στόχος είναι να περιγράφεται η λύση ενός προβλήματος με τέτοιο τρόπο ώστε να μπορεί να μεταφερθεί αργότερα σε οποιαδήποτε γλώσσα προγραμματισμού. Επίσης, στην αλγοριθμική γλώσσα πρέπει να αποφεύγονται εκφράσεις που υπάρχουν σε κάποια γλώσσα προγραμματισμού ενώ δεν υπάρχουν σε άλλες (για παράδειγμα οι τελεστές ++, -- κ.α. της C). Σε γενικές γραμμές, τα δομικά στοιχεία της αλγοριθμικής γλώσσας είναι τα ακόλουθα: 1) Δεδομένα τα οποία μπορεί να είναι: a) Μεταβλητές ποσότητες (πχ x, a, mikos κλπ), b) Σταθερές ποσότητες (πχ ένας αριθμός, ένα όνομα κ.α.), 2) Τελεστές: a) Πρόσθεση, b) Αφαίρεση, c) Πολλαπλασιασμός, d) Διαίρεση, e) Υπόλοιπο, f) Ισότητα, g) Όλες οι πιθανές ανισότητες, κ.λ.π. 3) Παραστάσεις: a) Εκχώρηση Τιμής, πχ a 3x+1 κλπ, b) Κριτήρια ή Συνθήκες, πχ α>7, onoma= Nikos, κλπ, 4) Διατάξεις Ελέγχου Ροής του Αλγόριθμου: a) Η πρόταση: i) Εάν (συνθήκη) Τότε { (1) προτάσεις ii) Αλλιώς (1) {προτάσεις iii) Τέλος Εάν (ή If Then Else End If) b) Η πρόταση πολλαπλής επιλογής: i) Επέλεξε με το (1) Περίπτωση 1: {προτάσεις (2) Περίπτωση 2: {προτάσεις 13

14 (3) (4) Περίπτωση ν: {προτάσεις ii) Τέλος Επιλογής (Switch ή Case) 5) Επαναληπτικές Δομές: a) Για Τέλος Για (For End For) i) Για (προτάσεις ελέγχου επανάληψης) (1) {προτάσεις ii) Τέλος Για b) Εφόσον (While End While) i) Εφόσον (προτάσεις ελέγχου επανάληψης) (1) {προτάσεις ii) Τέλος Εφόσον c) Επανέλαβε (Do While ή Repeat Until) i) Επανέλαβε (1) {προτάσεις ii) Μέχρι (προτάσεις ελέγχου επανάληψης) 6) Διαδικασίες (procedures routines): a) Διαδικασία «όνομα διαδικασίας με πιθανές παραμέτρους» i) {προτάσεις διαδικασίας b) Τέλος Διαδικασίας «όνομα διαδικασίας» 7) Συναρτήσεις (functions): a) Τύπος επιστρεφόμενου δεδομένου «όνομα συνάρτησης με πιθανές παραμέτρους» i) {προτάσεις συνάρτησης ii) Επέστρεψε b) Τέλος Συνάρτησης «όνομα συνάρτησης» 1.5 Παραδείγματα & Λυμένες Ασκήσεις 1. Υπολογισμός Μέγιστου Κοινού Διαιρέτη με χρήση του αναδρομικού αλγόριθμου του Ευκλείδη. ΛΥΣΗ Αλγόριθμος 2: ΜΚΔ1 (Υπολογισμός Μ.Κ.Δ. των αριθμών χ και ψ με τον αλγόριθμο του Ευκλείδη) 1: Δεδομένα / Είσοδος: ακέραιοι χ, ψ 2: Ακέραιος ΜΚΔ1(ακέραιος χ, ακέραιος ψ) 3: Αρχή 4: Εάν ψ>0 Τότε 5: Επέστρεψε ΜΚΔ(ψ, χ υπόλοιπο ψ) 6: Αλλιώς 7: Επέστρεψε ψ 8: Τέλος Εάν 9: Τέλος Συνάρτησης «ΜΚΔ1» 14

15 2. Αραιός ονομάζεται ένας πίνακας του οποίου τα περισσότερα στοιχεία είναι μηδενικά σε ποσοστά που υπερβαίνουν το 80%. Για να μην γίνεται αυτή η σπατάλη χώρου ας υποτεθεί ότι μεταφέρονται τα μη μηδενικά στοιχεία του πίνακα σε ένα νέο πίνακα και διαγράφεται ο παλιός. Το πρόβλημα είναι ότι η θέση των στοιχείων στον αρχικό πίνακα είναι σημαντική οπότε για να διατηρηθεί αυτή η πληροφορία, ο νέος πίνακας αντί για μονοδιάστατος θα μπορούσε να είναι δισδιάστατος με την εξής οργάνωση: σε κάθε γραμμή η πρώτη στήλη να περιέχει τα μη μηδενικά στοιχεία του αραιού πίνακα ενώ στην δεύτερη και τρίτη στήλη να τοποθετούνται οι συντεταγμένες αυτών των στοιχείων που είχαν στον αρχικό πίνακα (δηλαδή τον αριθμό της γραμμής και της στήλης τους). Με βάση αυτή τη διαδικασία να δημιουργηθούν οι αλγόριθμοι μεταφοράς των στοιχείων και αναζήτησης στοιχείου με βάση την θέση του. Αλγόριθμος 3: Μεταφορά Αραιού Πίνακα 1: Δεδομένα / Είσοδος: Αραιός πίνακας Π NxΜ, Πίνακας Στόχος Σ Τx3 2: Διαδικασία «Μεταφορά» 3: Αρχή 4: Ακέραιοι: ι, κ, λ 5: λ 0 6: Για ι = 1 Μέχρι Ν 7: Για κ = 1 Μέχρι Μ 8: Εάν (Π ι,κ 0) Τότε 9: λ λ : Σ λ,1 Π ι,κ 11: Σ λ,2 ι 12: Σ λ,3 κ 13 Τέλος Εάν 14 Τέλος Για (κ) 15 Τέλος Για (ι) 16: Τέλος Διαδικασίας «Μεταφορά» Αλγόριθμος 4: Ανάκτηση Στοιχείου Αραιού Πίνακα από τους Δείκτες του 1: Δεδομένα / Είσοδος: Πίνακας Σ Τx3 2: Τύπος Στοιχείου Αραιού Πίνακα «Ανάκτηση(ακέραιος χ, ακέραιος ψ)» 3: Αρχή 4: Ακέραιος: ι 0 5: Boolean: flag «Ψευδής» 6: Τύπος δεδομένων των στοιχείων του αραιού πίνακα: β 7: Επανέλαβε 8: ι ι + 1 9: Εάν ( Σι,2 = χ ΚΑΙ Σι,3 = υ) Τότε 10: Β Σι,1 11: Flag «Αληθής» 12: Τέλος Εάν 13: Μέχρι (flag = «Αληθής» Η ι = Τ) 14: Εάν (flag = «Αληθής») Τότε 15

16 15: Επέστρεψε β 16: Αλλιώς 17: Επέστρεψε 0 18: Τέλος Εάν 19: Τέλος Συνάρτησης «Ανάκτηση» Στο Πρόγραμμα 1 που ακολουθεί περιγράφεται ένας διαφορετικός αλγόριθμος ανάκτησης στοιχείου (είναι καλύτερος;). Πρόγραμμα 1: Ανάκτηση Στοιχείου Αραιού Πίνακα #include <stdio.h> #define M 7 /* Μέγεθος Πίνακα Στόχου */ int S[M][3]={ -3,3,9, -12,7,2, -5,12,4, -7,12,8, -31,12,9, -5,15,17, -9,20,1; /* S είναι ο πίνακας στον οποίο μεταφέρθηκε ο αραιός πίνακας */ int anaktisi(int,int); main() { int i; int ii,jj; /* Δείκτες του υπό ανάκτηση στοιχείου */ int s; /* Το αναζητούμενο στοιχείο */ /* Εκτύπωση πίνακα στόχου */ for (i=0;i<m;i++) printf("\n%5d%5d%5d",s[i][0],s[i][1],s[i][2]); /* Είσοδος παραμέτρων */ printf("\n\nεισαγωγή γραμμής και στήλης του ζητούμενου στοιχείου:"); scanf("%d%d",&ii,&jj); /* Ανάκτηση στοιχείου */ s=anaktisi(ii,jj); /* Εκτύπωση στοιχείου */ printf("\n\nstoixeio = %5d\n\n",s); /****************************/ /* ΣΥΝΑΡΤΗΣΗ ΑΝΑΚΤΗΣΗΣ */ 16

17 /***************************/ int anaktisi(int i, int j) { int k; k=0; while (S[k][1]<i && k<m-1) k++; if (S[k][1]==i) while (S[k][2]<j && k<m-1) k++; if (S[k][1]==i && S[k][2]==j) return S[k][0]; else return 0; 3. Τριγωνικοί Πίνακες. Ένας τετραγωνικός πίνακας ονομάζεται κάτω (επάνω) τριγωνικός εάν μόνο τα στοιχεία κάτω (επάνω) της κύριας διαγωνίου του είναι μη μηδενικά (η κύρια διαγώνιος συμπεριλαμβάνεται στα μη μηδενικά στοιχεία). Επειδή πάλι υπάρχει σπατάλη χώρου (πολλά μηδενικά στοιχεία) ζητείται μία μέθοδος απεικόνισης του πίνακα ώστε να αποφευχθεί αυτή η σπατάλη χώρου. ΛΥΣΗ Εάν ο τριγωνικός πίνακας μεταφερθεί σε ένα νέο μονοδιάστατο πίνακα, τότε το πρώτο ζητούμενο είναι το μέγεθος του πίνακα στόχου. Η γενική μορφή ενός κάτω τριγωνικού πίνακα είναι η ακόλουθη: a1,1,0,0, LLLLL,0 a2,1, a2,2,0,0, LLL,0 a3,1, a3,2, a3,3,0, LL,0 LLLLLL an,1, an,2, an,3, LL, an, Δηλαδή τα μη μηδενικά στοιχεία ανά γραμμή είναι: 1 η γραμμή: 1 2 η γραμμή: 2 3 η γραμμή: 3 n η γραμμή: n Επομένως το σύνολο των μη μηδενικών στοιχείων είναι: n 17

18 n n( n + 1) L + n = i = = N, i=1 2 επομένως και το μέγεθος του γραμμών του μονοδιάστατου πίνακα στόχου πρέπει να n( n +1) είναι N =, όπου n το πλήθος των γραμμών / στηλών του τριγωνικού πίνακα. 2 Ο αλγόριθμος μεταφοράς δίνεται στον Αλγόριθμο 5. Αλγόριθμος 5: Μεταφορά Στοιχείων Κάτω Τριγωνικού Πίνακα 1: Δεδομένα / Είσοδος: Κάτω Τριγωνικός Πίνακας Τ nxn, Πίνακας Στόχος Σ Ν 2: Διαδικασία «Μεταφορά Τριγωνικού» 3: Αρχή 4: Ακέραιοι: ι, κ, λ = 0 5: Για ι = 1 Μέχρι n 6: Για κ = 1 Μέχρι ι 7: λ λ+1 8: Σ λ Τ ι,κ 9: Τέλος Για (κ) 10: Τέλος Για (λ) 11: Τέλος διαδικασίας «Μεταφορά Τριγωνικού» Το επόμενο πρόβλημα είναι πως θα γίνεται ανάκτηση ενός στοιχείου του τριγωνικού πίνακα που έχει πλέον μεταφερθεί, από τους δείκτες του, έστω i, j. Εάν i<j τότε το ζητούμενο στοιχείο είναι μηδενικό. Εάν όμως i j τότε το στοιχείο που βρίσκεται στη i γραμμή έπεται όλων των στοιχείων των προηγουμένων γραμμών i-1 και το πλήθος των στοιχείων αυτών είναι: 1 η γραμμή: 1 2 η γραμμή: 2 3 η γραμμή: 3 (i-1) η γραμμή: i-1 Επομένως το σύνολο των μη στοιχείων είναι: i( i 1) L + ( i 1) =, i 1 i = i= 1 2 και επιπλέον προηγούνται και τα j-1 στοιχεία της ι γραμμής. Δηλαδή το σύνολο των στοιχείων που προηγούνται του i,j είναι: i 1 i= 1 i( i 1) i = + ( j 1) 2 και αυτό δείχνει ότι το στοιχείο i,j έχει καταχωρηθεί στον πίνακα στόχο στη θέση: 18

19 i 1 l = i= i( i 1) i = j. Στον Αλγόριθμο 6 περιγράφεται η διαδικασία ανάκτησης. Αλγόριθμος 6: Ανάκτηση Στοιχείου Τριγωνικού Πίνακα 1: Δεδομένα / Είσοδος: Πίνακας Στόχος Σ Ν 2: Τύπος Στοιχείου Τριγωνικού Πίνακα «Ανάκτηση ΚΤΠ(ακέραιος i, ακέραιος j)» 3: Αρχή 4: Ακέραιος k 5: Εάν (i < j) Τότε 6: Επέστρεψε 0 7: Τέλος Εάν i( i 1) 8: k + j 2 9: Επέστρεψε Σ k 10: Τέλος συνάρτησης «Ανάκτηση ΚΤΠ» Στο Πρόγραμμα 2 δίνεται η μεταφορά και ανάκτηση στοιχείου κάτω τριγωνικού πίνακα. Η διαφορά της συνάρτησης ανάκτησης του Προγράμματος 2 με αυτής του Αλγόριθμου 6 οφείλεται στο ότι στην C οι δείκτες των πινάκων αρχίζουν από το μηδέν. Πρόγραμμα 2: Κάτω Τριγωνικός Πίνακας #include <stdio.h> #define n 4 /* Μέγεθος Κάτω Τριγωνικού Πίνακα */ #define N n*(n+1)/2 /* Μέγεθος Πίνακα Στόχου */ int T[n][n]={ -3,0,0,0, -12,7,0,0, -5,12,4,0, -7,12,8,9; int S[N]; void metafora(void); int anaktisi(int,int); main() { int i, j, l; /* Αρχικοποίηση πίνακα στόχου */ for (i=0; i<n; i++) S[i] = 0; metafora(); printf("\n\nκατω ΤΡΙΓΩΝΙΚΟΣ ΠΙΝΑΚΑΣ\n\n"); 19

20 for (i=0; i<n; i++) { for (j=0; j<n; j++) printf("%5d", T[i][j]); printf("\n"); printf("\n\nπινακασ ΣΤΟΧΟΣ\n\n"); for (i=0; i<n; i++) printf("%5d", S[i]); printf("\n\n"); printf("\nείσοδος δεικτών γραμμής και στήλης του υπό αναζήτηση στοιχείου:"); scanf("%d%d",&i, &j); l = anaktisi(i,j); if (l==-1) printf("\n\nτο στοιχείο είναι το: %d\n\n", 0); else printf("\n\nτο στοιχείο είναι το: %d\n\n", S[l]); /*************************/ /* Σ Υ Ν Α Ρ Τ Η Σ Ε Ι Σ */ /************************/ void metafora(void) { int i, k, l = 0; for (i=0; i<n; i++) for (k=0; k<=i; k++) S[l++] = T[i][k]; int anaktisi(int x, int y) { if (x < y) return -1; return x*(x+1)/2 + y; 4. Ένα ενδιαφέρον πρόβλημα είναι η ενοποίηση δύο ταξινομημένων πινάκων Α Ν και Β Μ σε ένα νέο αλλά πάλι ταξινομημένο πίνακα C N+M. Μία απλή λύση είναι η μεταφορά του πρώτου στον C, μετά η μεταφορά του δεύτερου στον C και τέλος η ταξινόμηση του C. Αυτή είναι μία χρονοβόρα λύση γιατί χρειάζεται να ταξινομηθεί πάλι ο C και δεν εκμεταλλεύεται το γεγονός ότι οι A και Β είναι ήδη ταξινομημένοι. Προφανώς, η καλύτερη και πιο γρήγορη λύση είναι να μεταφερθούν «ταυτόχρονα» 20

21 οι Α και Β στον C ταξινομημένα. Στο Πρόγραμμα 3 δίνεται μία λύση αυτού του προβλήματος. ΛΥΣΗ Πρόγραμμα 3: Ενοποίηση Ταξινομημένων Πινάκων #include <stdio.h> #define N 5 /* Μέγεθος Α Πίνακα */ #define M 9 /* Μέγεθος Β Πίνακα */ #define F N+M /* Μέγεθος Πίνακα Στόχου */ int A[N] = {2,6,7,9,9; int B[M] = {-4,0,1,6,12,12,15,17,19; int C[F]; void enopoiisi(void); main() { int i; printf("\n\na ΠΙΝΑΚΑΣ\n\n"); for (i=0; i<n; i++) printf("%5d", A[i]); printf("\n\nb ΠΙΝΑΚΑΣ\n\n"); for (i=0; i<m; i++) printf("%5d",b[i]); enopoiisi(); printf("\n\nενοποιημένος Πίνακας\n\n"); for (i=0; i<f; i++) printf("%5d", C[i]); printf("\n\n"); /*************************/ /* Σ Υ Ν Α Ρ Τ Η Σ Ε Ι Σ */ /************************/ void enopoiisi(void) { int i, j, k; for (i=0, j=0, k=0; k<f; k++) { if (i == N) { C[k] = B[j++]; continue; if (j == M) { C[k] = A[i++]; continue; C[k] = (A[i]<B[j])? A[i++] : B[j++]; 21

22 1.6 Ασκήσεις 1) Οι συμμετρικοί πίνακες είναι μία ιδιαίτερη κατηγορία τετραγωνικών πινάκων οι οποίοι μάλιστα μοιάζουν με τους τριγωνικούς. Σε έναν συμμετρικό πίνακα ισχύει a i, j = a j, i. Δηλαδή, υπάρχει μία κατοπτρική συμμετρία των στοιχείων του σε άξονα συμμετρίας την κύρια διαγώνιο του πίνακα. Με βάση το σκεπτικό των τριγωνικών πινάκων και επειδή πάλι υπάρχει σπατάλη μνήμης λόγω τον πολλών όμοιων στοιχείων, να βρεθεί τρόπος οικονομικότερης διαχείρισης αυτού του είδους των πινάκων και να αναπτυχθούν οι αντίστοιχοι αλγόριθμοι και προγράμματα σε οποιαδήποτε γλώσσα προγραμματισμού. 2) Να αναπτυχθούν αλγόριθμοι ταξινόμησης πίνακα με τις παρακάτω μεθόδους: a) Φυσαλίδας, b) Παρεμβολής, και c) Εισαγωγής. 3) Να γραφεί αλγόριθμος υπολογισμού του μεγαλύτερου και μικρότερου στοιχείου πίνακα. Ο αλγόριθμος να επιστρέφει και την θέση στον πίνακα που βρέθηκαν το μεγαλύτερο και μικρότερο στοιχείο αντίστοιχα. 4) Να αναπτυχθούν αλγόριθμοι αναζήτησης στοιχείου πίνακα (και της θέσης που βρέθηκε) με τις παρακάτω μεθόδους. Επίσης να συγκριθούν αυτοί οι αλγόριθμοι ως προς την ταχύτητά τους. a) Σειριακή σε αταξινόμητο πίνακα, b) Σειριακή σε ταξινομημένο πίνακα, c) Δυαδική αναζήτηση (φυσικά σε ταξινομημένο πίνακα). 5) Να τροποποιηθούν οι αλγόριθμοι των μεθόδων (a) και (b) της προηγούμενης άσκησης με τέτοιο τρόπο ώστε εάν υπάρχουν παραπάνω από ένα ίδια στοιχεία με αυτό το υπό αναζήτηση να υπολογίζεται το πλήθος τους αλλά και η θέση τους. 6) Quiz: Έστω ότι υπάρχουν δώδεκα αντικείμενα ίδιου μεγέθους και χρώματος. Επίσης, έστω ότι όλα τα αντικείμενα, εκτός από ένα, έχουν το ίδιο βάρος. Εάν διαθέτουμε μία ζυγαριά (παλιού τύπου, με δύο ζυγούς) να βρεθεί ο τρόπος ώστε με το πολύ τέσσερις ζυγίσεις να βρεθεί το αντικείμενο το οποίο είναι διαφορετικού βάρους αλλά και το είδος της διαφορετικότητάς του (πιο ελαφρύ ή πιο βαρύ). 7) Να σχεδιασθεί αλγόριθμος, ο οποίος να επιλύει το προηγούμενο πρόβλημα αλλά με N αντικείμενα (εκ των οποίων ένα είναι διαφορετικού βάρους). Επίσης, να αποδειχθεί ο ελάχιστος αριθμός των απαιτούμενων ζυγίσεων. 22

23 23

24 2. ΠΟΛΥΠΛΟΚΟΤΗΤΑ Πριν την σχεδίαση ενός αλγορίθμου, είναι στοιχειωδώς απαραίτητο να ορισθεί το κριτήριο ή κριτήρια τα οποία πρέπει να εκπληρώνει ώστε να μπορεί να χαρακτηρισθεί εάν είναι «καλός» αλγόριθμος ή όχι. Το βασικό στοιχείο ενός καλού αλγόριθμου λοιπόν, είναι το κατά πόσον είναι ή όχι αποδοτικός. Και απόδοση σημαίνει η χρήση υπολογιστικών πόρων που απαιτούνται για την επίλυση του προβλήματος. Οι υπολογιστικοί πόροι (ανάλογα και με την φύση του αλγόριθμου) μπορεί να είναι η CPU, η μνήμη ή ακόμη και πιθανούς δικτυακούς πόρους (πχ bandwidth) που χρησιμοποιούνται. Ουσιαστικά όμως, στα περισσότερα προβλήματα αυτό που εξετάζεται είναι η χρήση της CPU δηλαδή, πόσος χρόνος απαιτείται για την εκτέλεση του αλγόριθμου. Αυτό όμως προϋποθέτει να δοθεί και τυποποιηθεί ένα υπολογιστικό μοντέλο ώστε όλοι να αναφέρονται σε αυτό. Αυτή η υπολογιστική μηχανή θεωρείται όσο πιο απλή όσο είναι δυνατόν. Δηλαδή, είναι σε θέση να εκτελεί μόνο στοιχειώδεις αριθμητικές πράξεις (πχ πρόσθεση, αφαίρεση, κλπ) και επίσης στοιχειώδεις συγκρίσεις (πχ είναι το a>4;). Η υπολογιστική αυτή μηχανή ονομάζεται RAM από το ακρωνύμιο Random Access Machine. H RAM, αποτελείται από ένα μόνο επεξεργαστή (επομένως δεν είναι δυνατή η παράλληλη επεξεργασία), και εκτελεί τις οδηγίες του αλγόριθμου σειριακά, δηλαδή μία την φορά. Τέλος, θεωρείται ότι η μνήμη της είναι μεγάλη ή τουλάχιστον τόσο μεγάλη όσο απαιτεί ο οποιοσδήποτε αλγόριθμος. 2.1 Ορισμοί Η έννοια της Πολυπλοκότητα και Απόδοσης Αλγόριθμου αντιπροσωπεύει το κόστος χρήσης του αλγόριθμου για την επίλυση ενός προβλήματος. Το πρόβλημα χαρακτηρίζεται από τα δεδομένα εισόδου ενώ η συνάρτηση της πολυπλοκότητας f(n) εκφράζει την απαίτηση του αλγόριθμου σε χρόνο εκτέλεσης σε σχέση με το μέγεθος των δεδομένων εισόδου n. Επειδή είναι ιδιαίτερα δύσκολο ή και αδύνατο σε πάρα πολλές περιπτώσεις να βρεθεί μία ακριβής συνάρτηση, συνήθως σ αυτήν την περίπτωση ενδιαφέρει η εύρεση της τιμής της f(n) στις εξής περιπτώσεις: Καλύτερη Περίπτωση, δηλ. η ελάχιστη τιμή της f(n) Χειρότερη Περίπτωση, δηλ. η μέγιστη τιμή της f(n) Μέση Περίπτωση, δηλ. η αναμενόμενη τιμή της f(n) με πλέον χρήσιμη την χειρότερη περίπτωση. Όμως το πρόβλημα της ανάλυσης ενός αλγόριθμου παραμένει όταν τα δεδομένα εισόδου n, αυξάνονται πάρα πολύ. Γι αυτό είναι απαραίτητη η χρήση και επίδειξη ασυμπτωτικών συναρτήσεων οι οποίες να δείχνουν την τάξη μεγέθους της αύξησης του υπολογιστικού χρόνου χωρίς να είναι απαραίτητο να δείχνουν την ακριβή συνάρτηση της πολυπλοκότητάς του. Έτσι, είναι ιδιαίτερα χρήσιμοι οι ορισμοί που ακολουθούν. 24

25 Ορισμός 1. Θεωρούμε ότι f(n)=o(g(n)) για n (μικρό όμικρον little oh) f ( n) εάν lim n = 0. Δηλαδή, η συνάρτηση f αυξάνει πιο αργά από την g( n) συνάρτηση g όταν το n είναι πολύ μεγάλο. Παραδείγματα: n 2 = o( n 5 ) ημ ( n ) = o( n) Ορισμός 2. Θεωρούμε ότι f(n)=o(g(n)) για n (μεγάλο όμικρον big oh) εάν C,n0, τέτοια ώστε f ( n) Cg( n),( n > n0 ). Δηλαδή, η συνάρτηση f δεν αυξάνει πιο γρήγορα από την συνάρτηση g. Παραδείγματα: ημ ( n ) = O(1) n( n + 1) 2 = O( n ). 2 n( n + 1) Απόδειξη: f ( n) = = n 2 + n με επικρατούντα όρο τον n Επομένως f ( n) = O( n ). 8log( n) + 4n 1 = O( ). 2 3n log( n) nlog( n) Απόδειξη: ( 8log( n) 4n 8 4 f n) = + = +. Ο 2 2 3n log( n) 3n log( n) 3n 2 3n log( n) 2 επικρατών όρος είναι ο δεύτερος γιατί n nlog( n) και επομένως 1 f ( n) = O( ). nlog( n) Γενικά οι σημαντικότερες συναρτήσεις τάξης μεγέθους παρουσιάζουν την ακόλουθη διάταξη (αύξουσα): 2 3 n 1 log( n) n nlog( n) n n 2 L Ορισμός 3. Θεωρούμε ότι f ( n) = Θ( g( n)) (θήτα) εάν υπάρχουν σταθερές c1 0, c2 0, n0 τέτοιες ώστε n > n0 c1g( n) < f ( n) < c2g( n). Δηλαδή οι δύο συναρτήσεις, f και g, αυξάνουν με τον ίδιο περίπου ρυθμό. Παραδείγματα: 2 2 ( n + 1) = Θ(3n ) 2 n + 5n = Θ( ) 3 5n + 7n + 2 n f ( n) Ορισμός 4. Θεωρούμε ότι f ( n) ~ g( n) (ασυμπτωτικά) εάν lim n = 1. g( n) Δηλαδή όχι μόνον ότι οι δύο συναρτήσεις f και g αυξάνουν με τον ίδιο 25

26 περίπου ρυθμό αλλά και ότι το πηλίκο τους g f προσεγγίζει την μονάδα όσο n Παραδείγματα: 2 2 n + n ~ n 4 ( 3n + 1) ~ 81n 4 Ορισμός 5. Θεωρούμε ότι f ( n) = Ω( g( n)) (ωμέγα) εάν ε > 0 και μία ακολουθία n 1, n2, n3, K τέτοια ώστε i : f ( ni ) > εg( ni ). Στην πραγματικότητα αυτό δηλώνει την άρνηση του ο. Δηλαδή, εάν f ( n) = Ω( g( n)) not( f ( n) = o( g( n))). Για παράδειγμα, είναι γνωστό ότι ο πολλαπλασιασμός δύο πινάκων nxn δεν μπορεί με κανένα τρόπο να 2 επιτευχθεί με λιγότερους από n πολλαπλασιασμούς. Αυτό σημαίνει ότι υπάρχει κατώτερο όριο και ότι η πολυπλοκότητα του γινομένου εκπεφρασμένου με την συνάρτηση Ω είναι Ω ( n 2 ). Μερικές χρήσιμες μαθηματικές σειρές: Αριθμητική σειρά: Γεωμετρική σειρά: Αρμονική σειρά: n i= 1 n i= 0 n i= 1 n( n + 1) i = L + n = = Θ(n 2 ) 2 n+ 1 i 2 3 n x 1 x = 1+ x + x + x + L + x = = Θ(x n ) x = L + ln( n) = Θ(ln(n)) i 2 3 n Τέλος, στο επόμενο σχήμα (Σχήμα 2.1) φαίνεται ο ρυθμός αύξησης των συναρτήσεων 2 n f ( n) = log n, f ( n) = n, f ( n) = nlog n, f ( n) = n, και f ( n) = Αλγόριθμοι Brute-Force Μία κατηγορία αλγορίθμων είναι οι λεγόμενοι brute-force αλγόριθμοι. Με βάση αυτή τη τεχνική, το πρόβλημα επιλύεται με τον πιο απλό και προφανή τρόπο, ο οποίος όμως δεν είναι πάντα (σχεδόν σε όλες τις περιπτώσεις) και ο πιο καλός. Επειδή ακριβώς επιλύει τα προβλήματα με τον πιο απλό και προφανή δυνατό τρόπο, είναι συνήθως εύκολο να υλοποιηθεί και να γίνει κατανοητός. Συνήθως αποτελούν και τον πιο «κουτό» τρόπο επίλυσης ενός προβλήματος. Ένα χαρακτηριστικό παράδειγμα τέτοιας τεχνικής είναι η ταξινόμηση ενός πίνακα με την μέθοδο της φυσαλίδας όπως επίσης και η σειριακή αναζήτηση. Σαν απόδειξη του πόσο αργοί είναι οι αλγόριθμοι αυτού του είδους, η μέθοδος της φυσαλίδας έχει πολυπλοκότητα της τάξης O( n 2 ) ενώ άλλες τεχνικές ταξινόμησης (πχ quick sort) έχουν πολυπλοκότητα της τάξης O ( nlog n). 26

Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Ανάλυση Αλγόριθμων ΤΕΧΝΟΛΟΓΙΚΟ ΙΔΡΥΜΑ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε.

Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Ανάλυση Αλγόριθμων ΤΕΧΝΟΛΟΓΙΚΟ ΙΔΡΥΜΑ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΤΕΧΝΟΛΟΓΙΚΟ ΙΔΡΥΜΑ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΣΗΜΕΙΩΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής ΛΑΡΙΣΑ, Ιανουάριος 2013

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ

ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ Περίγραµµα Εισαγωγή Στοιχεία Πολυπλοκότητας Ηλίας Κ. Σάββας Επίκουρος Καθηγητής Τμήμα: Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Email: savvas@teilar teilar.gr Αλγόριθµοι

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

Διαβάστε περισσότερα

Αλγόριθμοι Ταξινόμησης Μέρος 2

Αλγόριθμοι Ταξινόμησης Μέρος 2 Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση

Διαβάστε περισσότερα

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο Πολλαπλασιασμός μεγάλων ακεραίων (1) Για να πολλαπλασιάσουμε δύο ακεραίους με n 1 και n 2 ψηφία με το χέρι, θα εκτελέσουμε n 1 n 2 πράξεις πολλαπλασιασμού Πρόβλημα ρβημ όταν έχουμε πολλά ψηφία: A = 12345678901357986429

Διαβάστε περισσότερα

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

Διαβάστε περισσότερα

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Ανάλυση Αλγορίθμων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανάλυση Αλγορίθμων Η ανάλυση αλγορίθμων περιλαμβάνει τη διερεύνηση του τρόπου

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 3: Ασυμπτωτικός συμβολισμός Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 1: Εισαγωγή- Χαρακτηριστικά Παραδείγματα Αλγορίθμων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016 Εισαγωγή Η

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ. Πίνακες και βασικές επεξεργασίες αυτών

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ. Πίνακες και βασικές επεξεργασίες αυτών ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ Πίνακες και βασικές επεξεργασίες αυτών Σκοπιές από τις οποίες μελετά η πληροφορική τα δεδομένα Γλωσσών προγραμματισμού Υλικού Δομών δεδομένων Ανάλυσης δεδομένων 22/11/08 Παρουσιάσεις

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων Τεχνικές Σχεδιασμού Αλγορίθμων Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και Βασίλευε (Divide and

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση

Διαβάστε περισσότερα

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή

Διαβάστε περισσότερα

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: ΑΕσΠΠ 1 / 8 I. ΑΛΓΟΡΙΘΜΟΣ 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: i. Είσοδος : χρήση μιας μεταβλητής που δεν έχει πάρει προηγουμένως τιμή. ii. Έξοδος : ο αλγόριθμος δεν εμφανίζει

Διαβάστε περισσότερα

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

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο Σχεδίαση Αλγορίθμων Διαίρει και Βασίλευε http://delab.csd.auth.gr/courses/algorithms/ auth 1 Διαίρει και Βασίλευε Η γνωστότερη ρημέθοδος σχεδιασμού αλγορίθμων: 1. Διαιρούμε το στιγμιότυπο του προβλήματος

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 6α: Αναζήτηση Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commos. Για εκπαιδευτικό

Διαβάστε περισσότερα

Αλγοριθμικές Τεχνικές

Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Αλγοριθμικές Τεχνικές 1 Τεχνικές Σχεδιασμού Αλγορίθμων Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και

Διαβάστε περισσότερα

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Αναζήτηση. Σειριακή αναζήτηση. Δυαδική Αναζήτηση Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Παραδοχή Στη συνέχεια των διαφανειών (διαλέξεων) η ασυμπτωτική έκφραση (συμβολισμός Ο, Ω, Θ) του χρόνου

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων ΠΕΡΙΕΧΟΜΕΝΑ Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων Εισαγωγή Η χρήση των μεταβλητών με δείκτες στην άλγεβρα είναι ένας ιδιαίτερα

Διαβάστε περισσότερα

Αναδρομικοί Αλγόριθμοι

Αναδρομικοί Αλγόριθμοι Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας

Διαβάστε περισσότερα

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Γενική µέθοδος σχεδιασµού αλγορίθµων: Διαίρεση σε ( 2) υποπροβλήµατα (σηµαντικά) µικρότερου µεγέθους.

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων Πληροφορικής 2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών 3. Ο αλγόριθμος

Διαβάστε περισσότερα

Αναδρομή Ανάλυση Αλγορίθμων

Αναδρομή Ανάλυση Αλγορίθμων Αναδρομή Ανάλυση Αλγορίθμων Παράδειγμα: Υπολογισμός του παραγοντικού Ορισμός του n! n! = n x (n - 1) x x 2 x 1 Ο παραπάνω ορισμός μπορεί να γραφεί ως n! = 1 αν n = 0 n x (n -1)! αλλιώς Παράδειγμα (συνέχ).

Διαβάστε περισσότερα

Γλώσσα Προγραμματισμού C

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

Διαβάστε περισσότερα

Γλώσσα Προγραμματισμού C

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

Διαβάστε περισσότερα

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος Εισαγωγή στους Αλγόριθµους Αλγόριθµοι Τι είναι αλγόριθµος; Τι µπορεί να υπολογίσει ένας αλγόριθµος; Πως αξιολογείται ένας αλγόριθµος; Παύλος Εφραιµίδης pefraimi@ee.duth.gr Αλγόριθµοι Εισαγωγικές Έννοιες

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Διαίρει και Βασίλευε Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαίρει και Βασίλευε Divide and Conquer Η τεχνική διαίρει και βασίλευε αναφέρεται

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 13: Αλγόριθμοι-Μεγάλων ακεραίων- Εκθετοποίηση- Πολλαπλασιασμός πινάκων -Strassen Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Διαίρει-και-Βασίλευε Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διαίρει-και-Βασίλευε Γενική

Διαβάστε περισσότερα

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

Διαβάστε περισσότερα

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 5.1 Επίδοση αλγορίθμων Μέχρι τώρα έχουμε γνωρίσει διάφορους αλγόριθμους (αναζήτησης, ταξινόμησης, κ.α.). Στο σημείο αυτό θα παρουσιάσουμε ένα τρόπο εκτίμησης της επίδοσης (performance) η της αποδοτικότητας

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ταξινόµηση Mergesort Κεφάλαιο 8 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Ταξινόµηση µε συγχώνευση Αλγόριθµος Mergesort Διµερής συγχώνευση Αφηρηµένη επιτόπου συγχώνευση Αναλυτική ταξινόµηση

Διαβάστε περισσότερα

Δυναμικός Προγραμματισμός

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

Διαβάστε περισσότερα

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων Ταξινόμηση: Εισαγωγικά Ταξινόμηση (Sor ng) Ορέστης Τελέλης Βασικό πρόβλημα για την Επιστήμη των Υπολογιστών. π.χ. αλφαβητική σειρά, πωλήσεις ανά τιμή, πόλεις με βάση πληθυσμό, Μπορεί να είναι ένα πρώτο

Διαβάστε περισσότερα

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε Γενική μέθοδος σχεδιασμού αλγορίθμων: ιαίρεση σε ( 2) υποπροβλήματα

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες και

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφορική I "Προγραμματισμός" B. Φερεντίνος

Διαβάστε περισσότερα

5.1. Προσδοκώμενα αποτελέσματα

5.1. Προσδοκώμενα αποτελέσματα 5.1. Προσδοκώμενα αποτελέσματα Όταν θα έχεις ολοκληρώσει τη μελέτη αυτού του κεφαλαίου θα έχεις κατανοήσει τις τεχνικές ανάλυσης των αλγορίθμων, θα μπορείς να μετράς την επίδοση των αλγορίθμων με βάση

Διαβάστε περισσότερα

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

Εισαγωγή στην Ανάλυση Αλγορίθμων Εισαγωγή στην Ανάλυση Αλγορίθμων (4) Μεθοδολογία αναδρομικών σχέσεων (Ι) Με επανάληψη της αναδρομής Έστω όπου r και a είναι σταθερές. Βρίσκουμε τη σχέση που εκφράζει την T(n) συναρτήσει της T(n-) την T(n)

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

Διαβάστε περισσότερα

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

Στοιχεία Αλγορίθµων και Πολυπλοκότητας Στοιχεία Αλγορίθµων και Πολυπλοκότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 1 / 16 «Ζέσταµα» Να γράψετε τις συναρτήσεις

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η Δ.Π.Θ. - Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2017-2018 Τομέας Συστημάτων Παραγωγής Εξάμηνο Β Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης ΜΑΘΗΜΑ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διαβάστε περισσότερα

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr I ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ i e ΜΕΡΟΣ Ι ΟΡΙΣΜΟΣ - ΒΑΣΙΚΕΣ ΠΡΑΞΕΙΣ Α Ορισμός Ο ορισμός του συνόλου των Μιγαδικών αριθμών (C) βασίζεται στις εξής παραδοχές: Υπάρχει ένας αριθμός i για τον οποίο ισχύει i Το σύνολο

Διαβάστε περισσότερα

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

Διαβάστε περισσότερα

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3) Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3) 3.1 Ασυμπτωτικός συμβολισμός (Ι) Οι ορισμοί που ακολουθούν μας επιτρέπουν να επιχειρηματολογούμε με ακρίβεια για την ασυμπτωτική συμπεριφορά. Οι f(n) και g(n) συμβολίζουν

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

Δυναμικός Προγραμματισμός

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

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η Δ.Π.Θ. - Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2018-2019 Τομέας Συστημάτων Παραγωγής Εξάμηνο Β Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης ΜΑΘΗΜΑ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Α2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών Α3. Ο αλγόριθμος

Διαβάστε περισσότερα

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές: Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 6 Πίνακες Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Τύπος πίνακα (array) Σύνθετος τύπος δεδομένων Αναπαριστά ένα σύνολο ομοειδών

Διαβάστε περισσότερα

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888 ΕΡΩΤΗΣΕΙΣ 1. Να αναφέρετε μερικά από τα ιδιαίτερα χαρακτηριστικά της Pascal. 2. Ποιο είναι το αλφάβητο της Pascal; 3. Ποια είναι τα ονόματα-ταυτότητες και σε τι χρησιμεύουν; 4. Σε τι χρησιμεύει το συντακτικό

Διαβάστε περισσότερα

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

Δομές Δεδομένων Ενότητα 2 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 2: Θέματα Απόδοσης Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Γιάννης Κουτσονίκος Επίκουρος Καθηγητής Οργάνωση Δεδομένων Δομή Δεδομένων: τεχνική οργάνωσης των δεδομένων με σκοπό την

Διαβάστε περισσότερα

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης Περιεχόμενα Δομές δεδομένων 37. Δομές δεδομένων (θεωρητικά στοιχεία)...11 38. Εισαγωγή στους μονοδιάστατους πίνακες...16 39. Βασικές επεξεργασίες στους μονοδιάστατους πίνακες...25 40. Ασκήσεις στους μονοδιάστατους

Διαβάστε περισσότερα

Αλγόριθμοι Ταξινόμησης Μέρος 1

Αλγόριθμοι Ταξινόμησης Μέρος 1 Αλγόριθμοι Ταξινόμησης Μέρος 1 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις

Διαβάστε περισσότερα

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα 2 Βήματα Επεξεργασίας Τα βασικά βήματα στην επεξεργασία

Διαβάστε περισσότερα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Ταξινόμηση Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Είσοδος n αντικείμενα a 1, a 2,..., a n με κλειδιά (συνήθως σε ένα πίνακα, ή λίστα, κ.τ.λ)

Διαβάστε περισσότερα

Δομές Δεδομένων. Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο. Φυσικό Επίπεδο RAM. Ταξινομημένος.

Δομές Δεδομένων. Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο. Φυσικό Επίπεδο RAM. Ταξινομημένος. Δομές Δεδομένων Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο Φυσικό Επίπεδο RAM Πίνακας 8 10 17 19 22 Ταξινομημένος Πίνακας 5 8 10 12 17 Δένδρο 8 5 10 12 19 17

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 1 Εισαγωγή 1 / 14 Δομές Δεδομένων και Αλγόριθμοι Δομή Δεδομένων Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Δεδομένων Ενότητα 1 - Εισαγωγή Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αντικείμενο μαθήματος Δομές Δεδομένων (ΔΔ): Στην επιστήμη υπολογιστών

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια υλοποίησης Ανάλυση της απόδοσης Θεωρητική

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 14: Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης 3) Mergesort Ταξινόμηση με Συγχώνευση 4) BucketSort Ταξινόμηση με Κάδους Διδάσκων:

Διαβάστε περισσότερα

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ii ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εντολές εκχώρησης (αντικατάστασης)....1 1.1 Εισαγωγή...4 1.1.1 Χρήση ΛΣ και IDE της Turbo Pascal....4 1.1.2 Αίνιγμα...6 1.2 Με REAL...7 1.2.1 Ερώτηση...9 1.2.2 Επίλυση δευτεροβάθμιας

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 12 η Αναζήτηση/Ταξινόμηση Πίνακα Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ Α) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα "Σ", αν είναι σωστή, ή το γράμμα "Λ", αν είναι λανθασμένη. (Μονάδες 25) 1. Ένα αδόμητο πρόβλημα είναι ταυτόχρονα και ανοικτό

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η Δ.Π.Θ. - Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2016-2017 Τομέας Συστημάτων Παραγωγής Εξάμηνο Β Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης ΜΑΘΗΜΑ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ100) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 4: Αναδρομικές σχέσεις και ανάλυση αλγορίθμων Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 3: Πίνακες, βρόχοι, συναρτήσεις 1 Ιουνίου 2017 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Αριθμητική Ανάλυση & Εφαρμογές

Αριθμητική Ανάλυση & Εφαρμογές Αριθμητική Ανάλυση & Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 2017-2018 Υπολογισμοί και Σφάλματα Παράσταση Πραγματικών Αριθμών Συστήματα Αριθμών Παράσταση Ακέραιου

Διαβάστε περισσότερα

Σημειωματάριο μαθήματος 1ης Νοε. 2017

Σημειωματάριο μαθήματος 1ης Νοε. 2017 Σημειωματάριο μαθήματος 1ης Νοε. 2017 Παραδείγματα συναρτήσεων. Αναδρομικές συναρτήσεις. Ξεκινήσαμε πακετάροντας παλαιότερό μας κώδικα για τον υπολογισμό των διαιρετών ενός φυσικού αριθμού σε συνάρτηση.

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα.0 Σταύρος Δ. Νικολόπουλος 06-7 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Ταξινόμηση Selection-Sort Bubble-Sort και

Διαβάστε περισσότερα

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012 Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012 3 5 1 Ταξινόμηση - Sorting Πίνακας Α 1 3 5 5 3 1 Ταξινόμηση (Φθίνουσα) Χωρίς Ταξινόμηση Ταξινόμηση

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4.0 Επιλογή Αλγόριθμοι Επιλογής Select και Quick-Select Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

Διαβάστε περισσότερα

Αλγόριθμοι ταξινόμησης

Αλγόριθμοι ταξινόμησης Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης BuubleSort, SelectionSort, InsertionSort, Merger Sort, Quick Soft ΕΠΛ Δομές Δεδομένων και Αλγόριθμοι

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 10: Ταξινόμηση Πίνακα Αναζήτηση σε Ταξινομημένο Πίνακα Πρόβλημα Δίνεται πίνακας t από Ν ακεραίους. Ζητούμενο: να ταξινομηθούν τα περιεχόμενα του πίνακα σε αύξουσα αριθμητική

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι 1 Έννοια Ανεπίσημα, ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος ή την διεκπεραίωση

Διαβάστε περισσότερα