Gli algoritmi

Il concetto di algoritmo si è evoluto insieme ai sistemi di calcolo.

Un algoritmo è

  • una macchina di Turing che per ogni istanza del problema in esame restituisce, in tempo finito, la risposta attesa
  • un programma per una macchina di Turing universale che …
  • un programma in forma comprensibile per una macchina programmabile che …
  • un programma in forma comprensibile per l’uomo che … (questo punto è controverso!)
Vedi le definizioni fornite da Wikipedia:Algoritmo

Un algoritmo è

  1. Un procedimento che permette di risolvere un certo problema tramite un numero finito di passi.
  2. Una sequenza ordinata e finita di passi (operazioni o istruzioni) elementari che conduce ad un ben determinato risultato in un tempo finito.

Non esiste un modello unico per rappresentare un algoritmo.
La scelta dipende dal tipo di problema, dal paradigma di programmazione, dal risolutore, dall’esecutore, …

Diagramma di statoStati e transizioni di statoCerchi e frecce
Sequenza di quintupleProgramma per la macchina di TuringStati, simboli, spostamenti
Tabella delle transizioni di statoProgramma per la macchina di TuringStati, simboli, triple
Diagramma di flussoFlow-chartRombi, rettangoli, cerchi, frecce
Istruzioni, decisioni
Programma scritto con
un linguaggio di basso livello
Istruzioni per la macchina a registriLinguaggio a salti…
Programma scritto con
un linguaggio di alto livello
Istruzioni interpretate/compilateLinguaggio strutturato!
Programma scritto con
uno pseudo-linguaggio
Istruzioni più vicine a formalismi già notiLinguaggio naturale, formalismo logico-matematico …

Alcune considerazioni…

  • le istruzioni (gli stati) sono in numero finito
  • le singole istruzioni sono non ambigue per l’esecutore
  • le singole istruzioni sono eseguibili in tempo finito
  • l’intero algoritmo è eseguibile in tempo finito
  • la risposta per una certa istanza è sempre la stessa…