Algoritmi e Problem Solving Algoritmo Un algoritmo è costituito da una serie di passaggi che portano alla risoluzione di un problema. 1) I passaggi devono tener conto di vincoli imposti dal problema 2) La serie di passaggi deve essere finita ovvero dobbiamo garantire che il processo termini Un algoritmo ha sempre un obbiettivo, che consiste nel problema da risolvere. Per definire un algoritmo si procede per gradi sino a raggiungere la soluzione ottimale. ALGORITMO Pulizia di una stanza Versione 1 Pulizia efficiente della superficie di una stanza 10X6m con un panno 20X20cm. Il panno deve essere passato almeno 3 volte, facendo una pausa di almeno 5 minuti tra una passata e la successiva e sciacquando con il panno ogni 2 passate. 1) SOGGETTO PRENDE IL PANNO 2) IL SOGGETTO COMINCIA A PULIRE COSA MANCA? I VINCOLI DEL PROBLEMA. Una risoluzione di questo tipo non tiene conto dei vincoli del problema ad esempio non sappiamo quanta superficie è stata pulita ne se sono state rispettate delle condizioni di pulizia efficiente. Questo algoritmo è così generico che nessun esecutore automatico riuscirebbe a svolgerlo. Un esecutore automatico ad esempio una cleaner-machine, ha bisogno di alcuni altri parametri per poter risolvere il problema. Di cosa ha bisogno?
Di una condizione DETERMINISTICA ovvero esso deve portare con certezza ad una soluzione, e se eseguito più volte alle stesse condizioni iniziali deve portare alle stesse conclusioni. Il determinismo presuppone che tutto ciò che accade deve essere legato ad una condizione CAUSA-EFFETTO. Il Clima è deterministico? No perché in base alle stesse condizioni iniziali non è detto che possiamo avere le stesse condizioni finali. Algoritmo Pulizia Stanza VERSIONE 2 1) SOGGETTO PRENDE IL PANNO 2) IL SOGGETTO COMINCIA A PULIRE 3) IL SOGGETTO PULISCE FINO AL COMPLETAMENTO DELLA STANZA Abbiamo aggiunto un requisito deterministico chiunque applicherà questo algoritmo sarà certo di ottenere la pulizia della stanza. Cosa manca? Le garanzie sulla qualità e la garanzia che la pulizia avvenga in modo efficiente. L efficienza è un indice che sarà tanto più alto quanto più si riesce a ottimizzare l utilizzo di fattori di cui disponiamo per risolvere un problema. Uno studente efficiente è uno studente che riesce a studiare bene in poco tempo. Un auto efficiente è un auto che a parità di Km consuma meno carburante rispetto ad altre auto. L efficienza è un indice relativo, un soggetto può essere efficiente rispetto ad un altro ma, nel caso in cui agisca da solo, è necessariamente il più efficiente.
Per lo stesso problema esistono soluzioni più o meno efficienti, infatti esistono degli algoritmi detti ottimali per un dato problema. Quando si vuole cercare efficienza, si deve sempre cercare un parametro sul quale basare l ottimizzazione, detto anche parametro da massimizzare. Algoritmo Pulizia Stanza VERSIONE 3 1) SOGGETTO PRENDE IL PANNO 2) IL SOGGETTO COMINCIA A PULIRE 3) IL SOGGETTO PULISCE FINO AL COMPLETAMENTO DELLA STANZA 4) LADDOVE PERO NON ABBIAMO GIA PULITO La 4) rappresenta la condizione di efficienza. Il teorema di Bohm-Jacopini L informatica, pur rientrando nella categoria delle scienze matematiche, ha un solo teorema enunciato nel 1966 dagli informatici Corrado Bohm e Giuseppe Jacopini. ENUNCIATO Qualunque algoritmo può essere implementato utilizzando tre sole strutture, la sequenza la selezione ed il ciclo, da applicare ricorsivamente alla composizione di istruzioni elementari. Sequenza: successione ordinata o progressiva di operazioni Selezione :ovvero la condizione Ciclo ricorsivo : tempo che l istruzione si ripete ad intervalli regolari
I DIAGRAMMI A BLOCCHI Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica dell algoritmo. Un diagramma a blocchi descrive il flusso delle operazioni da eseguire per realizzare la trasformazione, definita nell algoritmo, dai dati iniziali ai risultati Ogni istruzione dell algoritmo viene rappresentata all interno di un blocco elementare, la cui forma grafica è determinata dal tipo di istruzione I blocchi sono collegati tra loro da linee di flusso, munite di frecce, che indicano il susseguirsi di azioni elementari
Esempio Telefonata
Diagramma di flusso della somma tra due numeri svolto con il software Raptor.