Τι είναι ένας αλγόριθμος;

Ανακαλύψτε πώς λειτουργούν οι αλγόριθμοι στον κόσμο

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

  1. Πηγαίνετε κάτω από το δρόμο
  2. Πάρε τον πρώτο δρόμο δεξιά
  3. Βρείτε το δεύτερο σπίτι στα αριστερά
  4. Κτυπήστε στην πόρτα και
  5. Παραδώστε το πακέτο.

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

Ένα παράδειγμα ενός αλγορίθμου

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

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

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

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

Πώς εξελίχθηκαν οι αλγόριθμοι ταξινόμησης

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

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

Ο αλγόριθμος μπορεί να φαίνεται τόσο απλός, όπως:

  1. Πηγαίνετε στην πρώτη τιμή.
  2. Ελέγξτε την τιμή έναντι της επόμενης τιμής και τις θέσεις ανταλλαγής, αν χρειαστεί
  3. Μεταβείτε στην επόμενη τιμή και επαναλάβετε τη σύγκριση.
  4. Εάν βρισκόμαστε στο τέλος της λίστας, επιστρέψτε στην κορυφή εάν οποιαδήποτε τιμή έχει αντικατασταθεί κατά τη διάρκεια του βρόχου.

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

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

Αυτό είναι όπου οι αλγόριθμοι μπορούν να πάρουν πραγματικά τρελό. Ή πραγματικά ενδιαφέρον, ανάλογα με το πώς το βλέπεις.

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

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

Τι μαθαίνουμε από τη σειρά φυσαλίδων

Αλγόριθμοι Facebook και περισσότερο στην καθημερινή ζωή

Οι αλγόριθμοι λειτουργούν καθημερινά βοηθώντας τους ανθρώπους. Όταν κάνετε αναζήτηση στον ιστό, ένας αλγόριθμος βρίσκεται σε λειτουργία προσπαθώντας να βρει τα καλύτερα αποτελέσματα αναζήτησης. Ρωτήστε το smartphone σας για οδηγίες και ένας αλγόριθμος αποφασίζει για την καλύτερη διαδρομή που πρέπει να ακολουθήσετε. Και όταν περιηγείστε στο Facebook, ένας αλγόριθμος αποφασίζει ποιες από τις αναρτήσεις του φίλου μας στο Facebook είναι πιο σημαντικές για εμάς. (Ας ελπίσουμε ότι οι φίλοι μας δεν θα μάθουν ποιο πιστεύει το Facebook ότι μας αρέσει περισσότερο!)

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

Ας πούμε ότι ξεκινώ με δύο φέτες ψωμιού, εξαπλώνοντας μουστάρδα σε μια φέτα και μαγιονέζα σε μια άλλη φέτα. Βάζω μια φέτα τυρί στο ψωμί με τη μαγιονέζα, ένα ζαμπόν πάνω από αυτό, μερικά μαρούλια, δύο φέτες ντομάτα και στη συνέχεια το καπάκι με τη φέτα με τη μουστάρδα πάνω σε αυτό. Καλό σάντουιτς, σωστά;

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

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

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