Un algoritmo è una sequenza di passaggi ben definiti che producono un risultato in tempo finito.
Passaggio ben definito: è qualcosa che puoi fare o calcolare, che è definito con precisione. Solo leggendo il passaggio sai cosa devi fare e come farlo. In particolare, puoi scriverlo in un linguaggio di programmazione che conosci e assicurarti che il frammento del programma corrisponda esattamente al passaggio.
Sequenza: i passaggi vengono eseguiti nell'ordine specificato. I passaggi possono essere eseguiti più di una volta in base ai dati (loop) o non eseguiti affatto in base ai dati (se dichiarazioni). Gli algoritmi paralleli impongono solo un ordine parziale sui passaggi, quindi qui sto semplificando troppo. Sarebbe più corretto descriverlo come un insieme parzialmente ordinato di una sequenza, ma volevo mantenere le parole un po 'più semplici. Inoltre, è possibile incorporare facilmente un set parzialmente ordinato in un ordine completo.
Risultato: uno stato o un valore finale. Non deve essere prevedibile in anticipo, ma deve essere un fine definito che soddisfa alcune condizioni. Ciò significa che un sistema operativo non è un algoritmo, sebbene ne utilizzi molti.
Finito: un algoritmo è garantito per arrestarsi qualche volta, almeno su una macchina che può funzionare abbastanza a lungo. Non è necessariamente garantito che si fermi in un tempo prevedibile, e non è garantito che si fermi prima che il sole si espanda e diventi rosso su qualsiasi macchina esistente. Questo significa anche che un sistema operativo non è un algoritmo, poiché idealmente funzionerà per sempre. Ho visto la parola "procedura" usata per descrivere qualcosa che sarebbe un algoritmo se fossimo sicuri che un giorno si fermerebbe. (È possibile avere un algoritmo che si fermerà in un periodo di tempo sconosciuto. Supponiamo, supponiamo, che la congettura di Goldbach sia stata dimostrata matematicamente falsa, in una dimostrazione non costruttiva, quindi c'era un numero pari> 2 che non era la somma di due numeri primi Un algoritmo che ha semplicemente testato i numeri pari sarebbe infine terminato,
L'algoritmo è una cosa intenzionalmente astratta, quindi non consideriamo domande come "È fisicamente possibile eseguirlo prima della morte per caldo dell'Universo?". Sarebbe troppo difficile rispondere. Se si riferisce alle operazioni del computer, è facile implementarlo in un linguaggio di programmazione.