ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ειζαγφγή ζηην πληροθορική Ενόηηηα 9: Αιγόξηζκνη Βξάλα Βαζηιηθή Τκήκα Γηνίθεζεο Δπηρεηξήζεσλ
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χρήςησ Creative Commons. Για εκπαιδευτικό υλικό, όπωσ εικόνεσ, που υπόκειται ςε άλλου τφπου άδειασ χρήςησ, η άδεια χρήςησ αναφζρεται ρητώσ. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό ζχει αναπτυχθεί ςτα πλαίςια του εκπαιδευτικοφ ζργου του διδάςκοντα. Το ζργο «Ανοικτά Ακαδημαϊκά Μαθήματα ςτο ΤΕΙ Κεντρικήσ Μακεδονίασ» ζχει χρηματοδοτήςει μόνο τη αναδιαμόρφωςη του εκπαιδευτικοφ υλικοφ. Το ζργο υλοποιείται ςτο πλαίςιο του Επιχειρηςιακοφ Προγράμματοσ «Εκπαίδευςη και Δια Βίου Μάθηςη» και ςυγχρηματοδοτείται από την Ευρωπαϊκή Ζνωςη (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικοφσ πόρουσ. 3
Καηηγορίες Προβλημάηφν Υπάξρνπλ ηξεηο κεγάιεο θαηεγνξίεο πξνβιεκάησλ αλάινγα κε ην εάλ ιύλνληαη ή όρη: Τα επιλύσιμα πξνβιήκαηα είλαη απηά γηα ηα νπνία έρεη ήδε δηαηππσζεί κηα ιύζε ή απηά πνπ είλαη ηόζν θνληά ζε άιια πξνβιήκαηα ηα νπνία έρνπλ ήδε ιπζεί. Τα άλυτα πξνβιήκαηα είλαη απηά γηα ηα νπνία έρεη απνδεηρζεί όηη δελ ππάξρεη ιύζε (πρ ε ηξηρνηόκεζε κηα γσλίαο ή ν ηεηξαγσληζκόο ελόο θύθινπ). Τα ανοικτά πξνβιήκαηα, απηά δειαδή γηα ηα νπνία δελ έρεη βξεζεί κηα ιύζε αιιά δελ έρεη απνδεηρζεί όηη είλαη άιπηα. 4
Επίλσζη Προβλημάηφν (1) Σε θάζε πεξίπησζε γηα ηνλ πιήξε θαη αθξηβή θαζνξηζκό θαη ηειηθά ηελ επίιπζε ελόο πξνβιήκαηνο, απαηηνύληαη ηα αθόινπζα βήκαηα: 1. Η αθξηβήο απνηύπσζε ηνπ ίδηνπ ηνπ πξνβιήκαηνο (ε εθθώλεζε) θαη ε ζσζηή εξκελεία όισλ ησλ παξακέηξσλ ηνπ. 2. Η πιήξεο θαη ιεπηνκεξήο θαηαγξαθή ηεο κνξθήο θαη ηνπ πιήζνπο ησλ δεδνκέλσλ ηνπ πξνβιήκαηνο, όπσο θαη αληίζηνηρα ε πιήξεο θαηαγξαθή ηεο κνξθήο θαη ηνπ πιήζνπο ησλ αλακελόκελσλ απνηειεζκάησλ 5
Επίλσζη Προβλημάηφν (2) 3. Ο έιεγρνο ηεο επηιπζηκόηεηαο ηνπ πξνβιήκαηνο, δειαδή ην εάλ ην πξόβιεκα κπνξεί λα ιπζεί ή εάλ είλαη άιπην. 4. Η επηινγή ή ε αλάπηπμε κηαο κεζόδνπ (ελόο αιγόξηζκνπ) γηα ηε ιύζε ηνπ πξνβιήκαηνο. 5. Η ηειηθή επίιπζε ηνπ πξνβιήκαηνο κε ηε εθαξκνγή ηεο κεζόδνπ (ηελ εθηέιεζε ηνπ αιγόξηζκνπ). 6
Αλγόριθμοι Αιγόξηζκνο είλαη ε αθξηβήο πεξηγξαθή ελόο πξνβιήκαηνο κε κηα θαζνξηζκέλε ζεηξά βεκάησλ. Η εθηέιεζε ηεο δηαδηθαζίαο πνπ θαζνξίδεηαη από ηα βήκαηα απηά νδεγεί ζηελ επίιπζε ηνπ πξνβιήκαηνο. Η πινπνίεζε ησλ δηαθόξσλ αιγνξίζκσλ από ηνπο Η/Υ γίλεηαη κε ηελ βνήζεηα ησλ γισζζώλ πξνγξακκαηηζκνύ. Η γξαθηθή αλαπαξάζηαζε ηνπ αιγόξηζκνπ γίλεηαη κε δηάγξακκα ξνήο ή ινγηθό δηάγξακκα. 7
Χρήζη σπολογιζηή για ηην επίλσζη αλγορίθμφν Ο ππνινγηζηήο κπνξεί λα ρξεζηκνπνηεζεί κε πνιύ κεγάιε επηηπρία ζηελ εθηέιεζε ελόο αιγνξίζκνπ όηαλ ζπληξέρνπλ νη αθόινπζεο πξνϋπνζέζεηο: Ο ζπγθεθξηκέλνο αιγόξηζκνο δελ ζα ρξεζηκνπνηεζεί κόλν κία θνξά αιιά ζπρλά. Καηά ηελ επίιπζε ηνπ πξνβιήκαηνο απαηηνύληαη πεξίπινθνη ππνινγηζκνί. Η ηαρύηεηα ζηελ νινθιήξσζε ησλ πξάμεσλ είλαη εμαηξεηηθά ζεκαληηθή. Υπάξρεη κεγάινο όγθνο από δεδνκέλα ηα νπνία πξέπεη λα ηύρνπλ δηαρείξηζεο. Κάπνηεο πξάμεηο ή θάπνηεο νκάδεο πξάμεσλ επαλαιακβάλνληαη ζπρλά. 8
Οσζιαζηικά ζηοιτεία ηοσ αλγόριθμοσ (1) αιγόξηζκνο θαηαζθεπάδεηαη γηα λα ιύζεη έλα πξόβιεκα. Άξα ζα πξέπεη λα ιύλεη πάνηα ζσζηά ην πξόβιεκα. Δθόζνλ ην πξόβιεκα ιύλεηαη, ν αιγόξηζκνο ζα πξέπεη λα ηειεηώλεη θάπνηε (αιιηώο ην πξόβιεκα δελ ζα ιπλόηαλ πνηέ!). 9
Οσζιαζηικά ζηοιτεία ηοσ αλγόριθμοσ (2) Ο αιγόξηζκνο απνηειείηαη από ελέξγεηεο - εληνιέο. Θα πξέπεη λα ππάξρεη κηα ζειρά ζε απηέο ηηο ελέξγεηεο (1 ε ελέξγεηα, 2 ε ελέξγεηα θιπ.) Τν πλήθος ησλ ελεξγεηώλ πξέπεη λα είλαη πεπεραζμένο, δειαδή ζπγθεθξηκέλν θαη κεηξήζηκν θαη όρη άπεηξν. 10
Οσζιαζηικά ζηοιτεία ηοσ αλγόριθμοσ (3) Οη εληνιέο - ελέξγεηεο ζα πξέπεη λα είλαη απόιπηα θαζνξηζκέλεο. Άξα δύν άλζξσπνη ή δύν ππνινγηζηέο πνπ εθηεινύλ ηνλ ίδην αιγόξηζκν, ζα πξέπεη λα εκηελούν κε ακριβώς ηνλ ίδιο ηρόπο θάζε κία από ηηο εληνιέο. Γελ πξέπεη λα ππάξρεη καμία αμθιβολία γηα ηνλ ηξόπν εθηέιεζήο ηεο θάζε εληνιήο, ζε κάθε πιθανή περίπηφζη. 11
Οσζιαζηικά ζηοιτεία ηοσ αλγόριθμοσ (4) Ο αιγόξηζκνο επεμεξγάδεηαη ηα δεδνκέλα ηνπ πξνβιήκαηνο θαη ιύλεη ην πξόβιεκα παξάγνληαο απνηειέζκαηα. Άξα ζα πξέπεη λα ππάξρεη έλαο ηξόπνο ειζαγφγής ησλ δεδομένφν ηνπ πξνβιήκαηνο (είζνδνο δεδνκέλσλ) θαη Έλαο ηξόπνο καηαγραθής ησλ αποηελεζμάηφν ηνπ αιγόξηζκνπ, δειαδή ηεο ιύζεο ηνπ πξνβιήκαηνο (έμνδνο απνηειεζκάησλ). Δίλαη πηζαλό λα απαηηείηαη ε δεκηνπξγία ενδιάμεζφν αποηελεζμάηφν, ηα νπνία ζα πξέπεη λα απνζεθεύνληαη θαηά ηε δηάξθεηα ηεο εθηέιεζεο ηνπ αιγόξηζκνπ. Τα δεδνκέλα απηά ζα πξέπεη λα απνζεθεύνληαη πξνζσξηλά ζηηο ιεγόκελεο δομές δεδομένφν. 12
Οσζιαζηικά ζηοιτεία ηοσ αλγόριθμοσ (5) Ο αιγόξηζκνο ηειεηώλεη ζε ινγηθό ρξνληθό δηάζηεκα. Άξα δελ αξθεί απιώο λα νινθιεξώλεηαη θάπνηε, αιιά όζν ην δπλαηόλ γξεγνξόηεξα. Δίλαη πηζαλόλ λα ππάξρεη έλα άλσ όξην ζην δηαζέζηκν ρξόλν. Τν όξην απηό κπνξεί λα ηίζεηαη σο πξνδηαγξαθή γηα ηελ επίιπζε ηνπ πξνβιήκαηνο. 13
Σρόποι αναπαράζηαζης αλγόριθμφν (1) Δάλ πξόθεηηαη γηα ηηο αξρηθέο πξνζπάζεηεο πξνζέγγηζεο ελόο πξνβιήκαηνο, ζπρλά πεξηγξάθνπκε ηνλ αιγόξηζκν ζε θπζηθή γιώζζα (ζηε γιώζζα πνπ κηινύκε θαλνληθά), αλαθέξνληαο ηηο δηαθνξεηηθέο ελέξγεηεο ηνπ αιγόξηζκνπ κε κηθξέο θαη πεξηγξαθηθέο πξνηάζεηο. Οη πξνηάζεηο απηέο κπνξνύλ λα αλήθνπλ ζε κηα παξάγξαθν (ραιαξή πξνζέγγηζε) ή λα απαξηίδνπλ κηα αξηζκεκέλε ιίζηα ελεξγεηώλ (πεξηζζόηεξν ηππηθή πξνζέγγηζε). 14
Σρόποι αναπαράζηαζης αλγόριθμφν (2) Δάλ πξνζπαζνύκε λα αλαπηύμνπκε έλαλ αιγόξηζκν ζε κηα πεξηζζόηεξν ηππηθή κνξθή, ρσξίο όκσο λα εκπιαθνύκε ζε ηδηαίηεξεο ιεπηνκέξεηεο γηα ηελ πινπνίεζή ηνπ, ρξεζηκνπνηνύκε ζπρλά κηα ςεπδνγιώζζα. Μηα ηέηνηα αλαπαξάζηαζε πεξηνξίδεη ηελ ειεπζεξία έθθξαζεο πνπ έρνπκε ζηε θπζηθή γιώζζα, σζηόζν θέξλεη ηνλ αιγόξηζκν πην θνληά ζηελ ηειηθή πινπνίεζε, αθνύ ρξεζηκνπνηεί έλα ζύλνιν από ηππνπνηεκέλεο επηηξεπηέο κνξθέο εληνιώλ. Η αλαπαξάζηαζε ζε ςεπδνγιώζζα είλαη ηδηαίηεξα ρξήζηκε θαη ζηε δηδαζθαιία ελόο αιγόξηζκνπ. Τν απνηέιεζκα είλαη ε δεκηνπξγία ελόο αιγόξηζκνπ ζε υεσδοκώδικα. 15
Σρόποι αναπαράζηαζης αλγόριθμφν (3) Ιδηαίηεξα ρξήζηκε γηα ηελ θαηαλόεζε ελόο αιγόξηζκνπ είλαη θαη ε αλαπαξάζηαζή ηνπ ζε γξαθηθή κνξθή, κε ηε ρξήζε θάπνηαο κεζόδνπ γξαθηθήο αλαπαξάζηαζεο. Έλα ηέηνην παξάδεηγκα είλαη ε ρξήζε ησλ Γηαγξακκάησλ Ρνήο. 16
Σρόποι αναπαράζηαζης αλγόριθμφν (4) Τειηθά, εθόζνλ ν ζηόρνο καο είλαη ε πινπνίεζε ηνπ αιγόξηζκνπ ζε έλαλ ππνινγηζηή, αλαγθαζηηθά ζα πξέπεη λα επηιερζεί κία γιώζζα πξνγξακκαηηζκνύ γηα ηελ αλαπαξάζηαζε ηνπ αιγόξηζκνπ, ζα πξέπεη δειαδή ν αιγόξηζκνο λα θσδηθνπνηεζεί θαηάιιεια ώζηε λα κπνξεί λα γίλεη εθηειέζηκνο από έλαλ ππνινγηζηή. Η αλαπαξάζηαζε ζε γιώζζα πξνγξακκαηηζκνύ έρεη σο απνηέιεζκα ηε δεκηνπξγία ελόο προγράμμαηος. 17
Παράδειγμα αλγορίθμοσ Αιγόξηζκνο ιύζεο ηεο πξσηνβάζκηαο εμίζσζεο ax+b=0. Γηάβαζε ηνπο ζπληειεζηέο a θαη b. Αλ a=0 ηόηε αλ b=0 ε εμίζσζε είλαη αόξηζηε Αιιηώο ε εμίζσζε είλαη αδύλαηε Αιιηώο x=-b/a. Δκθάληζε x 18
ύμβολα για απεικόνιζη αλγόριθμοσ Απσή / Τέλορ Επεξεπγαζία Είζοδορ Έξοδορ Ναι Οσι ποή πληποθοπίαρ Εκηύπωζη Σςνθήκη 19
Παράδειγμα λογικού διαγράμμαηος Απσή Δίζνδνο a,b Λογικό διάγπαμμα για ηην επίλςζη ηηρ εξίζωζηρ ax+b=0 a=0 Οσι X=-b/a x Ναι b=0 Οσι Αδύναηη Αόπιζηη Τέλορ 20
Μεηαβληηές Μία κεηαβιεηή ζα πξέπεη λα έρεη ινηπόλ έλα όνομα (ώζηε λα αλαθεξόκαζηε ζε απηή) θαη κία ηιμή (ώζηε λα ρξεζηκνπνηείηαη ζε δηαθνξεηηθέο εθηειέζεηο ηνπ αιγόξηζκνπ). Φπζηθά, εθόζνλ ε ηηκή ηεο κεηαβιεηήο απηήο ζα πξέπεη λα απνζεθεπηεί ζηελ θεληξηθή κλήκε, γηα θάζε κεηαβιεηή ζα πξέπεη λα δεζμεύεηαι (λα θξαηείηαη) θαη νη απαξαίηεηνο ρώξνο, νπόηε πξνθύπηεη θαη ε έλλνηα ηεο διεύθσνζης ηεο ζέζεο κλήκεο ε νπνία ζα αληηζηνηρηζηεί ζηε κεηαβιεηή. 21
Σύποι μεηαβληηών ΑΚΕΡΑΙΕ. Οη κεηαβιεηέο απηνύ ηνπ ηύπνπ κπνξνύλ λα ιάβνπλ αθέξαηεο ηηκέο, όπσο 10, -5, 0 θιπ. ΠΡΑΓΜΑΣΙΚΕ. Οη κεηαβιεηέο απηέο κπνξνύλ λα ιάβνπλ κηα πξαγκαηηθή ηηκή όπσο 1.52, 8.245, -123,801, 15.0. ΧΑΡΑΚΣΗΡΑ. Απηέο νη κεηαβιεηέο κπνξνύλ λα ιάβνπλ σο ηηκή έλαλ θαη κόλνλ νπνηνδήπνηε ραξαθηήξα. Οη ηηκέο ηύπνπ ραξαθηήξα πξέπεη ππνρξεσηηθά λα πεξηθιείνληαη κέζα ζε. Έηζη, κηα ηηκή ηύπνπ ραξαθηήξα κπνξεί λα είλαη ην α, ην Α (ειιεληθό), ην a ή ην Α (αγγιηθό). Όινη απηνί νη ραξαθηήξεο είλαη δηαθνξεηηθνί κεηαμύ ηνπο. Δπηπιένλ, κία ηηκή ηύπνπ 5 είλαη νπσζδήπνηε ραξαθηήξαο θαη όρη αθέξαηνο (αθνύ πεξηθιείεηαη ζε ). ΛΟΓΙΚΕ. Οη ινγηθέο κεηαβιεηέο κπνξνύλ λα ιάβνπλ κόλν δύν πηζαλέο ηηκέο: ηελ ηηκή true θαη ηελ ηηκή false. ΔΕΙΚΣΗ. Μηα κεηαβιεηή ηύπνπ δείθηε ρξεζηκνπνηείηαη γηα λα ιακβάλεη σο ηηκέο ηηο δηεπζύλζεηο άιισλ κεηαβιεηώλ. Ο ηξόπνο ιεηηνπξγίαο ηέηνησλ κεηαβιεηώλ ζα πεξηγξαθεί ζε επόκελν θεθάιαην 22
Τζλος Ενότητας 23