Αρχική σελίδα » πως να » Τι είναι οι Αλγόριθμοι Υπολογιστών και πώς λειτουργούν;

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

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

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

    Εικόνα από Ιάν Ρουτσάλα

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

    Η λέξη «αλγόριθμος» έχει μια ετυμολογία παρόμοια με την 'άλγεβρα', εκτός από το ότι αυτό αναφέρεται στον ίδιο τον αραβικό μαθηματικό, al-Khwarizmi (απλά ένα ενδιαφέρον κομμάτι). Ένας αλγόριθμος, για τους μη προγραμματιστές μεταξύ μας, είναι ένα σύνολο οδηγιών που παίρνουν μια είσοδο, Α, και παρέχουν μια έξοδο, Β, που αλλάζει τα δεδομένα που εμπλέκονται με κάποιο τρόπο. Οι αλγόριθμοι έχουν μεγάλη ποικιλία εφαρμογών. Στα μαθηματικά, μπορούν να βοηθήσουν στον υπολογισμό των λειτουργιών από σημεία σε σύνολο δεδομένων, μεταξύ πολύ πιο προηγμένων. Εκτός από τη χρήση τους στον ίδιο τον προγραμματισμό, παίζουν σημαντικό ρόλο σε πράγματα όπως η συμπίεση αρχείων και η κρυπτογράφηση δεδομένων.

    Ένα βασικό σύνολο οδηγιών

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

    (εικόνα με τίτλο "ρουτίνα παγοποίησης" EDIT: ευγένεια του Trigger και Freewheel)

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

    Γραφικές παραστάσεις

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

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

    Μέθοδος 1

    Μπορούμε να το αντιπροσωπεύσουμε ως μια σειρά σημείων και οι πληροφορίες θα ακολουθήσουν την τυπική μορφή του γράφου = (x1, y1), (x2, y2), ..., (xn, yn).

    (3), (5, 5), (7, 10), (8,7), (9,4), (10,1)

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

    Μέθοδος 2

    Ένα άλλο πράγμα που μπορούμε να κάνουμε είναι να δώσουμε ένα σημείο εκκίνησης, την κλίση της γραμμής μεταξύ αυτού και του επόμενου σημείου και να υποδείξουμε πού να περιμένουμε το επόμενο σημείο χρησιμοποιώντας την τυπική μορφή graph = (starting point, [m1, x1, h1 ], ..., [mn, xn, hn] Εδώ, η μεταβλητή «m» αντιπροσωπεύει την κλίση της γραμμής, το «x» αντιπροσωπεύει την κατεύθυνση που μετράει (είτε x είτε y) πολλοί για να μετρήσουν στην εν λόγω κατεύθυνση. Μπορείτε επίσης να θυμηθείτε να σχεδιάσετε ένα σημείο μετά από κάθε κίνηση.

    (0, x, 2), [3, x, 1], [1, x, 2] [-3, χ, 1], [-3, χ, 1]

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

    (0, x, 2), [3, x, 1], [1, x, 2] [R = 2]

    Τι γίνεται αν τα μεμονωμένα σημεία δεν έχουν σημασία και μόνο το ίδιο το γράφημα; Μπορούμε να εδραιώσουμε αυτά τα τελευταία τρία τμήματα όπως π.χ.:

    (2), [2, x, 2], [3, x, 3], [1, x,

    Μειώνει τα πράγματα λίγο από εκεί που ήταν πριν.

    Μέθοδος 3

    Ας προσπαθήσουμε να το κάνουμε με άλλο τρόπο.

    y = 0, 0≤x≤3
    x = 0, 0≤y≤3
    y = x, 3 y = 2,5x-7,5, 5 y = -3x + 29, 7≤x≤8
    y = -3x + 29, 8 y = -3x + 29, 9

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

    y = 0, 0≤x≤3
    x = 0, 0≤y≤3
    y = x, 3 y = 2,5x-7,5, 5 y = -3x + 29, 7

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

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

    Συμπίεση αρχείων

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

    Οι αλγόριθμοι συμπίεσης προσαρμόζονται και βελτιστοποιούνται ειδικά για τους τύπους αρχείων στους οποίους απευθύνονται. Οι μορφές ήχου, για παράδειγμα, χρησιμοποιούν διαφορετικό τρόπο αποθήκευσης δεδομένων, τα οποία, όταν αποκωδικοποιούνται από τον κωδικοποιητή ήχου, δίνουν ένα ηχητικό αρχείο παρόμοιο με την αρχική κυματομορφή. Για περισσότερες πληροφορίες σχετικά με αυτές τις διαφορές, δείτε το προηγούμενο άρθρο μας, Ποιες είναι οι διαφορές μεταξύ όλων αυτών των μορφών ήχου; Οι απώλειες μορφές ήχου και τα αρχεία .zip έχουν ένα κοινό πράγμα: και οι δύο αποδίδουν τα αρχικά δεδομένα στην ακριβή μορφή τους μετά τη διαδικασία αποσυμπίεσης. Οι απωλεστικοί κωδικοποιητές ήχου χρησιμοποιούν άλλα μέσα για να εξοικονομήσουν χώρο στο δίσκο, όπως συχνότητες αφαίρεσης που δεν μπορούν να ακουστούν από τα ανθρώπινα αυτιά και εξομάλυνση της κυματομορφής σε τμήματα για να απαλλαγούμε από κάποιες λεπτομέρειες. Στο τέλος, αν και δεν μπορούμε να ακούσουμε πραγματικά τη διαφορά μεταξύ ενός κομματιού MP3 και ενός CD, υπάρχει σίγουρα ένα έλλειμμα πληροφόρησης στο πρώτο.

    Κρυπτογράφηση δεδομένων

    Οι αλγόριθμοι χρησιμοποιούνται επίσης για την εξασφάλιση δεδομένων ή γραμμών επικοινωνίας. Αντί να αποθηκεύει δεδομένα έτσι ώστε να χρησιμοποιεί λιγότερο χώρο στο δίσκο, αποθηκεύεται με τρόπο που δεν μπορεί να ανιχνευθεί από άλλα προγράμματα. Εάν κάποιος κλέψει τον σκληρό σας δίσκο και αρχίσει να το σαρώσει, μπορεί να πάρει δεδομένα ακόμη και όταν διαγράφετε αρχεία, επειδή τα ίδια τα δεδομένα παραμένουν εκεί, ακόμα κι αν η θέση προώθησης σε αυτό έχει φύγει. Όταν τα δεδομένα είναι κρυπτογραφημένα, ό, τι αποθηκεύεται δεν μοιάζει με αυτό που είναι. Φαίνεται συνήθως τυχαία, σαν να είχε δημιουργηθεί διαχρονικά ο κατακερματισμός. Μπορείτε επίσης να αποθηκεύσετε δεδομένα και να τα εμφανίσετε ως άλλο τύπο αρχείου. Τα αρχεία εικόνων και τα αρχεία μουσικής είναι καλά γι 'αυτό, γιατί μπορούν να είναι αρκετά μεγάλα χωρίς να δημιουργούν υποψίες, για παράδειγμα. Όλα αυτά γίνονται με τη χρήση μαθηματικών αλγορίθμων, οι οποίοι παίρνουν κάποιο είδος εισόδου και μετατρέπουν το σε άλλο, πολύ συγκεκριμένο τύπο εξόδου. Για περισσότερες πληροφορίες σχετικά με τον τρόπο λειτουργίας της κρυπτογράφησης, δείτε το HTG Εξηγεί: Τι είναι η κρυπτογράφηση και πώς λειτουργεί?


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