Homepage » come » Quali sono gli algoritmi del computer e come funzionano?

    Quali sono gli algoritmi del computer e come funzionano?

    A meno che non siate in matematica o in programmazione, la parola "algoritmo" potrebbe essere greca per voi, ma è uno degli elementi costitutivi di tutto ciò che state usando per leggere questo articolo. Ecco una rapida spiegazione di cosa sono e come funzionano.

    Disclaimer: non sono un insegnante di matematica o informatica, quindi non tutti i termini che uso sono tecnici. Questo perché sto cercando di spiegare tutto in inglese semplice perché le persone non sono del tutto a loro agio con la matematica. Detto questo, c'è un po 'di matematica in gioco, e questo è inevitabile. Geek matematici, sentiti libero di correggere o meglio spiegare nei commenti, ma per favore, tienilo semplice per il matematicamente disincantato tra noi.

    Immagine di Ian Ruotsala

    Cos'è un algoritmo?

    La parola "algoritmo" ha un'etimologia simile a "algebra", tranne che si riferisce al matematico arabo stesso, al-Khwarizmi (solo un bocconcino interessante). Un algoritmo, per i non programmatori tra di noi, è un insieme di istruzioni che accettano un input, A e forniscono un output, B, che modifica i dati coinvolti in qualche modo. Gli algoritmi hanno una vasta gamma di applicazioni. In matematica, possono aiutare a calcolare le funzioni da punti in un set di dati, tra cose molto più avanzate. Oltre al loro uso nella programmazione stessa, svolgono ruoli importanti in cose come la compressione dei file e la crittografia dei dati.

    Un set di istruzioni di base

    Diciamo che il tuo amico ti sta incontrando in un negozio di alimentari e tu lo stai guidando verso di te. Dici cose come "entra attraverso le porte sul lato destro", "passa la sezione dei pesci a sinistra" e "se vedi il caseificio, mi hai superato". Gli algoritmi funzionano così. Possiamo utilizzare un diagramma di flusso per illustrare le istruzioni in base a criteri che conosciamo in anticipo o scoprire durante il processo.

    (immagine intitolata "Routine rompighiaccio" EDIT: cortesia di Trigger e Freewheel)

    DALL'AVVIO, scenderesti il ​​percorso e, in base a ciò che accade, segui il "flusso" fino al risultato finale. I diagrammi di flusso sono strumenti visivi che possono rappresentare più comprensibilmente un insieme di istruzioni utilizzate dai computer. Allo stesso modo, gli algoritmi aiutano a fare lo stesso con più modelli basati sulla matematica.

    grafici

    Usiamo un grafico per illustrare i vari modi in cui possiamo dare indicazioni.

    Possiamo esprimere questo grafico come una connessione tra tutti i suoi punti. Per riprodurre questa immagine, possiamo dare una serie di istruzioni a qualcun altro.

    Metodo 1

    Possiamo rappresentare questo come una serie di punti e l'informazione seguirebbe la forma standard di graph = (x1, y1), (x2, y2), ..., (xn, yn).

    grafico = (0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)

    È abbastanza semplice tracciare ogni punto, uno dopo l'altro, e collegarli al punto precedente. Tuttavia, immagina un grafico con un migliaio di punti o più segmenti che vanno in ogni direzione. Quella lista avrebbe molti dati, giusto? E poi dover collegare ognuno, uno alla volta, può essere un dolore.

    Metodo 2

    Un'altra cosa che possiamo fare è dare un punto di partenza, la pendenza della linea tra esso e il punto successivo, e indicare dove aspettarsi il prossimo punto usando la forma standard di graph = (punto iniziale, [m1, x1, h1 ], ..., [mn, xn, hn]. Qui, la variabile 'm' rappresenta la pendenza della linea, 'x' rappresenta la direzione in cui contare (se x o y), e 'h' ti dice come molti contano in questa direzione e puoi anche ricordare di tracciare un punto dopo ogni movimento.

    graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2,5, x, 2], [-3, x, 1], [-3, x, 1], [-3, x, 1]

    Finirai con lo stesso grafico. Puoi vedere che gli ultimi tre termini di questa espressione sono gli stessi, quindi potremmo essere in grado di ridurlo semplicemente dicendo "ripeti tre volte" in qualche modo. Diciamo che ogni volta che si visualizza la variabile 'R', significa ripetere l'ultima cosa. Possiamo farlo:

    graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2,5, x, 2], [-3, x, 1], [R = 2]

    Cosa succede se i singoli punti non contano davvero, e solo il grafico stesso? Possiamo consolidare le ultime tre sezioni in questo modo:

    graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2,5, x, 2], [-3, x, 3]

    Accorcia le cose un po 'da dove erano prima.

    Metodo 3

    Proviamo a farlo in un altro modo.

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

    Qui lo abbiamo in termini algebrici puri. Ancora una volta, se i punti non contano e solo il grafico lo fa, possiamo consolidare gli ultimi tre elementi.

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

    Ora, quale metodo scegli dipende dalle tue abilità. Forse sei bravo con matematica e grafica, quindi scegli l'ultima opzione. Forse sei bravo a navigare, quindi scegli la seconda opzione. Nel regno dei computer, tuttavia, stai facendo molti diversi tipi di compiti e l'abilità del computer in realtà non cambia. Pertanto, gli algoritmi sono ottimizzati per le attività che completano.

    Un altro punto importante da notare è che ogni metodo si basa su una chiave. Ogni set di istruzioni è inutile a meno che tu non sappia cosa fare con loro. Se non sai che dovresti tracciare ogni punto e connettere i punti, la prima serie di punti non significa nulla. A meno che tu non sappia cosa significhi ciascuna variabile nel secondo metodo, non saprai come applicarli, proprio come la chiave di un cifrario. Quella chiave è anche parte integrante dell'utilizzo di algoritmi e, spesso, tale chiave si trova nella comunità o tramite uno "standard".

    Compressione dei file

    Quando si scarica un file .zip, si estrae il contenuto in modo da poter utilizzare qualsiasi cosa ci sia dentro. Al giorno d'oggi, la maggior parte dei sistemi operativi può tuffarsi nei file .zip come se fossero normali cartelle, facendo tutto in background. Sulla mia macchina Windows 95 oltre un decennio fa, dovevo estrarre tutto manualmente prima che potessi vedere qualcosa di più dei nomi dei file all'interno. Questo perché ciò che è stato memorizzato sul disco come file .zip non era in una forma utilizzabile. Pensa a un divano estraibile. Quando vuoi usarlo come letto, devi rimuovere i cuscini e aprirlo, occupando più spazio. Quando non ne hai bisogno, o vuoi trasportarlo, puoi ripiegarlo.

    Gli algoritmi di compressione sono regolati e ottimizzati in modo specifico per i tipi di file a cui sono destinati. I formati audio, ad esempio, utilizzano ciascuno un modo diverso di memorizzare i dati che, se decodificati dal codec audio, daranno un file audio simile alla forma d'onda originale. Per ulteriori informazioni su tali differenze, consulta il nostro precedente articolo, Quali sono le differenze tra tutti questi formati audio? I formati audio senza perdita di dati e i file .zip hanno una cosa in comune: entrambi producono i dati originali nella loro forma esatta dopo il processo di decompressione. I codec audio con perdita di dati utilizzano altri mezzi per risparmiare spazio su disco, come le frequenze di taglio che non sono in grado di essere ascoltate dalle orecchie umane e che uniformano la forma d'onda nelle sezioni per eliminare alcuni dettagli. Alla fine, mentre potremmo non essere in grado di sentire davvero la differenza tra una traccia MP3 e una traccia CD, c'è sicuramente un deficit di informazioni nella prima.

    Crittografia dei dati

    Gli algoritmi vengono anche utilizzati per proteggere i dati o le linee di comunicazione. Anziché archiviare i dati in modo che utilizzi meno spazio su disco, viene archiviato in un modo non rilevabile da altri programmi. Se qualcuno ruba il tuo disco rigido e inizia a scansionarlo, può raccogliere i dati anche quando elimini i file perché i dati stessi sono ancora lì, anche se la posizione di inoltro ad esso è sparita. Quando i dati sono crittografati, tutto ciò che è memorizzato non sembra quello che è. Di solito sembra casuale, come se la frammentazione si fosse accumulata nel tempo. È inoltre possibile memorizzare i dati e farlo apparire come un altro tipo di file. File di immagini e file musicali sono buoni per questo, in quanto possono essere piuttosto grandi senza destare sospetti, per esempio. Tutto ciò viene fatto usando algoritmi matematici, che prendono una sorta di input e convertono in un altro tipo di output molto specifico. Per ulteriori informazioni su come funziona la crittografia, consulta HTG Explains: Che cos'è la crittografia e come funziona?


    Gli algoritmi sono strumenti matematici che forniscono una varietà di usi nell'informatica. Lavorano per fornire un percorso tra un punto iniziale e un punto finale in modo coerente e forniscono le istruzioni per seguirlo. Sapere più di ciò che abbiamo evidenziato? Condividi le tue spiegazioni nei commenti!