Un algoritmo è un insieme di istruzioni. La definizione è davvero così semplice. Un algoritmo può essere facile come dare istruzioni come questa:
- Vai per la strada.
- Prendi la prima a destra.
- Trova la seconda casa a sinistra.
- Bussare alla porta.
- Consegna il pacco.
Ma mentre la definizione dell'algoritmo è semplice, il significato effettivo e il modo in cui influisce sulle nostre vite possono essere piuttosto complessi.
Un esempio di un algoritmo
Un esempio comune di un algoritmo che usiamo nella nostra vita quotidiana è una ricetta. Questo insieme di istruzioni ci fornisce tutti gli ingredienti di cui avremo bisogno e indicazioni su cosa fare con questi ingredienti. Sembra facile, giusto?
Ma cosa succede se non sai dove viene conservato il misurino? Avresti bisogno di un algoritmo per trovarlo. Potrebbe anche essere necessario un algoritmo su come usare un misurino.
Quindi, mentre un algoritmo è un insieme di istruzioni, deve anche prendere in considerazione chi o cosa interpreterà quelle istruzioni. Ad esempio, se fornisci indicazioni a un amico che spiega come arrivare da casa al negozio di alimentari più vicino, il tuo amico saprà come raggiungere quel negozio solo se saprà dove si trova la tua casa. Non sono in grado (ancora) di trovare quel particolare negozio di alimentari da casa di altri amici.
Ecco come un algoritmo può essere sia semplice che complesso. E quando parliamo in termini di algoritmi informatici, capire cosa un computer è in grado di fare è una parte fondamentale della formulazione degli algoritmi.
Come si sono evoluti gli algoritmi di ordinamento
Uno dei primi algoritmi creati era la routine di ordinamento delle bolle. Bubble sort è un metodo per ordinare numeri, lettere o parole eseguendo il looping di un set di dati, confrontando ogni serie di valori affiancati e scambiandoli quando necessario.
Questo ciclo viene ripetuto finché l'algoritmo non può spostarsi nell'intero elenco senza dover scambiare nulla, il che significa che i valori sono ordinati correttamente. Questo tipo di algoritmo viene spesso definito come un algoritmo ricorsivo perché scorre su se stesso più e più volte fino a quando non completa l'attività.
Quel tipo di algoritmo potrebbe sembrare semplice come:
- Vai al primo valore.
- Controlla quel valore rispetto al valore successivo e scambia le posizioni se necessario.
- Vai al valore successivo e ripeti il confronto.
- Se siamo alla fine dell'elenco, torna all'inizio se qualsiasi valore è stato scambiato durante il ciclo.
Ma il bubble sort non si è rivelato il più possibile efficiente modo di ordinare i valori. Col passare del tempo e i computer sono diventati più capaci di eseguire compiti complessi rapidamente, sono spuntati nuovi algoritmi di ordinamento.
Uno di questi algoritmi analizza il primo elenco e crea un secondo elenco di valori ordinati. Questo metodo esegue un solo passaggio attraverso l'elenco originale e, con ciascun valore, eseguirà il ciclo del secondo elenco finché non troverà il posto corretto in cui inserire il valore. Di solito, è più efficiente rispetto all'utilizzo del metodo di ordinamento a bolle.
È qui che gli algoritmi possono diventare veramente pazzi. O davvero interessante, a seconda di come lo guardi.
Mentre il metodo di ordinamento a bolle è considerato uno dei metodi più inefficienti per ordinare i valori in molti modi, se l'elenco originale è correttamente preordinato, bubble sort può essere uno dei maggior parte efficiente. Questo perché, in questo caso, l'algoritmo di ordinamento delle bolle passerà attraverso l'elenco una sola volta e determinerà che sia ordinato correttamente.
Sfortunatamente, non sempre sappiamo se la nostra lista è preordinata, quindi dobbiamo scegliere un algoritmo che sarà il più efficiente da usare in media su un gran numero di liste.
Cosa impariamo dall'algoritmo di ordinamento a bolle
- Gli algoritmi si evolvono nel tempo man mano che troviamo modi più efficienti di fare cose e / o i computer diventano più capaci di svolgere compiti complessi.
- A volte gli algoritmi vengono scelti perché sono "più" efficienti "la maggior parte" del tempo.
- Solo perché un algoritmo è più efficiente la maggior parte delle volte non significa che sia sempre il migliore in ogni singolo caso.
Algoritmi di Facebook e altro nella vita di tutti i giorni
Algoritmi sono al lavoro per aiutare gli esseri umani ogni giorno. Quando si esegue una ricerca sul Web, un algoritmo è al lavoro cercando di trovare i migliori risultati di ricerca. Chiedi al tuo smartphone le indicazioni stradali e un algoritmo decide il percorso migliore da intraprendere. E quando navighi su Facebook, un algoritmo decide quali dei post di Facebook dei nostri amici sono più importanti per noi. (Speriamo che i nostri amici non scoprano quale Facebook pensa che ci piaccia di più!)
Ma pensare in modo algoritmico può aiutarci molto al di là delle nostre vite informatiche. Può persino aiutarci a costruire un sandwich migliore.
Diciamo che inizio con due fette di pane, spalmando la senape su una fetta e la maionese su un'altra fetta. Metto una fetta di formaggio sul pane con la maionese, un po 'di prosciutto sopra, una lattuga, due fette di pomodoro e poi la copro con quella fetta con la senape su di essa. Buon panino, giusto?
Sicuramente se lo mangio subito. Ma se lo lascio sul tavolo per un po ', quella fetta superiore di pane potrebbe diventare fradicia assaporando un po' di quel pomodoro. È un problema che non avevo previsto, e che potrei fare panini per anni prima di accorgermene, ma una volta fatto, posso iniziare a pensare a modi per cambiare il mio algoritmo al fine di costruire un sandwich migliore.
Ad esempio, potrei liberarmi del pomodoro. Ma non voglio perdere quel sapore di pomodoro. Quindi, invece, posso mettere il pomodoro sul panino dopo il pane e la lattuga. Questo permette alla lattuga di formare una barriera protettiva tra il pomodoro e il pane.
Ecco come si evolve un algoritmo. E un algoritmo non deve essere eseguito da un computer per essere un algoritmo.Un algoritmo è un processo e i processi sono tutti intorno a noi.




