1. Introduzione ai Requisiti Algoritmici
Non qualsiasi sequenza di istruzioni costituisce un algoritmo. Nella scienza informatica, affinché una procedura possa essere eseguita correttamente da un elaboratore elettronico ed essere considerata formalmente valida, deve soddisfare rigorosi standard strutturali noti come proprietà fondamentali di un algoritmo.
2. Le 5 Proprietà Cardinali
- 1. Finitezza (Finiteness): L'algoritmo deve comporsi di un numero finito di passi e, soprattutto, deve condurre alla terminazione (conclusione dell'esecuzione) dopo un tempo di elaborazione finito, evitando cicli infiniti.
- 2. Non ambiguità (Unambiguity / Elementarietà): Ciascuna istruzione deve essere definita in modo rigoroso e univoco per l'esecutore. Non devono esistere margini di interpretazione soggettiva o istruzioni vaghe.
- 3. Determinatezza (Determinism): Eseguendo l'algoritmo più volte a parità di condizioni iniziali (dati di input), si otterranno immancabilmente i medesimi risultati intermedi e finali, senza componenti casuali non controllate.
- 4. Generalità (Generality): Un buon algoritmo non è progettato per risolvere un caso specifico e circoscritto, bensì un'intera classe di problemi simili, adattandosi a differenti insiemi di dati di input validi.
- 5. Presenza di Input e Output: L'algoritmo deve ricevere in ingresso zero o più dati iniziali (Input) e deve restituire almeno un risultato elaborato (Output).
Oltre alle proprietà strutturali di base, un algoritmo si dice corretto se soddisfa le specifiche iniziali, producendo l'output atteso per ogni possibile input ammissibile. Si distingue tra correttezza parziale (se termina, dà il risultato giusto) e correttezza totale (l'algoritmo è parzialmente corretto e termina sempre).
3. Simulatore Interattivo: Analizzatore di Proprietà
Seleziona un frammento o un caso di studio per verificare quale proprietà fondamentale viene rispettata o violata.