
A meno che non ti piaccia la matematica o la programmazione, la parola “algoritmo” potrebbe essere per te greca, ma è uno dei mattoni di tutto ciò che stai usando per leggere questo articolo. Ecco una breve spiegazione di cosa sono e come funzionano.
Disclaimer: non sono un insegnante di matematica o informatica, quindi non tutti i termini che utilizzo sono tecnici. Questo perché sto cercando di spiegare tutto in un inglese semplice per le persone che non sono abbastanza a proprio agio con la matematica. Detto questo, c'è un po 'di matematica coinvolta, ed è inevitabile. Esperti di matematica, sentitevi liberi di correggere o meglio spiegare nei commenti, ma per favore, mantenetelo semplice per i matematicamente non delineati tra noi.
Immagine di Ian Ruotsala
Che cos'è un algoritmo?
La parola “algoritmo” ha un'etimologia simile a “algebra”, tranne per il fatto che questo si riferisce al matematico arabo stesso, al-Khwarizmi (solo un boccone 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 le funzioni dai punti in un set di dati, tra cose molto più avanzate. A parte il loro uso nella programmazione stessa, svolgono ruoli importanti in cose come la compressione dei file e la crittografia dei dati.
Un insieme di istruzioni di base
Diciamo che il tuo amico ti sta incontrando 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 di pesce a sinistra” e “se vedi il caseificio, mi hai superato”. Gli algoritmi funzionano così. Possiamo usare un diagramma di flusso per illustrare istruzioni basate su criteri che conosciamo in anticipo o scoprire durante il processo.

(immagine intitolata “Icebreaking Routine” EDIT: per gentile concessione di Trigger e Freewheel)
Da START, ti dirigi verso il basso e, a seconda di ciò che accade, segui il “flusso” per 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 le informazioni seguiranno 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 in ogni modo. Quell'elenco avrebbe molti dati, giusto? E poi dover collegare ognuno, uno alla volta, può essere una seccatura.
Metodo 2
Un'altra cosa che possiamo fare è fornire 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 del grafico = {(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 contano in questa 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 “ripeti 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)}
Cosa succede 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 l'abbiamo in termini algebrici puri. Ancora una volta, se i punti stessi non contano e solo il grafico 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 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 codice. Quella chiave è anche parte integrante dell'uso 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 usare tutto ciò che è al suo interno. Al giorno d'oggi, la maggior parte dei sistemi operativi può immergersi in 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 aprirli, occupando più spazio. Quando non ti serve o vuoi trasportarlo, puoi ripiegarlo.
Gli algoritmi di compressione sono adattati e ottimizzati specificamente per i tipi di file a cui sono destinati. I formati audio, ad esempio, utilizzano ciascuno un modo diverso per memorizzare i dati che, se 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 senza perdita e i file .zip hanno una cosa in comune: entrambi producono i dati originali nella sua forma esatta dopo il processo di decompressione. I codec audio con perdita di dati usano altri mezzi per risparmiare spazio su disco, come tagliare le frequenze che non sono in grado di essere ascoltate dalle orecchie umane e appianare la forma d'onda in 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, nel primo c'è sicuramente un deficit di informazioni.
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, 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 vengono crittografati, tutto ciò che viene archiviato non sembra quello che sono. Di solito sembra casuale, come se la frammentazione si fosse accumulata nel tempo. Puoi anche archiviare i dati e farli apparire come un altro tipo di file. I file di immagini e i file musicali sono utili per questo, in quanto possono essere piuttosto grandi senza destare sospetti, ad esempio. Tutto ciò viene fatto utilizzando algoritmi matematici, che accettano un qualche tipo di input e lo convertono in un altro tipo di output molto specifico. Per ulteriori informazioni su come funziona la crittografia, controlla HTG Spiega: 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. Sai di più di ciò che abbiamo evidenziato? Condividi le tue spiegazioni nei commenti!
