Lezione 1 - Nozione di Algoritmo

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Lezione 1 - Nozione di Algoritmo"

Transcript

1 Lezione 1 - Nozione di Algoritmo Corso Programmazione Fondamenti di programmazione Algoritmi Marco Anisetti marco.anisetti@unimi.it web: Università degli Studi di Milano Dipartimento di informatica

2 Algoritmo e MdT MdT introdotta come modello di calcolo per formalizzare il concetto di calcolo allo scopo di stabilire l'esistenza di metodi algoritmici per il riconoscimento dei teoremi nell'ambito dell'aritmetica. MdT è legata al concetto di automa, come esecutore di una serie di passi (sempre uguali per ogni automa) dipendenti dall'input L'automa è legato al linguaggio che riconosce o che utilizza Il linguaggio è fondamentale per comprendere come descrivere i passi da far eseguire ad una macchina in modo che siano comprensibili alla macchina stessa

3 Architettura di Von Neumann: conseguenze Una macchina è in grado di risolvere più problemi a patto di elencarne i passi da seguire per farlo. Lo sviluppo di strumenti formali per l'elaborazione dell'informazione Nascita di una disciplina che, dato un problema applicativo, mira ad individuare un procedimento di calcolo che ne consente la soluzione (algoritmo) Si separa l'individuazione degli insiemi di passi (algoritmi) che risolvono problemi dati (attivita' umana) dall'esecuzione di tali passi (algoritmi) (attivita' svolta da un calcolatore)

4 Algoritmo: definizione storica Termine dovuto al famoso scrittore al-khwarizmi: nato nel 780 circa a Baghdad Originariamente chiamato algorism, un algoritmo è sequenza finita di istruzioni che specificano come certe operazioni elementari debbano susseguirsi nel tempo per risolvere una data classe di problemi. Operazioni elementari: operazioni note all'esecutore Istruzioni: richieste di azioni rivolte all'esecutore e che da questo devono essere capite ed eseguite Classe di problemi: una formulazione del problema indipendente dagli specifici dati su cui opera

5 Algoritmi: Proprietà Oltre alle proprietà di eseguibilità e non ambiguità di un algoritmo, altre proprietà fondamentali degli algoritmi sono Definito: ogni passo dell'algoritmo è precisamente definito (rigoroso e non ambiguo) [dati e risultati definiti] Correttezza: l'esecuzione dell'algoritmo porta realmente alla soluzione del problema dato Efficienza: quanto ``costa'' l'esecuzione di un algoritmo in termini di risorse consumate Finitezza: normalmente si richiede che l'algoritmo termini in un tempo finito, e cioè che la sequenza di istruzioni che caratterizzano l'algoritmo sia una sequenza finita

6 Algoritmi: caratteristiche Istruzioni insieme ordinato e finito di operazioni da eseguire Ogni istruzione è univoca cioè non lascia dubbi o ambiguità sul da farsi Esiste un esecutore in grado di eseguire le istruzioni Le procedure risolvono una classe di problemi Non esiste un modo unico per risolvere un problema Un algoritmo e' corretto se per ogni istanza di input si arresta con l'output corretto

7 Algoritmo esempio Ricetta da cucina E' una sequenza di passi finiti ed in ordine per giungere alla preparazione del piatto I passi non sono ambigui (per quanto possa non essere ambiguo il linguaggio naturale) Tutte le istruzioni sono eseguibili dall'esecutore della ricetta Risolve una classe di problemi: la ricetta generalizza certe istruzioni: le quantità, ad esempio, subordinate al numero di persone rappresentando solo i rapporti fra quantità (una parte, 1/2 parte etc)

8 Algoritmo - programma - esecutore Un programma è l'espressione di un algoritmo in un linguaggio che l'esecutore è in grado di comprendere direttamente. Un programma è un'espressione concreta dell'algoritmo che ne è l'astrazione A seconda dell'esecutore, lo stesso algoritmo può essere espresso in linguaggi differenti La scrittura del programma è la fase successiva all'individuazione dell'algoritmo per risolvere un determinato problema

9 Calcolatore - programma - programmazione Calcolatore Un automa il cui comportamento segue delle regole ben precise: è in grado di ``comprendere'' un repertorio ristretto di istruzioni elementari e di eseguirle con una enorme rapidità ed elevata precisione Programma Sequenza di istruzioni elementari che un calcolatore è in grado di comprendere ed eseguire Programmazione Attività che consiste nell'organizzare istruzioni elementari, direttamente comprensibili dall'esecutore, in strutture complesse (programmi) al fine di svolgere determinati compiti

10 Problema - algoritmo - programma

11 Problema - algoritmo - programma

12 Problema - algoritmo - programma

13 Lezione 2 - Problema - Algoritmo Esecutore Corso Programmazione Fondamenti di programmazione Algoritmi Marco Anisetti marco.anisetti@unimi.it web: Università degli Studi di Milano Dipartimento di informatica

14 Problema - algoritmo - programma

15 Formulazione di un problema Definizione dei dati e dei risultati che si vogliono ottenere (a partire dai dati) Processo di formulazione di un problema: 1. Individuazione dei dati in ingresso 2. Individuazione dei risultati desiderati 3. Individuazione dell'algoritmo di risoluzione Analisi dei requisiti

16 Problema ed istanza(1) Specificando quali sono i dati di ingresso si definisce una istanza di Problema Problema P: dato un naturale n calcolare la somma dei primi n naturali Istanza di P: risolvere P per n = 12 (ovvero calcolare la somma dei primi 12 naturali) Un problema può essere visto come l'insieme di tutte le sue possibili istanze

17 [*] Prof. Andrea G. B. Tettamanzi Problema ed istanza(2)

18 [*] Prof. Andrea G. B. Tettamanzi Problema ed Istanza (3)

19 [*] Prof. Andrea G. B. Tettamanzi Problema ed Istanza (4)

20 Problema - algoritmo - esecutore Figura : Relazione problema, algoritmo ed esecutore

21 Problema dei secchi Sono presenti due secchi con capacità volumetrica rispettivamente di 3 e 4 litri. Determinare le operazioni necessarie per far si che il primo secchio (da 3 litri) sia riempito con 2 litri. Possiamo agire sui due secchi attraverso le seguenti operazioni: Riempire completamente un secchio Svuotarlo completamente Travasare una certa quantita' di liquido da un secchio all'altro

22 Problema dei secchi:soluzione Si riempie il secchio da 3 litri Si travasa il contenuto nel secchio da 4 litri Si riempie nuovamente il secchio da 3 Si rabbocca il secchio da 4 ottenendo due litri nel secchio da 3 come richiesto

23 Problema del Massimo Comune Divisore Il problema di calcolare il Massimo Comune Divisore MCD fra due numeri x e y (x > y) Dati: due numeri Risultati: il Massimo Comune Divisore

24 Algoritmo per l'mcd (Euclide) 1. Calcola il resto della divisione di x per y 2. Se il resto è diverso da zero, allora ricomincia dal punto 1 utilizzando come x il valore attuale di y, e come y il valore del resto altrimenti prosegui con il passo successivo 3. Il massimo comune divisore è uguale al valore attuale di y L'intelligenza necessaria per trovare la soluzione del problema è tutta codificata nell'algoritmo Chiunque sappia comprendere ed eseguire le operazioni che costituiscono l'algoritmo di Euclide, può calcolare l'mcd

25 Algoritmo: Controesempio Non tutto ciò che sembra un una procedura passo passo è un algoritmo Esempio: Dire se un numero è primo 1. N {0,1} 2. per ogni coppia di interi i > 1 e j > 1, N N {i j} 3. n è primo se e solo se n / N Ricordiamo che un numero naturale si dice primo se è divisibile solo per 1 e per sè stesso e che per definizione 0 e 1 non sono primi

26 Algoritmi: input e output Con una terminologia più da programmatori, considerando un algoritmo di risoluzione del problema, dati e risultati della formulazione di un problema diventano Input: un algoritmo può avere zero o più input, i quali sono quantità che vengono date in pasto all'algoritmo prima che inizi, oppure dinamicamente mentre è in esecuzione. Questi input sono presi da uno specifico insieme di oggetti Output: un algoritmo può avere uno o più output, si tratta di quantità che hanno una relazione specifica con gli input

27 Problemi: esempi(1) Risoluzione equazione di secondo grado Input: tre numeri (i coefficienti) Output: le due radici se reali, stampa di un messaggio opportuno altrimenti Trovare il massimo fra tre numeri Input: tre numeri Output: il valore massimo

28 Problemi: esempi(2) Ricerca del numero di un utente in un elenco telefonico Input: un insieme ordinato di coppie (nome, num. tel.) e un nome x Output: il numero telefonico corrispondente all'utente di nome x, se presente nell'insieme; nulla altrimenti Ricerca del cammino più breve tra due punti su una rete stradale Input: una rete stradale (rappresentata come un insieme di piazze, strade che uniscono due piazze, tempi di percorrenza di ciascuna strada) e due piazze x e y Output: la sequenza di strade che portano da x a y con tempo di percorrenza minimo

29 Problemi: esempi(3) Il problema Knapsack (zaino): ``sia dato uno zaino che possa sopportare un determinato peso. Siano dati inoltre N oggetti, ognuno dei quali caratterizzato da un peso p e un valore v. Scegliere quali di questi oggetti mettere nello zaino per ottenere il maggiore valore senza eccedere il peso sostenibile dallo zaino stesso.'' Input: Valore oggetti: V = v 1,,v n Pesi oggetti: P = p 1,,p n Capacità massima zaino: c(peso) Output: Gli oggetti scelti ( n con peso complessivo c)

30 Problemi: esempi(4) Il problema del commesso viaggiatore: ``Un commesso viaggiatore deve percorrere il miglior tragitto attraverso le n citta' nelle quali deve effettuare le consegne'' ``Esiste un percorso che le collega tutte (passando un sola volta per ciascuna citta') con una lunghezza minore di b?'' Input: la mappa con l'indicazione delle n citta' da raggiungere e una lunghezza b Output: SI/NO

31 Tipologie di problemi(1) Problemi di decisione: Output: SI/NO (es. : esiste un percorso con una lunghezza?) Problemi di ricerca: Output: una soluzione (es. : trovare un percorso di lunghezza minore di k) Problemi di enumerazione: Output: un conteggio delle soluzioni (es. : Quanti sono i percorsi di lunghezza minore di k) Problemi di ottimizzazione: Output: una soluzione ottima rispetto ad un obiettivo (es. : trovare un percorso di lunghezza minima)

32 Tipologie di problemi(2) La formulazione dei due problemi ``zaino'' e ``commesso'' differisce per il fatto che: Il problema zaino e' formulato come un problema di ottimizzazione: ``Scegliere tra n valigie quelle... in modo da trasportare il maggior peso.'' Il problema commesso, come un problema di decisione: ``Esiste un percorso che...''

33 Problemi: Nota Non tutti i problemi sono di natura computazionale cioe' non per tutti i problemi e' possibile definire una procedura computazionale (un algoritmo) che consenta, a partire dai dati di ingresso, di ottenere i risultati Il problema dell'arresto* Non esistono modalita' di descrizione di soluzioni (algoritmi) alternative che consentano di trasformare un problema non computazionale in un problema computazionale La scienza degli algoritmi deve limitarsi a considerare problemi computazionali * indecidibilità (Turing 1936)

34 Problema algoritmo Relazione tra problema ed istanza e tra algoritmo ed esecutore Analisi del problema Individuazione della tipologia di problema Valutazione di un algoritmo per la soluzione della tipologia del problema Problemi non computazionali

35 Lezione 3 - Problema - soluzione Corso Programmazione Fondamenti di programmazione Algoritmi Marco Anisetti marco.anisetti@unimi.it web: Università degli Studi di Milano Dipartimento di informatica

36 Problema - Soluzione

37 Problema - Soluzione Matematica ed informatica si pongono lo stesso obiettivo: rivolvere dei problemi L'informatica è anche definita come l'arte della risoluzione dei problemi Abbiamo visto problemi espressi in vario modo e classificati come tipologie Gli esempi visti si chiamano anche situazioni problematiche Dalla situazione problematica si passa al problema attraverso la formalizzazione In matematica significa individuare dati incognite e condizioni In informatica non è molto diverso, abbiamo visto come individuare input e output

38 Problema del barcarolo Rivisitiamo il problema del barcarolo Scopo: trasportare tutti i personaggi sull'altra sponda Punto di partenza: tutti i personaggi sono su una sponda BPCL - (rappresentazione) Punto di arrivo: tutti i personaggi sull'altra sponda - BPCL Vincoli: Barcarolo presente in alcune combinazioni quindi esistono delle situazioni non ammesse PL-- BC BC - PL PC - BL BL- PC Obiettivo: trovare le azioni da compiere per arrivare al punto di partenza rispettando i vincoli Operazioni: trasformazioni di stato Soluzione: applico tutte le trasformazioni e elimino quelle che portano ad uno stato non ammesso e ottengo il diagramma già visto

39 Metodo dello spazio degli stati Si individua lo spazio degli stati Si individuano le transizioni Dallo stato iniziale applicate tutte le transizioni si individua lo stato prossimo Si escludono gli stati invalidi o quelli già ottenuti Si continua fino ad raggiungere lo stato finale

40 Problema dei secchi Problema già affrontato Consideriamo un secchio da 9 e uno da 4 Raccogliere 6 litri di acqua in secchio Quale è lo spazio degli stati: coppie ordinate (a,b) relative al contenuto d'acqua dei secchi Stato iniziale: (0,0), stato finale (6,x) Operazioni: riempire i contenitori R(x) svuota il contenitore S(x), travasa fino al colmo C(x,y) travasa completamente T(x,y) Provate a generare l'albero delle possibilità a partire da queste operazioni

41 Soluzione 9,0 5,4 C(x,y) 5,0 S(y) 1,4 C(x,y) 1,0 S(y) 0,1 T(x,y) 9,1 R(x) 6,4 C(x,y) Problema dei secchi: soluzione

42 Problema dei cannibali e dei missionari 3 missionari e 3 cannibali fanno un viaggio insieme e devono attraversare un fiume sfruttando una zattera che può ospitare al massimo 2 persone alla volta. Prima di affrontare la traghettata, i missionari prospettano un pericolo: se su una qualsiasi delle due rive del fiume i cannibali finiscono per essere più numerosi dei missionari, questi ultimi potrebbero essere assaliti e mangiati dai primi. Come far traghettare tutti e sei gli uomini con i missionari sani e salvi? Uno dei due missionario o cannibale governa il traghetto, non esiste un trasportatore

43 Problema dei cannibali e dei missionari Formalizzo il problema usando dei simboli per gli elementi in gioco M missionario, C cannibale, B barca, - fiume Stato iniziale: BMMMCCC- stato finale: - BMMMCC Operatori di trasformazione: Tm transita missionario Tc transita cannibale, Tmm transitano due missionari, tcc transitano due cannibali... Stati non accettati: non possono esserci sui lati più c di m

44 Problema dei cannibali e dei missionari: Soluzione MMMCCCB- Tcc MMMC - CCB Tc MMMCCB - C Tcc MMM - CCCB Tc MMMCB - CC Tmm MC - CCMMB Tmc MMCCB - MC Tmm CC - CMMM Tc...

45 Algoritmo e flusso I passaggi tra le sequenze di stati che vanno dallo stato iniziale al finale rappresentano il flusso dell'algoritmo risolutore per l'istanza del problema da affrontare Si tratta di una sequenza di operatori che modificano lo stato Se torno in uno stato già incontrato sto percorrendo una strada già attraversata (non approssimo la soluzione meglio che al passo precedente) Gli stati già incontrati vengono scartati e con loro la strada che vi ha condotti in quello stato Algoritmo descritto come la sequenza di operazioni da compiere L'operazione di generalizzazione dall'istanza all'algoritmo porta generalmente alla creazione di un flusso non strettamente sequenziale

46 Algoritmo e controllo di flusso Alcune operazioni sono soggette a particolari condizioni per essere eseguite (per gestire più istanze) Altre essendo ripetitive (stesso operatore ma stati via via differenti) vanno eseguite più volte Nella descrizione dell'algoritmo esistono quindi dei modi per controllare il flusso delle operazioni da eseguire In genere si utilizzano parole del linguaggio che modificano il flusso generando un salto Nell'algoritmo di Euclide si vedono chiaramente la valutazione della condizione di terminazione (se) e il salto (salta a) che genera la ripetizione Se considero una istanza specifica del problema dell'mcd tra due numeri posso serializzare la sequenza di istruzioni avendo un flusso sequenziale

47 Controllo del flusso La sequenza di istruzioni da compiere E' enumerata in sequenza Ha un flusso governato da delle istruzioni di controllo di flusso Istruzioni che agiscono cambiando lo stato Istruzioni che verificano lo stato (se allora altrimenti) Istruzioni che rompono la sequenzialità stretta e vanno a far riprendere l'esecuzione da un determinato punto (goto).

48 Esplorazione dell'albero delle soluzioni Backtracking trovare soluzioni a problemi in cui devono essere soddisfatti dei vincoli. Enumera tutte le possibili soluzioni e scarta quelle che non soddisfano i vincoli. Una tecnica classica consiste nell'esplorazione di strutture ad albero e tenere traccia di tutti i nodi e i rami visitati in precedenza Esempio scacchi: enumero tutte le possibili mosse con una certa profondità e poi scelgo con Backtracking Esaminando tutte le alternative è un procedimento molto lungo (si parla di complessità dell'algoritmo)

49 Lezione 4 - Decidibilità Trattabilità Corso Programmazione Fondamenti di programmazione Algoritmi Marco Anisetti marco.anisetti@unimi.it web: Università degli Studi di Milano Dipartimento di informatica

50 Problema - algoritmo - programma

51 Consideriamo problemi di decisione Decidibilità(1) Analizzare i limiti della risoluzione dei problemi mediante algoritmi Decidibilità: Concetto legato alla decidibilità del linguaggio che esprime il problema e solitamente alla Macchina di Turing (MdT) che lo esegue Più nello specifico un algoritmo produrrà una rappresentazione univoca dell'input mediante una stringa Diremo che un problema di decisione è: Decidibile se il linguaggio associato è decidibile Semidecidibile se il linguaggio associato è Turing riconoscibile Indecidibile se il linguaggio associato non è decidibile. Esprimiamo un problema computazionale come un problema di riconoscimento di linguaggi

52 Decidibilità(2) MdT M con tre possibili risultati computazione (accettazione, rifiuto, loop): Il linguaggio accettato da M è Turing riconoscibile Problema semidecidibile MdT M con due possibili risultati computazione (accettazione, rifiuto): Il linguaggio accettato da M è decidibile. Problema decidibile

53 Problemi indecidibili: motivazioni Sapere che esistono problemi non risolvibili con un computer I problemi indecidibili non sono esoterici Il problema generale della verifica del software non e' risolvibile mediante computer Costruire un perfetto sistema di debugging per determinare se un programma si arresta. Equivalenza di programmi: Dati due programmi essi forniscono lo stesso output? Individuazione dei virus: Questo programma e' un virus?

54 Problemi Indecidibili(1) Problema: appartenenza di una stringa ad un linguaggio Il numero di linguaggi diversi su un alfabeto non è numerabile I programmi (stringhe finite su un alfabeto) sono numerabili Li posso ordinare per lunghezza Quindi esistono infinitamente più linguaggi che programmi Come dire che esistono più problemi che algoritmi Quindi devono esistere problemi indecidibili (Godel 1931)

55 Problemi Indecidibili(2) Consideriamo un classico quesito di Bertrand Russell: In un paese vive un solo barbiere, un uomo ben sbarbato, che rade tutti e soli gli uomini del villaggio che non si radono da soli Il barbiere si rade da solo? Autoreferenza: può determinare indecidibilità

56 Problema dell'arresto Supponiamo per assurdo che sia possibile scrivere un programma T che accetti in ingresso la coppia < P,x >, formata da un qualsiasi programma P e dal suo ingresso x, e restituisca in uscita, se P(x) termina in un tempo finito, e altrimenti. Consideriamo il programma P che realizza il seguente algoritmo, per ogni ingresso x: 1. Esegui T sull'ingresso < P,x >; 2. Se T restituisce, termina; 3. Vai al Passo 1.

57 Problema dell'arresto: dimostrazione Dimostriamo l'assurdo supponendo di eseguire T sull'ingresso < P,x >. 1. T termina con valore di uscita ; ma allora P termina al Passo 2 e quindi il risultato restituito da T è scorretto; 2. T termina con valore di uscita ; ma allora P non terminerebbe mai al Passo 2 e continuerebbe a ciclare all'infinito: anche in questo caso il risultato restituito da T è scorretto; 3. T non termina: anche in questo caso, ciò significherebbe che T non funziona come abbiamo supposto.

58 Esempi Problemi indecidibili: Decidere se un generico programma è corretto (calcola la funzione desiderata) Decidere se, dato un generico programma ed una istruzione, l'istruzione sarà eseguita Ciò non significa che non si possa stabilire se un determinato programma sia corretto o esegua una particolare istruzione

59 Riducibilità E' importante riconoscere che un problema P è indecidibile. Supponendo che esista una MdT che decide P e provarne la contraddizione Dimostrare che un problema indecidibile noto non sia più difficile del problema P in questione Dal punto di vista del linguaggio Un linguaggio A è riducibile a un linguaggio B (A< m B) se esiste una funzione calcolabile f : Σ Σ w,w A, f (w) B La funzione f è chiamata la riduzione di A a B. Una funzione f : Σ Σ è calcolabile se esiste una MdT M tale che su ogni input w, M si arresta con f (w), e solo con f (w), sul suo nastro.

60 Trattabilità ed intrattabilità(1) Non tutti i problemi sono computazionali Considerare la trattabilità di un problema significa misurare l'efficienza del migliore algoritmo risolutore. Un problema è detto trattabile se esiste per la sua risoluzione un algoritmo efficiente Problemi facili (trattabili) algoritmo efficiente Problemi difficili (intrattabili) non esiste un algoritmo efficiente

61 Trattabilità ed intrattabilità(2) Un es. di problema intrattabile: la Torre di Hanoi

62 Torre di Hanoi Tre paletti e un certo numero di dischi di grandezza decrescente Il gioco inizia con tutti i dischi incolonnati su un paletto in ordine decrescente, in modo da formare un cono. Lo scopo del gioco e' portare tutti dischi sull'ultimo paletto, potendo spostare solo un disco alla volta e potendo mettere un disco solo su un altro disco piu' grande, mai su uno piu' piccolo. il numero minimo di mosse necessarie per completare il gioco è 2 n 1, dove n è il numero di dischi. Di conseguenza, secondo la leggenda, i monaci di Hanoi dovrebbero effettuare almeno mosse prima che il mondo finisca (una mossa al secondo 585 miliardi di anni), essendo n =64

63 Lezione 5 - Complessità in tempo e spazio Corso Programmazione Fondamenti di programmazione Algoritmi Marco Anisetti marco.anisetti@unimi.it web: Università degli Studi di Milano Dipartimento di informatica

64 Complessità in tempo e spazio Computabilità Definizione di un algoritmo corretto per risolvere il problema Valutazioni di massima su trattabilità ed intrattabilità Valutazioni dettagliate sull'efficienza Complessità dell' algoritmo Tempo Spazio

65 Computabilità e complessità (1) Calcolabilità: studia la frontiera tra problemi solubili e problemi insolubili. Si limita ad aspetti qualitativi della risolubilità dei problemi. Complessità: analizza problemi solubili. Scopo: quantificare le risorse in tempo e/o spazio necessarie a risolvere un problema dato, in funzione della sua dimensione Teoria della computabilità: utilizza modelli di calcolo come ad esempio automi a stati, MdT ecc., per dimostrare l'esistenza o meno di algoritmi per una data classe di problemi Teoria della complessità: ha lo scopo di determinare le risorse richieste dall'esecuzione di un algoritmo per risolvere un dato problema. Un algoritmo formalmente deve essere finito, ma molto spesso deve essere finito in un numero ragionevole di passi.

66 Complessità in tempo e spazio Risorse necessarie alla sua esecuzione In termini di tempo di esecuzione e spazio per i dati Indicatore della difficoltà del problema Analisi degli algoritmi: studio della loro complessità Complessità ed efficienza sono ovviamente strettamente legati

67 Efficienza di un algoritmo L'efficienza di un algoritmo è legata all'utilizzo di risorse di calcolo Tempo richiesto per trovare la soluzione (tempo di esecuzione) Spazio in termini di quantità di memoria richiesta Ci soffermeremo prevalentemente su valutazioni temporali

68 Tempo di esecuzione Considero un dato ingresso Valutare quanto tempo richiede ciascuna delle operazioni elementari Valutare quante volte viene eseguita ciascuna delle operazioni elementari Profilazione dell'algoritmo Misurazione del tempo impiegato da un algoritmo di solito in una specifica implementazione in un linguaggio, quindi escludendo tempi di caricamento e di generazione dell'output

69 Esempio Euclide: profilazione Esecuzione di MCD(96,60) A seconda della copia n,m in input il tempo varia A seconda dei tempi t il tempo totale varia

70 Efficienza di un algoritmo: modello Per valutare l'efficienza di un algoritmo occorre fare diverse assunzioni Prima cosa serve un modello di calcolo astratto Nella pratica il tempo utilizzato dipende da molti fattori: Linguaggio di programmazione utilizzato, bravura del programmatore, codice generato dal compilatore, processore, cache, sistema operativo ecc. Vogliamo effettuare un'analisi che prescinda da tutti i fattori citati ovvero vogliamo trovare un modello di calcolo astratto Con il quale possiamo definire una computazione algoritmica Con il quale possiamo esprimere quantitativamente l'efficienza

71 Modelli di computazione Per analizzare un algoritmo serve un modello astratto della tecnologia utilizzata per realizzarlo Descrive le risorse utilizzate Descrive il loro costo Considerando alcune operazioni elementari a costo unitario per cui il reale tempo di calcolo possa essere considerato proporzionale al numero di operazioni eseguite Deve essere sufficientemente realistico Deve astrarre da dettagli di processori specifici

72 Modello di Macchina ad accesso casuale (RAM)(1) Il modello computazionale più comunemente usato Modella fedelmente la stragrande maggioranza dei processori Istruzioni eseguite in sequenza Ogni istruzione richiede un suo tempo costante per l'esecuzione Esistono altri modelli come le macchine basate su rete neurale, macchine quantistiche o macchine chimiche astratte

73 Modello di Macchina ad accesso casuale (RAM)(2) Costituita da 4 componenti: Memoria Programma File di input File di output La memoria è costituita da una sequenza di locazioni 0,1,... capace di salvare un unico valore intero alla volta L'indirizzo è il numero della locazione di memoria L'intero riferito da un indirizzo di una locazione di memoria è il contenuto della locazione stessa Il programma è dato da una sequenza di istruzioni (assegnamenti, input/output, cicli di controllo)

74 Modello di Macchina ad accesso casuale (RAM) (3) Assegnamento Mem[l] := Mem[j] + Mem[k]. Mette nella locazione l la somma dei valori nella locazione j e k Il file di input è una sequenza di valori consumati uno alla volta da una istruzione di ``read'' Il file di output è una sequenza di valori prodotti uno alla volta da una istruzione di ``write'' Il flusso di controllo del programma va normalmente da una istruzione alla successiva ad eccezione di istruzioni di ``goto i'' o goto condizionati tipo if Mem[j] 0 then goto i

75 Modello di Macchina ad accesso casuale (RAM): esempio (4) 1: Mem[0]:=0 2: read(mem[1]) 3: if Mem[1] 0 then goto 5 4: goto 7 5 Mem[3]:=Mem[0]-Mem[1] 6: if Mem[3] 0 then goto 16 7: write(mem[1]) 8: read(mem[2]) 9: Mem[3]:= Mem[2]-Mem[1] 10: if Mem[3] 0 then goto 12 11: goto 14 12: Mem[3]:=Mem[1]-Mem[2] 13: if Mem[3] 0 then goto 8 14: Mem[1]:=Mem[2] +Mem[0] 15: goto 3 16: halt

76 Profilazione e modello di calcolo Concetti utilizzati quando occorre valutare il costo di esecuzione in maniera precisa Spesso usato per valutare il costo di algoritmi la cui implementazione gira su sistemi embedded Importante anche lo spazio e la dipendenza spazio - tempo di esecuzione Il modello può cambiare a seconda del sistema reale su cui l'implementazione dell'algoritmo girerà Dal punto di vista teorico senza considerazioni pratiche implementative si tende ad astrarre dai costi dettagliati Ordini di grandezza degli algoritmi in relazione all'input

77 Lezione 6 - Analisi di un algoritmo caso medio, caso peggiore Corso Programmazione Fondamenti di programmazione Algoritmi Marco Anisetti marco.anisetti@unimi.it web: Università degli Studi di Milano Dipartimento di informatica

78 Efficienza di un algoritmo: input Il tempo di esecuzione di un algoritmo dipende sempre da quanto è grande l'input (dimensione dell'istanza) La dimensione dell'istanza è proporzionale al numero di elementi che la costituiscono Anche con un modello di calcolo semplificato (tempo uguale al numero di operazioni eseguite) risulta difficile il calcolo esatto delle operazioni L'analisi viene generalmente effettuata considerando il caso peggiore

79 Misurazione delle risorse Tempo Numero totale di operazioni elementari eseguite Machine independent Tempo uguale per tutte le operazioni Spazio Quantità massima di informazione da mantenere (includendo dati iniziale e risultati) Tempo e spazio sono correlati spazio impiegato k tempo impiegato

80 Profilazione generalizzata(1) Generalizzare l'esempio sulla profilazione di MCD in relazione alla dimensione dell'input Considero il numero di iterazioni che debbo compiere Nel caso MCD(96,60) ho 4 iterazioni Alcuni casi speciali generalizzando il tempo T (n,m) per MCD(n,m) T (n,1) = 1 T (n,kn) = 1 T (n,m) = 1 + T (m,n mod m) T (n,m) = 1 + T (m,n) se m > n

81 Profilazione generalizzata(2) Volendo si può costruire una tabella e valutare i costi al crescere di n e m Equivale a valutare più istanze del problema che l'algoritmo risolve Occorre valutare il risultato al crescere degli input visto che il tempo di esecuzione dipende dal valore degli input

82 Profilazione generalizzata(3) In particolare dipende principalmente dal valore di m dato che n mod m viene eseguito da subito E' evidente la persistenza di alcuni casi particolari dove il costo è sempre uno anche al crescere di n ed m Casi fortunati altri molto sfortunati Non tutte le esecuzioni di un determinato algoritmo richiedono lo stesso tempo

83 Profilazione generalizzata del caso peggiore Tempo Potremmo pensare che più il modulo è basso più siamo vicini alla fine (ma con modulo alto non siamo lontani dalla fine pensiamo a m mod m-1) Caso peggiore è quando n mod m = m 2 Tempo nel caso peggiore: 1 + log 2 (m) Spazio Considerando il modello RAM, ho solo 3 celle usate per n, m, r

84 Analisi di un algoritmo Quantità di risorse è funzione dei dati di ingresso Dimensione dei dati di ingresso: n Caso migliore: il più breve tempo di esecuzione su tutti gli ingressi di dimensione n Caso medio: la media dei tempi di esecuzione su tutti gli ingressi di dimensione n Caso peggiore: il più lungo tempo di esecuzione su tutti gli ingressi di dimensione n

85 Analisi del caso peggiore Limite superiore alle risorse che l'esecuzione dell'algoritmo potrà mai richiedere. Il caso peggiore si verifica abbastanza spesso (es., ricerca di un dato inesistente). Spesso il caso medio è analogo al caso peggiore.

86 Algoritmo e dimensione dell'istanza Crescita del tempo di calcolo al crescere della dimensione dell'istanza La bontà di un algoritmo viene valutata rispetto al suo comportamento asintotico ovvero quando la dimensione dell'istanza tende all'infinito Buon comportamento asintotico: al crescere della dimensione non cresce troppo il tempo Cattivo comportamento asintotico: algoritmo applicabile nella pratica solo a istanze di dimensione limitata

87 Ordine di grandezza Ciò che importa veramente non è la quantità precisa di risorse, ma come questa cresce al crescere della dimensione dell'ingresso O(logn) < O(n) < O(n 2 ) < O(n 3 ) < < O(2 n )

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi. E. Calabrese: Fondamenti di Informatica Problemi-1 Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi. L'informatica

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Nozione di algoritmo. Gabriella Trucco

Nozione di algoritmo. Gabriella Trucco Nozione di algoritmo Gabriella Trucco Programmazione Attività con cui si predispone l'elaboratore ad eseguire un particolare insieme di azioni su particolari informazioni (dati), allo scopo di risolvere

Dettagli

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare

Dettagli

DAL PROBLEMA ALL'ALGORITMO AL PROGRAMMA SCRITTO IN Come. Scopo principale dell informatica è risolvere problemi con i calcolatori.

DAL PROBLEMA ALL'ALGORITMO AL PROGRAMMA SCRITTO IN Come. Scopo principale dell informatica è risolvere problemi con i calcolatori. DAL PROBLEMA ALL'ALGORITMO AL PROGRAMMA SCRITTO IN Come Scopo principale dell informatica è risolvere problemi con i calcolatori. Non tutti i problemi sono risolvibili con i calcolatori. Si può dimostrato

Dettagli

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati Informatica 3 Informatica 3 LEZIONE 10: Introduzione agli algoritmi e alle strutture dati Modulo 1: Perchè studiare algoritmi e strutture dati Modulo 2: Definizioni di base Lezione 10 - Modulo 1 Perchè

Dettagli

Le parole dell informatica: modello di calcolo, complessità e trattabilità

Le parole dell informatica: modello di calcolo, complessità e trattabilità Le parole dell informatica: modello di calcolo, complessità e trattabilità Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Ciclo di seminari su un Vocabolario

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Matematica generale CTF

Matematica generale CTF Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione

Dettagli

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Scopo della lezione. Informatica. Informatica - def. 1. Informatica Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

Tipologie di macchine di Turing

Tipologie di macchine di Turing Tipologie di macchine di Turing - Macchina di Turing standard - Macchina di Turing con un nastro illimitato in una sola direzione - Macchina di Turing multinastro - Macchina di Turing non deterministica

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio Il Concetto Intuitivo di Calcolatore Fondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini I Problemi e la loro Soluzione Problema: classe

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

Dettagli

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo INPUT: dati iniziali INPUT: x,y,z AZIONI esempio: Somma x ed y

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

SPC e distribuzione normale con Access

SPC e distribuzione normale con Access SPC e distribuzione normale con Access In questo articolo esamineremo una applicazione Access per il calcolo e la rappresentazione grafica della distribuzione normale, collegata con tabelle di Clienti,

Dettagli

1. Distribuzioni campionarie

1. Distribuzioni campionarie Università degli Studi di Basilicata Facoltà di Economia Corso di Laurea in Economia Aziendale - a.a. 2012/2013 lezioni di statistica del 3 e 6 giugno 2013 - di Massimo Cristallo - 1. Distribuzioni campionarie

Dettagli

( x) ( x) 0. Equazioni irrazionali

( x) ( x) 0. Equazioni irrazionali Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza

Dettagli

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi. PROGETTO SeT Il ciclo dell informazione Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi. Scuola media Istituto comprensivo di Fagagna (Udine) Insegnanti referenti: Guerra Annalja, Gianquinto

Dettagli

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali 1 Modelli imperativi: le RAM (Random Access Machine) I modelli di calcolo imperativi sono direttamente collegati al modello Von Neumann,

Dettagli

Algoritmi e Complessità

Algoritmi e Complessità Algoritmi e Complessità Università di Camerino Corso di Laurea in Informatica (tecnologie informatiche) III periodo didattico Docente: Emanuela Merelli Email:emanuela.merelli@unicam.it Lezione 2 Teoria

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Il concetto di Algoritmo e di Calcolatore Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Cos

Dettagli

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo Logica Numerica Approfondimento E. Barbuto Minimo Comune Multiplo e Massimo Comun Divisore Il concetto di multiplo e di divisore Considerato un numero intero n, se esso viene moltiplicato per un numero

Dettagli

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6 Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6 Alberto Carraro 30 novembre DAIS, Universitá Ca Foscari Venezia http://www.dsi.unive.it/~acarraro 1 Funzioni Turing-calcolabili Finora abbiamo

Dettagli

Metodologie di programmazione in Fortran 90

Metodologie di programmazione in Fortran 90 Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di

Dettagli

Fondamenti di Informatica. Allievi Automatici A.A. 2014-15 Nozioni di Base

Fondamenti di Informatica. Allievi Automatici A.A. 2014-15 Nozioni di Base Fondamenti di Informatica Allievi Automatici A.A. 2014-15 Nozioni di Base Perché studiare informatica? Perché l informatica è uno dei maggiori settori industriali, e ha importanza strategica Perché, oltre

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Come ragiona il computer. Problemi e algoritmi

Come ragiona il computer. Problemi e algoritmi Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Problema Strategia

Dettagli

UD 3.4b: Trattabilità e Intrattabilità. Dispense, cap. 4.2

UD 3.4b: Trattabilità e Intrattabilità. Dispense, cap. 4.2 UD 3.4b: Trattabilità e Intrattabilità Dispense, cap. 4.2 Problemi Intrattabili Esistono problemi che, pur avendo un algoritmo di soluzione, non forniranno mai una soluzione in tempi ragionevoli nemmeno

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI 119 4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI Indice degli Argomenti: TEMA N. 1 : INSIEMI NUMERICI E CALCOLO

Dettagli

Algoritmi e diagrammi di flusso

Algoritmi e diagrammi di flusso Algoritmi e diagrammi di flusso Un algoritmo può essere descritto come una sequenza finita ed ordinata di operazioni che descrivono la soluzione di un problema. Per sequenza finita si intende che un algoritmo

Dettagli

Le Macchine di Turing

Le Macchine di Turing Le Macchine di Turing Come è fatta una MdT? Una MdT è definita da: un nastro una testina uno stato interno un programma uno stato iniziale Il nastro Il nastro è infinito suddiviso in celle In una cella

Dettagli

Il principio di induzione e i numeri naturali.

Il principio di induzione e i numeri naturali. Il principio di induzione e i numeri naturali. Il principio di induzione è un potente strumento di dimostrazione, al quale si ricorre ogni volta che si debba dimostrare una proprietà in un numero infinito

Dettagli

ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma

ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma Calcolabilità problemi facili trovare la media di due numeri stampare le linee di un file che contengono una parola problemi difficili trovare il circuito minimo data una tabella determinare la migliore

Dettagli

Cos è un Calcolatore?

Cos è un Calcolatore? Cos è un Calcolatore? Definizione A computer is a machine that manipulates data according to a (well-ordered) collection of instructions. 24/105 Riassumendo... Un problema è una qualsiasi situazione per

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

I ricavi ed i costi di produzione

I ricavi ed i costi di produzione I ricavi ed i costi di produzione Supponiamo che le imprese cerchino di operare secondo comportamenti efficienti, cioè comportamenti che raggiungono i fini desiderati con mezzi minimi (o, che è la stessa

Dettagli

Analisi e diagramma di Pareto

Analisi e diagramma di Pareto Analisi e diagramma di Pareto L'analisi di Pareto è una metodologia statistica utilizzata per individuare i problemi più rilevanti nella situazione in esame e quindi le priorità di intervento. L'obiettivo

Dettagli

Introduzione. Informatica B. Daniele Loiacono

Introduzione. Informatica B. Daniele Loiacono Introduzione Informatica B Perchè studiare l informatica? Perchè ha a che fare con quasi tutto quello con cui abbiamo a che fare ogni giorno Perché è uno strumento fondamentale per progettare l innovazione

Dettagli

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

Dettagli

Complessità Computazionale

Complessità Computazionale Complessità Computazionale Analisi Algoritmi e pseudocodice Cosa significa analizzare un algoritmo Modello di calcolo Analisi del caso peggiore e del caso medio Esempio di algoritmo in pseudocodice INSERTION

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

Corso di Matematica per la Chimica

Corso di Matematica per la Chimica Dott.ssa Maria Carmela De Bonis a.a. 203-4 I sistemi lineari Generalità sui sistemi lineari Molti problemi dell ingegneria, della fisica, della chimica, dell informatica e dell economia, si modellizzano

Dettagli

Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili

Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili roblemi che i calcolatori non possono risolvere E importante sapere se un programma e corretto, cioe fa quello che ci aspettiamo. E facile

Dettagli

Ricorsione. (da lucidi di Marco Benedetti)

Ricorsione. (da lucidi di Marco Benedetti) Ricorsione (da lucidi di Marco Benedetti) Funzioni ricorsive Dal punto di vista sintattico, siamo in presenza di una funzione ricorsiva quando all interno della definizione di una funzione compaiono una

Dettagli

RISOLUTORE AUTOMATICO PER SUDOKU

RISOLUTORE AUTOMATICO PER SUDOKU RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU

Dettagli

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Scopo: Stimare l onere computazionale per risolvere problemi di ottimizzazione e di altra natura

Dettagli

Ottimizzazione Multi Obiettivo

Ottimizzazione Multi Obiettivo Ottimizzazione Multi Obiettivo 1 Ottimizzazione Multi Obiettivo I problemi affrontati fino ad ora erano caratterizzati da una unica (e ben definita) funzione obiettivo. I problemi di ottimizzazione reali

Dettagli

Varianti Macchine di Turing

Varianti Macchine di Turing Varianti Macchine di Turing Esistono definizioni alternative di macchina di Turing. Chiamate Varianti. Tra queste vedremo: MdT a più nastri e MdT non deterministiche. Mostriamo: tutte le varianti ragionevoli

Dettagli

Funzionalità di un Algoritmo

Funzionalità di un Algoritmo ALGORITMI Cosa è un algoritmo Un algoritmo è una sequenza di azioni che consente di pervenire alla soluzione di un problema mediante una sequenza finita di operazioni, completamente e univocamente determinate.

Dettagli

Capitolo 13: L offerta dell impresa e il surplus del produttore

Capitolo 13: L offerta dell impresa e il surplus del produttore Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:

Dettagli

La Macchina RAM Shepherdson e Sturgis (1963)

La Macchina RAM Shepherdson e Sturgis (1963) La Macchina RAM Shepherdson e Sturgis (963) Nastro di ingresso.......... PROGRAM COUNTER Nastro di uscita PROGRAMMA ACCUMULATORE UNITA' ARITMETICA............... 2 3 4 M E M O R I A Formato delle Istruzioni

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

Capitolo 7: Teoria generale della calcolabilitá

Capitolo 7: Teoria generale della calcolabilitá Capitolo 7: Teoria generale della calcolabilitá 1 Differenti nozioni di calcolabilitá (che seguono da differenti modelli di calcolo) portano a definire la stessa classe di funzioni. Le tecniche di simulazione

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

Fondamenti dei linguaggi di programmazione

Fondamenti dei linguaggi di programmazione Fondamenti dei linguaggi di programmazione Aniello Murano Università degli Studi di Napoli Federico II 1 Riassunto delle lezioni precedenti Prima Lezione: Introduzione e motivazioni del corso; Sintassi

Dettagli

Strumenti e metodi per la redazione della carta del pericolo da fenomeni torrentizi

Strumenti e metodi per la redazione della carta del pericolo da fenomeni torrentizi Versione 2.0 Strumenti e metodi per la redazione della carta del pericolo da fenomeni torrentizi Corso anno 2011 E. MANUALE UTILIZZO HAZARD MAPPER Il programma Hazard Mapper è stato realizzato per redarre,

Dettagli

Codifiche a lunghezza variabile

Codifiche a lunghezza variabile Sistemi Multimediali Codifiche a lunghezza variabile Marco Gribaudo marcog@di.unito.it, gribaudo@elet.polimi.it Assegnazione del codice Come visto in precedenza, per poter memorizzare o trasmettere un

Dettagli

Più processori uguale più velocità?

Più processori uguale più velocità? Più processori uguale più velocità? e un processore impiega per eseguire un programma un tempo T, un sistema formato da P processori dello stesso tipo esegue lo stesso programma in un tempo TP T / P? In

Dettagli

Equilibrio bayesiano perfetto. Giochi di segnalazione

Equilibrio bayesiano perfetto. Giochi di segnalazione Equilibrio bayesiano perfetto. Giochi di segnalazione Appunti a cura di Stefano Moretti, Silvia VILLA e Fioravante PATRONE versione del 26 maggio 2006 Indice 1 Equilibrio bayesiano perfetto 2 2 Giochi

Dettagli

Intelligenza Artificiale

Intelligenza Artificiale Intelligenza Artificiale Esercizi e Domande di Esame Tecniche di Ricerca e Pianificazione Esercizi Griglia Si consideri un ambiente costituito da una griglia n n in cui si muove un agente che può spostarsi

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso Università Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Gli input sono detti anche fattori di produzione: terra, capitale, lavoro, materie prime.

Gli input sono detti anche fattori di produzione: terra, capitale, lavoro, materie prime. LA TECNOLOGIA Studio del comportamento dell impresa, soggetto a vincoli quando si compiono scelte. La tecnologia rientra tra vincoli naturali e si traduce nel fatto che solo alcuni modi di trasformare

Dettagli

Informatica. appunti dalle lezioni del 20/09/2011 e del 27/09/2011

Informatica. appunti dalle lezioni del 20/09/2011 e del 27/09/2011 Informatica appunti dalle lezioni del 20/09/2011 e del 27/09/2011 Definizioni Informatica: scienza per lʼelaborazione automatica dellʼinformazione Informatica = Informazione + Automatica Informazione:

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) 3. (testo di riferimento: Bellini-Guidi) Ing. Agnese Pinto 1 di 28 Linguaggi di programmazione Un programma è un algoritmo

Dettagli

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi Università degli Studi di L Aquila Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi Prof. Gaetanino Paolone Dott. Ottavio Pascale a.a.2003-2004 Progetto Campo

Dettagli

1 Serie di Taylor di una funzione

1 Serie di Taylor di una funzione Analisi Matematica 2 CORSO DI STUDI IN SMID CORSO DI ANALISI MATEMATICA 2 CAPITOLO 7 SERIE E POLINOMI DI TAYLOR Serie di Taylor di una funzione. Definizione di serie di Taylor Sia f(x) una funzione definita

Dettagli

Informatica per le discipline umanistiche 2 lezione 14

Informatica per le discipline umanistiche 2 lezione 14 Informatica per le discipline umanistiche 2 lezione 14 Torniamo ai concetti base dellʼinformatica. Abbiamo sinora affrontato diversi problemi: avere unʼidentità online, cercare pagine Web, commentare il

Dettagli

UNIVERSITÀ DEGLI STUDI DI TERAMO

UNIVERSITÀ DEGLI STUDI DI TERAMO UNIVERSITÀ DEGLI STUDI DI TERAMO CORSO DI LAUREA IN ECONOMIA BANCARIA FINANZIARIA ED ASSICURATIVA (Classe 7) Corso di Matematica per l Economia (Prof. F. Eugeni) TEST DI INGRESSO Teramo, ottobre 00 SEZIONE

Dettagli

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Cenni su algoritmi, diagrammi di flusso, strutture di controllo Cenni su algoritmi, diagrammi di flusso, strutture di controllo Algoritmo Spesso, nel nostro vivere quotidiano, ci troviamo nella necessità di risolvere problemi. La descrizione della successione di operazioni

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Fondamenti e didattica di Matematica Finanziaria

Fondamenti e didattica di Matematica Finanziaria Fondamenti e didattica di Matematica Finanziaria Silvana Stefani Piazza dell Ateneo Nuovo 1-20126 MILANO U6-368 silvana.stefani@unimib.it 1 Unità 9 Contenuti della lezione Operazioni finanziarie, criterio

Dettagli

La Qualità il Controllo ed il Collaudo della macchina utensile. Dr. Giacomo Gelmi

La Qualità il Controllo ed il Collaudo della macchina utensile. Dr. Giacomo Gelmi La Qualità il Controllo ed il Collaudo della macchina utensile Dr. Giacomo Gelmi Che cosa è una macchina utensile? E uno spazio fisico in cui si collocano, sostenuti da adeguate strutture ed in posizioni

Dettagli

TECNICHE DI SIMULAZIONE

TECNICHE DI SIMULAZIONE TECNICHE DI SIMULAZIONE INTRODUZIONE Francesca Mazzia Dipartimento di Matematica Università di Bari a.a. 2004/2005 TECNICHE DI SIMULAZIONE p. 1 Introduzione alla simulazione Una simulazione è l imitazione

Dettagli

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente Funzioni In matematica, una funzione f da X in Y consiste in: 1. un insieme X detto dominio di f 2. un insieme Y detto codominio di f 3. una legge che ad ogni elemento x in X associa uno ed un solo elemento

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

La macchina universale

La macchina universale La macchina universale Una immediata conseguenza della dimostrazione è la seguente Corollario il linguaggio L H = {M (w) M rappresenta una macchina di Turing che si ferma con input w} sull alfabeto {0,1}*

Dettagli

Consideriamo due polinomi

Consideriamo due polinomi Capitolo 3 Il luogo delle radici Consideriamo due polinomi N(z) = (z z 1 )(z z 2 )... (z z m ) D(z) = (z p 1 )(z p 2 )... (z p n ) della variabile complessa z con m < n. Nelle problematiche connesse al

Dettagli

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti) (Esercizi Tratti da Temi d esame degli ordinamenti precedenti) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste

Dettagli

1. PRIME PROPRIETÀ 2

1. PRIME PROPRIETÀ 2 RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,

Dettagli

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Premessa Con l analisi di sensitività il perito valutatore elabora un range di valori invece di un dato

Dettagli