(1 ο ) Γιατί «αλγόριθμοι» (υποχρεωτικά);

Σχετικά έγγραφα
HY 280. θεμελιακές έννοιες της επιστήμης του υπολογισμού ΑΣΚΗΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ. Γεώργιος Φρ.

Ας υποθέσουμε ότι ο παίκτης Ι διαλέγει πρώτος την τυχαιοποιημένη στρατηγική (x 1, x 2 ), x 1, x2 0,

Αποδεικτικές Διαδικασίες και Μαθηματική Επαγωγή.

(3 ο ) Εξαντλητική αναζήτηση I: μεταθέσεις & υποσύνολα (4 o ) Εξαντλητική αναζήτηση II: συνδυασμοί, διατάξεις & διαμερίσεις

{ i f i == 0 and p > 0

(20 ο ) ΣΤΑΔΙΑΚΕΣ ΚΑΤΑΣΚΕΥΕΣ Ι: ΑΠΛΗΣΤΟΙ ΑΛΓΟΡΙΘΜΟΙ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ

(13 ο ) ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙII: «βέλτιστο στατικό ευρετήριο»

(5 ο ) Η «πλοκή» ενός αλγορίθμου: η βάση μιας αξιολόγησης Ι (6 ο ) Η «πλοκή» ενός αλγορίθμου: ο Ο Ω Θ συμβολισμός ΙΙ

(7 ο ) ΔΙΑΙΡΕΙ & ΒΑΣΙΛΕΥΕ Ι: «ταξινόμηση» (8 ο ) ΔΙΑΙΡΕΙ & ΒΑΣΙΛΕΥΕ ΙΙ: «κυρτό περίβλημα»

( ) Π. ΚΡΗΤΗΣ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ 380, «ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ» Φ 03: ΑΣΥΜΠΤΩΤΙΚΕΣ ΕΚΦΡΑΣΕΙΣ

( ιμερείς) ΙΜΕΛΕΙΣ ΣΧΕΣΕΙΣ Α Β «απεικονίσεις»

Εξαναγκασμένες ταλαντώσεις, Ιδιοτιμές με πολλαπλότητα, Εκθετικά πινάκων. 9 Απριλίου 2013, Βόλος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

21/11/2005 Διακριτά Μαθηματικά. Γραφήματα ΒΑΣΙΚΗ ΟΡΟΛΟΓΙΑ : ΜΟΝΟΠΑΤΙΑ ΚΑΙ ΚΥΚΛΟΙ Δ Ι. Γεώργιος Βούρος Πανεπιστήμιο Αιγαίου

Οι γέφυρες του ποταμού... Pregel (Konigsberg)

«ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ»

Π. ΚΡΗΤΗΣ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ 380, «ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ» Φ 01: ΕΞΑΝΤΛΗΤΙΚΗ ΑΝΑΖΗΤΗΣΗ

Αναγνώριση Προτύπων. Σήμερα! Λόγος Πιθανοφάνειας Πιθανότητα Λάθους Κόστος Ρίσκο Bayes Ελάχιστη πιθανότητα λάθους για πολλές κλάσεις

Εισαγωγικά. 1.1 Η σ-αλγεβρα ως πληροφορία

( μ, λ ) ( i ) ( ii ) ( iii ) ( iv ) ( v )

Π. ΚΡΗΤΗΣ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ 380, «ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ» Φ 06: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΔΟΜΕΝΩΝ

Η ανισότητα α β α±β α + β με α, β C και η χρήση της στην εύρεση ακροτάτων.

Π. ΚΡΗΤΗΣ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ 380, «ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ» Φ 07: ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

τους στην Κρυπτογραφία και τα

Επίλυση ειδικών μορφών ΣΔΕ

Δίκαιο και Οικονομικά: Οι Εξετάσεις

Έννοια. Η αποδοχή της κληρονομίας αποτελεί δικαίωμα του κληρονόμου, άρα δεν

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

Αλγόριθμοι & Βελτιστοποίηση

ΣΤΟ ΙΑΤΡΕΙΟ. Με την πιστοποίηση του αποκτά πρόσβαση στο περιβάλλον του ιατρού που παρέχει η εφαρμογή.

ΣΥΝΟΛΑ (προσέξτε τα κοινά χαρακτηριστικά των παρακάτω προτάσεων) Οι άνθρωποι που σπουδάζουν ΤΠ&ΕΣ και βρίσκονται στην αίθουσα

Δήμος Σωτήριος Υ.Δ. Εργαστήριο Λογικής & Επιστήμης Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Σ.Η.Μ.Μ.Υ. Ε.Μ.Π.

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Γραμμική Ανεξαρτησία. Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών και ικτύων Πανεπιστήμιο Θεσσαλίας. 17 Μαρτίου 2013, Βόλος

Τρίτη, 05 Ιουνίου 2001 ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Ο Β ΤΟΜΕΑΣ ΤΟΥ ΤΜΗΜΑΤΟΣ: Υπολογιστικά Συστήματα και Εφαρμογές Πληροφορικής Pragmatic Computer Science

ΓΥΜΝΑΣΙΟ ΑΓΙΟΥ ΣΤΥΛΙΑΝΟΥ Μ 6 ΣΧΟΛΙΚΗ ΧΡΟΝΙΑ: ΤΡΟΠΟΙ ΜΕΛΕΤΗΣ

14 Φεβρουαρίου 2014, Βόλος

ΤΑ ΜΙΚΡΑ ΒΗΜΑΤΑ ΤΗΣ ΘΕΡΑΠΕΥΤΙΚΗΣ ΔΙΑΔΙΚΑΣΙΑΣ: ΠΩΣ ΕΡΧΟΝΤΑΙ ΚΑΙ ΠΩΣ ΜΠΟΡΟΥΜΕ ΝΑ ΒΟΗΘΗΣΟΥΜΕ ΓΙΑ ΝΑ ΕΡΘΟΥΝ

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Εφαρμογές στην κίνηση Brown

ΣΧΟΛΙΚΟ ΕΤΟΣ ΕΥΘΥΓΡΑΜΜΗ ΟΜΑΛΗ ΚΙΝΗΣΗ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ A ΛΥΚΕΙΟΥ. Ονοματεπώνυμο Τμήμα

Μονάδες α. Να γράψετε στο τετράδιό σας τον παρακάτω πίνακα σωστά συµπληρωµένο.

Κληρονομικότητα. Σήμερα! Κλάση Βάσης Παράγωγη κλάση Απλή κληρονομικότητα Protected δεδομένα Constructors & Destructors overloading

(2 ο ) Από τα προβλήματα του κόσμου, στου κόσμου τα προβλήματα

CSE.UOI : Μεταπτυχιακό Μάθημα

Οι Τρείς «Διαστάσεις» για το Σώμα (Eugene T. Gendlin)

ΜΑΘΗΜΑ: ΕΜΠΟΡΙΚΟ ΔΙΚΑΙΟ

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

Φροντιστήριο 2: Ανάλυση Αλγόριθμου. Νικόλας Νικολάου ΕΠΛ432: Κατανεμημένοι Αλγόριθμοι 1 / 10

ΚΛΑΔΟΣ: ΠΕ11 ΦΥΣΙΚΗΣ ΑΓΩΓΗΣ

Σχέσεις και ιδιότητές τους

Εστω X σύνολο και A μια σ-άλγεβρα στο X. Ονομάζουμε το ζεύγος (X, A) μετρήσιμο χώρο.

ΓΥΜΝΑΣΙΟ ΓΟΥΜΕΝΙΣΣΑΣ ΕΡΓΑΣΙΑ ΓΕΩΓΡΑΦΙΑΣ

17 Μαρτίου 2013, Βόλος

(14 ο,15 ο,16 ο ) ΟΡΘΟΤΗΤΑ ΕΝΟΣ ΑΛΓΟΡΙΘΜΟΥ: ΕΝΟΤΗΤΑ Ι ΙΙ ΙΙΙ

Ταξινόμηση των μοντέλων διασποράς ατμοσφαιρικών ρύπων βασισμένη σε μαθηματικά κριτήρια.

Το κράτος είναι φτιαγμένο για τον άνθρωπο και όχι ο άνθρωπος για το κράτος. A. Einstein Πηγή:

Ευρωπαϊκά παράγωγα Ευρωπαϊκά δικαιώματα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

Η εξίσωση Black-Scholes

Γενικό Λύκειο Μαραθοκάμπου Σάμου. Άλγεβρα Β λυκείου. 13 Οκτώβρη 2016

ΤΑΞΙΝΟΜΗΣΗ ΟΡΓΑΝΙΣΜΩΝ

Ημέρα 3 η. (α) Aπό την εργασιακή διαδικασία στη διαδικασία παραγωγής (β) Αξία του προϊόντος και αξία της εργασιακής δύναμης

Pointers. Σημερινό Μάθημα! Χρήση pointer Τελεστής * Τελεστής & Γενικοί δείκτες Ανάκληση Δέσμευση μνήμης new / delete Pointer σε αντικείμενο 2

(19 ο ) ΚΛΑΣΜΑΤΙΚΗ ΑΝΑΓΩΓΗ IΙΙ: «εντοπισμός σημείου σε τριγωνοποίηση»

23/2/07 Sleep out Πλατεία Κλαυθμώνος

Παραβολή ψ=αχ 2 +βχ+γ, α 0. Η παραβολή ψ = αχ 2. Γενικά : Κάθε συνάρτηση της μορφής ψ=αχ 2 + βχ +γ, α 0 λέγεται τετραγωνική συνάρτηση.

Βιωματική Απόκριση. (Άρθρο του Eugene Gendlin) ΚΑΝΟΝΕΣ ΓΙΑ ΑΠΟΚΡΙΣΕΙΣ. Βιωμένο νόημα

ΜΙΚΡΟΟΙΚΟΝΟΜΙΚΗ Η ΚΑΤΑΝΑΛΩΤΙΚΗ ΑΠΟΦΑΣΗ. Άσκηση με θέμα τη μεγιστοποίηση της χρησιμότητας του καταναλωτή

Ημέρα 4 η (α) Αγορά και πώληση της εργασιακής δύναμης. (β) Η απόλυτη υπεραξία. Αγορά και πώληση της εργασιακής δύναμης

Δ Ι Α Κ Ρ Ι Τ Α Μ Α Θ Η Μ Α Τ Ι Κ Α. 1η σειρά ασκήσεων

ΜΑΘΗΜΑ: ΠΟΛΙΤΙΚΗ ΟΙΚΟΝΟΜΙΑ-ΔΗΜΟΣΙΑ ΟΙΚΟΝΟΜΙΚΗ

G περιέχει τουλάχιστον μία ακμή στο S. spanning tree στο γράφημα G.

Μαθηματικά Πληροφορικής

ΘΕΩΡΙΑ ΣΥΝΟΛΩΝ: μια σύνοψη των θεμελιακών χαρακτηριστικών.

Ποια έντομα είναι εχθροί των φυτών και πώς θα τα αντιμετωπίσετε

Επιλέγοντας τις κατάλληλες γλάστρες

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Πρώτη Γραπτή Εργασία. Εισαγωγή στους υπολογιστές Μαθηματικά

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

ΜΑΘΗΜΑ: ΒΙΟΛΟΓΙΑ ΟΜΑΔΑ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ Γ ΛΥΚΕΙΟΥ

Συναρτήσεις. Σημερινό μάθημα

Επίλυση δικτύων διανομής

ΣΤΟ ΦΑΡΜΑΚΕΙΟ. Με την πιστοποίηση του έχει πρόσβαση στο περιβάλλον του φαρμακείου που παρέχει η εφαρμογή.

Projects για το εργαστήριο. των Βάσεων Δεδομένων

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Β ΤΑΞΗ. ΘΕΜΑ 1ο

Μητροπολιτικά Οπτικά Δίκτυα Εισαγωγή

ΑΣΕΠ 2000 ΑΣΕΠ 2000 Εμπορική Τράπεζα 1983 Υπουργείο Κοιν. Υπηρ. 1983

Αναγνώριση Προτύπων. Σημερινό Μάθημα

- 1 - Ποιοι κερδίζουν από το εμπόριο αγαθών και υπηρεσιών; Γιατί η άμεση ανταλλαγή αγαθών, ορισμένες φορές, είναι δύσκολο να

Κείµενο διδαγµένο Κείµενο από το πρωτότυπο

Ο Ισχυρός Νόμος των Μεγάλων Αριθμών

ΕΚΠΑ, ΠΡΟΓΡΑΜΜΑ ΝΑΥΤΙΛΟΣ

ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Β ΤΑΞΗ ΚΕΙΜΕΝΟ. Πέµπτη 19 Νοεµβρίου Αγαπητή Κίττυ,

Αναλυτικές ιδιότητες

τεσσάρων βάσεων δεδομένων που θα αντιστοιχούν στους συνδρομητές

ΕΙΣΑΓΩΓΗ. H λογική ασχολείται με δύο έννοιες, την αλήθεια και την απόδειξη. Oι έννοιες αυτές έχουν γίνει

Φόρμα Σχεδιασμού Διάλεξης (ημ/α: 17/03/08, έκδοση: 1.0)

Transcript:

(1 ο ) Γιατί «αλγόριθμοι» (υποχρεωτικά); Γιατί πρέπει να μελετήσουμε την περιοχή των «αλγορίθμων»; Ο φοιτητής και η φοιτήτρια που καλείται να παρακολουθήσει ένα μάθημα σαν το «αλγόριθμοι & πολυπλοκότητα» ίσως να παιδεύεται από το εξής ερώτημα: «γιατί πρέπει να πάρω οπωσδήποτε ένα τέτοιο μάθημα»; Διάφορα ερωτήματα σαν τα παρακάτω ίσως να του/της δημιουργούνται: α) Οι αλγόριθμοι είναι δουλειά ενός «αλγοριθμά». Τί σχέση έχει λ.χ. ένας προγραμματιστής με αυτούς; β) Χρειάζεται να σχεδιάζουμε αλγορίθμους; Δεν έχουμε αρκετούς ήδη έτοιμους; γ) Πρέπει όλοι εμείς να γινόμαστε «αλγοριθμάδες»; Δεν μπορούμε λ.χ. να έχουμε αλγοριθμομηχανές (μηχανές που κάνουν αλγορίθμους) όπως έχουμε εργαλειομηχανές (= μηχανές που φτιάχνουν εργαλεία); Ο καλύτερος τρόπος για να βρεί κάποιος απάντηση σε αυτά και άλλα συγγενή ερωτήματα είναι να παρακολουθήσει ένα μάθημα περί αλγορίθμων (και ίσως όχι μόνον ένα...). Αλλά για να τον βοηθήσουμε να οργανώσει τα κίνητρά του και την μελέτη του θα ήταν καλό να επισημάνουμε προκαταβολικά τα εξής: 1. Σε ένα μάλλον αρκετά υψηλό αφηρημένο επίπεδο αλγόριθμοι και προγράμματα ταυτίζονται, και έτσι όσο κεντρικό ρόλο παίζουν τα προγράμματα στην πληροφορική άλλο τόσο παίζουν και οι αλγόριθμοι. Κατά βάθος η «λογική δομή» τους συμπίπτει η μία με την άλλη. Προσέξτε επίσης ότι απλά και μόνον ο προγραμματισμός ενός δεδομένου αλγορίθμου (όχι η σχεδίασή του) απαιτεί καλή γνώση αυτού του αλγορίθμου. Αυτό συμβαίνει διότι οι αλγόριθμοι, στις περισσότερες περιπτώσεις, δεν περιγράφονται με κάθε αναγκαία λεπτομέρεια (εξ άλλου η απολύτως λεπτομερής περιγραφή ενός αλγορίθμου θα ισοδυναμούσε με τον προγραμματισμό του!) Για τον σωστό προγραμματισμό λοιπόν ενός αλγορίθμου θα πρέπει κάποιος να γνωρίζει το πώς «δουλεύει» ο αλγόριθμος ώστε να είναι σε θέση να συμπληρώνει όλες τις απαραίτητες υλοποιητικές λεπτομέρειες και προφανώς κατά τον ορθό τρόπο! Όπως θα διαπιστώσετε το να σχεδιάζετε σωστούς αλγορίθμους έστω και απλούς είναι μία από τις καλύτερες προπονήσεις προκειμένου να γράφετε σωστά προγράμματα. 2. Είναι αλήθεια ότι έχουμε ήδη σχεδιάσει μεγάλο πλήθος αλγορίθμων για μια μεγάλη ποικιλία και γενικών αλλά και εξειδικευμένων προβλημάτων. Οι «πληροφορικάριοι» θα πρέπει να γνωρίζουν πολλούς από αυτούς, θα πρέπει δηλαδή να κατέχουν ένα εκτενές ρεπερτόριο αλγορίθμων για μια μεγάλη ποικιλία βασικών προβλημάτων. Ακόμα και εάν κάποιος δεν γνωρίζει επακριβώς τον τρόπο της αλγοριθμικής λύσης μερικών βασικών προβλημάτων, θα πρέπει τουλάχιστον να γνωρίζει ότι αυτά έχουν ήδη λυθεί με έναν αλγόριθμο του Α ή Β βαθμού επάρκειας. 3. Οι αλγόριθμοι έρχονται για να λύσουν προβλήματα καταστάσεις δηλαδή όπου κάποια δεδομένα δίδονται και κάποια αποτελέσματα, εξαγώγιμα από αυτά, ζητούνται. Για κάθε πρόβλημα Q θα θέλαμε να μπορούμε να σχεδιάζουμε έναν (τουλάχιστον) αλγόριθμο ΑQ που να το επιλύει, να παραγάγει δηλαδή τα ζητούμενα από τα διδόμενα. Δυστυχώς κάτι τέτοιο είναι θεμελιακά ακατόρθωτο: δεν υπάρχει κανένας αλγόριθμος Μ ο οποίος δεδομένης της περιγραφής ενός προβλήματος Q να μας δίνει ως αποτέλεσμα Μ(Q) έναν αλγόριθμο γι αυτό το πρόβλημα, (δηλαδή Μ(Q) = ΑQ). Και αυτό το εννοούμε στο ακριβές: δεν υπάρχει όχι ότι δεν έχουμε βρεί κανένα μέχρι τώρα... Επομένως δεν μπορούμε να ελπίσουμε σε μηχανική βοήθεια για την επινόηση αλγορίθμων αυτό είναι ένα καθήκον που πέφτει και πάντοτε θα πέφτει στη δική μας ευθύνη! Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 20/3/20 1

Υπάρχουν όμως και τουλάχιστον τρείς πρόσθετοι και αξιοσημείωτοι λόγοι για τους οποίους ένας πληροφορικάριος θα πρέπει να έχει τα καλύτερα δυνατά αλγοριθμικά θεμέλια: 1. Στις πρακτικές εφαρμογές για τις οποίες θα χρειαστείτε αλγορίθμους, δεν πρόκειται πάντοτε να βρίσκετε έναν αλγόριθμο κομμένο ραμμένο ακριβώς στα μέτρα στις συγκεκριμμένες ανάγκες της εκάστοτε περίστασης. Συχνότατα θα πρέπει να τροποποιείτε τους (έστω ήδη) γνωστούς αλγορίθμους, και ανάλογα με τις περιστάσεις, άλλοτε να τους απλοποιείτε (αφαιρώντας περιττά στοιχεία) και άλλοτε να τους επεκτείνετε (συμπληρώνοντας όποιες πρόσθετες χρήσιμες ενέργειες). 2. Όταν προσπαθούμε να λύσουμε πρακτικά προβλήματα, θα πρέπει να είμαστε σε θέση να «προβλέπουμε» αν οι μαθηματικοί χειρισμοί μας οδηγούν σε εύκολα ή δύσκολα προβλήματα. Οι πληροφορικάριοι (ποιοί άλλοι δηλαδή;) θα πρέπει να έχουν ανεπτυγμένη μια διαίσθηση για τον εάν ένα αλγοριθμικό πρόβλημα που σχηματίζουν κατά νού είναι «ευεπίλυτο» ή «δυσεπίλυτο» (αν, βέβαια, αυτό το ερώτημα δεν είναι ήδη απαντημένο...). Και επειδή ο κόσμος των αλγορίθμων είναι γεμάτος με μικρές και μεγάλες εκπλήξεις, αυτή η διαίσθηση δεν μπορεί να καλλιεργηθεί παρά με την καλή μελέτη της περιοχής των αλγορίθμων. 3. Προβλήματα για τα οποία χρειαζόμαστε αλγοριθμικές λύσεις δεν προκύπτουν μόνο στις λεγόμενες «εφαρμογές» αλλά και κατά την θεωρητική ανάλυση ενός θέματος. Μόνον και μόνον για να κάνει κάποιος μια ανάλυση των ζητημάτων που προκύπτουν στην «θεωρία» λ.χ. των βάσεων δεδομένων, ή των δικτύων, ή των λειτουργικών συστημάτων, ή των γλωσσών προγραμματισμού, θα πρέπει να διαθέτει αλγοριθμικές γνώσεις, αλλά και, ακόμα περισσότερο, «αλγοριθμική σκέψη». Για όλους τους παραπάνω λόγους και πολλούς άλλους που θα διαπιστώσετε στη συνέχεια ήλθε η ώρα, σε αυτό το μάθημα, να ασχοληθείτε πια με τους αλγορίθμους όχι πρόχειρα ή περιστασιακά, αλλά συστηματικά και σε βάθος τουλάχιστον όσο επιτρέπει ένα μάθημα απλώς εισαγωγικό σε αυτήν την βαθειά και πολύπλοκη περιοχή που ανέτρεψε τα μαθηματικά και τεχνολογικά δεδομένα του 20 ου αιώνα. «Και πού είναι η δυσκολία;» μια πρώτη «διαγώνια» εικόνα. Τα δύο (από τα τρία) πιο αναφαίρετα χαρακτηριστικά ενός αλγορίθμου είναι ότι οι αλγόριθμοι παραλαμβάνουν κάποια δεδομένα και (μετά την εκτέλεση ενός «υπολογισμού» επ αυτών) παραδίδουν κάποια αποτελέσματα. Το σημαντικό σε αυτή την διαδικασία είναι ότι εάν έχουμε προδιαγράψει το ποιά θα ήσαν τα (ή κάποια) επιθυμητά αποτελέσματα, τότε οι αλγόριθμοι μετατρέπονται σε εργαλείο επίλυσης προβλημάτων και αυτό είναι το τρίτο χαρακτηριστικό των αλγορίθμων που μας κάνει να ενδιαφερόμαστε τόσο πολύ γι αυτούς: δεδομένου ενός προβλήματος θα θέλαμε να σχεδιάσουμε έναν αλγόριθμο που να επιλύει τούτο ή εκείνο το πρόβλημα. Καλώς αλλά που είναι η δυσκολία; Ας δούμε, γρήγορα, ένα απλό και πολύ χαρακτηριστικό παράδειγμα. Μιά από τις πιο γνωστές κατηγορίες προβλημάτων, κάποια που γνωρίζουμε από νωρίς, ήδη από τα σχολικά χρόνια, είναι η επίλυση αλγεβρικών εξισώσεων, και ιδιαίτερα εκείνη των δευτεροβάθμιων εξισώσεων: Πώς θα λύναμε λ.χ. την εξίσωση «x 2 16 = 0». Εύκολα θα την μεταγράφαμε ως «x 2 = 16» και θα δίναμε ως λύσεις τις δύο τετραγωνικές ρίζες του 16, το ±4 δηλαδή. Αν είχαμε την εξίσωση «x 2 5x = 0» τί θα κάναμε; Δεν θα ήταν δύσκολο να δούμε ότι αυτή γράφεται ως «x(x 5) = 0», οπότε οι λύσεις είναι «x=0» και «x=5». Αν όμως μας τύχαινε προς επίλυση η «x 2 2x + 1 = 0»; Εδώ θα χρειαζόμασταν λίγες γνώσεις και μια μικρή έμπνευση για να παρατηρήσουμε ότι έχει την μορφή (α β) 2 = α 2 2αβ + β 2 για x = α, και β = 1, οπότε γράφοντας αυτήν ως «(x 1) 2 = 0» θα απαντούσαμε με «x = 1». Για την μορφή της εξίσωσης «x 2 5x + 6 = 0» θα χρειαζόμασταν μια πιο σύνθετη έμπνευση: να θυμηθούμε και να αναγνωρίσουμε τον τύπο (x α)(x β) = x 2 (α+β)x + αβ, για α=2 και β=3. Γράφοντας την εξίσωση ως «(x 2)(x 3) = 0» θα δίναμε ως λύσεις τις «x=2» και «x=3». Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 20/3/20 2

Αλλά όλα αυτά θα ήσαν «περιστασιακά». Εάν μας προέκυπτε η εξίσωση «x 2 +x 1» (και αυτή, τουλάχιστον, κάποτε θα μας προέκυπτε: είναι η εξίσωση της χρυσής τομής...) τί θα κάναμε; Τί «ειδική δομή» θα μπορούσαμε να διαπιστώσουμε σε αυτήν; Αργά η γρήγορα θα διαπιστώναμε ότι αυτό που χρειαζόμαστε είναι μια γενική μέθοδο, μια σειρά προδιαγεγραμμένων ενεργειών (επί μιας δευτεροβάθμιας εξίσωςης «αx 2 + βx + γ = 0»), η οποία εγγυημένα θα μας οδηγεί πάντοτε στην εύρεση μια λύσης (ή στην διαπίστωση ότι μια τέτοια δεν υπάρχει). Αυτή σειρά των ενεργειών οδηγιών είναι γνωστή (και, εύλογα, μάλλον θα την θυμάστε από τα σχολικά χρόνια): Εάν (β 2 4αγ) < 0 η εξίσωση δεν έχει λύσεις (στο πεδίο των πραγματικών αριθμών), αλλιώς εάν α = 0 τότε αναγόμαστε σε μια απλή πρωτοβάθμια εξίσωση, (κτλ κτλ), αλλιώς οι λύσεις είναι x1, x2 = [ β ± (β 2 4αγ) 1/2 ] / 2α. Έχει ενδιαφέρον, και δεν είναι δύσκολο, να δείτε ότι όλες οι έξειδικευμένες προσπάθειες που κάναμε για να λύσουμε ειδικές περιπτώσεις της παραπάνω εξίσωσης δεν ήσαν τελικά παρά ειδικές περιπτώσεις της παραπάνω γενικής λύσης. Και εδώ έγκειται η ουσία και μία όψη της δυσκολίας των αλγορίθμων: αποκαλύπτουν την όποια ομοιομορφία υπάρχει πίσω από μια απειρία ειδικών περιπτώσεων του προβλήματος μας, και στηριζόμενοι σε αυτήν μας δίνουν έναν ομοιόμορφο τρόπο επίλυσης του προβλήματός μας. Μας δίδουν δηλαδή μια σειρά οδηγιών (ίσον: πρόγραμμα), η μορφή των οποίων είναι απολύτως και χρήσιμη (ίσον: αποτελεσματική), σε κάθε περίπτωση, ή «στιγμιότυπο» όπως λέγεται, του προβλήματός μας. Ας δούμε ένα πιο βαθύ παράδειγμα. Έστω ότι έχουμε ένα σύνολο τοποθεσιών οι οποίες συνδέονται μεταφορικά με συνδέσεις (λ.χ. οδικές, αεροπορικές ή ότι άλλο), και ότι εκάστη σύνδεση έχει ένα κόστος διάνυσης (λ.χ. κόστος για εισιτήριο, ή για καύσιμα και διόδια, ή ότι άλλο.) Δύο από τις τοποθεσίες είναι διακεκριμμένες ως αφετηρία (s) και ως προορισμός (t). Το ζητούμενο είναι ευρεθεί η οικονομικότερη διαδρομή από την αφετηρία στον προορισμό. Στην παρακάτω περίπτωση (Ι) ποιά θα ήταν η λύση; β s 30 4 α 8 7 5 t 4 10 35 6 Σχήμα 1.1: Περίπτωση (Ι). Κυττώντας το σχήμα ίσως να μην αργήσετε να υποψιαστείτε ότι η λύση είναι η διαδρομή δ: s α β t. Αλλά ποιό είναι το επιχείρημα; Μια ιδέα είναι να εξετάσετε όλες τις διαδρομές αρκεί βέβαια να συνοδεύσετε αυτή την εξέταση με ένα επιχείρημα ότι οι διαδρομές που εξετάσατε είναι όντως όλες, ότι δηλαδή δεν έτυχε να παραλείψετε ούτε μία. Στην συγκεκριμμένη περίπτωση όμως υπάρχει ένα πιο σύντομο και ιδιαίτερα σαφές επιχείρημα: από την μία πλευρά η διαδρομή δ έχει κόστος Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 20/3/20 3

25 και μας οδηγεί πράγματι στον προορισμό μας. Από την άλλη πλευρά, οποιοδήποτε άλλο βήμα από την αφετηρία (είτε αυτό μας οδηγεί στον προορισμό μας είτε όχι) στοιχίζει ήδη περισσότερο από 25 δεν έχουμε δηλαδή την ελπίδα για τίποτε καλύτερο από την διαδρομή δ... Σε μια άλλη περίπτωση όμως, λ.χ. στην επόμενη περίπτωση (ΙΙ), ποιά θα ήταν η λύση; Εδώ ίσως θα χρειαστείτε λίγο περισσότερη προσοχή για να παρατηρήσετε ότι κάποιες τοποθεσίες, όπως οι α και β, αποτελούν αναπόφευκτους ενδιάμεσους σταθμούς, και η οικονομικότερη διαδρομή από το s στο t πρέπει να αποτελείται από τις οικονομικότερες διαδρομές s α, α β, β γ, και γ t. Και αυτές είναι εύκολο να βρεθούν: Για κάθε μία από αυτές θα πρέπει να ακολουθήσουμε ή την «πάνω» ή την «κάτω» (στο σχήμα) διαδρομή, επιλογή που είναι πια τετριμμένη: 8 + 7 + 5 + 9 = 29. s 8 α 16 7 β t 11 5 9 9 γ Σχήμα 1.2: Περίπτωση (ΙΙ). Και τί θα κάνετε για μια άλλη περίπτωση; Λ.χ. τί θα κάνατε για μια περίπτωση με 200 ή με 10,000 τοποθεσίες; Τί ειδικά χαρακτηριστικά θα ήσασταν σε θέση να εντοπίσετε σε τόσο «μεγάλα» στιγμιότυπα; (Και τι θα έκανε ένα «μηχάνημα» που αντίθετα με εμάς, δεν είναι κάν σε θέση να «δεί» ένα σχήμα;) Χρειαζόμαστε εδώ μια μέθοδο που θα ήταν ορθή και αποτελεσματική σε κάθε περίπτωση που θα «γενίκευε» δηλαδή επιτυχώς όλες τις ειδικές τεχνικές που πιθανόν, περιστασιακά, να έχουν αποδειχθεί χρήσιμες. Στην περίπτωση των 2 ο βάθμιων εξισώσεων η ανακάλυψη της γενικής λύσης ήταν μάλλον εύκολη. Στην περίπτωση όμως των οικονομικότερων διαδρομών η σχεδίαση μιας γενικής ομοιόμορφης λύσης μοιάζει πολύ πιο μυστηριώδης. Από την παραπάνω όψη, η αναζήτηση ενός αλγορίθμου μοιάζει δύσκολη υπόθεση. Από μιά άλλη όψη όμως, ίσως να μοιάζει εύκολη: εάν αναζητούμε μια λύση στο πρόβλημά μας γιατί απλά να μην ψάξουμε μία προς μία όλες τις ενδεχόμενες λύσεις και να διαλέξουμε από αυτές εκείνη που θέλουμε; Εδώ αναφύεται η άλλη όψη της δυσκολίας των αλγορίθμων: Μήπως υπάρχουν απείρου πλήθους ενδεχόμενες λύσεις; Διότι τότε πώς θα τις εξετάζαμε «όλες»; (Σκεφθείτε λ.χ. το πρόβλημα των εξισώσεων οι κατ αρχήν ενδεχόμενες λύσεις είναι όσοι και οι αριθμοί, δηλαδή απείρου πλήθους.) Ακόμα και εάν οι ενδεχόμενες λύσεις είναι πεπερασμένου πλήθους ποιές είναι αυτές; Και μήπως αυτές είναι τόσο πολλές ώστε να μην είναι πρακτικό να τις εξετάσουμε μία προς μία; (Σκεφθείτε λ.χ. το πρόβλημα των διαδρομών σε ένα παράδειγμα με πολλές τοποθεσίες οι ενδεχόμενες διαδρομές από την αφετηρία στον τερματισμό θα μπορούσαν να είναι τεράστιου πλήθους.) Δεν θα αργήσουμε να δούμε (βλ. κεφάλαιο 3 ο 4 ο ) πως ούτε αυτή η ιδέα καθιστά την σχεδίαση των αλγορίθμων μια εύκολη υπόθεση. Αυτό λοιπόν θα είναι το «εννοιακό» πλαίσιο στο οποίο θα κινηθούμε: θα εξετάσουμε ένα πλήθος προβλημάτων Q και με αυτά ως παραδείγματα, θα δούμε μια σειρά από θεμελιακές τεχνικές για την σχεδίαση «καλών» όσο μπορούμε αλγορίθμων. Τέσσερα μέτωπα θα έχουμε διαρκώς ανοικτά: Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 20/3/20 4

Σχεδίαση: τί τεχνικές, έστω και περιστασιακώς χρήσιμες, έχουμε στη διάθεσή μας για την αλγοριθμική επίλυση προβλημάτων; Ανάλυση Ορθότητα: πώς μπορούμε να πείσουμε (τους άλλους, αλλά και εμάς τους ιδίους!) ότι ένας αλγόριθμος είναι ορθός, ότι δηλαδή επιλύει πάντοτε και σωστά, το πρόβλημα για το οποίο σχεδιάστηκε; Ανάλυση Επιδόσεις: πώς αξιολογούμε τούτον ή εκείνον τον αλγόριθμο; εκτός από σωστός είναι και «πρακτικός»; είναι ο τάδε αλγόριθμος γρήγορος ή βραδύς; δαπανά πολλή μνήμη ή λίγη; από δύο τυχόντες αλγορίθμους για το ίδιο πρόβλημα, ποιός είναι προτιμότερος; και «last but not least»: Έννοιολόγιο: Με ποιές έννοιες μπορούμε να διατυπώσουμε με αυστηρότητα τα αλγοριθμικά ζητήματα που μας ενδιαφέρουν, ώστε να τα καταστήσουμε αντικείμενα μια ακριβούς επιστημονικής μαθηματικής ανάλυσης; Ανακεφαλαίωση και τα επόμενα βήματα: Θέλουμε να λύνουμε προβλήματα με αλγοριθμικό τρόπο. Αυτό όχι μόνο μας προσφέρει μια βαθύτερη κατανόηση αυτών των προβλημάτων, αλλά μας επιτρέπει να αναθέσουμε την λύση τους σε μηχανές τους γνωστούς μας πια υπολογιστές. Δώσαμε εξαιρετικά συνοπτικά το πλαίσιο αυτής της εργασίας, μιας εργασίας όχι και τόσο εύκολης. Προτού συνεχίσουμε όμως, θα ήταν καλό να αφιερώσουμε ένα μάθημα για να εξηγήσουμε από που και πώς προέρχονται τα μυρίων ειδών προβλήματα που θα θέλαμε, και συχνά καταφέρνουμε, να λύνουμε «αλγοριθμικά» δείτε το επόμενο κεφάλαιο. Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 20/3/20 5