Το κλειδί της τεχνητής νοημοσύνης - Point of view

Εν τάχει

Το κλειδί της τεχνητής νοημοσύνης


Αλγόριθμος


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



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



Έτσι η λέξη αλγόριθμος καθιερώθηκε αργά τα επόμενα χίλια χρόνια με την έννοια «συστηματική διαδικασία αριθμητικών χειρισμών». Τη σημερινή της σημασία την οφείλει στη γρήγορη ανάπτυξη των ηλεκτρονικών υπολογιστών στα μέσα του 20ου αιώνα. Η έννοια του αλγορίθμου γίνεται ευκολότερα αντιληπτή με το παρακάτω παράδειγμα. 

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

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





Δημιουργία αλγορίθμου


Τα βήματα δημιουργίας αλγόριθμου είναι:

Διατύπωση του προβλήματος

Κατανόηση του προβλήματος

Λύση του προβλήματος

Διατύπωση του αλγόριθμου

Έλεγχος της λύσης

Κριτήρια αλγορίθμου


Οι αλγόριθμοι θα πρέπει να πληρούν κάποια πρότυπα και να διατυπώνονται με συγκεκριμένο τρόπο.


Έτσι ένας αλγόριθμος πρέπει να ικανοποιεί τα επόμενα κριτήρια:



Καθοριστικότητα
Περατότητα
Αποτελεσματικότητα
Επεκτασιμότητα
Να έχει είσοδο δεδομένων, 
επεξεργασία και έξοδο αποτελεσμάτων



Καθοριστικότητα - Definiteness

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

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

Προβλήματα καθοριστικότητας αντιμετωπίζονται συχνά με τη λογική της επιλογής, δηλ. Αν α>0 τότε ..... αλλιώς ...


Περατότητα - Finiteness

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

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


Αποτελεσματικότητα - Effectiveness

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

Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή (και όχι σύνθετη). 

Δηλαδή μία εντολή δεν αρκεί να έχει ορισθεί αλλά πρέπει να είναι και εκτελέσιμη.


Είσοδος δεδομένων - Input

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

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


Έξοδος αποτελεσμάτων - Output

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

Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή (δεδομένων) ως αποτέλεσμα προς το χρήστη ή προς ένα άλλο αλγόριθμο.


Περιγραφή και αναπαράσταση

Τέσσερις είναι οι βασικοί τρόποι αναπαράστασης ενός αλγορίθμου:[1]

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






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


Διάγραμμα ροής, 

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

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


Φυσική γλώσσα που εκτελείται κατά βήματα. Σε αυτή την περίπτωση μπορεί να παραβιαστεί το κριτήριο του καθορισμού μεταξύ των βημάτων.


Κωδικοποίηση του αλγορίθμου σε ψευδογλώσσα

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










 ή γλώσσα προγραμματισμού. 




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









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



Βασικές εντολές


Δομή ακολουθίας

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

Δομή επιλογής

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

Με τον όρο τελεστή σύγκρισης εννοούμε ένα από τα σύμβολα < , > , <> , <= , >= , =. Το αποτέλεσμα της σύγκρισης των όρων (νοείται εφόσον οι όροι έχουν κάποια τιμή , δηλαδή δεν περιέχουν την τιμή null) είναι η αλγεβρική τιμή Αληθής (True) ή Ψευδής (False). Οι όροι μπορεί να είναι μεταβλητές ή σταθερές.[3]

Δομή επανάληψης

Η προγραμματιστική δομή που περικλείει τον συνεχή έλεγχο μίας συνθήκης και μία ομάδα εντολών. Οι εντολές εκτελούνται ανάλογα με την δομή της επανάληψης. Υπάρχουν τριών ειδών επαναλήψεις.[4]

Επανάλαβε εφόσον. 

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

Επανάλαβε μέχρι. 

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

ΔΕΝ ισχύει 

(δίνει τιμή ψευδής) εκτελείται ξανά η ομάδα εντολών.

Για Ν φορές επανάλαβε.

 Σε αυτή την δομή επανάληψης εκτελείται η ομάδα εντολών Ν φορές όπου Ν είναι αριθμός θετικός ακέραιος.


Τυποποιημένοι αλγόριθμοι



Οι αλγόριθμοι είναι σημαντικοί γιατί σχετίζονται άμεσα με τον τρόπο με τον οποίο οι υπολογιστές επεξεργάζονται δεδομένα 





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



και παράγουν πληροφορίες

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


Ένα πρόγραμμα υπολογιστών είναι ουσιαστικά ένας αλγόριθμος που λέει στον υπολογιστή ποια συγκεκριμένα βήματα να εκτελέσει (σε ποια συγκεκριμένη σειρά) προκειμένου να επιτευχθεί ένας συγκεκριμένος στόχος, όπως π.χ. ο υπολογισμός των μισθών των υπαλλήλων ή η εκτύπωση των έλεγχων των μαθητών. Κατά συνέπεια, ''ένας αλγόριθμος μπορεί να θεωρηθεί οποιαδήποτε ακολουθία εντολών που μπορεί να εκτελεσθεί από μια υπολογιστική μηχανή'' (Μηχανή Τιούρινγκ).[5][6] Αυτός ο ορισμός δόθηκε τον 20ο αιώνα από τον Άλαν Τιούρινγκ.



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



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

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



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







(Στην πληροφορική δομημένος προγραμματισμός ή διαδικαστικός προγραμματισμός είναι μία 


προσέγγιση στον προγραμματισμό, η οποία βασίζεται στην έννοια της κλήσης διαδικασίας. 



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



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







του διαίρει και βασίλευε, καθώς διασπά το βασικό πρόβλημα σε μικρότερα υποπροβλήματα.)


Αυτή είναι και η πιο κοινή αντίληψη, η οποία προσπαθεί να περιγράψει ένα έργο με διακεκριμένα, "μηχανικά" μέσα. Μοναδικός σε αυτήν την αντίληψη των αλγόριθμων είναι ο ρόλος της λειτουργίας ανάθεσης (ο καθορισμός της τιμής μιας μεταβλητής) ο οποίος προέρχεται από τη ιδέα "της μνήμης" σαν πρόχειρο τετράδιο. Δείτε ακόμα το λειτουργικό προγραμματισμό και τον λογικό προγραμματισμό για εναλλακτικές αντιλήψεις για το τι αποτελεί έναν αλγόριθμο.



Εφαρμογή των αλγορίθμων



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


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



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






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

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



ενός αλγόριθμου περιγράφονται με σύντομες και περιεκτικές προτάσεις που όμως υπακούουν σε μια 



τυποποίηση που πλησιάζει την τυποποίηση μιας γλώσσας προγραμματισμού. Είναι ένα από τα πιο 



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

σε φυσική γλώσσα του κώδικα που απαιτείται για έναν αλγόριθμο. Είναι κατά ένα ποσοστό 



φυσική γλώσσα και κατά το υπόλοιπο δομημένος κώδικας.





Άλλοι τρόποι είναι: με ελεύθερο κείμενο, με φυσική γλώσσα περιγράφοντας τα βήματα και με λογικό διάγραμμα .





Βιβλιογραφία


1. Α. Βακάλη, Η. Γιαννόπουλος, Ν. Ιωαννίδης, Χ. Κοίλιας, Κ. Μαλάμας, Ι. Μανωλόπουλος, Π. Πολίτης (2010 - Έκδοση ΙΑ). Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Υπουργείο Εθνικής Παιδείας και Θρησκευμάτων - Παιδαγωγικό Ινστιτούτο, σελ. 28-29. ISBN 960-06-1408-3.

2. Α. Βακάλη, Η. Γιαννόπουλος, Ν. Ιωαννίδης, Χ. Κοίλιας, Κ. Μαλάμας, Ι. Μανωλόπουλος, Π. Πολίτης (2010 - Έκδοση ΙΑ). Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Υπουργείο Εθνικής Παιδείας και Θρησκευμάτων - Παιδαγωγικό Ινστιτούτο, σελ. 30-32. ISBN 960-06-1408-3.

3. Α. Βακάλη, Η. Γιαννόπουλος, Ν. Ιωαννίδης, Χ. Κοίλιας, Κ. Μαλάμας, Ι. Μανωλόπουλος, Π. Πολίτης (2010 - Έκδοση ΙΑ). Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Υπουργείο Εθνικής Παιδείας και Θρησκευμάτων - Παιδαγωγικό Ινστιτούτο, σελ. 32-35. ISBN 960-06-1408-3.

4. Α. Βακάλη, Η. Γιαννόπουλος, Ν. Ιωαννίδης, Χ. Κοίλιας, Κ. Μαλάμας, Ι. Μανωλόπουλος, Π. Πολίτης (2010 - Έκδοση ΙΑ). Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Υπουργείο Εθνικής Παιδείας και Θρησκευμάτων - Παιδαγωγικό Ινστιτούτο, σελ. 39-48. ISBN 960-06-1408-3.

5. Σ. Ζάχος, Δ. Φωτάκης. «Μηχανές Turing και Υπολογισιμότητα». Διαφάνειες μαθήματος στην Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών, Εθνικό Μετσόβιο Πολυτεχνείο. Ανακτήθηκε στις 2011-10-06.

6. Παπαδοπούλου Βίκη (2007). «Θεωρία Υπολογισμού και Πολυπλοκότητα». European University of Cyprus. Ανακτήθηκε στις 2011-10-06.
via

Pages