GLI ALGORITMI
Per algoritmo si intende una sequenza di istruzioni interpretabili in modo univoco e capaci di risolvere un problema portando al risultato desiderato entro un tempo limitato.
Un algoritmo deve poter godere delle seguenti proprietà:
- Generalità: deve risolvere una classe di problemi e non un singolo problema.
- Finitezza: le istruzioni che lo compongono ed il numero di azioni da eseguire devono essere in numero finito.
- Completezza: deve contemplare tutti i casi possibili che si possono presentare riguardo ad un problema.
- Non-ambiguità: ogni istruzione deve essere definita in modo preciso e senza creare ambiguità.
- Eseguibilità: deve esistere la possibilità di potere essere eseguito in un tempo limitato.
Un algoritmo si dirà "corretto" se, dato un problema, l'algoritmo sarà in grado di risolverlo. Un algoritmo si dirà "efficiente" se, oltre a risolvere il problema, l'algoritmo riuscirà a dare la soluzione in un tempo breve.
Gli algoritmi si suddividono in:
- deterministici: quando, a parità di dati in ingresso, per ogni istruzione esiste un solo passo successivo, come se vi fosse una sola via percorribile.
- non-deterministici: quando, a parità di dati in ingresso, esiste almeno un'istruzione che ammette passi successivi diversi.
Un algoritmo può essere espresso in modo schematico. In tal caso prenderà il nome di diagramma di flusso.