Il nome algoritmo deriva dal nome dell’algebrista arabo Al-Khuwaritzi del IX secolo.
Indica le procedure, l’insieme finito di istruzioni che bisogna eseguire per raggiungere un determinato risultato definito in precedenza.
Ogni nostra azione può essere vista come facente parte di un algoritmo, infatti per risolvere un problema o raggiungere un risultato eseguiamo una sequenza di attività che portano alla soluzione, eseguiamo cioè un algoritmo.
Lavorare a maglia, usare un elettrodomestico, cucinare, scrivere una lettera, eseguire una moltiplicazione, fare un acquisto, sono alcuni esempi di algoritmi.
Possiamo notare come in tutti gli esempi è comune la presenza di un esecutore, una persona, un oggetto, una macchina che esegue le istruzioni contenute nell’algoritmo e come è possibile definire la presenza di alcune fasi.
La prima fase è quella di definire il problema.
E’ necessario stabilire quali sono i dati che abbiamo a disposizione in fase iniziale (dati di input) che non devono essere né sovrabbondanti né ridotti e di quali risorse disponiamo sia in termini di conoscenze, di logica, di schemi “software” (es esempio: per cucinare conosco la ricetta del piatto? le tecniche?) sia in termini di risorse fisiche “hardware” (es. ho tutti gli ingredienti, le pentole, il forno, …) per raggiungere un risultato, l’obiettivo (dati di output).
La fase successiva è quella di stabilire quali azioni intraprendere e la sequenza delle azioni per raggiungere il risultato prefissato (Quanto tempo mi richiede la preparazione e la cottura? Come devo pulire, tagliare, mescolare, cucinare gli ingredienti?)
Da ultimo si procede all’esecuzione delle azioni predefinite.
L’individuazione di tutte queste fasi ed elementi costituisce l’analisi del problema.
Caratteristiche dell’algoritmo
Tutti gli algoritmi hanno delle caratteristiche fondamentali. Deve essere:
- Generale: deve potersi applicare al maggior numero di casi.
- Non ambiguo: le istruzioni devono essere espresse in modo chiaro, non equivoco per l’interpretazione da parte dell’esecutore.
- Finito: l’esecuzione delle istruzioni deve interrompersi ad un punto di fine.
- Efficace: deve saper risolvere il problema.
- Efficiente: deve risolvere un problema nel minor tempo e con il minor dispendio di energia.
- Deterministico: a partire dalle stesse condizioni iniziali deve produrre lo stesso risultato.
- Ogni istruzione deve essere realizzabile dall’esecutore.
- Ogni istruzione deve avere una durata limitata nel tempo.
- Ogni istruzione, se eseguita, deve dare un risultato osservabile.
Anche i problemi più complicati opportunamente analizzati e scomposti in piccoli passi hanno una soluzione.
Nel video vengono elencate le caratteristiche e come nella nostra vita abbiamo a che fare con gli algoritmi.
L'algoritmo "un modo di analizzare e vedere la realtà"