Argomenti del corso
Argomenti del corso
Algoritmi e programmi
Un algoritmo si può definire come un procedimento che risolve un problema attraverso sequenza ordinata e finita di passi (operazioni o istruzioni) elementari e non ambigui in un tempo finito.
Sebbene questa definizione non sia propriamente formale, da essa si evincono alcune proprietà fondamentali, senza le quali nessun nozione di algoritmo può essere definita tale:
- i passi (operazioni o istruzioni) devono essere elementari, ovvero non ulteriormente scomponibili (proprietà di atomicità)
- i passi (operazioni o istruzioni) devono essere eseguibili in modo univoco dall'esecutore, sia esso umano o artificiale (proprietà di non ambiguità)
- l'algoritmo deve essere composto da un numero finito di passi (operazioni o istruzioni) e richiedere una quantità finita di dati in ingresso (proprietà di finitezza);
- l'esecuzione dei singoli passi, operazioni o istruzioni deve avere termine dopo un tempo finito così come l'esecuzione dell'intero algoritmo (proprietà di terminazione)
- l'esecuzione deve portare a un risultato univoco (effettività).
L'algoritmo viene inoltre descritto come procedimento di risoluzione di un problema. In questo contesto, i problemi sono caratterizzati da dei dati su cui l'algorittomo dovrà operare per raggiungere un dato che rappresenta il risultato. L'algoritmo drovrà
essere una soluzione per qualsiasi valore dei dati del problema e non deve essere una soluzione per una specifica istanza del problema. Ad esempio, un algoritmo per il problema del calcolo del massimo comune divisore (MCD) deve essere
una sequenza di istruzioni che dati due qualsiasi numeri interi positivi x e y produce il numero intero z tale che z=MCD(x,y).