45
1 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ Σύνοψη Η προσπάθεια της επιστήμης να κωδικοποιήσει και να περιγράψει με μαθηματικά μοντέλα τα φυσικά, τα κοινωνικά και τα οικονομικά φαινόμενα στηρίχθηκε κύρια στις αιτιοκρατικές και τις πιθανοκρατικές περιγραφές. Με την εμφάνιση όμως των υπολογιστικών μηχανών, μια τρίτη προσέγγιση απασχόλησε τον επιστημονικό κόσμο. Πρόκειται για την ανάπτυξη των αλγόριθμων και την τυποποίηση σε επιστημονικό κλάδο της Αλγοριθμικής θεωρίας. Η σχεδίαση ενός αλγόριθμου μπορεί να γίνει με πολλούς τρόπους. Ένας όμως από αυτούς είναι «καλύτερος» από τους άλλους. Ο προσδιορισμός της έννοιας «καλύτερος αλγόριθμος», καθώς και ο προσδιορισμός της μεθοδολογίας που οδηγεί με ασφάλεια στη σχεδίαση του «καλύτερου» αλγόριθμου, αποτελούν αντικείμενο της Θεωρίας Αλγόριθμων. Στην εξέλιξη των αλγόριθμων πρωταρχική είναι η σημασία της αναδρομής. Μια στοιχειώδης διαδικασία έκφρασης μιας εξελισσόμενης φυσικής κατάστασης μπορεί να εκφραστεί μέσα από την αναδρομή και τις αναδρομικές σχέσεις. Οι σχέσεις αυτές αποτελούν μια εξαιρετικά απλή οργάνωση κανόνων που παράγουν σειρές αποτελεσμάτων. Στις σχετικές παραγράφους, αναπτύσσεται η μεθοδολογία και οι ιδιότητες των αναδρομικών σχέσεων με ιδιαίτερη αναφορά στις ακολουθίες Fibonacci και τις εφαρμογές τους. Ιδιαίτερη αναφορά γίνεται στην αλγεβρική δομή που αναφέρεται ως «άλγεβρα των αριθμών Fibonacci» και τη σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους κεφαλαίων της συγκεκριμένης άλγεβρας αριθμών και αναφέρεται περιληπτικά και όσο συντομότερα είναι δυνατόν η εμφάνιση των αριθμών Fibonacci στον περιβάλλοντα κόσμο. Μετά, ακολουθούν οι τεχνολογικές εφαρμογές της στην επιστήμη των ηλεκτρονικών υπολογιστών, στα ψηφιακά ηλεκτρονικά και τέλος στις έννοιες των τηλεπικοινωνιών και ιδιαίτερα στην επεξεργασία σημάτων. Η Θεωρία Αλγόριθμων είναι η περιοχή της Επιστήμης των Υπολογιστών που πραγματεύεται τον σχεδιασμό αποδοτικών αλγόριθμων για την επίλυση υπολογιστικών προβλημάτων. Κάθε αλγόριθμος πρέπει να αναλύεται μαθηματικά, ώστε να τεκμηριώνεται η ορθότητά του και να μετριέται ποσοτικά η απόδοσή του σε σχέση με διάφορα είδη υπολογιστικών πόρων, όπως είναι ο χρόνος και το μέγεθος της διαθέσιμης μνήμης. Η διαδικασία της ανάλυσης και τεκμηρίωσης που εισάγουν οι μέθοδοι της θεωρίας αυτής επιτρέπει την εξαγωγή συμπερασμάτων για την ορθότητα των αποτελεσμάτων του αλγόριθμου, καθώς και την εκ των προτέρων γνώση για την ποσότητα των υπολογιστικών πόρων που απαιτεί η εφαρμογή του αλγόριθμου σε συγκεκριμένες συνθήκες. Τα αποτελέσματα της ανάλυσης διαφορετικών αλγόριθμων για το ίδιο ή παρόμοια προβλήματα επιτρέπουν τη σύγκριση μεταξύ τους και την επιλογή του καταλληλότερου για συγκεκριμένες πρακτικές εφαρμογές. Η εξέλιξη των υπολογιστικών συστημάτων επέτρεψε την ανάπτυξη σύνθετων και εκτεταμένων αλγόριθμων. Η πολυπλοκότητα των σύγχρονων αλγόριθμων έδωσε νέα ώθηση στη Θεωρία των Αλγόριθμων και οδήγησε στην ανάπτυξη της Θεωρίας Υπολογιστικής Πολυπλοκότητας, που εστιάζει στη μελέτη διαφορετικών υπολογιστικών μοντέλων και στην επίδραση που αυτά έχουν στη δυνατότητα και την ποσότητα υπολογιστικών πόρων που χρειάζονται για την επίλυση ενός προβλήματος. Σε σχέση με τη θεωρία αλγόριθμων, η θεωρία υπολογιστικής πολυπλοκότητας παρέχει μια συμπληρωματική οπτική γωνία στην έννοια του υπολογισμού. Για κάθε υπολογιστικό μοντέλο, η Θεωρία Υπολογιστικής Πολυπλοκότητας μελετά αν ένα υπολογιστικό πρόβλημα μπορεί να επιλυθεί ή όχι. Αν το πρόβλημα μπορεί να επιλυθεί, η Θεωρία Πολυπλοκότητας μελετά την ελάχιστη ποσότητα υπολογιστικών πόρων που απαιτούνται για την επίλυση του προβλήματος στο συγκεκριμένο μοντέλο. Με βάση τις απαντήσεις στα παραπάνω ερωτήματα, τα υπολογιστικά προβλήματα εντάσσονται σε κλάσεις πολυπλοκότητας, οι οποίες αποτελούνται από προβλήματα που εμφανίζουν παρόμοια συμπεριφορά ως προς την επιλυσιμότητά τους σε κάποιο συγκεκριμένο υπολογιστικό μοντέλο. Η εξέλιξη τέλος της ίδιας της Θεωρίας Αλγόριθμων οδήγησε στην ανάπτυξη της Αλγοριθμικής Θεωρίας Παιγνίων. Στο κεφάλαιο αυτό δεν θα γίνει σχετική αναφορά, αλλά ο αναγνώστης μπορεί να αναζητήσει σχετικά κείμενα ώστε να κατατοπιστεί στο ειδικό αυτό θέμα. Η Αλγοριθμική Θεωρία Παιγνίων (Algorithmic Game Theory) αποτελεί ένα διεπιστημονικό πεδίο έρευνας στα όρια των περιοχών της Επιστήμης των Υπολογιστών (Computer Science) της Θεωρίας Παιγνίων (Game Theory) και της Θεωρίας Οικονομικών (Economic Theory). Τα τελευταία 10 χρόνια έχει γνωρίσει τεράστια ανάπτυξη, διότι κατανοεί την ουσία, περιγράφει ποσοτικά και

3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

1

3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ Σύνοψη Η προσπάθεια της επιστήμης να κωδικοποιήσει και να περιγράψει με μαθηματικά μοντέλα τα φυσικά, τα κοινωνικά και τα οικονομικά φαινόμενα στηρίχθηκε κύρια στις αιτιοκρατικές και τις πιθανοκρατικές περιγραφές. Με την εμφάνιση όμως των υπολογιστικών μηχανών, μια τρίτη προσέγγιση απασχόλησε τον επιστημονικό κόσμο. Πρόκειται για την ανάπτυξη των αλγόριθμων και την τυποποίηση σε επιστημονικό κλάδο της Αλγοριθμικής θεωρίας. Η σχεδίαση ενός αλγόριθμου μπορεί να γίνει με πολλούς τρόπους. Ένας όμως από αυτούς είναι «καλύτερος» από τους άλλους. Ο προσδιορισμός της έννοιας «καλύτερος αλγόριθμος», καθώς και ο προσδιορισμός της μεθοδολογίας που οδηγεί με ασφάλεια στη σχεδίαση του «καλύτερου» αλγόριθμου, αποτελούν αντικείμενο της Θεωρίας Αλγόριθμων. Στην εξέλιξη των αλγόριθμων πρωταρχική είναι η σημασία της αναδρομής.

Μια στοιχειώδης διαδικασία έκφρασης μιας εξελισσόμενης φυσικής κατάστασης μπορεί να εκφραστεί μέσα από την αναδρομή και τις αναδρομικές σχέσεις. Οι σχέσεις αυτές αποτελούν μια εξαιρετικά απλή οργάνωση κανόνων που παράγουν σειρές αποτελεσμάτων. Στις σχετικές παραγράφους, αναπτύσσεται η μεθοδολογία και οι ιδιότητες των αναδρομικών σχέσεων με ιδιαίτερη αναφορά στις ακολουθίες Fibonacci και τις εφαρμογές τους. Ιδιαίτερη αναφορά γίνεται στην αλγεβρική δομή που αναφέρεται ως «άλγεβρα των αριθμών Fibonacci» και τη σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους κεφαλαίων της συγκεκριμένης άλγεβρας αριθμών και αναφέρεται περιληπτικά και όσο συντομότερα είναι δυνατόν η εμφάνιση των αριθμών Fibonacci στον περιβάλλοντα κόσμο. Μετά, ακολουθούν οι τεχνολογικές εφαρμογές της στην επιστήμη των ηλεκτρονικών υπολογιστών, στα ψηφιακά ηλεκτρονικά και τέλος στις έννοιες των τηλεπικοινωνιών και ιδιαίτερα στην επεξεργασία σημάτων.

Η Θεωρία Αλγόριθμων είναι η περιοχή της Επιστήμης των Υπολογιστών που πραγματεύεται τον σχεδιασμό αποδοτικών αλγόριθμων για την επίλυση υπολογιστικών προβλημάτων. Κάθε αλγόριθμος πρέπει να αναλύεται μαθηματικά, ώστε να τεκμηριώνεται η ορθότητά του και να μετριέται ποσοτικά η απόδοσή του σε σχέση με διάφορα είδη υπολογιστικών πόρων, όπως είναι ο χρόνος και το μέγεθος της διαθέσιμης μνήμης. Η διαδικασία της ανάλυσης και τεκμηρίωσης που εισάγουν οι μέθοδοι της θεωρίας αυτής επιτρέπει την εξαγωγή συμπερασμάτων για την ορθότητα των αποτελεσμάτων του αλγόριθμου, καθώς και την εκ των προτέρων γνώση για την ποσότητα των υπολογιστικών πόρων που απαιτεί η εφαρμογή του αλγόριθμου σε συγκεκριμένες συνθήκες. Τα αποτελέσματα της ανάλυσης διαφορετικών αλγόριθμων για το ίδιο ή παρόμοια προβλήματα επιτρέπουν τη σύγκριση μεταξύ τους και την επιλογή του καταλληλότερου για συγκεκριμένες πρακτικές εφαρμογές.

Η εξέλιξη των υπολογιστικών συστημάτων επέτρεψε την ανάπτυξη σύνθετων και εκτεταμένων αλγόριθμων. Η πολυπλοκότητα των σύγχρονων αλγόριθμων έδωσε νέα ώθηση στη Θεωρία των Αλγόριθμων και οδήγησε στην ανάπτυξη της Θεωρίας Υπολογιστικής Πολυπλοκότητας, που εστιάζει στη μελέτη διαφορετικών υπολογιστικών μοντέλων και στην επίδραση που αυτά έχουν στη δυνατότητα και την ποσότητα υπολογιστικών πόρων που χρειάζονται για την επίλυση ενός προβλήματος. Σε σχέση με τη θεωρία αλγόριθμων, η θεωρία υπολογιστικής πολυπλοκότητας παρέχει μια συμπληρωματική οπτική γωνία στην έννοια του υπολογισμού. Για κάθε υπολογιστικό μοντέλο, η Θεωρία Υπολογιστικής Πολυπλοκότητας μελετά αν ένα υπολογιστικό πρόβλημα μπορεί να επιλυθεί ή όχι. Αν το πρόβλημα μπορεί να επιλυθεί, η Θεωρία Πολυπλοκότητας μελετά την ελάχιστη ποσότητα υπολογιστικών πόρων που απαιτούνται για την επίλυση του προβλήματος στο συγκεκριμένο μοντέλο. Με βάση τις απαντήσεις στα παραπάνω ερωτήματα, τα υπολογιστικά προβλήματα εντάσσονται σε κλάσεις πολυπλοκότητας, οι οποίες αποτελούνται από προβλήματα που εμφανίζουν παρόμοια συμπεριφορά ως προς την επιλυσιμότητά τους σε κάποιο συγκεκριμένο υπολογιστικό μοντέλο.

Η εξέλιξη τέλος της ίδιας της Θεωρίας Αλγόριθμων οδήγησε στην ανάπτυξη της Αλγοριθμικής Θεωρίας Παιγνίων. Στο κεφάλαιο αυτό δεν θα γίνει σχετική αναφορά, αλλά ο αναγνώστης μπορεί να αναζητήσει σχετικά κείμενα ώστε να κατατοπιστεί στο ειδικό αυτό θέμα. Η Αλγοριθμική Θεωρία Παιγνίων (Algorithmic Game Theory) αποτελεί ένα διεπιστημονικό πεδίο έρευνας στα όρια των περιοχών της Επιστήμης των Υπολογιστών (Computer Science) της Θεωρίας Παιγνίων (Game Theory) και της Θεωρίας Οικονομικών (Economic Theory). Τα τελευταία 10 χρόνια έχει γνωρίσει τεράστια ανάπτυξη, διότι κατανοεί την ουσία, περιγράφει ποσοτικά και

Page 2: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

2

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

Προαπαιτούμενη Γνώση Aκολουθίες και σειρές.

3.1. Αναδρομή Η πλέον απλή διαδικασία υπολογισμού του πλήθους ενός κλασικού συνόλου είναι η μέτρηση των στοιχείων του. Αν όμως τα στοιχεία του συνόλου αυτού ταξινομούνται σε μια ακολουθία υποσυνόλων, τότε η μέτρηση των στοιχείων αυτών (των υποσυνόλων) είναι αδύνατη. Εξαίρεση αποτελούν τα υποσύνολα των οποίων το πλήθος των στοιχείων τους προκύπτει με κάποια σχέση των στοιχείων των αμέσως προηγούμενων συνόλων. Η σχέση αυτή, όταν υπάρχει, καλείται αναδρομή. Η Αναδρομή θεωρία προέρχεται από τη δεκαετία του 1930, με το έργο των Gödel, Church , Turing και Kleene, καθώς επίσης και τη συνεισφορά του Emil Post (1944). Ένας δόκιμος ορισμός της έννοιας αυτής είναι ο ακόλουθος: Ορισμός 3.1.1 Αναδρομή είναι η διαδικασία δημιουργίας μια ιεραρχημένης κλάσης συνόλων, κάθε ένα από τα οποία δημιουργείται χάρη σε μια σχέση των προηγούμενων αυτού συνόλων.

Εκτός από σύνολα, η αναδρομή μπορεί να προσδιορίζει και κανόνες για τη διάσπαση πολύπλοκων περιπτώσεων σε απλούστερες. Παραδείγματα αναδρομής, είναι γνωστά στον αναγνώστη. Αναφέρουμε το χαρακτηριστικό παράδειγμα υπολογισμού του παραγοντικού ακέραιου αριθμού n, που συμβολίζεται με n!. Παράδειγμα 3.1.1 Το παραγοντικό του αριθμού n ορίζεται ως n!=1×2×…×n, η διαφορετικά με την αναδρομική σχέση:

( ) άαν

διαϕορετικ

== × −

1 −!

1 !

κκ

κ κ.

Παρατηρούμε ότι στην αναδρομική σχέση ο ορισμός του n! γίνεται με χρήση του προηγούμενου (n-1)! Αυτό σημαίνει ότι το πλέον σύνθετο πρόβλημα αναλύεται σε ένα απλούστερο, και αυτό με τη σειρά του σε άλλο ακόμη πιο απλό. Στον προγραμματισμό με C, γράφουμε τον κώδικα:

int Factorial(int n) { if (n == 0) return 1; return (n * Factorial(n-1)); } Πολυπλοκότερα προβλήματα από αυτό του Παραδείγματος 3.1.1 μπορούν να λυθούν με τη βοήθεια

της αναδρομής. Ένα τέτοιο πρόβλημα είναι και ο υπολογισμός των κινήσεων που απαιτούνται για τη μεταφορά του πύργου του Ανόι. Από τις απλούστερες προγραμματιστικές εφαρμογές της αναδρομής, έως τις πλέον σύνθετες, η βασική αναδρομική σχέση καλεί τον εαυτό της έως ότου τερματίσει. Η σύνθεση των λύσεων του αναδρομικού τύπου σε κάθε επανάληψη είναι το τελικό αποτέλεσμα. Για να αντιμετωπιστεί ο κίνδυνος της ατέρμονης επανάληψης, θα πρέπει να προβλεφτεί η συνθήκη τερματισμού. Διαφορετικά, η μηχανή θα δώσει ένδειξη «overflow». Η ένδειξη αυτή σημαίνει ότι καταγράφηκε υπερχείλιση του διαθέσιμου

Page 3: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

3

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

Στη μαθηματική επιστήμη η αποδεικτική μέθοδος της επαγωγής στηρίζεται στην έννοια της αναδρομής. Επίσης, στις γεωμετρίες κλασματικής διάστασης, η αναδρομή συναντάται ως επανάληψη των δομών καθώς η κλίμακα αναπαράστασης αλλάζει.

Σχήμα 3.1.1 Η εξέλιξη του τριγώνου Sierpinski καθώς η δομή αποτυπώνεται στα τρίγωνα εντός των τριγώνων. Διακρίνονται νέες πανομοιότυπες δομές εντός των προηγοιύμενων. Η αναδρομή αποτελεί μια από τις κλασικές διαδικασίες που χρησιμοποιούν οι αλγόριθμοι. Κάθε αλγόριθμος είναι μια λίστα με σαφώς καθορισμένες οδηγίες για την ολοκλήρωση μιας εργασίας. Ξεκινώντας από την αρχική κατάσταση, οι οδηγίες που περιγράφουν έναν υπολογισμό, ο οποίος εξελίσσεται μέσα από μια καλώς ορισμένη ακολουθία διαδοχικών προτάσεων (που εκφράζουν λογικές και εκτελέσιμες λειτουργίες), τελικά καταλήγουν σε μια τελική κατάσταση. Η μετάβαση από μια πρόταση (λογική εντολή) στην επόμενη δεν είναι κατ’ ανάγκη αιτιοκρατούμενη. Ορισμένες αλγόριθμοι, που είναι γνωστοί ως τυχαιοποιημένοι αλγόριθμοι, ενσωματώνουν την έννοια της τυχαιότητας στην επιλογή της διαδοχής των προτάσεων.

Μια μερική τυποποίηση της έννοιας ξεκίνησε με τις προσπάθειες για την επίλυση του Entscheidungsproblem (το «πρόβλημα της απόφασης») που έθεσε ο David Hilbert το 1928. Μεταγενέστερες μορφοποιήσεις της έννοιας του αλγόριθμου διαμορφώθηκαν ως απόπειρες να οριστεί η «αποτελεσματική υπολογισιμότητα» ή η «αποτελεσματική μέθοδος». Οι μορφοποιήσεις αυτές περιλαμβάνονται στις αναδρομικές συναρτήσεις των Gödel-Herbrand-Kleene του 1930, 1934 και 1935, λογισμός λάμδα του Alonzo Church του 1936, και του Emil Post στη «Μορφοποίηση 1» του 1936. Τέλος και ο Alan Turing στις «Μηχανές Turing» του 1936-7 και 1939 έδωσε έναν βελτιωμένο φορμαλισμό της πολυσυζητημένης έννοιας του Αλγόριθμου.

Ένα πρωτότυπο παράδειγμα αλγόριθμου είναι ο αλγόριθμος του Ευκλείδη για τον υπολογισμό του μέγιστου κοινού διαιρέτη δύο ακεραίων (Χ και Υ), η οποίοι είναι μεγαλύτεροι από 1.

Ο αλγόριθμος ακολουθεί μια σειρά από βήματα, που παρουσιάζονται με την αναλυτική του περιγραφή.

Στο i βήμα, διαιρούμε Χ δια Υ (Χ είναι μεγαλύτερος του Υ) για να προκύψει το υπόλοιπο, το οποίο ονομάζουμε R1.

Στη συνέχεια θα προχωρήσουμε στο (i+1) βήμα, όπου θα διαιρέσουμε Υ δια του R1 για να βρούμε το υπόλοιπο, το οποίο ονομάζουμε R2. Αν R2=0, σταματάμε και καταλήγουμε ότι R1 είναι μέγιστος κοινός διαιρέτη των Χ και Υ.

Αν δεν είναι, θα συνεχίσουμε, μέχρι Rn=0. Στη συνέχεια, R(n-1) είναι το μέγιστο κοινό τμήμα των Χ και Υ. Η διαδικασία αυτή περατώνεται μετά από πεπερασμένο πλήθος επαναλήψεων, των οποίων ο αριθμός

των διαδοχικών διαιρέσεων που απαιτούνται είναι πάντα μικρότερος από τον μεγαλύτερο εκ των δύο αριθμών.

Κάθε στοιχείο μιας ακολουθίας αριθμών προκύπτει με δυο τρόπους. Ένας εξ αυτών στηρίζεται σε μια συνάρτηση της μεταβλητής n , με πεδίο ορισμού τους φυσικούς αριθμούς, όπως φαίνεται στο Παράδειγμα 3.1.1. Ο δεύτερος κάνει χρήση ενός ή περισσότερων προηγούμενων στοιχείων της ακολουθίας που χρησιμοποιούνται με μια συγκεκριμένη και αναλλοίωτη διαδικασία. Συνήθως, η διαδικασία αυτή συγκροτείται από αριθμητικές πράξεις που διαμορφώνουν τον αναδρομικό τύπο της ακολουθίας (Παράδειγμα 3.1.2). Παράδειγμα 3.1.2

Η ακολουθία {αn}, οι όροι της οποίας ικανοποιούν τη σχέση αn=1/n, έχει τους έξη πρώτους όρους αυτής, 1=1/21/31/41/51/6,…

Η αναδρομικότητα είναι η διαδικασία δημιουργίας των όρων μιας ακολουθίας με συγκεκριμένο τρόπο χρήσης πεπερασμένου πλήθους των αμέσως προηγούμενων όρων αυτής. Για παράδειγμα, κάθε όρος

Page 4: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

4

της ακολουθίας Fibonacci δημιουργείται όταν δυο διαδοχικοί όροι της προστίθενται για να δημιουργήσουν τον επόμενο. Αυτό συνοψίζεται στον αναδρομικό τύπο α(n+2)=α(n+1)+αn. Παράδειγμα 3.1.3 Η ακολουθία {βn}, οι όροι της οποίας δίνονται με τον αναδρομικό τύπο βn+2=βn+1-βn/βn-1. με αρχικές τιμές 2, 4, 6 διαμορφώνουν την ακολουθία της οποίας οι επτά πρώτοι όροι είναι 2,6,10,2,4/31/31/2,…

Κάθε διαφοροποίηση των αρχικών τιμών μιας ακολουθίας, που ορίζεται με αναδρομικό τύπο, παράγει μια διαφορετική ακολουθία αριθμών. Έτσι ο αναδρομικό τύπος στο Παράδειγμα 3.1.2 οδηγεί σε μια άλλη ακολουθία, όπως φαίνεται στο επόμενο Παράδειγμα 3.1.3. Παράδειγμα 3.1.4 Η ακολουθία {βn}, οι όροι της οποίας δίνονται με τον αναδρομικό τύπο του Παραδείγματος 3.1.2, αλλά με αρχικές τιμές 2, 8, 16, έχει τους εξής επτά πρώτους όρους, 2,8,16,4,-6,-5,1/2,...

Είναι γνωστό από τη θεωρία συνόλων, ότι ένα σύνολο με άπειρο πλήθος στοιχείων καλείται αριθμήσιμο εάν υπάρχει μια αμφιμονοσήμαντη αντιστοιχία των στοιχείων του με τους φυσικούς αριθμούς. Αυτό σημαίνει ότι σε κάθε στοιχείο του συνόλου μπορούμε να τοποθετήσουμε έναν φυσικό αριθμό. Κανένα από τα στοιχεία του συνόλου δεν θα λάβει τον ίδιο αριθμό με την αντιστοίχιση. Στη Θεωρία Υπολογισιμότητας, που ονομάζεται και Θεωρία Αναδρομικότητας, ένα σύνολο φυσικών αριθμών Ω καλείται αναδρομικά αριθμήσιμο, αν υπάρχει κατάλληλος αλγόριθμος, ο οποίος απαριθμεί τα στοιχεία του συνόλου. Ένα τέτοιο σύνολο καλείται και «Αναγνωρίσιμο κατά Turing».

Κάθε αναδρομικό σύνολο είναι αναδρομικά αριθμήσιμο. 3.2. Ιδιότητες Αναδρομικών Συνόλων Ένα αναδρομικό σύνολο αριθμών που αποτελείται από τα στοιχεία μια ακολουθίας, που ορίζεται με μια αναδρομική σχέση, είναι δυνατό να συγκλίνει ή να αποκλίνει ή τέλος να παρουσιάζει μια περιοδικότητα. Η τελευταία ιδιότητα σημαίνει ότι υπάρχει ένα πεπερασμένο υποσύνολο αριθμών το οποίο επαναλαμβάνεται αδιάλειπτα. Το υποσύνολο αυτό καλείται και «σύνολο ισορροπίας» (equilibrium) του αναδρομικού συνόλου. Στη μη γραμμική δυναμική, εμφανίζονται αναδρομικά συστήματα αριθμών των οποίων τα στοιχεία δεν είναι επαναλήψεις των στοιχείων του συνόλου ισορροπίας, αλλά απέχουν από αυτά μεταβαλλόμενες αποστάσεις, που αυξομειώνονται με απρόβλεπτο τρόπο. Σε αυτές τις περιπτώσεις το σύνολο των σημείων από τα οποία απομακρύνονται για να πλησιάσουν αργότερα τα σημεία του αναδρομικού συνόλου, καλούνται «παράξενοι ελκυστές» (strange atractors).

Ένα σύνολο φυσικών αριθμών καλείται αναδρομικό (recursive) ή υπολογίσιμο (computable) αν κάθε στοιχείο του προκύπτει από έναν αλγόριθμο που λειτουργεί σε πεπερασμένο χρόνο. Ο ίδιος αλγόριθμος θα πρέπει να δικρίνει και τα στοιχεία που δεν ανήκουν στο δοσμένο σύνολο. Ένα σύνολο που δεν είναι υπολογίσιμο λέγεται «μη υπολογίσιμο» (non-computable) ή «μη αποφασίσιμο» (undecidable). Ο τελευταίος όρος χρησιμοποιείται κυρίως στη θεωρία αποφάσεων. Μια γενικότερη κατηγορία συνόλων αποτελείται από τα αναδρομικά αριθμήσιμα σύνολα. Για τα σύνολα αυτά, απαιτείται μόνο να υπάρχει αλγόριθμος που αποκρίνεται σωστά όταν ένας αριθμός ανήκει στο σύνολο. Ο αλγόριθμος μπορεί να μην απαντήσει ποτέ για αριθμούς που δεν είναι στο σύνολο, αλλά αν δώσει απάντηση δεν θα είναι ποτέ λάθος. Ο Kleene διατύπωσε δυο θέσεις σχετικά με την υπολογισιμότητα. Η κάθε μία συνδέθηκε με τις απόψεις περί υπολογίσιμων συνόλων του Turing και το Church, αλλά σήμερα συνοψίζονται σε μια ενιαία πρόταση, την περίφημη «Θέση Church-Turing» σύμφωνα με την οποία, κάθε λειτουργία που είναι υπολογίσιμη από τον αλγόριθμο, είναι μια υπολογίσιμη συνάρτηση. Καθώς ένας αλγόριθμος αποτελείται, όπως είδαμε, από επί μέρους μικρότερα τμήματα, καθένα από τα οποία λύνει ένα μικρότερο πρόβλημα, η θέση των Church-Turing δημιουργεί υπολογίσιμα σύνολα που περιέχουν τιμές των υπολογίσιμων συναρτήσεων. Αυτά τα σύνολα, εφοδιασμένα με κατάλληλες πράξεις και τις ιδιότητές τους, θέτουν τις βάσεις της θεωρίας αλγόριθμων. Φυσικά, μετά από όσα αναφέρθηκαν, μπορούμε να θεωρήσουμε ως βάση της υπολογισιμότητας την αναδρομικότητα, αφού αυτή παράγει αποτελέσματα για τα πλέον στοιχειώδη προβλήματα. Έτσι, ένα υπολογίσιμο σύνολο θα μπορούσε να είναι το σύνολο των τιμών μιας αναδρομικής σχέσης.

Page 5: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

5

Ορισμός 3.2.1 Ένα υποσύνολο S των φυσικών αριθμών λέγεται αναδρομικό αν υπάρχει μια ολικά υπολογίσιμη

συνάρτηση 𝑓 τέτοια ώστε: ( ) αναν

∈= ∉

1

x Sx

x S .

Για τα αναδρομικά σύνολα είναι γνωστό ότι ισχύουν οι ακόλουθες προτάσεις. Οι προτάσεις παρατίθενται χωρίς απόδειξη. Πρόταση 3.2.1 Ισχύει ότι αν το A είναι αναδρομικό σύνολο τότε το συμπλήρωμα του A είναι αναδρομικό σύνολο.

Πρόταση 3.2.2 Αν A και B είναι αναδρομικά σύνολα τότε τα σύνολα A∩B, A∪B και το A×B υπό την συνάρτηση ζεύγους του Cantor, είναι επίσης αναδρομικά σύνολα.

Πρόταση 3.2.3 Ένα σύνολο A είναι αναδρομικό αν και μόνο αν το A και το συμπλήρωμά του είναι και τα δύο αναδρομικά αριθμήσιμα.

Πρόταση 3.2.4 Η προεικόνα ενός αναδρομικού συνόλου υπό μια ολικά υπολογίσιμη συνάρτηση είναι αναδρομικό σύνολο.

Πρόταση 3.2.5 Η εικόνα ενός υπολογίσιμου συνόλου μέσω μιας ολικά υπολογίσιμης συνάρτησης είναι υπολογίσιμη.

Πρόταση 3.2.6 Ένα σύνολο είναι αναδρομικό αν και μόνο αν ανήκει στο επίπεδο Δ1

0 της αριθμητικής ιεραρχίας (https://en.wikipedia.org/wiki/Arithmetical_hierarchy).

Πρόταση 3.2.7 Ένα σύνολο είναι αναδρομικό αν και μόνο αν είναι είτε το πεδίο τιμών μιας ασθενώς αύξουσας ολικά υπολογίσιμης συνάρτησης ή το κενό σύνολο.

Πρόταση 3.2.8 Η εικόνα ενός υπολογίσιμου συνόλου, μέσω μιας ασθενώς αύξουσας ολικής υπολογίσιμης συνάρτησης, είναι υπολογίσιμη.

Θεώρημα 3.2.1 (Rice). Κάθε μη τετριμμένη ιδιότητα γλώσσας αναγνωρίσιμης από μια μηχανή Turing δεν είναι αναδρομική.

Σημειώνεται ότι μια ιδιότητα καλείται «μη τετριμμένη», αν υπάρχει τουλάχιστον μία μηχανή Turing που έχει την ιδιότητα και συγχρόνως μία τουλάχιστον άλλη μηχανή που δεν την έχει. Έτσι, η σημασία του Θεωρήματος 3.2.1 γίνεται αντιληπτή αν σκεφτούμε μια ιδιότητα γλώσσας που επιθυμούμε να εξετάσουμε. Έστω εξετάζεται η ιδιότητα της κανονικότητας. Ορίζουμε ως C το σύνολο όλων των γλωσσών που έχουν την ιδιότητα της κανονικότητας. Έστω LC το σύνολο των μηχανών Turing που αναγνωρίζουν γλώσσες που έχουν τη συγκεκριμένη ιδιότητα. Το θεώρημα του Rice λέει ότι, αν υποτεθεί ότι κάθε μηχανή Turing αναγνωρίζει μια γλώσσα με τη συγκεκριμένη ιδιότητα, και επιπλέον αν υποθέσουμε ότι καμία μηχανή Turing δεν αναγνωρίζει γλώσσες με την συγκεκριμένη ιδιότητα, τότε το LC δεν είναι αναδρομικό. Ας σημειωθεί στο σημείο αυτό ότι και οι δυο υποθέσεις του παραδείγματος είναι εσφαλμένες. Ορισμός 3.2.2 Αναδρομική ακολουθία τάξης k καλείται μια ακολουθία της οποίας ο κάθε όρος με δείκτη μεγαλύτερο ή ίσος του k, δημιουργείται με αναδρομικό τύπο στον οποίο περιλαμβάνονται όλοι οι k-1 όροι.

Page 6: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

6

Τα κριτήρια σύγκλισης των αναδρομικών ακολουθιών είναι τα γενικά κριτήρια σύγκλισης των ακολουθιών, όπως το κριτήριο Cauchy ή το κριτήριο d’Alembert. Επιπλέον όμως είναι δυνατό να εξαχθούν συμπεράσματα και από τον αναδρομικό τύπο. Παραθέτουμε τρεις χαρακτηριστικές περιπτώσεις εντοπισμού του αναγωγικού τύπου. Στο Παράδειγμα 3.2.1 εξετάζεται η περίπτωση της γραμμικής μορφής του γενικού όρου, ενώ στο Παράδειγμα 3.2.2 και στο Παράδειγμα 3.2.3 εξετάζονται οι περιπτώσεις όπου ο γενικός όρος της ακολουθίας έχει τη μορφή αn=cxn+d και αn=c/n. Παράδειγμα 3.2.1 Αν ο γενικός όρος της ακολουθίας είναι ο αn=cn+d, ο επόμενος όρος αυτής, θα είναι ο α(n+1)=c(n+1)+d=αn+c. Έτσι, ο αναγωγικός τύπος θα έχει τη μορφή α(n+1)=αn+c∀n∈n-{0}. Ο πρώτος όρος της ακολουθίας θα είναι α1=c+d. Παράδειγμα 3.2.2 Αν ο γενικός όρος της ακολουθίας είναι ο αn=cdn+M, ό επόμενος όρος αυτής, θα είναι ο α(n+1)=cd(n+1)+M=d(cdn+M)-dM+M=dαn+M(1-d). Έτσι, ο αναγωγικός τύπος θα έχει τη μορφή α(n+1)=dαn+M(1-d)∀n∈ℕ-{0}. Ο πρώτος όρος της ακολουθίας θα είναι α1=cd+M. Παράδειγμα 3.2.3 Αν ο γενικός όρος της ακολουθίας είναι ο αn=1/n, τότε με κατάλληλες πράξεις ο επόμενος όρος θα είναι αn+1=1/(n+1)=1/n×n/(n+1)=1/n×(1-1/(n+1))=αn(1-αn+1)⇒αn+1=αn/(1+αn),α1=1 Παράδειγμα 3.2.4 Ο πύργος του Ανόι είναι ένα κλασικό παράδειγμα αναδρομικά αριθμήσιμου συνόλου κινήσεων για τη μεταφορά των δίσκων του πύργου. Ο πύργος αποτελείται από ένα αριθμό δίσκων, κάθε ένας από τους οποίους έχει ακτίνα διαφορετική από τους υπόλοιπους. Οι δίσκοι είναι τοποθετημένοι σε μια περόνη χάρη σε μια οπή που βρίσκεται στο κέντρο τους. Συνθήκη για την τοποθέτηση των δίσκων είναι να μη βρίσκεται ποτέ δίσκος μικρότερης ακτίνας κάτω από δίσκο μεγαλύτερης ακτίνας.

Σχήμα 3.2.1 Ο πύργος του Ανόι: Στη διαδικασία μεταφοράς του πύργου σε έναν διαθέσιμο στύλο, δεν θα πρέπει να βρεθεί δίσκος μεγαλύτερης ακτίνας επάνω από δίσκο μικρότερης ακτίνας. Παράδειγμα 3.2.5 Ακολουθία FIBOnACCI και η Χρυσή Τομή. Με το παράδειγμα αυτό θα επιχειρηθεί να παρουσιαστεί μια εφαρμογή των ακολουθιών Fibonacci στη διαχείριση ηλεκτρικής ενέργειας και στις τηλεπικοινωνίες. Η εργασία εκπονήθηκε στο πλαίσιο του μαθήματος το 2004 από τον φοιτητή κ. Σάββα Γιαγλυτικό, υπό την εποπτεία του καθηγητή Δ.Α. Γεωργίου. Ο Leonardo Fibonacci, στο βιβλίο του Liber Abaci, έθεσε ένα πρόβλημα με μία ιστορία που συνοψίζεται παρακάτω. Υποθέτουμε ότι την πρώτη μέρα του Γενάρη υπάρχει σε κάποιο κλειστό μέρος ένα ζευγάρι κουνέλια, το ζευγάρι αυτό παράγει ένα ζευγάρι κουνέλια την πρώτη μέρα του Φλεβάρη, καθώς και ένα κάθε

Page 7: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

7

πρώτη του μήνα που ακολουθεί, κάθε νέο ζευγάρι ωριμάζει σε ένα μήνα και μετά παράγει ένα νέο ζευγάρι την πρώτη μέρα κάθε μήνα που ακολουθεί. Το πρόβλημα είναι να βρεθεί πόσα ζευγάρια κουνελιών θα βρίσκονται στο μέρος αυτό την πρώτη μέρα του ερχόμενου Γενάρη μετά τη γέννηση της μέρας εκείνης. Στο διάγραμμα συμβολίζουμε κάθε ενήλικο ζευγάρι με Α και κάθε ανήλικο ζευγάρι με Β.

Ημερομηνία Ζευγάρια Πλήθος Α ζευγών Πλήθος Β ζευγών 1η Μαρτίου ΑΒΑ 2 1 1η Απριλίου ΑΒΑΑΒ 3 2 1η Μαϊου ΑΒΑΑΒΑΒΑ 5 3 1η Ιουνίου ΑΒΑΑΒΑΒΑΑΒΑΑΒ 8 5

Οπότε ο πίνακας για όλο το έτος γενικεύεται σε:

Ημερομηνία Πλήθος Α ζευγών Πλήθος Β ζευγών Ολικό πλήθος ζευγών 1η Ιανουαρίου 1 0 1 1η Φεβρουαρίου 1 1 2 1η Μαρτίου 2 1 3 1η Απριλίου 3 2 5 1η Μαϊου 5 3 8 1η Ιουνίου 8 5 13 1η Ιουλίου 13 8 21 1η Αυγούστου 21 13 34 1η Σεπτεμβρίου 34 21 55 1η Οκτωβρίου 55 34 89 1η Νοεμβρίου 89 55 144 1η Δεκεμβρίου 144 89 233 1η Ιανουαρίου 233 144 377

Έτσι βλέπουμε με τις συνθήκες του προβλήματος το πλήθος των ζευγών των κουνελιών θα είναι σε ένα έτος 377. Γενικά ένα σύνολο αριθμών σε σειρά όπως αυτά του παραπάνω πίνακα ονομάζεται ακολουθία. Μία ακολουθία μπορεί να έχει άπειρο πλήθος όρων ή πεπερασμένο. Ένα παράδειγμα ακολουθίας είναι η αριθμητική πρόοδος. Η ακολουθία 1,1,2,3,5,8,13,…, λέγεται ακολουθία Fibonacci και οι όροι της αριθμοί Fibonacci.

Θα εξετάσουμε τη συνέχεια τη σχέση της ακολουθίας Fibonacci με την αναλογία των αριθμών, που είναι γνωστή ως χρυσή τομή. Μας δίνεται το ευθύγραμμο τμήμα ΑΒ και ζητάμε να βρούμε το σημείο Γ (ανάμεσα στα Α & Β) τέτοιο ώστε το μήκος του μεγαλύτερου τμήματος να είναι το μέσο ανάλογο ανάμεσα στο μήκος του όλου τμήματος και στο μήκος του μικρότερου τμήματος.

Σχήμα 3.2.2 Τα τρία ευθύγραμμα τμήματα ικανοποιούν τη χρυσή τομή, Όπου AB≠0,ΑΓ≠0,ΓΒ≠0. Βρίσκουμε πρώτα τη θετική αριθμητική τιμή του λόγου ΑΒ/ΑΓ. Για ευκολία θέτουμε x=ΑΒ/ΑΓ,(x>0) Τότε θα έχουμε x=ΑΒ/ΑΓ=(ΑΓ+ΓΒ)/ΑΓ=1+1/(ΑΓ/ΓΒ)=1+1/(ΑΒ/ΑΓ)=1+1/Χ

Από την x=1+1/x με απαλοιφή του παρανομαστή προκύπτει x2=x+1 ή x2-x-1=0. Οι ρίζες αυτής της δευτεροβάθμιας εξίσωσης είναι β=(1+√5)/2. και β=(1-√5)/2. Παρατηρούμε πως α>0 και β<0 και υπολογίζουμε ότι α=1,618 και β=-0,618 Έτσι παίρνουμε τη θετική ρίζα α σαν την τιμή του ζητούμενου λόγου: AB/AΓ=(1+√5)/2.

Χρησιμοποιούμε τώρα αυτή την αριθμητική τιμή για να βρούμε μία μέθοδο καθορισμού της θέσης του Γ στο ευθύγραμμο τμήμα ΑΒ. Στο τρίγωνο του σχήματος ισχύουν BΔ=ΔE, AΓ=AE.

Page 8: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

8

Σχήμα 3.2.3 Εφαρμογή της χρυσής τομής σε ορθογώνιο τρίγωνο με λόγο καθέτων πλευρών ½. Τότε ΑΒ=2ΒΔ, EΔ=BΔ και με το πυθαγόρειο θεώρημα ΑΔ=√5×ΒΔ. Ώστε ΑΓ=ΑΕ=ΑΔ=(√5-1)ΒΔ,ΑΒ/ΑΓ=2ΒΔ/(√5-1)ΒΔ=(2(√5+1))/(5-1)=(√5+1)/2.

Ο υπολογισμός αυτός επαληθεύει ότι η κατασκευή καθορίζει πράγματι τη θέση του Γ στο ΑΒ έτσι ώστε AB/AΓ=(1+√5)/2. Επειδή α είναι η ρίζα της εξίσωσης x2-x-1=0 έχουμε α2=α+1. Κάνοντας πράξεις στους παραπάνω τύπους καταλήγουμε στον Fx=(αn-βn)/(α-β), n=1,2,3,… που λέγεται τύπος του Binet για του αριθμούς Fibonacci, από το όνομα του Γάλλου μαθηματικού Jacques-Phillipe-Marie Binet (1786-1856). Επειδή οι ρίζες της εξίσωσης x2-x-1=0, σχετίζονται με τους αριθμούς Fibonacci η εξίσωση λέγεται Δευτεροβάθμια εξίσωση Fibonacci. Οπότε θα λέμε τη θετική ρίζα της α=(1+√5)/2, Χρυσή τομή. Αυτή συμβολίζεται με το ελληνικό γράμμα φ.Το σημείο Γ που διαιρεί το ΑΒ έτσι ώστε α=ΑΒ/ΑΓ=(1+√5)/2 λέμε ότι διαιρεί το ΑΒ σε Χρυσή τομή.

Στο ορθογώνιο του παρακάτω σχήματος έχουμε ΒΓ/ΕΒ=ΑΒ/ΔΑ,τότε αν ΔA=AE=BΓ=x και ΕΒ=y θα έχουμε x/y=(x+y)/x⇒x/y=1+y/x.

Σχήμα 3.2.4 Τα δυο παραλληλόγραμμα έχουν διαστάσεις οριζόμενες εκ της χρυσής τομής. Πολλαπλασιάζουμε και τα δύο μέλη της τελευταίας επί x/y και βρίσκουμε (x/y)2=x/y+1⇒(x/y)2-x/y-1=0. που είναι της ίδιας μορφής με την εξίσωση x2-x-1=0. Αφού x και y θετικοί, αναζητούμε την θετική τιμή του x/y. Έτσι, x/y=α=(1+√5)/2. Δηλαδή ο λόγος μήκους προς το πλάτος του ορθογωνίου BΓFE καθώς και του ABΓΔ είναι η χρυσή τομή. Ένα τέτοιο ορθογώνιο λέγεται Χρυσό Ορθογώνιο.

Οι αναλογίες του χρυσού ορθογωνίου εμφανίζονται συχνά στην κλασική ελληνική τέχνη και την αρχιτεκτονική. Όπως απέδειξαν οι ψυχολόγοι Gustav Theodor Fechner (1801-1887) και Wilhelm Wundt

Page 9: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

9

(1832-1920), σε μία σειρά από ψυχολογικά πειράματα, οι περισσότεροι άνθρωποι προτιμούν υποσυνείδητα τις χρυσές διαστάσεις, όταν επιλέγουν διάφορα ορθογώνια αντικείμενα, όπως πίνακες, κάρτες. Παρακάτω φαίνεται η εντύπωση ενός καλλιτέχνη στο πρόσωπο του Ιησού Χριστού με βάση τη Σινδόνη του Τορίνου και διορθωμένος για να ταιριάξει με του Dr. Stephen Marquardt τη μάσκα.

Σχήμα 3.2.5 Xρήση του προσωπείου Marquardt σε απεικόνιση του Ιησού Χριστού επί της Σινδόνης του Τορίνου. To προσωπείο έχει υποστεί μετασχηματισμό κατά την οριζόντια διάσταση. Στη συνέχεια, παρουσιάζεται ένα θέμα γεωμετρικών υπολογισμών που στηρίζεται στη χρυσή τομή. Με τη βοήθεια υπολογισμών αυτού του είδους, αναπτύσσεται ο αρμονικός έλεγχος δισδιάστατων αναπαραστάσεων.

Υποθέτουμε ότι από το ορθογώνιο ABCD θέλουμε να αποκόψουμε 3 ισεμβαδικά ορθογώνια τρίγωνα PAQ, QBC, CDP όπως φαίνεται στο παρακάτω σχήμα.

Σχήμα 3.2.6 Σύνθετο σχήμα με εφαρμογή του χρυσού κανόνα στις δυο πλευρές του ορθογωνίου παραλληλογράμμου. Για να καθοριστεί η θέση των σημείων P και Q. Παίρνουμε AQ=x, QB=y, AP=w, PD=z. Τότε, αφού τα εμβαδά των τριγώνων PAQ, QBC, CDP είναι ίσα, έχουμε: ½xw=½y(w+z)=½z(x+y)⇒xw=yw+yz=xz+yz.

Από την yw+yz=xz+yz έχουμε yw=xz⇒w/z=x/y. Επίσης από την xw+y(w+z), έχουμε x/y=(w+z)/w=1+z/w=1+1/(w/z).

Page 10: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

10

Επειδή w/z=x/y, έχουμε x/y=1+1/(x/y), ή (x/y)2-x/y-1=0. Παίρνοντας πάλι τη θετική ρίζα έχουμε x/y=α=(1+√5)/2. Αλλά ισχύει επίσης w/z=x/y=α, και έτσι τα σημεία P και Q πρέπει να χωρίζουν τις πλευρές AD και ΑΒ αντίστοιχα στηχρυσή τομή έτσι ώστε ΑP/PD=ΑQ/QB=α. Πρόσθετο υλικό για τη χρυσή τομή δίνεται στα δύο άρθρα του Marvin Holt: “Mystery Puzzler and Phi”, και “The Golden Section”. To «χρυσό κυβοειδές» πραγματεύεται σε άρθρο με τον ίδιο τίτλο ο H. Huntley στο περιοδικό The Fibonacci Quarterly. Άλλη μια ενδιαφέρουσα πηγή είναι το βιβλίο Patterns in Space του συνταγματάρχη R S. Beard. To βιβλίο αυτό περιέχει πολλές περιπτώσεις Χρυσής Τομής σε παραλλαγές κανονικών στερεών.

Τέλος ένα τρίγωνο καλείται Χρυσό Τρίγωνο, όταν του αποκόψουμε ένα όμοιό του τρίγωνο, έτσι ώστε ο λόγος του εμβαδού του προς το εμβαδόν του τριγώνου που μένει να είναι α=1,618….Το χρυσό τρίγωνο εμφανίζεται στις σελίδες 61-62 του βιβλίου The Bequest of the Greeks του Tobias Dantzig, καθώς και στην σελίδα 42 του βιβλίου The Fibonacci numbers του Ν. Ν. Vorobyov. Μπορείτε ακόμα να ανατρέξετε στο άρθρο “Golden Triangles, Rectangles and Cuboids”, της Marjorie Bicknell και του Verner E. Hoggat, Jr., Για περισσότερες πληροφορίες βλ. Οδηγό περαιτέρω μελέτης στο τέλος του κεφαλαίου.

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

x2-x-1=0 είναι α=(1+√5)/2 και β=(1+√5)/2, και έτσι α2=α+1 και β2=β+1. Έχουμε ακόμα α+β=1 και α-b=√5. Επίσης έχουμε αn+2=αn+1+αn και βn+2=βn+1+βn. Χρησιμοποιήσαμε αυτές τις ισότητες και βρήκαμε ότι οι αριθμοί Fibonacci γράφονται με τους τύπους του Binet: F_n=(αn-bn)/(α-β)=(αn-bn)/√5, n=1,2,3,….

Προσθέτοντας τα παραπάνω μέλη έχουμε (αn+2+βn+2)=(αn+1+βn+1)+(αn+βn). Αν θέσουμε Ln=αn+βn, n=1,2,3,….Έτσι έχουμε τον τύπο του Binet για την ακολουθία Lucas. Ας συγκρίνουμε τώρα τους αριθμούς Fibonacci με τους αριθμούς Lucas:

F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 … 1 1 2 3 5 8 13 21 34 55 … L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 … 1 3 4 7 11 18 29 47 76 123 …

Σημειώστε ότι F1+F3=L2, F2+F4=L3. Μπορεί να αποδειχθεί ότι γενικά ισχύει Ln=Fn-1+Fn+1, από την οποία αφού Fn+1=Fn+Fn-1, προκύπτει Ln=Fn+2Fn-1. Μπορείτε να επαληθεύσετε την τελευταία σχέση σε συγκεκριμένες περιπτώσεις, να διαπιστώσετε δηλαδή ότι L6=F6+2F5, έχουμε έτσι εκφράσει τους Ln και Fn. Αν λάβουμε υπόψη ότι α-b=√5, τότε από τον τύπο του Binet έχουμε: √5Fn=αn-bn,Ln=αn+bn. Με πρόσθεση βρίσκουμε ότι 2an=L_n+√5Fn⇒(Ln+√5Fn)/2. Επίσης με αφαίρεση κατά μέλη bn-(Ln+√5Fn)/2.

Ας θυμηθούμε πως είχαμε ορίσει τον F0 σαν F2-F1. Όμοια μπορούμε να ορίσουμε τον L0 σαν L2-L1=3-1=2 και επειδή L1=α+β=1 η σχέση μπορεί να γραφεί σαν Ln=L1Fn+L0Fn-1. Άρα λοιπόν τους αρνητικούς τους ορίζουμε ως εξής Fn-1=Fn+1-Fn και Ln-1=Ln+1-Ln. Έτσι θα έχουμε και τους αρνητικούς

… F-4 F-3 F-2 F-1 F0 F1 F2 F3 F4 … … -3 2 -1 1 0 1 1 2 3 … … L-4 L-3 L-2 L-1 L0 L1 L2 L3 L4 … … 7 -4 3 -1 2 1 3 4 7 …

Βρίσκουμε τώρα τους πρώτους 14 διαδοχικούς λόγους (Fn+1)/Fn, (Ln+1)/Ln, οι τιμές των διαδοχικών λόγων όπως φαίνονται παρακάτω πλησιάζουν και στις δύο περιπτώσεις όλο και περισσότερο την τιμή του α., καθώς παίρνουμε μεγαλύτερες τιμές του n. Μπορεί να παρατηρηθεί ότι ο πρώτος όρος των αριθμών Fibonacci είναι μικρότερος του α, ο δεύτερος είναι μεγαλύτερος κ.λπ. Ενώ στους αριθμούς Lucas o πρώτος λόγος είναι μεγαλύτερος του α, ο δεύτερος μικρότερος κ.λπ.

Άρα λοιπόν:

Page 11: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

11

F2/F1<a<L2/L1 F3/F2<a<L3/L2 F(n+1)/Fn L(n+1)/Ln 1/1=1,000 3/1=3,000 2/1=2,000 4/3=1,333 3/2=1,500 7/4=1,750 5/3=1,667 11/7=1,5714 8/5=1,600 18/11=1,6363 13/8=1,625 29/18=1,6111 21/13=1,6154 47/29=1,6207 34/21=1,619 76/47=1,6170 55/34=1,6176 123/76=1,6184 89/55=1,6182 199/123=1,6179 144/89=1,6180 322/199=1,6181 233/144=1,6181 521/322=1,6180 377/233=1,6180 843/521=1,6180 610/377=1,6180 1364/843=1,6180

Όπου το α≈1,61803398875.... Πίνακας 3.2.1 Οι πρώτοι 14 όροι της ακολουθίας Fibonacci.

F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 1 1 2 3 5 8 13 21 34 55 13 21 34 55

Στον Πίνακα 3.2.1 παρατηρούμε τα ακόλουθα:

Κάθε τρίτος Fn είναι άρτιος και ο F3=2 διαιρεί τους F(3+3i),i=1,2,…. Για παράδειγμα βλέπουμε ότι ο F3 διαιρεί τους F6=8, F9=34, F12=144, F15=610,…

O F4=3 διαιρεί τους F8=21, F12=144,… O F5=5 διαιρεί τους F10=55, F15=610,… O F6=8 διαιρεί τον F12=144,… O F7=13 διαιρεί τον F14=377,… Τα παραδείγματα αυτά μας οδηγούν στα ακόλουθα θεωρήματα.

Θεώρημα 3.2.2 Κάθε αριθμός Fibonacci Fk διαιρεί κάθε αριθμό Fibonacci Fnk για n=1,2,3,… ή αν ο r διαιρείται δια του s τότε ο Fr διαιρείται δια του Fs.

Θεώρημα 3.2.3 O Μέγιστος Κοινός Διαιρέτης (συμβολίζεται με gcd) δύο αριθμών της ακολουθίας Fibonacci είναι εκείνος ο αριθμός Fibonacci που έχει δείκτη τον μέγιστο κοινό διαιρέτη των δεικτών των δύο αυτών αριθμών. Δηλαδή gcd(Fm,Fn)=F(m,n). To θεώρημα ΙΙ μπορεί να αποδειχθεί με τον αλγόριθμο του Ευκλείδη ή σαν λύση μιας Διοφαντικής εξίσωσης. Βλέπε Glenn Michael, “A new Proof for an Old Property”.

Θεώρημα 3.2.4 O αριθμός Fn διαιρείται δια του Fm, αν και μόνον αν ο n διαιρείται δια του m.

Θεώρημα 3.2.5 O αριθμός Ln διαιρεί τον Fm, αν και μόνον αν m=2kn,n>1.

Θεώρημα 3.2.6 O αριθμός Ln διαιρεί τον Lm, αν και μόνον αν m=(2k-1)n, n>1.

Θεώρημα 3.2.7 Ισχύει ότι gcd(Fn+2),F(n+1))=1.

Page 12: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

12

Θεώρημα 3.2.8 Ισχύει ότι gcd(L(n+2),L(n+1))=1. Παρατηρήσεις σχετικά με την περιοδικότητα των αριθμών Fibonacci & Lucas Παρατηρήσαμε ήδη ότι αν θεωρήσουμε την ακολουθία των πρώτων αριθμών της ακολουθίας Fibonacci ότι: O 2 διαιρεί τους F3 και F6 κ.λπ. O 3 διαιρεί τους F4 και F8 κ.λπ. O 5 διαιρεί τους F5 και F10 κ.λπ. O 7 διαιρεί τους F8, κατά συνέπεια και τον F16, κ.λπ. O 11 διαιρεί τους F10, κατά συνέπεια και τον F20, κ.λπ. O 13 διαιρεί τους F7 και F14 κ.λπ. Από τις παρατηρήσεις αυτές έχουν προκύψει μια σειρά προτάσεων που παραθέτουμε στη συνέχεια.

Θεώρημα 3.2.9 Κάθε ακέραιος αριθμός m διαιρεί κάποιον αριθμό Fibonacci (>F0) του οποίου ο υποδείκτης δεν υπερβαίνει τον m2. Για παράδειγμα Κ7=16.

Θεώρημα 3.2.10 Αν ο Fn διαιρεθεί δια του Fm (n>m), τότε είτε το υπόλοιπο R είναι αριθμός Fibonacci, είτε ο αριθμός Fm-R είναι ο αριθμός Fibonacci. Π.χ. 89=2×34+21, ή F11=2×F9+F8 ή 144=6×21+18, ή F12=6×F8+18.

Θεώρημα 3.2.11 Αν ο Ln διαιρεθεί δια του Lm (n>m), τότε είτε το υπόλοιπο R είναι μηδέν ή ο R είναι αριθμός Lucas ή ο Lm-R είναι ο αριθμός Lucas. Π.χ. 76=19×4+0, ή L9=19×L3+0 & 18=1×11+7, ή L6=1×L5+L4 & 47=6×7+5, ή L8=6×L4+(L4-L0). Μια απόδειξη της «Ιδιότητας των Υπολοίπων» βρίσκεται στο άρθρο του John H. Halton με τίτλο “Fibonacci Residues”. H ιδιότητα αυτή για τους αριθμούς Lucas αναπτύσσεται από τον Laurence Taylor στο άρθρο του “Residues of Fibonacci-Like Sequences”. Στο ίδιο άρθρο βλέπουμε ότι οι ακολουθίες Fibonacci και Lucas είναι οι μόνες που πληρούν την αναδρομική ιδιότητα un+2=un+1+un και έχουν τις ιδιότητες που καθορίζουν το Θεώρημα 3.2.10 και το Θεώρημα 3.2.11.

Το Τρίγωνο του Pascal και οι Αριθμοί Fibonacci Αν θεωρήσουμε τα διωνυμικά αναπτύγματα (x+y)n για n=0,1,2,3,4,5,…, μπορούμε να τα γράψουμε με την μορφή:

(x+y)0=x0y0 (x+y)1=x1y0+x0y1 (x+y)2=x2y0+2x1y1+x0y2 (x+y)3=x3y0+3x2y1+3x1y2+x0y3 (x+y)4=x4y0+4x3y1+6x2y2+4x1y3+x0y4 (x+y)5=x5y0+5x4y1+10x3y2+10x2y3+10x1y4+x0y5

Αφού x0=y0=1 (x και y μη μηδενικοί), μπορούμε να γράψουμε τους συντελεστές στην ακόλουθη μορφή που λέγεται τρίγωνο του Pascal:

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

Page 13: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

13

Γράφοντας διαδοχικές γραμμές του τριγώνου του Pascal μπορούμε να βρούμε οποιοδήποτε διωνυμικό συντελεστή, μπορούμε όμως να τους βρίσκουμε και με άμεσο τρόπο. Ας είναι 1×2×3…n=n! Και

0!=1. Αποδεικνύεται τότε ότι ( )

= −

!

! !

κ κm m κ m

.

Ποια είναι η σχέση ανάμεσα στους αριθμούς Fibonacci και στο τρίγωνο του Psacal; Γράφοντας το τρίγωνο όπως παρακάτω έχουμε:

Βλέπουμε έτσι πως τα αθροίσματα κατά μήκος των ανερχόμενων διαγωνίων είναι οι αριθμοί Fibonacci. F1=1, F2=1, F3=1+1, F4=1+2, F5=1+3+1, F6=1+4+3, F7=1+5+6+1, κλπ. Γενικά αποδεικνύεται ότι

+=

−=

/2

1−

κ

κi

κ iF

i, όπου x είναι ο μεγαλύτερος ακέραιος που δεν υπερβαίνει το x.

Πίνακες 2×2 που Σχετίζονται με τους Αριθμούς Fibonacci

Ένας πίνακας 2×2 συμβολίζεται με

Α =

a b

c d, όπου α,b,c,d είναι πραγματικοί αριθμοί που λέγονται

στοιχεία. Σε αυτό το κεφάλαιο δεν θα ασχοληθούμε με τη γραμμική άλγεβρα πινάκων, αλλά θα δείξουμε την σχέση των μητρώων με τους αριθμούς Fibonacci. Θεώρημα 3.2.12 H ορίζουσα, det AB, του γινομένου δύο πινάκων Α και Β, ισούται προς το γινόμενο των οριζουσών, detA και detB. Δηλαδή det AB=(detA)(detB).

Θεώρημα 3.2.13

Για n≥1, η n-οστή δύναμη του Q είναι +

=

1

1

κ κκ

κ κ

F FQ

F F.

Απόδειξη: Θα χρησιμοποιήσουμε μαθηματική επαγωγή. Για n=1.

= =

2 11

1 −

11

1−

F FQ

F F.

Υποθέτουμε ότι +

=

1

1

k kk

k k

F FQ

F F.

Τότε + + ++

− −

= =

1 1 11 1

1 1

11

1− k k k k kk k

k k k k k

F F F F FQ Q Q

F F F F F+ +

+

=

2 1

1

k k

k k

F F

F F η απόδειξη είναι πλήρης με μαθηματική

Page 14: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

14

επαγωγή. Θεώρημα 3.2.14 Ισχύει ότι detQn=(-1)n, n≥1. Μεγάλο τεχνικό ενδιαφέρον στην άλγεβρα των πινάκων έχει το χαρακτηριστικό πολυώνυμο. Για έναν πίνακα Α το χαρακτηριστικό πολυώνυμο ορίζεται ως:

( ) ( ) ( ) ( ) − −

= − = − = + = = − + + − − −

21 − −

1− 1 −

a b a b x a x bP x det A x x x a d x ad bc

c d c d x c d x

Η εξίσωση P(x)=0 ή x2-(α+d)x+(αd-bc)=0. Λέγεται χαρακτηριστική εξίσωση του πίνακα Α. Για τον πίνακα

Q το χαρακτηριστικό πολυώνυμο είναι: ( ) −

− = − = = − − −

21 1 − 1 1

11 − − 1

x xdet Q xf x x

x x και η

χαρακτηριστική εξίσωση είναι η x2-x-1=0 που την έχουμε ονομάσει δευτεροβάθμια εξίσωση Fibonacci. Οι χαρακτηριστικές του ρίζες είναι α=(1+√5)/2 και β=(1+√5)/2. Για να βρούμε τώρα τη χαρακτηριστική εξίσωση και τις χαρακτηριστικές ρίζες του Qn έχουμε ότι x2-Lnx+(-1)n=0. Οι χαρακτηριστικές ρίζες

βρίσκονται από τον τύπο ( )± − −

=2 4 1

2

κ

κ κL L

x .

Έτσι λοιπόν οι ρίζες θα είναι x=(Ln+Fn √5)/2 και x=(Ln+Fn √5)/2. Έτσι ακολουθεί το θεώρημα τέσσερα.

Θεώρημα 3.2.15 Οι χαρακτηριστικές ρίζες του πίνακα Qn είναι οι ν-οστές δυνάμεις των χαρακτηριστικών ριζών του Q και το ίχνος του Qn είναι ο Ln. Μπορεί εύκολα να επαληθευτεί ότι Q2=Q+I ή Q2-Q-I=Z. Έτσι μπορεί να λεχθεί ότι ο Q ικανοποιεί τη χαρακτηριστική εξίσωση x2-x-1=0. Αυτή είναι μία περίπτωση του παρακάτω θεωρήματος που δίνουμε χωρίς απόδειξη.

Θεώρημα 3.2.16 (Θεώρημα W. R Hamilton – Arthur Cayley). Κάθε τετραγωνικός πίνακας ικανοποιεί τη δική του χαρακτηριστική εξίσωση.

Page 15: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

15

3.3. Εφαρμογές

Σχήμα 3.3.1 Άνθη φυτών με αριθμό πετάλων, που ανήκουν στο σύνολο των αριθμών Fibonacci. Το νυχτολούλουδο έχει 2 πέταλα (παρόλο που είναι βαθιά χωρισμένα ώστε να φαίνονται τέσσερα). Έτσι τα πιο πάνω λουλούδια έχουν 2,3,5 ή 8 (αριθμοί Fibonacci) ή 4 (αριθμός Lucas) ή 6 πέταλα ή πεταλοειδή μέρη. Ο αριθμός των πεταλοειδών μερών ενός λουλουδιού όπως το Aster compositae, το Cosmos compositae, η μαργαρίτα ή το Gaillardia compositae στη σύνθετη οικογένεια είναι σταθερά ένας αριθμός Fibonacci ή είναι πολύ κοντά σε κάποιο. Ένα λουλούδι μιας μόνον ποικιλίας Gaillardia compositae μπορεί να έχει 13 τέτοια μέρη. Ο Frank Land στο The Language of Mathematics αναφέρει ότι βρήκε 21,34,55,89 πέταλα σε μαργαρίτες και σε άλλα μέλη της ίδιας οικογένειας.

Μπορούμε να βρούμε ακόμα αριθμούς Fibonacci στη διάταξη των φύλλων ή κλαδιών στον κορμό ενός δένδρου. Πάρτε σαν αφετηρία ένα φύλλο και μετρήστε προς τα έξω τα φύλλα του κορμού, μέχρι να φθάσετε σε ένα φύλλο ακριβώς πάνω από το αρχικό. Ο αριθμός των φύλλων που θα βρείτε είναι συνήθως ένας αριθμός Fibonacci. Ας υποθέσουμε ότι με μία κλωστή τυλίγουμε τον κορμό ακολουθώντας τα φύλλα. Ό αριθμός των στροφών που θα κάνει η κλωστή γύρω από το κλαδί από την αφετηρία, ώσπου να φθάσει το πρώτο φύλλο ακριβώς πάνω από το σημείο αφετηρίας, είναι συνήθως ένας αριθμός Fibonacci. Το αποτέλεσμα δηλώνεται συνήθως με τον λόγο αριθμός στροφών/αριθμός φύλλων. Μερικά απλουστευμένα παραδείγματα φαίνονται στο Σχήμα 3.3.2. Η φοινικιά έχει λόγο 1/3 και η ιτιά η αμερικανική έχει λόγο 5/13! Τέτοια διάταξη των φύλλων σε ένα κλαδί λέγεται φυλλόταξη.

Σχήμα 3.3.2 Η ανάπτυξη των κλάδων σε ένα αριθμό δένδρων ακολουθεί τους αριθμούς Fibonacci.

Page 16: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

16

Τα πιο γνωστά παραδείγματα εμφάνισης αριθμών Fibonacci στη φύση είναι ο αριθμός των σπειρών των σπόρων του ηλιοτροπίου και ο αριθμός των λεπιών των σπειρών των κουκουναριών. Ένα ηλιοτρόπιο μπορεί να έχει 89 σπείρες προς τα δεξιά και 55 προς τα αριστερά και ένα άλλο, με διάμετρο 18 ίντζες, που είχε 144 σπείρες προς τα δεξιά, 89 προς τα αριστερά και 55 ρηχές σπείρες προς τα δεξιά. Ένα ιδιαίτερα ενδιαφέρον είδος ηλιοτροπίου διαθέτει ο Brother Alfred Brousseau του St. Mary’s College, California.

Σχήμα 3.3.3 Κουκουνάρα, στήμονες άνθους ηλιοτροπίου Brousseau και δυο παχύφυλλα όπου φαίνεται η ανάπτυξη σύμφωνα με ακολουθίες αριθμών Fibonacci. Οι μετρήσεις των σπειρών έδειξαν 127 προς τα δεξιά, 76 προς τα αριστερά και 47 ρηχές σπείρες προς τα δεξιά – ένα ηλιοτρόπιο με αριθμούς Lucas. Ο Brother Alfred Brousseau συνέλεξε και ταξινόμησε, σύμφωνα με τον αριθμό των σπειρών τους (που είναι αριθμοί Fibonacci), κουκουναριές από όλα τα 20 είδη πεύκων της California. Βλ. Οδηγό περαιτέρω μελέτης στο τέλος του κεφαλαίου. Υπάρχουν τρεις τρόποι μετάδοσης της κίνησης: ο μηχανικός, ο υδραυλικός και ο πνευματικός. Τα κριτήρια επιλογής κάποιου από αυτά τα συστήματα είναι η ικανοποίηση της συγκεκριμένης ανάγκης (άρα η ικανότητα μεταφοράς της συγκεκριμένης ισχύος) με βάση την οικονομία και την αξιοπιστία. 3.3.1. Τεχνολογικές Εφαρμογές της Άλγεβρας Fibonacci (Συμμετρικός Αναλογικο-Ψηφιακός Μετατροπέας / DAC) Είναι γνωστό ότι οι διαιρέτες αντίστασης με τις «δυαδικές» αναλογίες είναι η βάση του κυκλώματος του κλασικού «δυαδικού» αναλογικου-ψηφιακού μετατροπέα. Ακολουθεί ο σχεδιασμός του διαιρέτη αντιστάσεων με τις αναλογίες του χρυσού αριθμού στον τύπο r2=(3+√5)/2.

Page 17: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

17

Σχήμα 3.3.4 Διαιρέτης αντιστάσεων b. c. d. Ισοδύναμες διατάξεις. Ο διαιρέτης αντιστάσεων στο Σχήμα 3.3.4 αποτελείται από τους οριζόντιους και κάθετους αντιστάτες δύο τιμών R και τR. Οι ηλεκτρικές είσοδοι A,B,C,D,E συνδέουν τους αντιστάτες του διαιρέτη. Στο α παρουσιάζεται διαιρέτης αντιστάσεων 5-ψηφίων με τα παραπάνω σημεία σύνδεσης. Το σημείο C σύνδεσης αντιστοιχεί στο ψηφίο 0. Οι ισοδύναμες του διαιρέτη ηλεκτρικές διατάξεις παρουσιάζονται στα σχήματα b,c,d. Το δεξί τμήμα του διαιρέτη που θεωρεί στα σημεία d,e σύνδεσης έχει τη μορφή στο σχήμα b. Aς υπολογίσουμε την ισοδύναμη αντίσταση της παράλληλης ένωσης των αντιστατών R και τR στο σχήμα b: R_e1=(R×τR)/(R+τR)=τ(-1) R. Αλλά ίδια τιμή έχει η ισοδύναμη αντίσταση του διαιρέτη στο αριστερό τμήμα θεωρώντας στο σημείο Β. Η ισοδύναμη αντίσταση του κυκλώματος στο Σχήμα 3.3.4 b θεωρώντας στο σημείο d είναι ίση με R+×τ-1R=τR. Εάν πάρουμε στον διαιρέτη αντιστάσεων στο Σχήμα 3.3.4 a κάποιο αυθαίρετο «οριζόντιο» αντιστάτη R με τα σημεία σύνδεσης Α (το αριστερό σημείο σύνδεσης) και B (το δεξί σημείο σύνδεσης), έπειτα είναι εύκολο να δείξει ότι σύμφωνα με την πρώτη εξίσωση, η ισοδύναμη αντίσταση των αριστερών και δεξιών μερών του διαιρέτη σύμφωνα με τους κόμβους σύνδεσης Α και Β είναι αντίστοιχα ίσο με το τ-1R.

Κατόπιν μπορούμε να παρουσιάσουμε το ισοδύναμο κύκλωμα του διαιρέτη για κάποιο αυθαίρετο «οριζόντιο» αντιστάτη R όπως παρουσιάζεται στο Σχήμα 3.3.4 c. Το τελευταίο επιτρέπει τον υπολογισμό του συντελεστή μετάδοσης τάσης από τον κόμβο Α στον κόμβο Β: UB=UA/(R+τ(-1)R)τ(-1)R=UA/τ2. Ας εξετάσουμε κάποιο αυθαίρετο σημείο C του κυκλώματος στο Σχήμα 3.3.4 a. Κατόπιν με τη χρήση της δεύτερης εξίσωσης είναι εύκολο να δειχτεί ότι η ισοδύναμη αντίσταση της αλυσίδας διαιρετών στο αριστερό και στο δικαίωμα για το αυθαίρετο σημείο C είναι ίση με tR. Κατόπιν το ισοδύναμο κύκλωμα του διαιρέτη που θεωρώντας το σημείο C μπορεί να παρουσιαστεί στη μορφή του Σχήματος 3.3.4 d. Με τη χρήση των ισοδύναμων κυκλωμάτων στο Σχήμα 3.3.4 d, είναι εύκολο να υπολογιστεί η ισοδύναμη αντίσταση του κυκλώματος στο Σχήμα 3.3.4 d ως παράλληλη ένωση των 3 αντιστατών tR, R και tR: Re2(τR×τ(-1)R)/(τR×τ(-1)R)=1/2R.

Κατά συνέπεια, η έρευνα για το διαιρέτη στo Σχήμα 3.3.4 a επιτρέπει τη διατύπωση των ακόλουθων ηλεκτρικές ιδιότητες του διαιρέτη.

Page 18: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

18

Ο συντελεστής μετάδοσης τάσης μεταξύ μερικών γειτονικών σημείων σύνδεσης του διαιρέτη (όπως τα σημεία Α και Β) είναι αντιστρόφως ανάλογος προς το τετράγωνο του χρυσού τμήματοσ τ2

Η ισοδύναμη αντίσταση του διαιρέτη στο αυθαίρετο σημείο σύνδεσης C είναι σταθερή και είναι ίση με ½R.

Σημειώστε ότι η ιδιότητα (1) είναι μια μεγάλη έκπληξη! Πραγματικά, είναι αδύνατο να φανταστούμε ότι η απλούστερη ηλεκτρική διάταξη στο Σχήμα 3.3.4 a περιέχει το τετράγωνο της χρυσής αναλογίας! Αλλά αυτό το γεγονός τονίζει ακόμα περισσότερο τον θεμελιώδη χαρακτήρα της χρυσής αναλογίας, η οποία εμφανίζεται απροσδόκητα σε ένα ηλεκτρικό κύκλωμα!

O παραπάνω διαιρέτης αντιστάσεων μπορεί να χρησιμοποιηθεί για τον σχεδιασμό του συμμετρικού ψηφιακό-αναλογικού μετατροπέα (D to A converter) Σχήμα 3.3.5. Το τελευταίο αποτελείται από τα πέμπτα (n στη γενική περίπτωση) ψηφία. Το μέσο σημείο C αντιστοιχεί στο 0-s ψηφίο α0 του ανακλαστικού-συμμετρικού κώδικα εισαγωγής a2 α0 α-1 α-2 (αm αm-1...a0-1α-2...α-μ στη γενική περίπτωση) του αριθμού n. Τα ψηφία αi(ι=0,±1,±2…,±m) ελέγχεται από το ειδικό κύκλωμα I0 που συνδέεται με τα αντίστοιχα σημεία σύνδεσης του συμμετρικού-ανακλαστικού διαιρέτη. Το ειδικό κύκλωμα I0 αποτελείται από την τυποποιημένη ηλεκτρική γεννήτρια I0 και το ηλεκτρικό κλειδί 3-θέσεων, οι οποίες ελέγχονται από τα τριαδικά ψηφία αi σύμφωνα με τον ακόλουθο κανόνα.

Εάν αi =1 τότε το τυποποιημένο ηλεκτρικό ρεύμα διαρέεται στο αντίστοιχο σημείο του συμμετρικού διαιρέτη αντιστάσεων -στο θετικό-, +I0.

Εάν αi=-1 τότε το τυποποιημένο ηλεκτρικό ρεύμα διαρέεται στο αντίστοιχο σημείο του συμμετρικού διαιρέτη αντιστάσεων -στο αρνητικό-, -I0.

Τέλος, εάν αi=0 τότε το τυποποιημένο ηλεκτρικό ρεύμα I0 δεν διαρέεται στο αντίστοιχο σημείο σύνδεσης.

Σχήμα 3.3.5 D/A μετατροπέας (converter). Ο παραπάνω ψηφιακό-αναλογικός μετατροπέας (DAC) έχει δύο συμμετρικά αποτελέσματα, U1 και U2. Λαμβάνοντας υπόψη τις βασικές ιδιότητες (1)-(4) του συμμετρικού διαιρέτη, κάποιος μπορεί να δείξει ότι τα συμμετρικά αποτελέσματα U1 και U2 εκφράζονται, σε συνάρτηση από το συμμετρικό κώδικα εισαγωγής αm

αm-1…α0 α-1 α-2…α-m στην ακόλουθη μορφή: τ=−

= = ∑ 2−1 2 2

Mt

iI M

IU U a .

Η θεμελιώδης ιδιότητα ελέγχου των τελευταίων είναι η ισότητα U1=U2 αυτή η ισότητα επιβεβαιώνει την ακρίβεια της λειτουργίας του συμμετρικού DAC. Αλλά η παραβίαση της ισότητας (6) είναι η ένδειξη λάθους στο DAC. Κατά συνέπεια ο συμμετρικός-ανακλαστικός ψηφιακό-αναλογικός μετατροπέας (DAC) στο Σχήμα 3.3.5 είναι αυτοδιορθώμενος επιτρέποντας τον DAC να συνεχίζει να λειτουργεί σύμφωνα με τη σχέση (6).

Page 19: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

19

3.3.2. Ψηφιακός Καταχωρητής Συνέλιξης (Convolusion Register) Βασισμένος στην Άλγεβρα Fibonacci Οι διαδικασίες της συνέλιξης, της μετάβασης και της μείωσης στην ελάχιστη μορφή είναι οι κύριες διαδικασίες των τεχνολογικών εφαρμογών της αριθμητικής Fibonacci. Εξετάζουμε σε αυτό το κεφάλαιο μια απλή ηλεκτρονική συσκευή για την πραγματοποίηση της συνέλιξης Fibonacci. Σαν βάση της συσκευής συνελίξεων μπορούμε να επιλέξουμε τον δυαδικό καταχωρητή που αποτελείται από flip-flops. Αυτός ο καταχωρητής έχει τα λογικά κυκλώματα για την εκτέλεση των συνελίξεων. Κάθε ψηφίο του καταχωρητή περιλαμβάνει δυαδικό flip-flop και τα λογικά στοιχεία. Η «συνέλιξη» (011→100) μπορεί να παρουσιαστεί ως αντιστροφή των καταστάσεων των flip-flop. Η αντιστροφή της κατάστασης του flip-flop εκτελείται πολύ εύκολα για το flip-flop με τις ρυθμιζόμενες και μετρούμενες εισόδους.

Μια από τις πιθανές παραλλαγές του καταχωρητή συνελίξεων εμφανίζεται στο κύκλωμα. Ο καταχωρητής «συνελίξεων» αποτελείται από τα πέντε R-S FFs και τα λογικές πύλες AnD, OR οι οποίες προορίζονται για την πραγματοποίηση της συνέλιξης. Η «συνέλιξη» εκτελείται από το χαμηλότερο flip-flop T1 προς το υψηλότερο flip-flop T5 με τη βοήθεια των λογικών στοιχείων AnD1-AnD5 και τα αντίστοιχα λογικά στοιχεία ΟR πριν από τις RS εισόδους των flip-flops. Το λογικό στοιχείο-πύλη AnD1 πραγματοποιεί τη «συνέλιξη» του 1ου ψηφίου στο 2ο ψηφίο. Οι δύο είσοδοί της πύλης συνδέονται με την άμεση έξοδο του flip-flop T1 και την αντίστροφη έξοδο του flip-flop T2. Η τριών ψηφίων είσοδος συνδέεται με την είσοδο C του συγχρονισμού. Το λογικό στοιχείο AnD1 αναλύει τις καταστάσεις Q1 και Q2 του flip-flops T1 και του T2. Εάν Q1=1 και Q2=0 αυτό σημαίνει ότι ο όρος «συνελίξεων» τηρείται για τα 1α και 2α ψηφία. Το σήμα συγχρονισμού C=1 προκαλεί μια εμφάνιση του λογικού 1 στην έξοδο του στοιχείου AnD1. Το τελευταίο προκαλεί τη μετατροπή του flip-flops T1 και του T2. Αυτό οδηγεί στη συνέλιξη ψηφίων (01→10). Το λογικό στοιχείο AnDk του Κ - ψηφίο (Κ=2,3,4,5) πραγματοποιούν τη «συνέλιξη» (Κ-1) ψηφίου και του Κ - ψηφίου. Τρεις είσοδοί της συνδέονται με τα άμεσα αποτελέσματα των flip-flops Tk-1 και Tk και την αντίστροφη έξοδο flip-flop Tk+ 1. Η 4η είσοδος συνδέεται με την είσοδο συγχρονισμού C. Το λογικό στοιχείο AnDk αναλύει τις καταστάσεις Qk-1, Qk και Qk+ 1 flip-flops Tk-1, Tk και Tk+ 1. Εάν Qk-1=1, Qk=1 και Qk+ 1 = 0 αυτό σημαίνουν ότι ο όρος της συνέλιξης διατηρείται. Το σήμα συγχρονισμού C=1 οδηγεί στη αντιστροφή των flip-flops Tk-1, Tk, και Tk+ 1.Οπότε η συνέλιξη των αντίστοιχων ψηφίων (011 ® 100) τελειώνει. Σημειώστε ότι όλα τα στοιχεία-πύλες AnD1-AnD5 συνδέονται μέσω του κοινού στοιχείου ORc με την έξοδο ελέγχου του καταχωρητή συνελίξεων. Ο καταχωρητής συνελίξεων στο Σχήμα 3.3.6 λειτουργεί με τον ακόλουθο τρόπο. Οι πληροφορίες κώδικα εισόδου στέλνονται στις εισόδους πληροφοριών 1-5 του καταλόγου συνελίξεων και εισάγουν τις S-εισόδους flip-flops μέσω των αντίστοιχων λογικών στοιχείων-πυλών OR.

Page 20: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

20

Σχήμα 3.3.6 Καταχωρητής 5 συνελίξεων. Ο καταχωρητής συνελίξεων διαδραματίζει έναν σημαντικό ρόλο στον επεξεργαστή Fibonacci ως αυτοδιορθώμενη (self-checking) συσκευή. Ας εξετάσουμε τον καταχωρητή συνελίξεων του κυκλώματος από αυτήν την άποψη. Οι έξοδοι των λογικών στοιχείων AnD1-AnD5 του καταχωρητή συνελίξεων του σχήματος συνδέονται με την έξοδο ελέγχου του καταχωρητή μέσω του κοινού στοιχείου ΟR. Αυτή η έξοδος διαδραματίζει έναν σημαντικό ρόλο ως έξοδος ελέγχου του καταχωρητή συνέλιξης. Προκύπτει από τον τρόπο λειτουργίας του καταχωρητή συνελίξεων ότι το λογικό 1 εμφανίζεται στην έξοδο ελέγχου μόνο για δύο καταστάσεις.

Ο συνδυασμός δυαδικού κώδικα που γράφεται στον καταχωρητή «συνελίξεων» δεν έχει την ελάχιστη μορφή. Σημαίνει ότι ο όρος συνελίξεων ισχύει ακόμη και για αυτόν τρία γειτονικά flip-flops του καταχωρητή «συνελίξεων». Αυτό προκαλεί την εμφάνιση του λογικού 1 στην έξοδο του αντίστοιχου στοιχείου AnD. Ως εκ τούτου, σε αυτήν την περίπτωση η εμφάνιση του λογικού 1 στην έξοδο ελέγχου του καταχωρητή συνελίξεων δείχνει ότι η διαδικασία συνελίξεων δεν τελειώνει. Αυτό σημαίνει ότι έχουμε μια δυνατότητα να δείξουμε τη λήξη της διαδικασίας συνελίξεων με τη βοήθεια της παρατήρησης της εξόδου ελέγχου του καταχωρητή «συνελίξεων».

Η εμφάνιση του σταθερού λογικού 1 στην έξοδο ελέγχου είναι η ένδειξη της βλάβης στον καταχωρητή συνελίξεων. Ως εκ τούτου ο καταχωρητής συνελίξεων είναι η φυσική self-checking συσκευή.

Για τη «ερμηνεία» του η καθιέρωση της αλληλοεπικοινωνίας μεταξύ του «αιτίου» και του «αιτιατού|» πραγματοποιείται με τη χρησιμοποίηση flip-flop ελέγχου. Η «αιτία» οργανώνει αντίστοιχο «flip-flop

Page 21: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

21

ελέγχου» στην κατάσταση 1 αλλά η σωστή εκπλήρωση της μικροϋπολογιστικής-λειτουργίας αναγκάζει τα «flip-flop ελέγχου» να μεταβούν στην κατάσταση 0. Εάν τα «flip-flop ελέγχου» μεταβούν στην κατάσταση 1 αυτό το γεγονός είναι η ένδειξη σφάλματος. Ο έλεγχος των πληροφοριών «που γράφονται» στον καταχωρητή εκπληρώνεται με τη βοήθεια της σύγκρισης των πληροφοριών εξόδου των καταχωρητών μετά από το «γράψιμο» με τις πληροφορίες εισόδου καταλόγων. Εάν αναλύσουμε τα «αίτια» και τα «αιτιατά» για κάθε βασική μικροϋπολογιστική-λειτουργία, καταλήγουμε στο συμπέρασμα ότι κάθε «επίδραση» είναι η αντιστροφή «της αιτίας της», δηλαδή όλες οι μικροϋπολογιστικές-λειτουργίες θα μπορούσαν να μειωθούν στην αντιστροφή των ψηφίων (flip-flops) που περιλαμβάνονται στις μικροϋπολογιστικές-λειτουργίες.

Το block diagram δεδομένων της μονάδας Fibonacci για την πραγματοποίηση της αρχής «της αιτίας-επίδρασης» εμφανίζεται στο παρακάτω σχήμα. Η μονάδα του σχεδίου αποτελείται από τους καταχωρητές πληροφοριών και ελέγχου, οι οποίοι συνδέονται με τη βοήθεια των λογικών κυκλωμάτων «αιτίου» και «αιτιατού». Το λογικό κύκλωμα «αιτίας» αναλύει τις πληροφορίες κώδικα που εισάγονται στον καταχωρητή πληροφοριών μέσω της «εισόδου». Ως εκ τούτου, εάν έχουμε τον συνδυασμό μηδενικών στον καταχωρητή ελέγχου μετά από τη λήξη όλων των διαδικασιών του μικροϋπολογιστή σημαίνει ότι όλες οι «αιτίες» αντιστοιχούν «στα αποτελέσματά τους», δηλ. όλες οι διαδικασίες του μικροϋπολογιστή εκτελούνται σωστά. Εάν ο κατάλογος ελέγχου περιέχει τουλάχιστον το μόνο δυαδικό 1 σε κάποιο flip-flop αυτό σημαίνει ότι τουλάχιστον η μόνη βασική λειτουργία μικροϋπολογιστών δεν είναι σωστή. Το σημαντικότερο πλεονέκτημα της αρχής ελέγχου «αιτίας–επίδρασης», που πραγματοποιείται στη μονάδα Fibonacci του block-diagram, είναι η ανίχνευση των σφαλμάτων στη στιγμή της εμφάνισής τους. Η διόρθωση του σφάλματος της μικροϋπολογιστικής-λειτουργίας πραγματοποιείται από την επανάληψη αυτής της μικροϋπολογιστικής-λειτουργίας.

Σχήμα 3.3.7 Αυτοελεγχόμενη μονάδα Fibonacci για την προσομοίωση της ντετερμινιστικής αρχής «αίτιο-αποτέλεσμα».

Page 22: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

22

Η πιο πάνω αναφερόμενη λειτουργία της αρχής «αιτίας–αποτελέσματος» τέθηκε στη βάση της αυτοδελεγχόμενης (self-checking) μονάδας Fibonacci, η οποία υλοποιήθηκε με τη χρήση της τεχνολογίας LSI. Η μονάδα πραγματοποιεί τις ακόλουθες μικροϋπολογιστικές-λειτουργίες: γράψιμο, ανάγνωση, συνέλιξη, μετάβαση, αντικατάσταση, απορρόφηση, πρόσθεση Fibonacci, αφαίρεση Fibonacci, μείωση στην ελάχιστη μορφή, κυκλική μετατόπιση. Η διαθεσιμότητα στήν έξοδο ελέγχου του bit-σφάλματος είναι το σημαντικό πλεονέκτημα της μονάδας Fibonacci. Εάν στην έξοδο ελέγχου εμφανισθεί το δυαδικό σήμα 1 («σφάλμα») όλα τα ενημερωτικά αποτελέσματα της μονάδας εμποδίζονται. Για να διορθώσει το «σφάλμα» είναι απαραίτητο να επαναληφθεί η προηγούμενη μικροϋπολογιστική-λειτουργία.

Εάν προκύψει το δυαδικό σήμα 0 στην έξοδο «του σφάλματος» αυτό σημαίνει ότι το «σφάλμα» είναι αποτέλεσμα «μόνιμης βλάβης» στη μονάδα.

Αυτή η μονάδα Fibonacci μπορεί να χρησιμοποιηθεί για το σχεδιασμό επεξεργαστών «ανίχνευσης βλαβών» με τη χρήση δύο αυτοδιορθώμενων (self-checking) μονάδων Fibonacci.

Εφαρμογές και χρήση των επεξεργαστών Fibonacci έχουμε στην επεξεργασία σύγχρονων κρυπτογραφικών συστημάτων. Πολλά κρυπτογραφικά συστήματα είναι βασισμένα στους υπολογισμούς μεγάλων πεπερασμένων πεδίων. Η υλοποίηση (hardware) τέτοιων υπολογιστικών μονάδων ή επεξεργαστών απαιτεί χιλιάδες πύλες λογικής. Είναι δύσκολη και δαπανηρή η ανάπτυξη τέτοιων υπολογιστικών μονάδων ή επεξεργαστών με τη χρήση χιλιάδων πυλών λογικής, όπου πάντα παραμονεύει κάποιο σφάλμα κατασκευής. Αυτό σημαίνει ότι η ανάπτυξη των επεξεργαστών Fibonacci είναι λύση για αξιόπιστους υπολογισμούς στο σημαντικό πρόβλημα σχεδιασμού αξιόπιστων κρυπτογραφικών συστημάτων. 3.3.3. Τεχνολογικές Εφαρμογές της Άλγεβρας Fibonacci στην Επεξεργασία Σημάτων Η επόμενη εικόνα δείχνει τη δειγματοληψία από ένα αναλογικό ημιτονικό σήμα, με σκοπό να ληφθούν τα στοιχεία για τη δημιουργία ενός CD. Για κάθε δείγμα μια ψηφιακή λέξη παράγεται και αποθηκεύεται. Ένας ψηφιακός παλμογράφος χρησιμοποιεί την ίδια ιδέα.

Σχήμα 3.3.8 Ημιτονικός παλμός και επιλογή διακριτού σήματος σε αυτόν. Σε ένα CD υπάρχει ένας αναλογικός σε ψηφιακό μετατροπέας (AD C) που μετατρέπει τα ψηφιακά στοιχεία στα αναλογικά σήματα, με τη βοήθεια κάποιου φιλτραρίσματος. Μπορείτε να δείτε ότι από τα μαύρα σημεία στοιχείων, δεν πρέπει να είναι δύσκολο να επαναδημιουργηθεί κάτι πολύ παρόμοιο με το ημιτονικό σήμα.

Σχήμα 3.3.9 Ημιτονικός παλμός και επιλογή διακριτού σήματος σε αυτόν.

Page 23: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

23

Αν και η συχνότητα σημάτων έχει αυξηθεί κατά έναν παράγοντα δέκα, τα δείγματα δεν απεικονίζουν αυτό. Η περίοδος του ημιτόνου που αντιπροσωπεύεται από τα μαύρα στοιχεία είναι πραγματικά λίγο πιό μεγάλη από πριν. Η συχνότητα σημάτων είναι πάρα πολύ υψηλή για το δείγμα-ποσοστό, που έχει το σύστημα. Το σήμα στο CD έχει μεταλλαχθεί σε περίπου 44 kHz, έτσι ώστε το τμήμα υψηλότερης συχνότητας που θα μπορούσε να καταγραφεί σωστά είναι σε 22 kHz. Ένα σήμα σε 23 kHz θα ακουγόταν ως 21 kHz, 24 kHz ως 20 kHz, και τα λοιπά. Αυτές οι ψεύτικες συχνότητες καλούνται «ψευδώνυμα». Βλέπετε αυτό στις ταινίες του κινηματογράφου, όταν μπορούν να εμφανιστούν οι ρόδες βαγονιών εμπορευμάτων να περιστρέφονται στη λανθασμένη κατεύθυνση. Το βλέπετε επίσης στις τουρμπίνες ενός αεροσκάφους όταν ξεκινούν και επιταχύνονται έπειτα. Ο προωστήρας θα αρχίσει κατά τρόπο κανονικό, και θα εμφανιστεί έπειτα να επιβραδύνει και να πηγαίνει προς τα πίσω, αντίστοιχος στις αρνητικές συχνότητες. Αυτό συμβαίνει επειδή η κινούμενη εικόνα αποτελείται από πολλές ακίνητες εικόνες που προβάλλονται στη διαδοχή. Παρά όλες τις δεξιότητες της βιομηχανίας κινηματογράφων, καμία δεν μπορεί να αγνοήσει τη θεωρία δειγματοληψίας, η οποία απαιτεί εκεί να είναι τουλάχιστον δύο δείγματα ανά κύκλο στη μέγιστη συχνότητα σημάτων. Αυτό που συμβαίνει στα συστήματα δειγματοληψίας είναι ότι το φάσμα συχνότητας είναι διπλωμένο επάνω και συσκευασμένο σε μια ζώνη που πηγαίνει μόνο στη μισή συχνότητα δειγματοληψίας. Και αυτός είναι αυτό που βλέπουμε στις εγκαταστάσεις. Αυτοί οι αριθμοί Fibonacci είναι ψευδώνυμα των πραγματικών διαδικασιών και των συχνοτήτων. Οι επόμενες τρεις εικόνες παρουσιάζουν το αποτέλεσμα της χρησιμοποίησης κάθε 5ου σημείου, κάθε 8ου σημείου, κάθε 13ου σημείου, και κάθε 21ου σημείου, σε μία σειρά των κύκλων των οποίων η συχνότητα αφορά τη δειγματοληψία-ποσοστό από τη χρυσή αναλογία. Σημειώστε πώς οι γραμμές ισιώνουν προς τα έξω όσο το διάστημα αυξάνεται, που αντιστοιχούν σε μεγάλες περιόδους του σήματος-πληροφορίας.

Σχήμα 3.3.10 Στη σύνδεση ανά 5σημεία φαίνεται ότι η γραμμή τάσης παρουσιάζει ταλαντώσεις.

Σχήμα 3.3.11 Στη σύνδεση ανά 8 σημεία φαίνεται ότι η γραμμή τάσης παρουσιάζει σημείο καμπής.

Page 24: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

24

Σχήμα 3.3.12 Στη σύνδεση ανά 13 σημεία φαίνεται ότι η γραμμή τάσης παρουσιάζει φθίνουσα πορεία.

Σχήμα 3.3.13 Στη σύνδεση ανά 21 σημεία φαίνεται ότι η γραμμή τάσης παρουσιάζει αυξητική πορεία. Η επόμενη εικόνα παρουσιάζει συχνότητα εξόδου (άξονας Υ) συναρτήσει της συχνότητας εισόδου (άξονας Χ). Μόνο οι συχνότητες εισαγωγής μέχρι Fn η συχνότητα nyquist έχουν οποιαδήποτε πιθανότητα της καταγραφής σωστά. Το Fn είναι το ένα δεύτερο της συχνότητας δειγματοληψίας. Σημειώστε ότι εάν ένα σήμα αποτελεσθεί από ένα σφάλμα περιόδου τριών κύκλων ενός ημιτόνου 1 kHz, ένα ποσοστό δειγματοληψίας 2 kSa/s δεν θα αρκέσει. Το εύρος ζώνης ενός τέτοιου σήματος είναι περισσότερο από 1 kHz, επειδή το σήμα περιλαμβάνει αποτελεσματικά ένα 1 kHz ημίτονο, εύρος που διαμορφώνεται από έναν απότομο παλμό 3msec. Οι πλευρικές ζώνες συχνοτήτων που απαιτούνται για να χαρακτηρίσουν αυτό είναι εκτενείς.

Σχήμα 3.3.14 Απεικόνιση συχνοτήτων nyquist εισόδου και εξόδου.

Page 25: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

25

Η επόμενη εικόνα παρουσιάζει το φάσμα των περιόδων ενός ψευδωνύμου για Ν=1 έως 300. Βλέπουμε σαφώς την αιχμή στο κόκκινο στους Fibonacci αριθμούς 2. 3. 5. 8. 13. 21. 34. 55. 89. 144 και 233, που αντιστοιχούν στα μακροχρόνια μήκη κύματος ανωτέρω. Μεταξύ αυτών, για τα σημεία τμημάτων, υπάρχουν θυγατρικές αιχμές, και στο χρυσό τμήμα εκείνοι, ακόμα μικρότερες αιχμές. Αυτό είναι ένα σημαντικό διάγραμμα. Χρησιμοποιώντας μόνο το τμήμα χρυσής τομής - GS - και καμία άλλη παράμετρο, παράγει τους αριθμούς Fibonacci.

Σχήμα 3.3.15 Φάσμα περιόδων για τιμές Ν=1 έως 300. Διακρίνονται με ερυθρό χρώμα θετικές και αρνητικές εξάρσεις (peaks) στις 2, 3, 5, 8, 13, 21, 34, 55, 89 και 144. Τέλος, κατωτέρω, το διάγραμμα αντιπροσωπεύει τη σειρά των τιμών Ν=0 έως 1000, συμπεριλαμβανομένων των αριθμών Fibonacci 377..610 και 987, με τη διαίρεση των κάθετων τιμών με το Ν, για να παρουσιάσουν ευκρινέστερα πολλαπλάσια χρυσά τμήματα. Αυτοί παρουσιάζονται από οριζόντιες γραμμές. Οι σύντομες οριζόντιες γραμμές χαρακτηρίζουν τα δύο χρυσά σημεία τμημάτων (GS) σε κάθε τμήμα. Εάν το μήκος μιας μακροχρόνιας οριζόντιας γραμμής λαμβάνεται ως 1, κατόπιν τα τρία τμήματα έχουν τα μήκη GS2, GS3 και GS2 αντίστοιχα. GS2 και GS3 προσθέτει GS.

Οι τιμές είναι: GS=0.618033989... GS2=0.3819659... GS3=0.2360678...

Page 26: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

26

Σχήμα 3.3.16 Το διάγραμμα φάσματος περιόδων τιμών Ν=0 έως 100 (συμπεριλαμβανόμενων των αριθμών Fibonacci 377, 610 και 987) παρατηρούνται οι δομές να αναπαράγονται μέσα στις ίδιες δομές με συνεχώς μειούμενη κλίμακα. Το διάγραμμα μοιάζει με ένα μονοδιάστατη απεικόνιση fractal. 3.4. Γενικά περί Αλγόριθμων Η αναδρομικότητα και οι σχέσεις που τη χαρακτηρίζουν παράγουν ακολουθίες αριθμών. Ως εκ της φύσεως αυτής οι αναδρομικές σχέσεις παράγουν ακολουθίες-λύσεις σε συγκεκριμένης μορφής προβλήματα. Χρησιμοποιώντας την αναδρομικότητα ως αρχή, η ενασχόληση με πλέον σύνθετα προβλήματα οδηγεί στη δημιουργία των αλγόριθμων.

Η θεωρία των αλγόριθμων έχει μεγάλη παράδοση και η ηλικία μερικών αλγόριθμων αριθμεί χιλιάδες χρόνια, όπως για παράδειγμα ο αλγόριθμος του Ευκλείδη για την εύρεση του μέγιστου κοινού διαιρέτη δύο αριθμών ή το λεγόμενο κόσκινο του Ερατοσθένη για την εύρεση των πρώτων αριθμών από 1 ως n. Σήμερα το πεδίο της Θεωρίας Αλγόριθμων είναι ένα ιδιαίτερα ευρύ και πλούσιο πεδίο. Πληθώρα συγγραμμάτων έχει εμφανιστεί στη βιβλιογραφία ενώ συνεχίζεται η περαιτέρω εμβάθυνση σε νέα σύγχρονα προβλήματα. Οι περισσότεροι από τους αλγόριθμους που συνήθως εξετάζονται στα σχετικά βιβλία έχουν προταθεί τα τελευταία 25 χρόνια, όση περίπου είναι και η ηλικία της πληροφορικής ως μιας νέας αυθύπαρκτης επιστήμης.

Η λέξη αλγόριθμος (algorithm) προέρχεται από μια μελέτη του Πέρση μαθηματικού Abu Ja’far Mohammed ibn Musa al Khowarizmi που έζησε περι το 825 μ.Χ. Πέντε αιώνες αργότερα η μελέτη αυτή μεταφράστηκε στα λατινικά και άρχιζε με τη φράση ‘’Algoritimi dixit…’’ (ο αλγόριθμος λέει...). Η μελέτη του al Khowarizmi υπήρξε η πρώτη πλήρης πραγματεία άλγεβρας (όρος που και αυτός προέρχεται από το αραβικό al-jabr=αποκατάσταση), γιατί ένας από τους σκοπούς της άλγεβρας είναι και η αποκατάσταση της ισότητας σε μια εξίσωση. Ο όρος αλγόριθμος επέζησε επί χίλια χρόνια ως σπάνιος όρος που σήμαινε κάτι σαν «συστηματική διαδικασία αριθμητικών χειρισμών». Τη σημερινή του αξία την απέκτησε από την αρχή του 20ού αιώνα με την ανάπτυξη της ομώνυμης θεωρίας και φυσικά με την επικαιρότητα των ηλεκτρονικών υπολογιστών.

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

Η έννοια του αλγόριθμου γίνεται ευκολότερα αντιληπτή με το παρακάτω παράδειγμα. Αν κάποιος επιθυμεί να γευματίσει θα πρέπει να εκτελέσει κάποια συγκεκριμένα βήματα: να συγκεντρώσει τα υλικά, να προετοιμάσει τα σκεύη μαγειρικής, να παρασκευάσει το φαγητό, να στρώσει το τραπέζι, να ετοιμάσει τη σαλάτα, να γευματίσει, να καθαρίσει το τραπέζι και να πλύνει τα πιάτα. Προφανώς, η προηγούμενη αλληλουχία οδηγεί στο επιθυμητό αποτέλεσμα. Δεν είναι όμως η μοναδική για την επίτευξη του σκοπού, αφού μπορεί να αλλάξει η σειρά των βημάτων (π.χ. πρώτα να ετοιμάσει τη σαλάτα και μετά να στρώσει το τραπέζι). Ωστόσο το νόημα είναι πως η κατάτμηση μιας σύνθετης εργασίας σε διακριτά βήματα που εκτελούνται διαδοχικά, είναι ο ποιο πρακτικός τρόπος επίλυσης πολλών προβλημάτων

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

Page 27: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

27

Υλικού (hardware). Η ταχύτητα εκτέλεσης ενός αλγόριθμου επηρεάζεται από τις διάφορες τεχνολογίες υλικού δηλαδή από τον τρόπο που είναι δομημένα σε μία ενιαία αρχιτεκτονική τα διάφορα συστατικά του υπολογιστή (δηλαδή ανάλογα με το αν ο υπολογιστής έχει κρυφή μνήμη και πόση, ανάλογα με την ταχύτητα της κύριας και δευτερεύουσας μνήμης κ.ο.κ.).

Γλωσσών προγραμματισμού (programming languages).Το είδος της γλώσσας προγραμματισμού που χρησιμοποιείται (δηλαδή χαμηλότερου ή υψηλότερου επιπέδου) αλλάζει τη δομή και τον αριθμό των εντολών ενός αλγόριθμου. Γενικά μία γλώσσα που είναι χαμηλότερου επιπέδου (όπως η assembly ή η γλώσσα C) είναι ταχύτερη από μία άλλη γλώσσα που είναι υψηλότερου επιπέδου (όπως η Basic ή Pascal). Ακόμη σημειώνεται ότι διαφορές συναντώνται μεταξύ των γλωσσών σε σχέση με το πότε εμφανίστηκαν. Για παράδειγμα, παλαιότερα μερικές γλώσσες προγραμματισμού δεν υποστήριζαν την αναδρομή (έννοια που θα εξετάσουμε σε βάθος αργότερα).

Θεωρητική (theoretical). Το ερώτημα που συχνά τίθεται είναι αν πράγματι υπάρχει ή όχι κάποιος αποδοτικός αλγόριθμος για την επίλυση ενός προβλήματος. Η εξέταση αυτού του ερωτήματος είναι δύσκολο να σχολιαστεί στο πλαίσιο του βιβλίου αυτού, επειδή απαιτεί μεγάλη θεωρητική κατάρτιση. Ωστόσο η προσέγγιση αυτή είναι ιδιαίτερα σημαντική, γιατί προσδιορίζει τα όρια της λύσης που θα βρεθεί σε σχέση με ένα συγκεκριμένο πρόβλημα.

Αναλυτική (analytical). Μελετώνται οι υπολογιστικοί πόροι (computer resources) που απαιτούνται από έναν αλγόριθμο, όπως για παράδειγμα το μέγεθος της κύριας και της δευτερεύουσας μνήμης, ο χρόνος για λειτουργίες CPU και για λειτουργίες εισόδου/εξόδου κ.λπ.

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

Η ανάλυση και η μελέτη των αλγόριθμων είναι ένας τομέας της επιστήμης της πληροφορικής και συχνά ασκείται αφαιρετικά (χωρίς τη χρήση μιας συγκεκριμένης γλώσσας προγραμματισμού ή άλλη εφαρμογή). Από αυτή την άποψη, μοιάζει με άλλους μαθηματικούς τομείς, συγκεκριμένα στο ότι η εστίαση της ανάλυσης είναι πάνω στις βασικές αρχές του αλγορίθμου, και όχι σε οποιαδήποτε ιδιαίτερη εφαρμογή του. Ένας τρόπος απεικόνισης ενός αλγόριθμου είναι το γράψιμο του ψευδοκώδικα. Άλλοι τρόποι είναι: με ελεύθερο κείμενο, με φυσική γλώσσα περιγράφοντας τα βήματα και με λογικό διάγραμμα. Ορισμός 3.4.1 Αλγόριθμος είναι μια ιεραρχημένη διαδοχή οδηγιών που αφορούν ενέργειες των οποίων η εκτέλεση έχει ως αποτέλεσμα ένα επιδιωκόμενο αποτέλεσμα ή τη λύση ενός προβλήματος.

Η συνταγή για τα πασχαλινά κουλουράκια της γιαγιάς είναι ένα είδος αλγόριθμου. Ο όρος έλκει την καταγωγή του από την κατά την αρχαιότητα υφιστάμενη χώρα του Χορέζμ που βρισκόταν εκεί όπου σήμερα οι περιοχές Καζακστάν, Τουρκμενιστάν και Ουζμπεκιστάν. Περί το 825 μ.Χ. είδε το φως η κεφαλαιώδης εργασία σχετικά με την άλγεβρα και το ινδικό σύστημα αρίθμησης, του Μοχάμεντ, γιου του Μουσά από το Χορέζμ (Mohammed ibn Musa al-Khowarizmi). Το 1857 το κείμενο μεταφράστηκε στη λατινική γλώσσα. Σε ελεύθερη απόδοση του λατινικού κειμένου το βιβλίο αρχίζει ως εξής: «Ο Αλγόριθμος μίλησε …..». Ακριβέστερα από το κείμενο του al-Khowarizmi “Χισάμπ αλ τζαμπρ β’αλ μουκαλαμπάχ” προήλθε ο αγγλοσαξονικός όρος άλτζεμπρα και εξ αυτού ο ελληνικός «άλγεβρα».

Ο πρώτος αλγόριθμος αφορά τη σχέση των ινδοαραβικών αριθμητικών. Στο παρόν κείμενο θα ασχοληθούμε με αλγόριθμους για την επίλυση προβλημάτων τόσο στα μαθηματικά, όσο και στην επεξεργασία δεδομένων. Ας θεωρήσουμε τη βασική σχέση αx=β, όπου α και β είναι δεδομένοι αριθμοί. Αναζητούμε έναν αλγόριθμο που επιλύει το πρόβλημα, όταν είναι γνωστοί οι αριθμοί α και β. Ο τύπος x=β/α λύνει το πρόβλημα, αρκεί ο α να είναι μη μηδενικός αριθμός. Επειδή ο αλγόριθμος πρέπει να είναι αποτελεσματικός χωρίς εξαιρέσεις, θα πρέπει η εξαιρετική περίπτωση α=0 να συμπεριληφθεί στον σχεδιασμό. Αν β≠0, δεν υπάρχουν αριθμοί x που να ικανοποιούν την 0x=β, αλλά αν β=0 τότε κάθε αριθμός αποτελεί λύση. Με την ανάλυση αυτή μπορούμε να περιγράψουμε τον αλγόριθμο. Για να λυθεί η αx=β απαιτείται η διερεύνηση περί της ύπαρξης και της μοναδικότητας της λύσης, που σχηματοποιείται στον Αλγόριθμο 3.4.1.

Page 28: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

28

Αλγόριθμος 3.4.1 Αν α≠0, τότε η απάντηση είναι β/α. Αν α=0 και β≠0, τότε δεν υπάρχει απάντηση. Αν α=0 και β=0, τότε κάθε αριθμός είναι λύση.

Ένας αλγόριθμος θα πρέπει να έχει είσοδο δεδομένων, επεξεργασία και έξοδο αποτελεσμάτων: Ένα ή περισσότερα δεδομένα εισόδου, πρέπει να εισάγονται κατά την εκκίνηση εκτέλεσης του αλγόριθμου. Δίνει τουλάχιστον ένα μέγεθος σαν αποτέλεσμα που εξαρτάται κατά κάποιο τρόπο από τις αρχικές εισόδους. Ορισμός 3.4.2 Κάθε είσοδος που ικανοποιεί τις προδιαγραφές του προβλήματος καλείται νόμιμη και λέμε πως ορίζει ένα συγκεκριμένο στιγμιότυπο του προβλήματος.

Η ιεραρχημένη δομή των εντολών επεξεργάζεται τα στιγμιότυπα εισόδου και παράγει μια λύση του προβλήματος στην έξοδο. Προφανώς δυο διαφορετικοί αλγόριθμοι παράγουν με διαφορετικό τρόπο λύσεις, οι οποίες δεν είναι πάντα οι ίδιες. Προφανώς μεταξύ δυο λύσεων μια είναι ακριβέστερη της άλλης. Θα λέμε ότι μια λύση είναι ακριβέστερη μια άλλης, εφόσον το περιεχόμενο σφάλμα είναι μικρότερο του σφάλματος της δεύτερης λύσης. Ορισμός 3.4.3 Ένας αλγόριθμος επιλύει ένα πρόβλημα, όταν για κάθε στιγμιότυπο του προβλήματος τερματίζει μετά από πεπερασμένο χρόνο, παράγοντας σωστή έξοδο.

Η επίλυση του προβλήματος εξαρτάται από ένα αριθμό παραγόντων που σχετίζονται με τη δομή του αλγόριθμου. Η εξέταση αυτών των παραγόντων και η αξιολόγησή τους ώστε να προκύπτουν συμπεράσματα για την επάρκειά του, έχουν αποδελτιοποιηθεί σε ένα αριθμό κριτηρίων που παρουσιάζονται στην Παράγραφο 3.5. 3.5. Κριτήρια Αλγόριθμου Μεταξύ διαφόρων και διαφορετικών αλγόριθμων που μπορεί να προτείνονται για τη λύση ενός προβλήματος, αναζητείται ο «καλύτερος». Τι εννοεί όμως κάποιος όταν αναφέρεται στον καλύτερο αλγόριθμο;

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

Συγκρίνουμε τους αλγόριθμους με βάση την αποδοτικότητά τους ως συνάρτηση του μεγέθους των περιπτώσεων του προβλήματος για τον υπολογισμό χρόνου ή χώρου. Διακρίνονται: η θεωρητική προσέγγιση που χρησιμοποιείται το μοντέλο της Μηχανής Turing για την κατάταξή τους σε κλάσεις πολυπλοκότητας και η εμπειρική προσέγγιση στην οποία ως μηχανή εκτέλεσης χρησιμοποιείται το μοντέλο της Μηχανής Τυχαίας Προσπέλασης (RAM). Οι στοιχειώδεις πράξεις που μπορεί να εκτελέσει μια μηχανή RAM έχουν κάποιο κόστος σε χρόνο.

Μέτρηση μοναδιαίου κόστους: σταθερό, πεπερασμένο κόστος ανεξαρτήτως του μήκους της δυαδικής αναπαράστασης των τελεστών.

Μέτρηση λογαριθμικού κόστους: η πράξη παίρνει χρόνο ανάλογο με το μήκος της δυαδικής αναπαράστασης. Θεώρημα 3.5.1 Κάθε υπολογιστική διαδικασία μιας μηχανής Turing, με κόστος πολυωνυμικό στο μέγεθος της εισόδου, μπορεί να εξομοιωθεί από μία υπολογιστική, πολυωνυμική στο μέγεθος της εισόδου, διαδικασία μιας μηχανής RAM και αντίστροφα.

H αποδοτικότητα χαρακτηρίζεται ως συνάρτηση του μεγέθους του προβλήματος.

Page 29: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

29

Με τον όρο μέγεθος αναφερόμαστε σε οποιοδήποτε ακέραιο που με κάποιο τρόπο «μετράει» τον αριθμό των συστατικών μερών μιας περίπτωσης του προβλήματος.

Το μέγεθος εισόδου σε ένα πρόβλημα ταξινόμησης είναι το πλήθος n των προς διάταξη αντικειμένων. Σε έναν αλγόριθμο εύρεσης ελάχιστου επικαλυπτόμενου δένδρου σε γράφο με σύνολο κορυφών V και σύνολο ακμών E, η είσοδος έχει μέγεθος n=|V|+|E|. Στην εξαγωγή αποτελέματος πολλαπλασιασμών μεταξύ μεγάλων ακεραίων το μέγεθος εισόδου είναι το συνολικό μήκος σε αριθμό bit της δυαδικής αναπαράστασής τους (όχι το πλήθος τους). Παράδειγμα 3.5.1 (Πρόβλημα της Ταξινόμησης). To πρόβλημα της ταξινόμησης έχει απασχολήσει πολλούς αναλυτές συστημάτων. Διακρίνονται πολλές διαδικασίες για τη λύση του, ανάλογα πάντα με την ταξινομούμενη οντότητα, που μπορεί να είναι αριθμοί, πίνακες, φραγμένες συναρτήσεις κ.λπ. Αναφέρονται οι μέθοδοι ευθείας εισαγωγής, ευθείας ανταλλαγής, ευθείας επιλογής, η ταξινόμηση με ελεούμενες αυξήσεις, η ταξινόμηση με διαμερισμό και ανταλλαγή και η ταξινόμηση με σωρό. Αυτές αποτελούν μικρό μόνο μέρος των αλγόριθμων που είναι σε χρήση. Περισσότερη πληροφορία για αυτές τις μεθόδους ο αναγνώστης μπορεί να βρει εδώ. Παρακάτω θα αναφέρουμε μια περιγραφή του Αλγόριθμου της φυσαλίδας (bubble-sort).

Ο αλγόριθμος φυσαλίδας είναι ένας απλός στην κατανόησή του αλγόριθμος που χρησιμοποιείται στην ταξινόμηση, αύξουσα ή φθίνουσα, των στοιχείων ενός πίνακα. Το όνομά του οφείλεται στην ιδιότητα που έχουν οι φυσαλίδες να αναδύονται μια μια προς την επιφάνεια ενός υγρού. Με την ίδια λογική και οι αριθμοί ενός πίνακα, όσο μεγαλύτεροι (κατά φθίνουσα) ή μικρότεροι (κατά αύξουσα σειρά) είναι καταλαμβάνουν τις πρώτες θέσεις του πίνακα που ζητήθηκε να ταξινομηθεί. Ένα παράδειγμα σε ψευδογλώσσα του συγκεκριμένου αλγόριθμου είναι το εξής (κατά αύξουσα σειρά). Πρόγραμμα 3.5.1 BUBBLESORT(A) 1 for i ← 1 to length[A] 2 do for j ← length[A] downto i + 1 3 do if A[j] < A[j - 1] 4 then exchange A[j] ↔ A[j - 1] Συγκεκριμένα, στο 1ο βήμα γίνεται, μέσω μίας επανάληψης, καταχώρηση ενός αριθμού στην μεταβλητή «i». Αυτοί οι αριθμοί θα είναι οι αριθμοί του πίνακα όπως ήταν αρχικά τοποθετημένοι και σε κάθε καινούργια επανάληψη θα καταχωρείται στη μεταβλητή ο αριθμός που βρίσκεται στην αμέσως μεγαλύτερη θέση του πίνακα, ξεκινώντας από την 1η.

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

Στο 3ο βήμα γίνεται ο έλεγχος για το αν μια θέση είναι μικρότερη από την προηγούμενή της και τέλος στο 4ο βήμα, εφόσον ισχύει το 3ο, γίνεται αντικατάσταση του ενός αριθμού από τον άλλον.

Έτσι ουσιαστικά, συγκρίνουμε ένα προς ένα τα στοιχεία ενός πίνακα, το καθένα από αυτά με όλα τα υπόλοιπα στοιχεία του πίνακα, και αναλόγως τι σειρά θέλουμε να ακολουθηθεί, τα τοποθετούμε στις πρώτες ή στις τελευταίες θέσεις του πίνακα. Οι αλγόριθμοι θα πρέπει επίσης να πληρούν κάποια πρότυπα και να διατυπώνονται με συγκεκριμένο τρόπο. Έτσι ένας αλγόριθμος πρέπει να ικανοποιεί τα επόμενα κριτήρια: Καθοριστικότητα: Κάθε κανόνας του ορίζεται επακριβώς και η αντίστοιχη διεργασία είναι συγκεκριμένη. Περατότητα: Κάθε εκτέλεση είναι πεπερασμένη, δηλαδή τελειώνει ύστερα από έναν πεπερασμένο αριθμό διεργασιών ή βημάτων. Αποτελεσματικότητα: Είναι μηχανιστικά αποτελεσματικός, δηλαδή όλες οι διαδικασίες που περιλαμβάνει μπορούν να πραγματοποιηθούν με ακρίβεια και σε πεπερασμένο χρόνο «με μολύβι και χαρτί». Επεκτασιμότητα: Κατά την εκκίνηση εκτέλεσης του αλγόριθμου καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών.

Page 30: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

30

Υπολογιστικό κόστος: Αποτιμάται σε έναν αριθμό που εκφράζει το πλήθος των ενεργειών που θα εκτελέσει ο αλγόριθμος. Κάθε ενέργεια θεωρητικά εκτελείται σε συγκεκριμένη σταθερή χρονική διάρκεια. Έτσι εκτιμάται και ο υπολογιστικός χρόνος εκτέλεσης ενός αλγόριθμου. Οι βρόχοι for και while θα χρεώνονται το πλήθος των επαναλήψεων επί το πλήθος των εντολών που εκτελούνται σε κάθε επανάληψη. Διακρίνονται επίσης κάποιες πράξεις, οι οποίες καλούνται κυρίαρχες πράξεις, δηλαδή αυτές που παίζουν ιδιαίτερα σημαντικό ρόλο στη συμπεριφορά του αλγόριθμου. Για παράδειγμα, στους αλγόριθμους ταξινόμησης οι κυρίαρχες πράξεις είναι οι συγκρίσεις και οι ανταλλαγές στοιχείων μεταξύ δύο θέσεων του πίνακα εισόδου. Παράδειγμα 3.5.2 Θα αναλύσουμε τον χρόνο λειτουργίας του αλγόριθμου selectionSort (X) που διατάσσει τα στοιχεία του πίνακα Χ. Ο αλγόριθμος αυτός είναι:

for (i=0;i<n;i++) start t1 n+1 min=i; t2 n

for (j=i+1;j<=n;j++) t3 ∑κ

j

j

if (a[j]<a[min]) min=j; t4 −∑κ

j

j κ

temp=a[i]; t5 n a[i]=a[min]; t6 n a[min]=temp; t7 n end Όπου t1 ο σταθερός χρόνος εκτέλεσης κάθε εντολής. Συνολικός χρόνος αλγορίθμου (Παράγραφος

3.13) 𝑓(n) είναι 𝑓(n)=(t3+t4) n2/2 +(t1+t2+ ½ (t3-t4)+t5+t6+t7)×n+t1. 3.6. Περιγραφή και Αναπαράσταση Οι αλγόριθμοι περιγράφονται με διαφορετικούς τρόπους όπως της λεκτικής περιγραφής, του λογικού διαγράμματος ή του κώδικα λογισμικού. Τέσσερις είναι οι βασικοί τρόποι αναπαράστασης ενός αλγόριθμου: Ελεύθερο κείμενο, που αποτελεί τον πιο αδόμητο τρόπο παρουσίασης αλγόριθμου. Ελλοχεύει η δημιουργία μιας μη εκτελέσιμης κατάστασης παραβιάζοντας έτσι το κριτήριο της αποτελεσματικότητας. Η αναπαράσταση με ελεύθερο κείμενο (free text), αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης αλγορίθμου. Έτσι εγκυμονεί τον κίνδυνο ότι μπορεί εύκολα να οδηγήσει σε μη εκτλέσιμη παρουσίαση παραβιάζοντας το τελευταίο χαρακτηριστικό των αλγόριθμων δηλαδή την αποτελεσματικότητα. Διάγραμμα ροής (diagramming techniques), που συνιστά έναν γραφικό τρόπο παρουσίασης του αλγορίθμου. Από τις διάφορες διαγραμματικές τεχνικές που έχουν επινοηθεί, η πιο παλιά και η πιο γνωστή ίσως είναι το διάγραμμα ροής (flow chart). Ωστόσο η χρήση διαγραμμάτων ροής για την παρουσίαση αλγορίθμων δεν αποτελεί την καλύτερη λύση, γι’ αυτό και εφαρμόζονται όλο και σπανιότερα στην πράξη. Φυσική γλώσσα που εκτελείται κατά βήματα. Σε αυτή την περίπτωση μπορεί να παραβιαστεί το κριτήριο του καθορισμού μεταξύ των βημάτων. Χρειάζεται προσοχή, γιατί μπορεί να παραβιαστεί το τρίτο βασικό χαρακτηριστικό ενός αλγόριθμου, όπως προσδιορίστηκε προηγουμένως, δηλαδή το κριτήριο του καθορισμού. Κωδικοποίηση (coding) του αλγόριθμου σε ψευδογλώσσα ή γλώσσα προγραμματισμού. Έτσι ο αλγόριθμος παρουσιάζεται πιο συνοπτικός, συμπαγής ενώ πληρεί και τις προϋποθέσεις του Δομημένου προγραμματισμού. Επειδή η λεκτική περιγραφή δεν είναι πάντα ακριβής και επιτρέπει διαφορετικές ερμηνείες, συχνά χρησιμοποιούνται μεταβλητές και αριθμητικές περιγραφές σύμφωνα με την τυποποίηση γλωσσών ανθρώπου-

Page 31: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

31

μηχανής. Έτσι, σε BASIC format το 3x και το x2 αποδίδεται με 3×x και x2, ενώ ως παράδειγμα χρήσης λεκτικών μεταβλητών παρατίθεται το. Παράδειγμα 3.6.1 «Το 19x πρωθυπουργός ήταν ο P». Αν x=78 και Ρ=Κωνσταντίνος Καραμανλής, τότε η πρόταση διαβάζεται: «Το 1978 πρωθυπουργός ήταν ο Κωνσταντίνος Καραμανλής». Όπως αναφέρθηκε και προηγούμενα, το ίδιο πρόβλημα μπορεί να λυθεί με διαφορετικούς τρόπους. Οι αλγόριθμοι που χρησιμοποιούν τον πιο απλό και προφανή τρόπο για την επίλυση ενός προβλήματος καλούνται στη διεθνή βιβλιογραφία αλγόριθμοι brute-force. Η λειτουργία τους απαιτεί την εξάντληση όλων των δυνατών συνδυασμών χρήσης των στιγμιότυπων. Η εξέλιξη των μηχανών και η συνεχώς αυξανόμενη υπολογιστική τους ικανότητα επιτρέπει την βελτίωση της αποτελεσματικότητας με τη σχεδίαση πλέον σύνθετων αλγόριθμων. Ορισμός 3.6.1 Αλγόριθμοι των οποίων η λειτουργία δεν ακολουθεί συγκεκριμένη αλλά μεταβλητή ροή, καλούνται αλγόριθμοι οπισθοδρόμησης.

Οι αλγόριθμοι οπισθοδρόμησης σε κάθε (ή σε μερικά) βήματα εξετάζουν το αποτέλεσμα της απόφασης στην οποία έχουν καταλήξει και κατευθύνουν τον έλεγχο εκτέλεσης εντολής σε διαφορετικά σημεία της ροής. Αναφέρουμε δε και μια άλλη κατηγορία αλγόριθμων που έχουν σχεδιαστεί έτσι ώστε να διαιρούν το πρόβλημα σε μικρότερα όμοια προς το αρχικό προβλήματα των οποίων οι λύσεις συνδυαζόμενες να παράγουν το τελικό αποτέλεσμα στην έξοδο. Τους αλγόριθμους αυτούς συνήθως συναντούμε με την ονομασία «διαίρει και βασίλευε». Παράδειγμα 3.6.2 Ας θεωρήσουμε, για παράδειγμα ότι θέλουμε να γευματίσουμε και επομένως πρέπει να εκτελέσουμε τις επόμενες ενέργειες:

• να συγκεντρώσουμε τα υλικά, • να προετοιμάσουμε τα σκεύη μαγειρικής, • να παρασκευάσουμε το φαγητό, • να ετοιμάσουμε τη σαλάτα, • να στρώσουμε το τραπέζι, • να γευματίσουμε, • να καθαρίσουμε το τραπέζι,και • να πλύνουμε τα πιάτα και τα κουζινικά.

Είναι ευνόητο ότι η προηγούμενη αλληλουχία των ενεργειών οδηγεί στο επιθυμητό αποτέλεσμα. Βέβαια, αυτή η αλληλουχία δεν είναι η μοναδική για την επίτευξη του σκοπού, αφού, για παράδειγμα, μπορούμε πρώτα να ετοιμάσουμε τη σαλάτα και μετά να παρασκευάσουμε το φαγητό, ενώ ακόμη μπορούμε πρώτα να πλύνουμε τα πιάτα και μετά να καθαρίσουμε το τραπέζι. Ωστόσο, το παράδειγμα θέλει να δείξει, ότι η θεώρηση μίας σύνθετης εργασίες με διακριτά βήματα που εκτελούνται διαδοχικά, είναι ένας πολύ χρήσιμος και πρακτικός τρόπος σκέψης για την επίλυση πολλών (αν όχι όλων) προβλημάτων. Παράδειγμα 3.6.3 (Μετατροπή Αριθμού από το Δεκαδικό στο Δυαδικό Σύστημα Αρίθμησης). Το δυαδικό σύστημα είναι η «γλώσσα» που χρησιμοποιείται από τους υπολογιστές και αποτελείται από τα ψηφία 0 και 1.Το σύστημα αυτό μπορεί να μετατραπεί στο γνωστό μας δεκαδικό (0-9), ώστε να γίνεται κατανοητό από τους ανθρώπους. Επιτεύξιμη είναι επίσης και η αντίστροφη διαδικασία αλγόριθμος που ακολουθείται προκειμένου να επιτευχθεί αυτό είναι ο εξής:

Διαιρούμε τον προς μετατροπή δεκαδικό αριθμό με το 2 (λόγω δυαδικού συστήματος).

Page 32: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

32

Από την παραπάνω διαίρεση προκύπτει ένα ακέραιο πηλίκο και ένα ακέραιο υπόλοιπο, το οποίο, εφόσον διαιρούμε με το 2, μπορεί να είναι 0 ή 1. Το υπόλοιπο το αντιγράφουμε χωριστά σε μια στήλη.

Το ακέραιο πηλίκο από την προηγούμενη διαίρεση το διαιρούμε ξανά με το 2 και γράφουμε στην στήλη, κάτω από το πρώτο, το νέο υπόλοιπο.

Η διαδικασία αυτή ακολουθείται έως ότου να προκύψει διαίρεση με ακέραιο πηλίκο μηδέν και υπόλοιπο 1.

Τέλος, ο δυαδικός αριθμός που αναζητούμε είναι η στήλη των υπολοίπων γραμμένη αντίστροφα, δηλαδή ξεκινώντας από το τελευταίο υπόλοιπο μέχρι το πρώτο [2]. Παράδειγμα 3.6.4 Έστω ότι θέλουμε να μετατρέψουμε το δεκαδικό αριθμό 41 στο δυαδικό σύστημα. Ακολουθώντας τα βήματα του παραπάνω αλγορίθμου προκύπτει: ακέραιο πηλίκο ακέραιο υπόλοιπο 41/2= 20 1 20/2= 10 0 10/2= 5 0 5/2= 2 1 2/2= 1 0 1/2= 0 1 Και άρα ο αριθμός που αναπαριστά τον 41 στο δυαδικό σύστημα είναι ο 101001, δηλαδή (41)10=(101001)2. Παράδειγμα 3.6.5 (Μετατροπή Αριθμού από το Δυαδικό στο Δεκαδικό Σύστημα Αρίθμησης). Σε αυτή τη φάση της εργασίας θα κάνουμε ακριβώς την αντίθετη μετατροπή από πριν. Δηλαδή θα μετατρέψουμε έναν αριθμό από το δυαδικό στο δεκαδικό σύστημα, ώστε να είναι κατανοητός από τον άνθρωπο. Ο αλγόριθμος που ακολουθείται για αυτή τη διαδικασία είναι ο εξής:

Γράφουμε τον δυαδικό αριθμό οριζόντια και ξεκινώντας από το τελευταίο ψηφίο, αριθμούμε το κάθε ψηφίο από το μηδέν ως εκεί που φτάνει ο αριθμός.

Πχ: έστω έχουμε τον αριθμό 1101 του δυαδικού συστήματος αρίθμησης. Τον γράφουμε με αυτή τη μορφή.

Δυνάμεις του 2 3 2 1 0 Συντελεστές 1 1 0 1

Ο αριθμός που ψάχνουμε στο δεκαδικό σύστημα είναι το άθροισμα των γινομένων του αριθμού τις άσπρης στήλης επί το 2 υψωμένο στη δύναμη που υποδεικνύει ο αριθμός της πορτοκαλί στήλης. Δηλ: x=1×20+0×21+1×22+1×23, x=1+0+4+8, x=13. Και τελικά ο αριθμός που αναζητάμε είναι ο αριθμός 13. Η σχεδίαση αλγόριθμων που επιτρέπει την εφαρμογή μεθόδων βελτιστοποίησης της απόδοσης κάθε ενός, ή ενός μέρους των ιεραρχημένων εντολών τους, επιτρέπει τη δυναμική βελτίωση των ιδιοτήτων που υπακούν στα προηγούμενα κριτήρια. Οι αλγόριθμοι αυτοί είναι αρκετά χρονοβόροι (time consuming) από εκείνους που δεν διαθέτουν τη δυνατότητα αυτή. Για να τους διακρίνουμε, θα τους καλούμε άπληστους αλγόριθμους (greedy algorithms) και θα τους ορίζουμε σύμφωνα με τον επόμενο ορισμό. Παράδειγμα 3.6.6 (Αλγόριθμος Bellman-Ford). Διατύπωση του Προβλήματος Να βρεθεί η διαδρομή ελάχιστου βάρους, που συνδέει τις κορυφές s και u στον γράφο G(V,E,w) του σχήματος.

Page 33: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

33

Σχήμα 3.6.1 Προσανατολισμένος γράφος με βάρη (Κεφάλαιο 6). Όπου w=w(v,u) το βάρος της ακμής μεταξύ των κορυφών v και u. Κατανόηση του Προβλήματος Ξεκινώντας από την αρχική κορυφή s, θα πρέπει να εξετάσουμε για κάθε μία από τις άλλες κορυφές όλες τις διαδρομές μήκους i. Προφανώς θα πρέπει για όλες αυτές τις διαδρομές να υπολογιστεί και το συνολικό βάρος.

Θα πρέπει επίσης να ληφθεί υπόψη η ύπαρξη αρνητικών βαρών, δεδομένου ότι η ύπαρξή τους θα μπορούσε να παράγει και διαδρομές αρνητικού βάρους (διαδρομή s-d-b-c).

Στη συνέχεια θα πρέπει να συγκριθούν (ως προς τα βάρη) οι διαδρομές του ίδιου μήκους. Λύση του Προβλήματος Μια διαδικασία που θα μπορούσε να δώσει λύση στο πρόβλημα εντοπισμού διαδρομής ελάχιστου βάρους μπορεί να είναι η ακόλουθη. Δοκιμάζονται όλες οι ακμές σε κάθε πιθανή θέση για το συντομότερο s – v μονοπάτι (ταυτόχρονα για όλες τις v). Στην εκκίνηση ο συσσωρευτής D[v] λαμβάνει τιμές D[s]=0 και D[v]=∞. Εισάγεται και μια μεταβλητή που καταχωρεί τις κορυφές που ελέγχονται σε ένα βρόγχο.

• D(v,i)=μήκος συντομότερου s–v μονοπ. με ≤i ακμές. • Αρχικά D(s,0)=0 και D(v,0)=∞ για κάθε v≠s. • Από ΣΜ με ≤i ακμές σε ΣΜ με ≤i+1 ακμές. • (Απλό) μονοπάτι έχει ≤n–1 ακμές⇒D(v,n–1)=d(s,v). • D(v,n)<D(v,n–1)ανν κύκλος αρνητικού μήκους.

Διατύπωση του Αλγόριθμου Ο κώδικας που προκύπτει από τον σχεδιασμό έχει ως ακολούθως. Αλγόριθμος 3.6.1 for all v∈V do D[v])←∞; p[v])←nULL; D[s])←0; for i)←1 to n-1 do for all (u,v)∈E do if D[v]>D[u]+w(u,v) then D[v])←D[u]+w(u,v); P[v])←u; for all (u,v) ∈ E do

Page 34: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

34

if D[v]>D[u]+w(u,v) then return (nEG-CYCLE);

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

Ένας Άπληστος αλγόριθμος ακολουθεί την ευρηστική (heuristic) διαδικασία επίλυσης προβλήματος προκειμένου να φθάσει τοπικά (σε κάθε φάση επίλυσης του προβλήματος) στη βέλτιστη επιλογή λύσης. Η εφαρμογή όλων των φάσεων (υποπροβλήματα του αρχικού) ολοκληρώνεται με την προοπτική να παράσχει την βέλτιστη συνολικά λύση. Να σημειωθεί ότι η εφαρμογή ενός άπληστου αλγόριθμου δεν οδηγεί πάντα σε βέλτιστο αποτέλεσμα.

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

Καθώς η επιστήμη των μαθηματικών εξελισσόμενη εστιάζει το ενδιαφέρον της στην ακριβέστερη μοντελοποίηση των φυσικών, κοινωνικών και οικονομικών φαινομένων, εισάγει τη μη γραμμική δυναμική ως κύριο εργαλείο ανάλυσης. Έτσι, και στη θεωρία αλγορίθμων παρατηρείται η στροφή προς τον δυναμικό προγραμματισμό. Οι αλγόριθμοι δυναμικού προγραμματισμού αποσυνθέτουν το πρόβλημα σε μικρότερα επι μέρους προβλήματα, τα οποία επιλύονται σταδιακά. Η σύνθεση των λύσεων των μικρότερων και άρα απλούστερων υποπροβλημάτων εμφανίζεται στην έξοδο ως τελική λύση. Αναφέρονται επίσης ως ειδικές κατηγορίες, οι αλγόριθμοι αναγνώρισης συμβολοσειρών, οι αριθμητικοί αλγόριθμοι, οι αλγόριθμοι σημασιολογικής ανάλυσης (compilers) και οι αλγόριθμοι γράφων (Κεφάλαιο 6). Σχετική βιβλιογραφία υποδεικνύεται στο τέλος του κεφαλαίου. Ορισμός 3.6.3 Ένας κώδικας είναι μια αλυσίδα εντολών που αρχίζει με την πρώτη και συνεχίζει με την επόμενη, εκτός αν μεσολαβήσει μια εντολή ελέγχου που κατευθύνει την εκτέλεση σε άλλο σημείο της αλυσίδας.

Ορισμός 3.6.4 Μια εντολή ελέγχου κατευθύνει την εκτέλεση του προγράμματος είτε σε προηγούμενο, είτε σε επόμενο σημείο της ροής.

Δυο είναι οι βασικοί τύποι εντολών: οι υπό συνθήκη εντολές και οι εντολές απόδοσης τιμών. μια υπό συνθήκη εντολή έχει τη μορφή: Αν … κατάσταση …, τότε … δράση.

Όταν η ροή του αλγόριθμου φθάνει σε εντολή αυτού του είδους, ελέγχεται η ισχύς της κατάστασης και αν η τιμή ελέγχου είναι TRUE εκτελείται η δράση ενώ αν η τιμή είναι FALSE η ροή προχωρεί στην επόμενη εντολή. Η εκτέλεση της επόμενης εντολής πολλές φορές μπορεί να περιλαμβάνεται σε μια υπό συνθήκη εντολή με τη μορφή: Αν … κατάσταση …, τότε … δράση ; αλλοιώς … δράση.

Μια εντολή απόδοσης τιμών έχει τη μορφή x←y (στη βιβλιογραφία απαντάται και ως x:=y) που αναγνωρίζεται ως «απόδωσε στο x την τιμή y». Από τη στιγμή όπου θα αποδοθεί στο x μια τιμή, η τιμή αυτή θα παραμείνει μέχρι να αποδοθεί νέα τιμή στο x. Αν η επόμενη εντολή είναι «x←x+4» στη x θα αποδοθεί η τιμή 7. Αν η επόμενη εντολή είναι «x←x2» στη x θα αποδοθεί η τιμή 49. Θα παρατεθεί τώρα ο Αλγόριθμος 3.6.2. Αλγόριθμος 3.6.2 Αν α=0 τότε πήγαινε στην εντολή 4 γ)←β/α «Η απάντηση είναι γ.» STOP Αν β=0 τότε πήγαινε στην εντολή 6 «Δεν υπάρχει απάντηση.» STOP «Κάθε αριθμός αποτελεί απάντηση.» STOP

Page 35: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

35

Με εισαγωγικά σημειώνονται σχόλια που εμφανίζονται όταν ο έλεγχος της ροής οδηγήσει στην εκτέλεση της εντολής που τα περιλαμβάνει. Στη συνέχεια παραθέτονται τρεις εφαρμογές του Αλγόριθμου3.6.2. Εφαρμογή 3.6.1 Να λυθεί η 7x=14 {α=7; β=14} α=0. FALSE {7≠0} γ)←2{β/α=14/7=2} Η απάντηση είναι 2 Εφαρμογή 3.6.2 Να λυθεί η 0x=-5 {α=0; β=-5} α=0. TRUE {Μετάβαση στην 4} β=0. FALSE {-5≠0} Δεν υπάρχει απάντηση Εφαρμογή 3.6.3 Να λυθεί η 0x =0 {α=0; β=0} α=0. TRUE {Μετάβαση στην 4} β=0. TRUE {Μετάβαση στην 6} Κάθε αριθμός είναι απάντηση Μια άλλη εφαρμογή αποτελεί ο αλγόριθμος μετατροπής αριθμού από το δεκαδικό στο δυαδικό σύστημα αρίθμησης. Για να μετατραπεί ένα αριθμός n από το δεκαδικό στο δυαδικό σύστημα ζητείται ο μέγιστος ακέραιος p τέτοιος ώστε 2p≤n . αυτό σημαίνει ότι η έκφραση του αριθμού θα έχει p ψηφία το πρώτο εκ των οποίων θα είναι 1. Εξετάζεται στη συνέχεια ο n-2p. Αν 2p-1>n, τοποθετείται στην επόμενη θέση 0 άλλως τοποθετείται 0 και συνεχίζεται η διαδικασία στην επόμενη θέση μέχρι να συμπληρωθεί και η τελευταία από τις p θέσεις. Την περιγραφή αυτή ακολουθεί η παράθεση του αλγόριθμου. Αλγόριθμος 3.6.3 p←0 Αν 2p+1> n μετάβαση στο 5 (αυτό είναι το μεγαλύτερο 2p≤n) p←p+1. Μετάβαση στο 2 Αν 2p> n τότε μετάβαση στο 8 «1» Αν p=0 τότε STOP n←n-2p, p←p-1. Μετάβαση στο 4 «0» Αν p=0 τότε STOP p←p-1. Μετάβαση στο 4.

Αν το πρόγραμμα τρέξει για n=9,να γραφεί ο αριθμός 9 στο δυαδικό σύστημα αρίθμησης.

p←0 2p+1>9 FALSE {20+1=2} p←1 2p+1>9 FALSE {21+1=4}

Page 36: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

36

p←2 2p+1>9 FALSE {22+1=8} p←3 2p+1>9 TRUE{23+1=16} “1” p=0 FALSE {p=3} n←1 p←2{9-23=1, 3-1=2} 2p>1 TRUE {22=4} “0” p=0 FALSE {p=2} p←1 2p>1 TRUE {21=2} “0” p=0 FALSE {p=1} p←0 2p>1 FALSE {20=1} “1” p=0 TRUE 1001 Διότι 1001=1x23+0x22+0x21+1x20=8+0+0+1=9.

3.7. Βασικές Εντολές Οι εντολές προγραμματισμού στις γλώσσες ανθρώπου-μηχανής ταξινομούνται σε τρεις κύριες κατηγορίες. Στις εντολές που έχουν τη δομή της ακολουθίας, εκείνες που έχουν τη δομή της επιλογής και τέλος στις εντολές που επιβάλλουν την επανάληψη μιας ιεραρχημένης σειράς άλλων εντολών (δομή της επανάληψης). 3.7.1. Δομή Ακολουθίας Η δόμηση των διαδικασιών σε τέτοια μορφή, έτσι ώστε οι διαδικασίες να εκτελούνται με τη σειρά από τον υπολογιστή. 3.7.2. Δομή Επιλογής Η προγραμματιστική δομή που περικλείει τον έλεγχο μιας συνθήκης και δύο ομάδες εντολών από τις οποίες εκτελείται η πρώτη, αν ισχύει η συνθήκη, ή η δεύτερη αν δεν ισχύει. 3.7.3. Δομή Επανάληψης Η προγραμματιστική δομή που περικλείει τον συνεχή έλεγχο μίας συνθήκης και μία ομάδα εντολών, η εκτέλεση των οποίων επαναλαμβάνεται όσο ισχύει η συνθήκη. Οι εντολές των γλωσσών 4ης γενιάς είναι λιγότερες και περισσότερο περιεκτικές από τις αντίστοιχες μιας συμβατικής γλώσσας προγραμματισμού, άρα έχουμε μικρότερα προγράμματα και λιγότερα λάθη. Έχουν δυναμικές εντολές με τις οποίες ο χρήστης μπορεί εύκολα να δημιουργεί και να ενημερώνει αρχεία, να σχεδιάζει οθόνες κλπ.

Οι γλώσσες 4ης γενιάς είναι διαλογικές και συνήθως αποτελούν εργαλεία πακέτων για Συστήματα Διοίκησης Βάσεων Δεδομένων, όπως πχ. InGLES, ORACLE κλπ. Περισσότερες πληροφορίες σχετικά με τις εντολές (εντολές κώδικα μηχανής και εντολές συμβολικών γλωσσών), ο αναγνώστης θα αναζητήσει στα βιβλία που αναφέρονται στον προγραμματισμό.

Page 37: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

37

3.8. Τυποποιημένοι Αλγόριθμοι Οι αλγόριθμοι είναι σημαντικοί γιατί σχετίζονται άμεσα με τον τρόπο τον οποίο οι υπολογιστές επεξεργάζονται πληροφορίες. Ένα πρόγραμμα υπολογιστών είναι ουσιαστικά ένας αλγόριθμος που λέει στον υπολογιστή ποια συγκεκριμένα βήματα να εκτελέσει (σε ποια συγκεκριμένη σειρά) προκειμένου να επιτευχθεί ένας συγκεκριμένος στόχος, όπως π.χ. ο υπολογισμός των μισθών των υπαλλήλων ή η εκτύπωση των έλεγχων των μαθητών. Κατά συνέπεια, ένας αλγόριθμος μπορεί να θεωρηθεί οποιαδήποτε ακολουθία εντολών που μπορεί να εκτελεσθεί από ένα turing-πλήρες σύστημα. Χαρακτηριστικά, όταν ένας αλγόριθμος συνδέεται με την επεξεργασία πληροφοριών, τα δεδομένα διαβάζονται από μια συσκευή εισόδου, γράφονται σε μια συσκευή εξόδου, και / ή αποθηκεύονται για την περαιτέρω χρήση. Τα αποθηκευμένα στοιχεία θεωρούνται ως τμήμα της εσωτερικής κατάστασης του συστήματος που εκτελεί τον αλγόριθμο. Για οποιαδήποτε τέτοια υπολογιστική διαδικασία, ο αλγόριθμος πρέπει να οριστεί αυστηρά: να είναι ορισμένος για όλες τις πιθανές περιστάσεις που θα μπορούσαν να προκύψουν. Δηλαδή οποιαδήποτε υπό όρους βήματα πρέπει να εξεταστούν συστηματικά, και σε κάθε περίπτωση τα κριτήρια πρέπει να είναι σαφή (και υπολογίσιμα). Επειδή ένας αλγόριθμος είναι ένας ακριβής κατάλογος βημάτων ακριβείας, η σειρά του υπολογισμού θα είναι σχεδόν πάντα κρίσιμη για τη λειτουργία του αλγόριθμου. Οι εντολές συνήθως απαριθμούνται ρητά, και περιγράφονται σαν να ξεκινούν «από την κορυφή» και πηγαίνοντας «προς το κατώτατο σημείο», μια ιδέα που περιγράφεται τυπικά με τον όρο της «ροής ελέγχου». Μέχρι τώρα, σε αυτήν η συζήτηση για την τυποποίηση του αλγόριθμου, έχουμε δεχθεί σαν βάση τον διαδικαστικό προγραμματισμό. Αυτή είναι και η πιο κοινή αντίληψη, η οποία προσπαθεί να περιγράψει ένα έργο με διακεκριμένα, «μηχανικά» μέσα. Μοναδικός σε αυτήν την αντίληψη των αλγόριθμων είναι ο ρόλος της λειτουργίας ανάθεσης (ο καθορισμός της τιμής μιας μεταβλητής) ο οποίος προέρχεται από τη ιδέα «της μνήμης» σαν πρόχειρο τετράδιο. Δείτε ακόμα το λειτουργικό προγραμματισμό και τον λογικό προγραμματισμό για εναλλακτικές αντιλήψεις για το τι αποτελεί έναν αλγόριθμο. 3.9. Εφαρμογή των Αλγόριθμων Οι αλγόριθμοι μπορούν να υλοποιηθούν από προγράμματα ηλεκτρονικών υπολογιστών, μολονότι συχνά σε περιορισμένες μορφές. Ένα λάθος στον σχεδιασμό ενός αλγόριθμου για τη λύση ενός προβλήματος μπορεί να οδηγήσει σε αποτυχίες/βλάβες στο εφαρμοσμένο πρόγραμμα.

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

Η ανάλυση και η μελέτη των αλγορίθμων είναι ένας τομέας της επιστήμης της πληροφορικής, και ασκείται συχνά αφαιρετικά (χωρίς τη χρήση μιας συγκεκριμένης γλώσσας προγραμματισμού ή άλλη εφαρμογή). Από αυτή την άποψη, μοιάζει με άλλους μαθηματικούς τομείς, συγκεκριμένα στο ότι η εστίαση της ανάλυσης είναι πάνω στις βασικές αρχές του αλγόριθμου, και όχι σε οποιαδήποτε ιδιαίτερη εφαρμογή του. Ένας τρόπος απεικόνισης ένας αλγόριθμου είναι το γράψιμο του ψευδοκώδικα. Άλλοι τρόποι είναι: με ελεύθερο κείμενο, με φυσική γλώσσα περιγράφοντας τα βήματα και με λογικό διάγραμμα. 3.10. Υπολογιστική Επιλυσιμότητα και Πολυπλοκότητα Ως πολυπλοκότητα στη Θεωρία Αλγορίθμων αναφέρεται το τμήμα της υπολογιστικής νοημοσύνης, κοστολογεί τους αλγόριθμους ως προς τις απαιτήσεις τους στη χρήση των υπολογιστικών και διαδικτυακών πόρων που απαιτεί η λειτουργία τους. Η θεωρία αλγοριθμικής πολυπλοκότητας ασχολείται με την ανάλυση αλγορίθμων και έτσι αποτελεί σημαντικό τομέα της έρευνας που αφορά την επιστήμη των υπολογιστών.

Οι συνηθέστεροι πόροι για τους οποίους ενδιαφερόμαστε είναι ο υπολογιστικός χρόνος, οπότε μιλάμε για τη χρονική πολυπλοκότητα του αλγόριθμου, δηλαδή πόσα «βήματα» χρειάζεται να εκτελέσει ο

Page 38: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

38

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

Το επόμενο θεώρημα εξασφαλίζει την επιλυσιμότητα μεγάλου αριθμού αλγόριθμων. Θεώρημα 3.10.1 (Δόγμα Church – Turing). Κάθε μη τετριμμένη ιδιότητα γλώσσας αναγνωρίσιμης από μια μηχανή Turing δεν είναι αναδρομική.

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

• Ανεπίλυτα προβλήματα: Προβλήματα για τα οποία δεν υπάρχει κανένας αλγόριθμος που να τα επιλύει π.χ. το πρόβλημα του τερματισμού.

• Επιλύσιμα προβλήματα: Προβλήματα για τα οποία υπάρχει αλγόριθμος/Μηχανή Turing που τα επιλύει – Πολυπλοκότητα.

• Πόσος χρόνος/μνήμη απαιτείται για την επίλυση του προβλήματος; • Είναι η επίλυση του προβλήματος πρακτικά εφικτή;

Ορισμός 3.10.1 Χρονικής Πολυπλοκότητας. Έστω Μ μια ντετερμινιστική ΤΜ που τερματίζει σε κάθε είσοδο. O χρόνος εκτέλεσης ή η χρονική πολυπλοκότητα της Μ είναι η συνάρτηση 𝑓:ℕ→ℕ όπου 𝑓(n) είναι το μέγιστο πλήθος βημάτων που είναι δυνατόν να πραγματοποιήσει η Μ όταν το μήκος της εισόδου της είναι n.

Προφανώς, οι τιμές 𝑓(n) της 𝑓 είναι μη αρνητικές για κάθε n. Ορισμός 3.10.2 Λέμε ότι 𝑓(n)=O(g(n)), αν υπάρχει ακέραιος n0 και μία σταθερά c>0 έτσι ώστε για όλους τους ακέραιους n≥n0, να ισχύει ότι 𝑓(n)≤cg(n).

Το πλέον σημαντικό εργαλείο εκτίμησης της πολυπλοκότητας αλγόριθμων είναι η Ασυμπτωτική Ανάλυση. Δια της Ασυμπτωτικής Αναλύσεως επιτυγχάνονται δυο στόχοι.

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

Παράδειγμα 3.10.1 Έστω αλγόριθμος με χρονική πολυπλοκότητα 𝑓(n)= 6n3+2n2+20n+45.

Με την ασυμπτωτική ανάλυση εξετάζουμε τον μεγιστοβάθμιο όρος. Τότε λέμε ότι η πολυπλοκότητα του αλγορίθμου είναι ασυμπτωτικά το πολύ n3 𝑓(n)=O(n3).

Είναι προφανές ότι και κάθε άλλη μεγαλύτερη δύναμη του n αποτελεί συνάρτηση προς την οποία η 𝑓 είναι ασυμπτωτικά ισοδύναμη. Παράδειγμα 3.10.2 Έστω αλγόριθμος με χρονική πολυπλοκότητα: 𝑓(n)=5n+24. Αν c=1, τότε 𝑓(n)=5n+24≤n2⟹n2-5n-24≥0⟹(n-8)(n+3)≥0. Άρα, για n≥8, 𝑓(n) =O(n2). Ορισμός 3.10.3 Έστω 𝑓 και g δύο συναρτήσεις από το σύνολο ℕ στο σύνολο ℝ+. Ορίζουμε 𝑓(n)=Ο(g(n)), αν υπάρχουν ακέραιοι c>0 και n0≥0 τέτοιοι ώστε για κάθε n≥n0 να ισχύει 𝑓(n)≤cg(n).

Ο συμβολισμός 𝑓(n)=Ο(g(n)) σημαίνει ότι η 𝑓 είναι της τάξης g(n). Σε αυτήν την περίπτωση g(n) είναι ασυμπτωτικό άνω φράγμα της 𝑓, δηλαδή είναι μεγαλύτερη ή ίση της 𝑓.

Page 39: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

39

Σχήμα 3.10.1 f(n)=Ο(g(n)). Ορισμός 3.10.4 Θεωρούμε τη συνάρτηση 𝑓(n)=O(g(n)). Αν για κάθε συνάρτηση h(n) έτσι ώστε 𝑓(n)=O(h(n)), ισχύει επίσης ότι g(n)=O(h(n)), τότε λέμε ότι η g(n) είναι ένα στενό ασυμπτωτικό όριο της 𝑓(n).

Ορισμός 3.10.55 Συμβολίζεται με 𝑓(n)=0(g(n)) η σχέση δυο συναρτήσεων 𝑓:ℕ→ℝ+. και g:ℕ→ℝ+, για τις οποίες ισχύει limn→∞ (𝑓(n))/(g(n))=0

Η σύγκριση αλγόριθμων που επιλύουν το ίδιο πρόβλημα γίνεται με σύγκριση της αποτελεσματικότητάς τους. Η αποτελεσματικότητα θεωρείται ως συνάρτηση του πλήθους των δεδομένων εισόδου και τον δαπανούμενο υπολογιστικό χρόνο και πόρους μνήμης. Η αποτελεσματικότητα προσεγγίζεται θεωρητικά με χρήση μοντέλου μηχανής Turing, ή εναλλακτικά, με εμπειρική προσέγγιση μηχανής Τυχαίας Προσπέλασης (Random Access Machine-RAM). 3.11. Είδη Προβλημάτων Ένα σημαντικό ζήτημα στη θεωρία αλγοριθμικής πολυπλοκότητας είναι η ταξινόμηση των προβλημάτων σε κλάσεις ισοδυναμίας. Κριτήριο της ταξινόμησης είναι ο βαθμός δυσκολίας που παρουσιάζει ένα έκαστο των προβλημάτων. Ιδιαιτέρου ενδιαφέροντος στο πλαίσιο αυτό είναι οι κλάσεις P (Deterministic Polynomial Time) και nP (non Deterministic Polynomial Time). Γενικά θα μπορούσαμε να πούμε ότι η κλάση P περιλαμβάνει τα περισσότερα προβλήματα της nP. Θα προχωρήσουμε σε πιο τυπικούς ορισμούς οι οποιοι επαλυθεύουν τη διαίσθηση ότι η κλάση των προβλημάτων P είναι μικρότερη της κλάσεως των προβλημάτων nP. Τονίζεται ότι οι κλάσεις P και nP αφορούν την ταξινόμηση προβλημάτων απόφασης. Στα προβλήματα απόφασης, ζητούνται απαντήσεις κατάφασης ή άρνησης (ΝΑΙ ή ΟΧΙ). 3.12. Αιτιοκρατικές Μηχανές Turing Εκτενή περιγραφή της στοιχειώδους μηχανής Turing και της λειτουργίας της, ο αναγνώστης θα βρει στο Κεφάλαιο 7 του βιβλίου αυτού. Στη θεωρία πολυπλοκότητας το βασικό μοντέλο μηχανής, που χρησιμοποιείται είναι οι μηχανές Turing με πολλαπλές ταινίες. Ως Αιτιοκρατικές (ή ντετερμινιστικές), θεωρούμε μηχανές Turing (DTM) με πολλαπλές ταινίες έχει k (k≥1) ταινίες από τις οποίες μπορεί να διαβάσει και να γράψει συγκεκριμένα σύμβολα στα κελιά που βρίσκονται πίσω από τα k παράθυρα του αναγνώστη. Κάθε χρονική στιγμή του διακριτού χρόνου n, η μηχανή βρίσκεται σε μια κατάσταση που έχει προσδιοριστεί από τη συνάρτηση μετάβασης (Κεφάλαιο 7).

Page 40: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

40

3.13. Xρονική Πολυπλοκότητα και Πολυωνυμικός Χρόνος Το βασικότερο ίσως κριτήριο για την αποδοτικότητα ενός αλγόριθμου είναι ο υπολογιστικός χρόνος που απαιτείται για την επίλυση του προβλήματος. Στην περίπτωση μιας μηχανής Turing L, σαν χρονική μονάδα ορίζεται το υπολογιστικό βήμα της L, που συνίσταται σε μία εφαρμογή της συνάρτησης μετάβασης. Η χρονική πολυπλοκότητα ενός προβλήματος Π είναι μια συνάρτηση που φράσσει άνω τον αριθμό των στοιχειωδών βημάτων που χρειάζεται μια μηχανή Turing για να αποφασίσει το Π, δηλαδή φράσσει τον υπολογιστικό χρόνο που μπορεί να χρησιμοποιηθεί για να αποφασιστεί ένα στιγμιότυπο του Π.

Συγκεκριμένα, έστω μία DTM L που τερματίζει σε κάθε είσοδο. Ορισμός 3.13.1 Η κλάση P περιλαμβάνει όλα εκείνα τα προβλήματα απόφασης, τα οποία επιλύονται από ένα ντετερμινιστικό αυτόματο σε πολυωνυμικό χρόνο.

Ορισμός 3.13.2 Η κλάση nP περιλαμβάνει όλα τα προβλήματα απόφασης που επιλύονται από ένα μη ντετερμινιστικό αυτόματο σε πολυωνυμικό χρόνο.

Ένας ισοδύναμος ορισμός της κλάσης nP έχει ως εξής: Η κλάση nP περιλαμβάνει όλα τα προβλήματα απόφασης για τα οποία αν μας δοθεί ένα πιστοποιητικό καταφατικής απάντησης, μπορούμε να επαληθεύσουμε σε πολυωνυμικό χρόνο ότι η απάντηση είναι σωστή. Να σημειωθεί ότι οι κλάσεις αυτές δεν είναι αρκετές για να κατηγοριοποιήσουν το σύνολο των προβλημάτων τα οποία καλούμαστε να λύσουμε. Ένα μεγάλο μέρος προβλημάτων μένουν εκτός των κατηγοριών P και nP. Για παράδειγμα αναφέρεται ότι τέτοια προβλήματα θα μπορούσαν να έχουν εκθετική πολυπλοκότητα. Είναι ακόμα δυνατό προβλήματα που ανήκουν στην κλάση P να παράγουν μη βέλτιστες λύσεις. Με την ΝΡ-πληρότητα αναγνωρίζεται μια άλλη μεγάλη κατηγορία προβλημάτων που δεν ανήκει στις προηγούμενες. Παράδειγμα 3.13.1 Το πρόβλημα εντοπισμού μιας διαδρομής ή ενός μονοπατιού μήκους k, σε ένα γράφο G (Κεφάλαιο 5) είναι nP πρόβλημα. Στην είσοδο, εκτός από το πλήθος k των ακμών, δίνονται επίσης οι κορυφές s και t (αρχική και καταληκτική αντίστοιχα). Ο αλγόριθμος λειτουργεί με την επιλογή ΝΑΙ ή ΟΧΙ σε κάθε νέο κόμβο, προκειμένου να ακολουθήσει την επιθυμητή διαδρομή. Παράδειγμα 3.13.2 Ο αλγόριθμος κρυπτογράφησης RSA εκτελεί κάποια απλή αριθμητική ακεραίων στον κώδικα και την κλείδα. η οποία αποτελείται από ένα ζεύγος (p,q) μεγάλων πρώτων αριθμών. Κάποιος μπορεί να εκτελέσει την κρυπτογράφηση μόνο γνωρίζοντας το γινόμενο p×q, αλλά για να αποκρυπτογραφήσει τον κωδικό πρέπει να γνωρίζει το γινόμενο (p-1)×(q-1).

Μια τυπική διαδικασία στην κρυπτογραφία είναι η «known-plaintext attack» όπου υπάρχει πρόσβαση και στο κείμενο (crib) και στηνκρυπτογραφημένη εκδοχή (chphertext) προκειμένου να εξαχθεί το κείμενο του μηνύματος. Στόχος είναι να χρησιμοποιηθούν αυτές τις πληροφορίες για να εντοπιστεί το κλειδί, έτσι ώστε να μπορεί να αποκρυπτογραφήσει τα άλλα μηνύματα που αποστέλλονται χρησιμοποιώντας το ίδιο κλειδί.

Η διαδικασία αυτή επισημοποιήθηκε ως nP το πρόβλημα, καθώς η επιδίωξη είναι να εντοπιστεί ένα κλειδί κωδικοποίησης=RSA (κλειδί, κείμενο). Το δύσκολο ερώτημα είναι, πώς θα εντοπιστεί το κλειδί, Και εδώ πάντως είναι η διαδικασία επιλογής γραμμάτων, όπου σε κάθε ερώτημα επιλογής γράμματος η απάντηση είναι του τύπου ΝΑΙ ή ΟΧΙ. Ορισμός 3.13.3 Ένα πρόβλημα nP-πλήρες (nP-complete) είναι ένα πρόβλημα της κλάσης ΝΡ στο οποίο μετασχηματίζεται πολυωνυμικά κάθε άλλο πρόβλημα της κλάσης ΝΡ.

Ως ΝΡ-πλήρη αναγνωρίζονται προβλήματα που δεν μπορούν να λυθούν με αλγόριθμους των οποίων η χρόνοι να είναι είτε πολυωνυμικοί είτε μη αιτιοκρατικά πολυωνυμικοί. Για να λυθούν προβλήματα που χαρακτηρίζονται ως ΝΡ-πλήρη, μπορεί κανείς να χρησιμοποιήσει ευρηστικούς αλγόριθμους (heuristic

Page 41: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

41

algorithms). Εναλλακτικά μπορεί να το λύσει προσεγγιστικά Αντί να βρει την ακριβή λύση), ή να χρησιμοποιήσει λύση εκθετικού χρόνου, ή τέλος να απλουστεύσει το πρόβλημα αγνοώντας κάποιο (ή κάποια) από τα στοιχεία και του παράγοντες που θα του επέτρεπαν να τεθεί το πρόβλημα στην κλάση ΝΡ.

Άλλες κλάσεις προβλημάτων είναι οι PSPACE, EXPTIME και η Undecidable. Στην κλάση PSPACE εντάσσονται προβλήματα που δεν λύνονται με χρήση μιας εύλογου μεγέθους έκτασης μνήμης. Στην κλάση αυτή τα προβλήματα καταναλίσκουν πολυωνυμικό χρόνο, ο οποίος όμως είναι εξαιρετικά μεγάλος. Στην κλάση EXPTIME ανήκουν τα προβλήματα που λύνονται σε εκθετικό χρόνο. Τέλος, στην κλάση Undecidable ταξινομούνται προβλήματα για τα οποία αποδεικνύεται ότι δεν λύνονται αλγοριθμικά, όσο χρόνο και χώρο μνήμης και αν διαθέσουμε.

Page 42: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

42

Οδηγός για Περαιτέρω Μελέτη Beard, R. S. (1973). Patterns in Space. Creative Pubns, First edition.

Bicknell, Μ., & Hoggat, V. E. Jr. (1969). Golden Triangles, Rectangles and Cuboids. The Fibonacci Quarterly, Vol. 7, no 1 (February , pp.73-91.

Brousseau, A. (1968). On the trail of the California Pine. The Fibonacci Quarterly, Vol. 6, no 1 (February , pp.69-76.

Cormen, T., Leiserson, C., & Rivest, R. (1990). Introduction to Algorithms. Cambridge Mass.: MIT Press. (Το βιβλίο κυκλοφορεί μεταφρασμένο από τις Πανεπιστημιακές Εκδόσεις Κρήτης σε δύο μέρη.)

Cutland, n. (1980). Computability. Cambridge-new York: Cambridge University Press,. ISBn 0-521-22384-9; ISBn 0-521-29465-7

Dantzig, Τ. (1955), The Bequest of the Greeks. new York: Charles Scribner’s Sons, 61-62.

Glenn, M. (1964). A new Proof for an Old Property. The Fibonacci Quarterly, Vol. 2, no. 1 (February) , pp. 57-58.

Goodrich, Μ. Τ. & Tamassia, R. (2004). Data Structures and Algorithms in Java, John Wiley & Sons, Inc., 4th edition.

Goodrich, Μ. Τ., Tamassia, R.& Mount, D. M. (2011). Data Structures and Algorithms in C++, John Wiley & Sons, Inc.

Halton, J. H. (1964). Fibonacci Residues. The Fibonacci Quarterly, Vol. 2, no. 3 (October), pp. 217-218.

Holt, Μ. (1965). Mystery Puzzler and Phi. The Fibonacci Quarterly, Vol. 3, no 2 (April) , pp.135-138.

Holt, Μ. (1964). The Golden Section. Pentagon, Spring, , pp. 80-104.

Huntley, Η. (1964). The Fibonacci Quarterly, Vol. 2, no 3 (October) , pp.184.

Hoggatt, V. E. (1983). Αριθμοί Fibonacci και Lucas. Αθήνα: εκδόσεις Gutenberg .

Land, Frank (1960). The Language of Mathematics. London : John Murray.

Lewis, Η. & Denenberg, L., (1991). Data Structures and Their Algorithms. new York: Harper Collins Publishers, Inc.

Lipschutz, S., & Lipson, M. (2003). Διακριτά Μαθηματικά. Αθήνα: εκδόσεις Τζιόλα - σειρά Schaum.

Post, E. (1944). Recursively enumerable sets of positive integers and their decision problems. Bulletin of the American Mathematical Society, 50, pp. 284–316.

Sahni, S. (2004). Δομές Δεδομένων, Αλγόριθμοι και Εφαρμογές στη C++. Μετάφραση: Γιάννης Θεοδωρίδης & Γιάννης Μανωλόπουλος. Αθήνα: Εκδόσεις Τζιόλα.

Taylor, L. (1967). Residues of Fibonacci-Like Sequences. The Fibonacci Quarterly, Vol. 5, no. 3 (October) , pp. 298-304.

Vorobyov, Ν. Ν. (1963). The Fibonacci numbers. Boston: D.C. Heath and Company.

Γεωργακόπουλος, Γ. Φ. (2002). Δομές Δεδομένων: Έννοιες, Τεχνικές, Αλγόριθμοι. Ηράκλειο: Πανεπιστημιακές Εκδόσεις Κρήτης .

Μανωλόπουλος, Ι. (2003). Δομές Δεδομένων, Μια προσέγγιση με Pascal. Θεσσαλονίκη: Εκδόσεις Art of Text.

Μοσχοβάκης, Γ. Ν. (2011). Αναδρομή και υπολογισιμότητα, http://www.math.ucla.edu/~ynm/books.htm

Μποζάνης, Π. (2003). Δομές δεδομένων. Αθήνα: Εκδόσεις Τζιόλας,ISBn 960-418-010-Χ, .

http://el.wikipedia.org/wiki/%CE%91%CE%BB%CE%B3%CF%8C%CF%81%CE%B9%CE%B8%CE%BC%CE%BF%CF%82

http://delab.csd.auth.gr/courses/c_ds/sorting.pdf

Page 43: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

43

http://el.wikipedia.org/wiki/Ταξινόμηση_φυσαλίδας

http://cgi.di.uoa.gr/~vassilis/aee/L16-Heristic%20Evaluation.pdf

http://www.eecs.berkeley.edu/~luca/cs172/noterice.pdf

http://www.mcs.surrey.ac.uk/Personal/R.Knott/Fibonacci/

http://mathworld.wolfram.com/Fibonaccinumber.html

http://www.goldenmuseum.com/index_engl.html

https://en.wikipedia.org/wiki/Arithmetical_hierarchy

Page 44: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

44

Κριτήρια Αξιολόγησης

Κριτήριο Αξιολόγησης 1 Αποδείξτε ότι υπάρχει ένας αριθμός ρ∈(1,2), τέτοιος ώστε η ακολουθία (xn), n≥0, που ορίζεται με τη

αναδρομική σχέση: +

− −= −

3

1 2

3 1

3 3κ κ

κ κ

κ

x xx x

x.

n=0,1,2,… να συγκλίνει στο ρ για κάθε αρχική τιμή του x0∈(1,2).

Κριτήριο Αξιολόγησης 2 Να εξετάσετε την τάξη της αναδρομικής ακολουθίας Fibonacci.

Κριτήριο Αξιολόγησης 3 Να βρεθεί ο αναδρομικός τύπος για τον υπολογισμό των απαιτούμενων κινήσεων για τη μετακίνηση

του πύργου του Ανόι σε κενό στύλο.

Κριτήριο Αξιολόγησης 4 Να εξετάσετε ως προς τη σύγκλισή της, την ακολουθία αν=1/(ν+1)

Κριτήριο Αξιολόγησης 5 Να βρείτε τον γενικό όρο της ακολουθίας α(n+2)=ma(n+1)+qan.

Κριτήριο Αξιολόγησης 6

Βρείτε τον γενικό όρο της ακολουθίας { }α == − ≥

4 1

6 92κ κ

κ

κ

a

.

Κριτήριο Αξιολόγησης 7

Να βρείτε τον αριθμό Fibonacci F16≈α16/√5.

Λύση: Ισχύει ότι log α16/√5≈16 log a-log 2, 236. Επειδή θα πολλαπλασιάσουμε το loga επί τον 16 τον παίρνουμε με πιο πολλά δεκαδικά ψηφία από εκείνα που σχεδιάζουμε να πάρουμε τους άλλους υπολογισμούς. Παίρνοντας α=(1+√5)/2=α=(1+2.23607)/2≈1.6180, και χρησιμοποιώντας το calculator τσέπης βρίσκουμε ότι log α=0,20898… Έτσι λοιπόν έχουμε 1og a16/√5≈16×0.20898-0.3494≈3.3437≈0.3494≈2.9943 που συνεπάγεται ότι α16/√5≈987.0.

Ώστε F16=987. Για μεγαλύτερους δείκτες βρίσκουμε με ακρίβεια τα τρία δεκαδικά ψηφία του αριθμού.

Page 45: 3. Κεφάλαιο: ΑΛΓΟΡΙΘΜΟΙ...σχέση της με τη χρυσή τομή. Γίνεται επίσης μια σύντομη παρουσίαση των επιμέρους

45

Κριτήριο Αξιολόγησης 8

Δίνεται ότι ο 610 είναι ένας αριθμός Fibonacci. Mε βάση τον τύπο +

+ + = ≥

2

1

1 5, 4

2κ κ

κ

F FF κ

Να βρεθεί ο επόμενος αριθμός.

Λύση:

+ + + +

+ + × + + = ⇒ = ⇒ = ⇒ = =

2

1 1 1 1

61− 1 5 61− 611 186−5−− 611 1364+− 1975987

2 2 2 2n n n nF F F F

ένας εναλλακτικός τρόπος εκτέλεσης των πράξεων είναι:

+ + + +

+ + × + × += ⇒ = ⇒ = ⇒ = =

1 1 1 1

61− 1 5 61− 611 2+236 61− 611 1363+96 1974+96987+−

2 2 2 2n n n nF F F F

. Για ποιο μεγάλους αριθμούς Fibonacci θα χρειαστεί να πάρετε την √5 με πιο πολλά δεκαδικά ψηφία.

Κριτήριο Αξιολόγησης 9

Παίρνοντας

Α = = =

, , a b e f i j

B Cc d g h k l

και τον ορισμό της πρόσθεσης, να δείξετε ότι

(Α+Β)+C=A+(B+C).

Λύση:

Ισχύει ( ) ( )( )

( )( )

( )( )

( )( )

+ + + + + + + + + + = + + = = + + + + + + + +

a b e f i j a e i e f j a e i e f jA B C

c d g h k l c g k d h l c g k d h l

( )

= + + = + +

a b e f i jA B C

c d g h k l

Κριτήριο Αξιολόγησης 10

Δείξτε ότι Q2=Q+I ή Q2-Q-I=Z Λύση:

+ = × + = =

2 211 21 21

1− 11 11

e fQ Q I Q

g h

Περισσότερα Κριτήρια Αξιολόγησης