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

Σχετικά έγγραφα
Σελίδα μαθήματος με ημερολόγιο, υλικό, βιβλιογραφία, ββ, ανακοινώσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οντοκεντρικός Προγραμματισμός

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

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

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

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

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

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

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

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

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

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

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

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

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

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

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

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

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

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

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

Τεχνικό Σχέδιο - CAD

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

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

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

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

Εξελικτική Ψυχολογία: Κοινωνικο-γνωστική ανάπτυξη

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

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

Εκκλησιαστικό Δίκαιο

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

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

Λειτουργία και εφαρμογές της πολιτιστικής διαχείρισης

Πληροφορική ΙΙ Θεματική Ενότητα 5

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

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

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

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

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

Εισαγωγή στην πληροφορική

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

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

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

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

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

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Εκκλησιαστικό Δίκαιο

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

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

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

Διδακτική των εικαστικών τεχνών Ενότητα 3

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

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

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

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

Τεχνικό Σχέδιο - CAD

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

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

Transcript:

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

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

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

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

Ένα απλό πρόγραμμα σε Java import java.io.*; class FileRead { public static void main(string args[]) { try { //άνοιγμα αρχείου FileInputStream fstream = new FileInputStream("textfile.txt"); // αρχικοποιήσεις για διάβασμα DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(i n)); String strline; // διάβασμα ανά γραμμή while ((strline = br.readline())!= null) { // επεξεργασία

Ένα απλό πρόγραμμα σε Java - συνέχεια Έστω ότι διαβάζω εγγραφές φοιτητών που αρχίζουν με τον ΑΕΜ τους. Έστω ότι αποθηκεύω τα στοιχεία σε πίνακα. Πως μπορώ να ψάξω για ένα φοιτητή βάσει του ΑΕΜ του; 6

Κύριο Διδακτικό βιβλίο «Εισαγωγή στη Ανάλυση και Σχεδίαση Αλγορίθμων», Anany Levitin, μετάφραση 2 ης έκδοσης www.aw-bc.com/info/levitin/ 7

Ορισμός αλγορίθμου Αλγόριθμος είναι μία ακολουθία ξεκάθαρων, ρητών εντολών για την επίλυση ενός προβλήματος, δηλαδή για την παραγωγή της απαιτούμενης εξόδου για κάθε αποδεκτή είσοδο, σε πεπερασμένο χρόνο. 8

Η έννοια του αλγορίθμου πρόβλημα αλγόριθμος είσοδος υπολογιστής έξοδος Η αλγοριθμική επίλυση είναι ένας τρόπος να διδάξουμε τον υπολογιστή 9

Παράδειγμα υπολογιστικού προβλήματος: Ταξινόμηση Ορισμός προβλήματος: Είσοδος: Μία ακολουθία n αριθμών <a 1,a 2,,a n > Έξοδος: Μία αναδιάταξη της ακολουθίας εισόδου <a 1,a 2,,a n >, έτσι ώστε a i a j για i<j Στιγμιότυπο: ακολουθία <5, 3, 2, 8, 3> : Με επιλογή Με εισαγωγή Με συγχώνευση... πληθώρα άλλων 10

Ταξινόμηση με επιλογή Είσοδος: ο πίνακας a[1],...,a[n] Έξοδος: ο πίνακας a ταξινομημένος κατά μη φθίνουσα τάξη Αλγόριθμος: for i=1 to n swap a[i] with smallest of a[i], a[n] Επιτόπια (In-place), ευσταθής ταξινόμηση 11

Γιατί μελετούμε τους αλγορίθμους? Wirth 1976: Algorithms + Data Structures = Programs Harel 1987, 1992, 2004: Algorithmics : the Spirit of Computing Θεωρητική σπουδαιότητα Η καρδιά της Πληροφορικής Πρακτική σπουδαιότητα Κάθε επαγγελματίας πρέπει να διαθέτει μία βιβλιοθήκη γνωστών αλγορίθμων Πρέπει να είναι σε θέση να σχεδιάσει και να αναλύσει νέους αλγορίθμους για νέα προβλήματα 12

Βασικά χαρακτηριστικά αλγορίθμου «Πέρα από ένα πεπερασμένο σύνολο κανόνων που δίνουν μία ακολουθία πράξεων για την επίλυση ενός συγκεκριμένου τύπου προβλήματος, ένας αλγόριθμος έχει τα εξής πέντε βασικά χαρακτηριστικά» [Knuth] Περατότητα (τελειώνει μετά από πεπερασμένο αριθμό βημάτων) Καθορισμό (δεν υπάρχει ασάφεια ως προς την εκτέλεση κάποιου βήματος) Είσοδο (υπάρχουν μηδέν ή περισσότερα στοιχεία) Έξοδο (υπάρχουν ένα ή περισσότερα ορθά στοιχεία για αποδεκτή είσοδο) Αποτελεσματικότητα (οι πράξεις είναι τόσο απλές ώστε να είναι εκτελέσιμες σε πεπερασμένο χρόνο με μολύβι και χαρτί) 13

Ιστορικό υπόβαθρο (1) Από την αρχαιότητα γνωστοί οι αλγόριθμοι του Ευκλείδη, του Ερατοσθένη κλπ http://en.wikipedia.org/wiki/al-khwarizmi Abū Abd Allāh Muḥammad ibn Mūsā al-.(أبو عبد هللا محمد بن موسى الخوارزمي ( Khwārizmī μαθηματικός, αστρονόμος, αστρολόγος, γεωγράφος και συγγραφέας. Γεννήθηκε στην Περσία περί το 780 και πέθανε περί το 850 14

Ιστορικό υπόβαθρο (2) Μαζί με το Διόφαντο θεωρείται πατέρας της Άλγεβρας λόγω του βιβλίου του al-kitāb al-mukhtaṣar fī hīsāb al-ğabr wa l-muqābala, για τη συστηματική επίλυση γραμμικών και τετραγωνικών εξισώσεων. Η λέξη Άλγεβρα προέρχεται από το al-ğabr, που ήταν μία από τις δύο πράξεις που περιγράφονταν στο βιβλίο του για την επίλυση των τετραγωνικών εξισώσεων. Η Λατινική μετάφραση ενός άλλου σημαντικού του βιβλίου για τους Ινδικούς αριθμούς, Algoritmi de numero Indorum, εισήγαγε κατά το 12 ο αιώνα στη Δύση τα αριθμητικά συστήματα και το μηδέν. Η λέξη αλγόριθμος προκύπτει από το Λατινικό Algoritmi, το εκλατινισμένο όνομά του. 15

Μέγιστος Κοινός Διαιρέτης - Αλγόριθμος 1 Step 1 Assign the value of min{m,n} to t Step 2 Divide m by t. If the remainder of this division is 0, go to Step 3; otherwise, go to Step 4 Step 3 Divide n by t. If the remainder of this division is 0, return the value of t as the answer and stop; otherwise, go to Step 4 Step 4 Decrease the value of t by 1. Go to Step 2 16

Ορθότητα Μέγιστος Κοινός Διαιρέτης - Αλγόριθμος 1 Ο αλγόριθμος τερματίζει, επειδή το t μειώνεται κατά 1 κάθε φορά που περνούμε από το βήμα 4, το 1 διαιρεί κάθε ακέραιο, και τελικά η τιμή γίνει 1 εκτός αν ο αλγόριθμος τερματίσει νωρίτερα Ο αλγόριθμος είναι μερικώς ορθός, γιατί πράγματι όταν επιστρέφει το t ως απάντηση, το t είναι η μέγιστη τιμή που διαιρεί και το m και το n, αλλά Σημείωση: τα m και n πρέπει να είναι θετικοί ακέραιοι (όχι 0) 17

Μέγιστος Κοινός Διαιρέτης - Αλγόριθμος 2 Step 1 Find the prime factors of m Step 2 Find the prime factors of n Step 3 Identify all the common factors in the two prime expansions found in Steps 1 and 2. If p is a common factor repeated i times in m and j times in n, assign to p the multiplicity min{i,j} Step 4 Compute the product of all the common factors with their multiplicities and return it as the GCD of m and n Σημείωση: οι ακέραιοι πρέπει να είναι μεγαλύτεροι του 1, καθώς το 1 δε θεωρείται πρώτος αριθμός. 18

Μέγιστος Κοινός Διαιρέτης - Αλγόριθμος 2 Στην πραγματικότητα ο «Αλγόριθμος 2» δεν αποτελεί τυπικό αλγόριθμο εκτός αν δώσουμε έναν τυπικό αλγόριθμο για τον υπολογισμό των πρώτων παραγόντων ενός αριθμού (καθώς και για το Βήμα 3) Το κόσκινο του Ερατοσθένη είναι ένας αλγόριθμος (από το 200 π.χ.) που βρίσκει τους πρώτους αριθμούς που είναι μικρότεροι ενός ορίου 19

Μέγιστος Κοινός Διαιρέτης - Algorithm Sieve(n) Αλγόριθμος 2 for p 2 to n do A[p] p for p 2 to floor(sqrt(n)) do if A[p] 0 j p*p while j n do A[j] 0; j j+p i 0 for p 2 to n if A[p] 0 L[i] A[p]; i i+1 return L 20

Μέγιστος Κοινός Διαιρέτης - Αλγόριθμος του Ευκλείδη Αλγόριθμος 3 Step 0 [Ensure n m] If m<n, exchange m with n Step 1 [Find Remainder] Divide m by n and let r be the remainder (we will have 0 r<n) Step 2 [Is it zero?] If r=0, the algorithm terminates; n is the answer Step 3 [Reduce] Set m to n, n to r, and go to Step 1 Παράδειγμα: gcd(60,24) = gcd(24,12) = gcd(12,0) = 12 21

Μέγιστος Κοινός Διαιρέτης - Αλγόριθμος 3 Τερματισμός του αλγορίθμου του Ευκλείδη Ο δεύτερος αριθμός του ζεύγους μειώνεται σε κάθε επανάληψη χωρίς να γίνει ποτέ αρνητικός. Για την ακρίβεια, η νέα τιμή του n είναι r = m mod n, η οποία είναι μικρότερη του n. Τελικά, το r μηδενίζεται και ο αλγόριθμος τερματίζει. 22

Μέγιστος Κοινός Διαιρέτης - Αλγόριθμος 3 Ορθότητα του αλγορίθμου του Ευκλείδη Μετά το Βήμα 1, ισχύει m=qn+r, για κάποιον ακέραιο q. Αν r=0, τότε το m είναι πολλαπλάσιο του n, οπότε σε μία τέτοια περίπτωση το n είναι ο ΜΚΔ του m and n. Αν r 0, ισχύει ότι κάθε αριθμός που διαιρεί και το m και το n, διαιρεί και το m qn=r, ενώ κάθε αριθμός που διαιρεί και το n και το r, διαιρεί επίσης και το qn+r=m. Έτσι, το σύνολο των διαιρετών του ζεύγους {m,n} ταυτίζεται με το σύνολο των διαιρετών του ζεύγους {n,r}. Πιο συγκεκριμένα, ο ΜΚΔ του {m,n} είναι ίδιος με το ΜΚΔ του {n,r}. Συνεπώς, το Bήμα 3 δεν αλλάζει την απάντηση στο αρχικό πρόβλημα. 23

Μέγιστος Κοινός Διαιρέτης - Παραλλαγή αλγορίθμου Αλγόριθμος 3 Step 1 If n=0, return the value of m as the answer and stop; otherwise, go to Step 2. Step 2 Divide m by n and assign the value of the remainder to r. Step 3 Assign the value of n to m and the value of r to n. Go to Step 1. Σημείωση: τα m, n είναι μη αρνητικοί αριθμοί, όχι και οι δύο μηδέν 24

Μέγιστος Κοινός Διαιρέτης - Αλγόριθμος 3 Ψευδοκώδικας Παραλλαγής while n <> 0 do r m mod n m n n r return m 25

Κατηγορίες υπολογιστικών Ταξινόμηση Αναζήτηση Αναζήτηση συμβολοσειράς προβλημάτων Προβλήματα γράφων (συντομότερα μονοπάτια, ελάχιστα ζευγνύοντα δένδρα - mst, χρωματισμός κλπ) Συνδυαστικά προβλήματα (περιοδεύων πωλητής) Γεωμετρικά προβλήματα (πλησιέστερο ζεύγος, κυρτό περίβλημα) Αριθμητικά προβλήματα (εξισώσεις, ολοκληρώματα) Άλλα (έλεγχος πρώτων αριθμών, πρόβλημα του σάκου, σκάκι, πύργοι του Ανόι, κλπ) 26

Διαδικασία επίλυσης με αλγόριθμο Αντίληψη προβλήματος (στιγμιότυπα, εύρος, οριακές τιμές) Διασφάλιση δυνατοτήτων υπολογιστικής συσκευής (μοντέλα RAM/παράλληλοι αλγόριθμοι - ταχύτητα/μέγεθος μνήμης) Επιλογή μεταξύ επακριβών και προσεγγιστικών αλγορίθμων Επιλογή της σωστής δομής δεδομένων Επιλογή της σωστής τεχνικής σχεδιασμού αλγορίθμων Μέθοδοι έκφρασης αλγορίθμων (φυσική γλώσσα, ψευδοκώδικας, διάγραμμα ροής) Απόδειξη ορθότητας αλγορίθμου (επακριβών, προσεγγιστικών) Ανάλυση αλγορίθμου Κωδικοποίηση αλγορίθμου 27

Τεχνικές σχεδιασμού αλγορίθμων Ωμή βία Διαίρει και Βασίλευε Μείωσε και Βασίλευε Μετασχημάτισε και Βασίλευε Άπληστη μέθοδος Δυναμικός προγραμματισμός Οπισθοδρόμηση, Διακλάδωση και περιορισμός Ισοζύγιο χώρου και χρόνου 28

Ανάλυση αλγορίθμων Πόσο καλός είναι ένας αλγόριθμος? Ορθότητα Χρονική επίδοση Χωρική επίδοση Θεωρητική και εμπειρική απόδειξη Απλοί αλγόριθμοι (επαναληπτικοί, αναδρομικοί) Γενικότητα Υπάρχει ένας καλύτερος αλγόριθμος? Κάτω όρια Βελτιστότητα 29

Βασικές Δομές Δεδομένων Γραμμικές Δομές Πίνακες, λίστες (απλές, διπλές, κυκλικές) Συμβολοσειρές (και δυαδικές) Ουρά, στοίβα Γράφοι (κορυφές, ακμές) Κατευθυνόμενοι και μη, συνδεδεμένοι και μη Πλήρεις, πυκνοί, αραιοί Δένδρα Άκυκλοι γράφοι Σύνολα Δενδρική αναπαράσταση 30

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

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

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

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

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

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