A meno che tu non sia interessato alla matematica o alla programmazione, la parola "algoritmo" potrebbe essere greca per te, ma è uno degli elementi costitutivi di tutto ciò che utilizzi 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 per le persone che non sono abbastanza a loro agio con la matematica. Detto questo, c'è un po 'di matematica coinvolta, e questo è inevitabile. Geek di matematica, sentiti libero di correggere o spiegare meglio nei commenti, ma per favore, mantienilo semplice per i matematicamente non 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 interessante bocconcino). Un algoritmo, per i non programmatori tra di noi, è un insieme di istruzioni che prendono un input, A, e forniscono un output, B, che cambia in qualche modo i dati coinvolti. Gli algoritmi hanno un'ampia varietà di applicazioni. In matematica, possono aiutare a calcolare le funzioni da punti in un set di dati, tra cose molto più avanzate. A parte il loro utilizzo nella programmazione stessa, svolgono un ruolo importante in cose come la compressione dei file e la crittografia dei dati.
Una serie di istruzioni di base
Supponiamo che il tuo amico ti incontri in un negozio di alimentari e che tu lo stia guidando verso di te. Dici cose come "entra dalle porte di destra", "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 in base a criteri che conosciamo in anticipo o che scopriamo durante il processo.
(immagine intitolata " Routine rompighiaccio "EDIT: cortesia di Grilletto e ruota libera )
Da INIZIO, ti dirigerai lungo il sentiero e, a seconda di cosa succede, segui il "flusso" fino al risultato finale. I diagrammi di flusso sono strumenti visivi che possono rappresentare più comprensibilmente una serie 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 tutti in ogni direzione. Quella lista avrebbe molti dati, giusto? E poi dover collegare ciascuno, 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 punto successivo utilizzando la forma standard del grafico = {(starting point}, [m1, x1, h1],…, [mn, xn, hn]}. In questo caso, la variabile "m" rappresenta la pendenza della linea, "x" rappresenta la direzione in cui contare (sia x che y) e "h" ti dice quanti contare in detta direzione. Puoi anche ricordarti 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 ridurli semplicemente dicendo "ripeti tre volte" in qualche modo. Supponiamo che ogni volta che vedi apparire la variabile "R", significhi ripetere l'ultima cosa. Possiamo farlo:
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 algebrici puri. 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, il metodo che scegli dipende dalle tue capacità. Forse sei bravo con la matematica e i grafici, quindi scegli l'ultima opzione. Forse sei bravo a navigare, quindi scegli la seconda opzione. Nel regno dei computer, tuttavia, esegui molti tipi diversi di attività e l'abilità del computer non cambia 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 set 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'utilizzo degli algoritmi e, spesso, quella chiave si trova nella comunità o tramite uno "standard".
File Compression
Quando scarichi un file .zip, ne 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 memorizzato 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, il che occupa più spazio. Quando non ne hai bisogno, 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, quando 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 questi formati audio? I formati audio lossless e i file .zip hanno una cosa in comune: entrambi forniscono i dati originali nella loro forma esatta dopo il processo di decompressione. I codec audio con perdita utilizzano altri mezzi per risparmiare spazio su disco, come tagliare le frequenze che non sono in grado di essere ascoltate dall'orecchio umano e uniformare la forma d'onda nelle sezioni per eliminare alcuni dettagli. Alla fine, anche se potremmo non essere in grado di sentire veramente la differenza tra una traccia MP3 e una traccia CD, c'è sicuramente una carenza di informazioni nella prima.
Crittografia dei dati
Gli algoritmi vengono utilizzati anche per proteggere i dati o le linee di comunicazione. Invece di archiviare i dati in modo che utilizzi meno spazio su disco, vengono archiviati 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 è scomparsa. Quando i dati vengono crittografati, tutto ciò che viene archiviato non ha l'aspetto di ciò 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. File di immagine e file musicali sono utili per questo, in quanto possono essere abbastanza grandi senza destare sospetti, ad esempio. Tutto questo viene fatto utilizzando algoritmi matematici, che prendono 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: 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!