Cosa sono gli algoritmi informatici e come funzionano?
Pubblicato: 2022-01-29A meno che tu non sia appassionato di matematica o programmazione, la parola "algoritmo" potrebbe essere greca per te, ma è uno degli elementi costitutivi di tutto ciò che stai usando per leggere questo articolo. Ecco una rapida spiegazione di cosa sono e come funzionano.
Dichiarazione di non responsabilità: 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 un inglese semplice perché le persone non sono abbastanza a loro agio con la matematica. Detto questo, c'è un po' di matematica coinvolta, ed è inevitabile. Appassionati di matematica, sentiti libero di correggere o spiegare meglio nei commenti, ma per favore, mantieni le cose semplici per i matematicamente poco inclini tra noi.
Immagine di Ian Ruotsala
Cos'è un algoritmo?
La parola "algoritmo" ha un'etimologia simile a "algebra", tranne per il fatto che si riferisce allo stesso matematico arabo, al-Khwarizmi (solo un bocconcino interessante). Un algoritmo, per i non programmatori tra noi, è un insieme di istruzioni che accettano un input, A, e forniscono un output, B, che modifica in qualche modo i dati coinvolti. Gli algoritmi hanno un'ampia varietà di applicazioni. In matematica, possono aiutare a calcolare funzioni da punti in un set di dati, tra le cose molto più avanzate. A parte il loro utilizzo nella programmazione stessa, svolgono ruoli importanti in cose come la compressione dei file e la crittografia dei dati.
Una serie di istruzioni di base
Diciamo che il tuo amico ti incontra in un negozio di alimentari e lo stai guidando verso di te. Dici cose come "entra attraverso le porte sul lato destro", "passa la sezione del pesce a sinistra" e "se vedi il caseificio, mi hai superato". Gli algoritmi funzionano così. Possiamo utilizzare un diagramma di flusso per illustrare le istruzioni basate su criteri che conosciamo in anticipo o scoprire durante il processo.
(immagine intitolata "Routine Icebreaking" EDIT: per gentile concessione di Trigger e Freewheel)
Da START, ti dirigerai lungo il percorso e, a seconda di ciò che accade, segui il "flusso" fino a un risultato finale. I diagrammi di flusso sono strumenti visivi che possono rappresentare in modo più comprensibile 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 rappresentarlo come una serie di punti e l'informazione seguirebbe la forma standard del grafico = {(x1, y1), (x2, y2), …, (xn, yn)}.
grafico = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1) }
È abbastanza facile tracciare ogni punto, uno dopo l'altro, e collegarli al punto precedente. Tuttavia, immagina un grafico con mille punti o più segmenti che vanno tutti da una parte e dall'altra. Quella lista conterrebbe molti dati, giusto? E poi dover collegare ognuno, uno alla volta, può essere una seccatura.
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 punto successivo usando la forma standard di graph={(punto di partenza}, [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 da contare in tale direzione.Puoi anche ricordare di tracciare un punto dopo ogni movimento.
grafico = {(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 in questa espressione sono gli stessi, quindi potremmo essere in grado di ridurlo semplicemente dicendo "ripetere tre volte" in qualche modo. Diciamo che ogni volta che vedi apparire la variabile 'R', significa ripetere l'ultima cosa. Possiamo farcela:
grafico = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [R=2]}
E se i singoli punti non contano davvero e solo il grafico stesso lo fa? Possiamo consolidare queste ultime tre sezioni in questo modo:
grafico = {(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 puramente algebrici. Ancora una volta, se i punti stessi 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 capacità. Forse sei bravo con la matematica e la grafica, quindi scegli l'ultima opzione. Forse sei bravo a navigare, quindi scegli la seconda opzione. Nel regno dei computer, tuttavia, stai svolgendo molti tipi diversi di attività e le capacità del computer non cambiano davvero. 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 serie di istruzioni è inutile a meno che tu non sappia cosa farne. Se non sai che dovresti tracciare ogni punto e collegare i punti, la prima serie di punti non significa nulla. A meno che tu non sappia cosa significa ogni variabile nel secondo metodo, non saprai come applicarle, proprio come la chiave di un cifrario. Quella chiave è anche parte integrante dell'utilizzo di algoritmi e, spesso, quella chiave si trova nella comunità o tramite uno "standard".
Compressione dei file
Quando scarichi un file .zip, estrai il contenuto in modo da poter utilizzare tutto ciò che è al suo interno. Al giorno d'oggi, la maggior parte dei sistemi operativi può immergersi nei file .zip come se fossero normali cartelle, facendo tutto in background. Sulla mia macchina Windows 95 oltre un decennio fa, ho dovuto estrarre tutto manualmente prima di poter vedere qualcosa di più dei nomi dei file all'interno. Questo perché ciò che è stato archiviato sul disco come file .zip non era in una forma utilizzabile. Pensa a un divano letto. Quando vuoi usarlo come letto, devi rimuovere i cuscini e aprirlo, che occupa più spazio. Quando non ti serve o vuoi trasportarlo, puoi ripiegarlo.
Gli algoritmi di compressione vengono 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 per memorizzare i dati che, una volta decodificati dal codec audio, forniranno un file audio simile alla forma d'onda originale. Per ulteriori informazioni su queste differenze, consulta il nostro articolo precedente, Quali sono le differenze tra tutti quei formati audio? I formati audio lossless e i file .zip hanno una cosa in comune: entrambi restituiscono i dati originali nella loro forma esatta dopo il processo di decompressione. I codec audio lossy utilizzano altri mezzi per risparmiare spazio su disco, come tagliare le frequenze che non possono essere ascoltate dall'orecchio umano e smussare la forma d'onda in sezioni per eliminare alcuni dettagli. Alla fine, anche se potremmo non essere in grado di sentire davvero la differenza tra un MP3 e un CD, c'è sicuramente un deficit di informazioni nel primo.
Crittografia dei dati
Gli algoritmi vengono utilizzati anche per proteggere i dati o le linee di comunicazione. Invece di archiviare i dati in modo da utilizzare meno spazio su disco, vengono archiviati in un modo che non è rilevabile da altri programmi. Se qualcuno ruba il tuo disco rigido e inizia a scansionarlo, può raccogliere dati anche quando elimini i file perché i dati stessi sono ancora lì, anche se la posizione di inoltro è scomparsa. Quando i dati vengono crittografati, tutto ciò che viene archiviato non sembra quello che è. Di solito sembra casuale, come se la frammentazione si fosse accumulata nel tempo. Puoi anche memorizzare i dati e farli apparire come un altro tipo di file. I file di immagine e i file musicali sono utili per questo, in quanto possono essere piuttosto grandi senza destare sospetti, ad esempio. Tutto questo viene fatto utilizzando algoritmi matematici, che prendono una sorta di input e lo convertono in un altro tipo di output molto specifico. Per ulteriori informazioni su come funziona la crittografia, consulta HTG Explains: 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 di più di quello che abbiamo evidenziato? Condividi le tue spiegazioni nei commenti!