Problemi algoritmici e Complessità degli algoritmi

Documenti analoghi
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Studio degli algoritmi

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Come ragiona il computer. Problemi e algoritmi

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio di calcolo di complessità: insertion sort

Fortran in pillole : prima parte

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

LABORATORIO DI INFORMATICA

Elaborazione dell informazione

Definizione FONDAMENTI DI INFORMATICA. Esempio di algoritmo: determinare il maggiore di due numeri interi x, y. Proprietà degli algoritmi

Il concetto di calcolatore e di algoritmo

In molte applicazioni sorge il problema di sapere in quanti modi possibili si può presentare un certo fenomeno.

MODELLI QUANTITATIVI. f x r = c

PROGRAMMAZIONE STRUTTURATA

Massimo Benerecetti Tabelle Hash

Problemi, algoritmi, calcolatore

Fondamenti di Informatica

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Laboratorio di Architettura lezione 5. Massimo Marchiori W3C/MIT/UNIVE

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Algoritmo: procedimento non ambiguo che in un numero finito di passi risolve un problema (o una classe di problemi)

Costanti e Variabili

Informatica Teorica. Macchine a registri

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute.

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Problemi, istanze, soluzioni

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

<Nome Tabella>.<attributo>

LEZIONE 11 IMPARIAMO A PROGRAMMARE: I DATI E LE VARIABILI Laboratorio di Informatica per l Educazione A. A. 2014/2015

Complementi ed Esercizi di Informatica Teorica II

Fondamenti di Informatica. Definizione di Algoritmo. Algoritmo Euclideo. Prof.V.L.Plantamura Informatica e Comunicazione Digitale a.a.

Lezione 6 programmazione in Java

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

e Algoritmi Marco Piastra Intelligenza Artificiale I Soddisfacibilità

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Addizionatori: metodo Carry-Lookahead. Costruzione di circuiti combinatori. Standard IEEE754

Informatica. Come si risolve un problema?

LA PROGRAMMAZIONE MATEMATICA (p.m.)

Cosa si intende con stato

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Fattorizzazione di interi e crittografia

Le parole dell informatica: algoritmo e decidibilità

Rappresentazione degli algoritmi

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

Capitolo 8: Teoria della complessitá

Dall algoritmo al programma

Un tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente:

Macchine di Turing: somma di due numeri

Algoritmi e Strutture di Dati (3 a Ed.) String matching. Alan Bertossi, Alberto Montresor

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Teoria della Calcolabilità!

Elementi di Complessità Computazionale

Lezione 3. I numeri relativi

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

Tecniche di Ordinamento dei Vettori

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER

Esercitazione 1 Conversione di base

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Foglio Elettronico Lezione 1

Unità A2. Progettazione concettuale. Obiettivi. Astrazione. Astrazione per aggregazione

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Note per la Lezione 4 Ugo Vaccaro

Formalismi per la descrizione di algoritmi

Transcript:

Problemi algoritmici e Complessità degli algoritmi Università degli Studi di Salerno Corso di Laurea in Scienze della comunicazione Informatica generale Docente: Angela Peduto A.A. 2005/2006 Problemi algoritmici! Ma quali sono i tipi di problemi che possono essere risolti tramite un algoritmo ( Problemi algoritmici )?! Un problema algoritmico è caratterizzato dalla conoscenza precisa di due elementi:! L insieme degli input ammissibili! L insieme degli output desiderati in funzione degli input! Un problema algoritmico applicato ad un particolare input è detto istanza del problema 2 1

Algoritmi computazionali! Input: prevalentemente numerici! Output: numerici, come risultato di elaborazioni computazionali sugli stessi input o da loro determinate! Esempio num. 1! Input: due numeri interi a e b! Output: il numero intero a*b 2! Esempio num. 2! Input: due numeri interi J e K! Output: La somma di tutti gli interi da J e K! Nota: il numero di somme da effettuare (e quindi la durata dell algoritmo) non è nota a priori (come per il caso precedente), ma la si conosce solo al momento dell esecuzione dell algoritmo 3 Algoritmi decisionali (1)! Input: qualsiasi! Output: Valore SI se una certa proprietà dei dati input è verificata, NO altrimenti! Esempio num. 3! Input: un numero intero positivo, K! Output: SI se K è primo NO altrimenti! Nota: l algoritmo prevede certamente e l esecuzione di calcoli, ma il risultato non è numerico 4 2

Algoritmi decisionali (2)! Esempio num. 4 (commesso viaggiatore versione decisionale)! Input: Carta stradale con n città collegate da strade di cui si conosce la lunghezza e un numero intero K! Output: SI se esiste un itinerario di lunghezza massima pari a K che tocca tutte le città. NO altrimenti (cioè non esiste oppure tutti gli itinerari sono più lunghi di K chilometri) 5 Algoritmi di riorganizzazione dei dati! Input: qualsiasi lista di dati omogenei (parole, numeri, date, )! Output: stessa lista con gli elementi riorganizzati in base a determinate priorità! Esempio num. 5 (ordinamento)! Input: una lista di parole! Output: lista in ordine alfabetico! Nota: il problema è di tipo non numerico e presenta un numero di elementi input che è noto solo al momento dell esecuzione dell algoritmo o addirittura solo al suo termine. 6 3

Algoritmi di ricerca (1)! Input: due liste di dati omogenei (parole, numeri, date, ). La seconda lista può consistere anche di un solo elemento! Output: Elenco delle strutture comuni alle due liste! Esempio num. 6 (ricerca)! Input: Un testo e una singola parola (detta pattern)! Output: Tutte le occorrenze del pattern! Nota: Il problema è di tipo non numerico e presenta un numero di elementi input che è noto solo al momento dell esecuzione dell algoritmo o addirittura solo al suo termine 7 Algoritmi di ricerca (2)! Esempio num. 7 (String matching)! Input: Un testo e un dizionario! Output: Tutte le occorrenze delle parole del dizionario nel testo! Note: il problema è di tipo non numerico e presenta un numero di elementi input che è noto solo al momento dell esecuzione dell algoritmo o addirittura solo al suo termine. Inoltre devono essere individuate anche parole parzialmente sovrapposte. Spesso si vuole conoscere anche la frequenza delle occorrenze delle singole parole. 8 4

Algoritmi di ricerca (2)! Esempio num. 8 (Calcolo del massimo o del minimo)! Input: Una lista di oggetti omogenei (parole, numeri, )! Output: l elemento più grande o quello più piccolo! Nota: Il problema presenta un numero di elementi input che è noto solo al momento dell esecuzione dell algoritmo o addirittura solo al suo termine. Esso può riguardare un insieme di parole, come un insieme di numeri che, per esempio, rappresentano l età di un gruppo di persone di cui si vuole conoscere la più anziana o la più giovane 9 Algoritmi di ottimizzazione (1)! Input: un insieme di elementi omogenei di tipo qualsiasi purché sia loro associata una funzione di costo (o di misura). Il problema può presentare dei vincoli sulle modalità di raggruppamento o di organizzazione dei dati! Output: Riorganizzazione dei dati input in modo da ottimizzare la funzione di costo! Esempio num. 9 (commesso viaggiatore versione ottimizzazione)! Input: carta stradale con n città collegate da strade di cui si conosce la lunghezza e due città fissate, A e B! Output: il tragitto più breve che unisca A e B 10 5

Algoritmi di ottimizzazione (2)! Esempio num. 10 (Bin Packing versione monodimensionale)! Input: una lista di oggetti omogenei (pacchetti) a cui è associata una misura, espressa da un numero reale compreso tra 0 e 1 e un insieme di contenitori (Bin) tutti della stessa capacità (pari ad 1).! Output: Raggruppamento dei pacchetti in modo da utilizzare il minor numero di bins.! Nota: Il problema trova moltissime applicazioni! Distribuzione di spot pubblicitari all interno di trasmissioni TV! Taglio di elementi da nastro trasportatore! Ottimizzazione del carico di una flotta di camion! Distribuzione di brani musicali su un insieme di CD! Distribuzione dei processi a un sistema multiprocessoe! Algoritmi di Bin Packing sono attualmente utilizzati per la allocazione della RAM in un sistema multiprogrammato 11 Un problema due algoritmi! Si vuole calcolare la somma dei primi 100 numeri interi positivi, cioè la somma 1+2+3+ +99+100! Algoritmo diretto (detto di forza bruta) Var x, somma integer; begin somma:=0; x:=0; while x < 100 do begin x:= x+1; somma:=somma+x; end; write(somma); end. 12 6

Un problema e due algoritmi (2)! Oppure utiliziamo la formula di Gauss secondo la quale 1+2+3+ +99+100=(100*101)/2 e diamone l algoritmo var somma: integer; begin somma:=(100*101)/2; write(somma); end! Quindi questo è un problema computazionale che ammette più di un algoritmo 13 Un problema e due algoritmi (2)! Generalizzando l algoritmo per la somma dei primi N numeri interi positivi var N, x, somma: integer; begin 1. read(n); 2. Somma:=0; 3. x:=0; 4. while x < N do begin 5. x:=x+1; 6. somma:=somma+x; end; 7. Write(somma); 14 7

Un problema e due algoritmi (3)! Formula di Gauss: 1+2+3+ +N=(N*(N+1))/2 Var N, somma: integer; begin 1. Read (N); 2. Somma:=(N*(N+1))/2; 3. Write(somma); End. 15 Quante operazioni sono richieste da ciascun algoritmo?! Il primo algoritmo richiede:! 1 operazione di lettura dell input (istruzione1),! 2 operazioni di inizializzazione (istruzioni 2 e 3),! N confronti (confronto nell istruzione 4, ripetuto N volte),! 2*N somme (istruzioni 5 e 6 ripetute N volte l una)! 1 operazione finale di stampa del risultato (istruzione 7) 16 8

Quante operazioni sono richieste da ciascun algoritmo? (2)! Per cui il primo algoritmo! Per N=100 richiede complessivamente 1+2+100+200+1=304 operazioni! Per N=200 richiede complessivamente 1+2+200+400+1=604 operazioni, cioè quasi il doppio delle operazioni richieste per N=100! Si noti che il numero delle operazioni che esegue il primo algoritmo è di fatto proporzionale al valore N letto in input 17 Quante operazioni sono richieste da ciascun algoritmo? (3)! Il secondo algoritmo richiede:! 1 operazione iniziale di lettura dell input (istruzione 1)! 3 operazioni aritmetiche: una somma, una moltiplicazione e una divisione (istruzione 2)! 1 operazione finale di stampa del risultato (istruzione 3)! Si noti che il numero delle operazioni che esegue il primo algoritmo è di fatto proporzionale al valore N letto in input 18 9

Quante operazioni sono richieste da ciascun algoritmo? (3)! Il secondo algoritmo richiede:! 1 operazione iniziale di lettura dell input (istruzione 1)! 3 operazioni aritmetiche: una somma, una moltiplicazione ed una divisione (istruzione 2)! 1 operazione finale di stampa del risultato (istruzione 3)! Si noti che il numero delle operazioni che esegue il secondo algoritmo è indipendente dal valore N letto in input! Anzi esso esegue sempre lo stesso numero di operazioni 19 Confronto tra algoritmi per lo stesso problema! Diremo allora che:! Il primo algoritmo ha un tempo di esecuzione proporzionale al numero di addendi da sommare! Il secondo algoritmo ha un tempo di esecuzione costante! Il primo algoritmo è quindi più costoso in termini di numero di operazioni rispetto al secondo! Inoltre il primo algoritmo è tanto più costoso quanto più è grande il numero N in input! Il secondo algoritmo ha un tempo di esecuzione che è indipendente dal valore di N! quindi la differenza tra i due algoritmi è tanto più a vantaggio del secondo quanto più grande è N 20 10

Criteri di valutazione degli algoritmi! Valutazione quantitativa di un algoritmo! Dipendente dalla dimensione dei dati di input! Intuitivamente ci aspettiamo che un algoritmo che elabora 1.000 dati input sia più lento dello stesso algoritmo quando elabora 1.000.000 di dati input! Indipendentemente dalla velocità del singolo computer sul quale l algoritmo verrà implementato! Vogliamo sapere quanto è veloce una soluzione, non quanti millisecondi impiega sul mio computer anche perché questo valore cambia da computer a computer e dipende, sullo stesso computer, da altri fattori contingenti quale ad esempio il carico globale del sistema.! Vogliamo una valutazione parametrica della velocità dell algoritmo, legata solo al numero di operazioni che esso effettua 21 Criteri di valutazione degli algoritmi (2)! La teoria degli algoritmi mette effettivamente a disposizione un insieme di strumenti per poter valutare un algoritmo in base ai seguenti criteri valutativi:! Il tempo di esecuzione espresso in termini del numero di operazioni elementari che esso fa sui dati input, mettendosi nella ipotesi del caso peggiore (Worst Case Analysis)! Lo spazio di memoria occupato come il numero massimo di dati elementari che esso ha bisogno di vedere contemporaneamente durante la computazione, mettendosi nell ipotesi del caso peggiore (Worst Case Analysis) 22 11

Criteri di valutazione degli algoritmi (3)! Il numero di operazioni elementari dipende dall algoritmo e non dalla velocità del singolo computer quindi ci si svincola dai valori tecnologici prestazionali del singolo computer! Il tempo effettivo di esecuzione dell algoritmo dipende poi dal tempo che il singolo computer impiega per eseguire tali operazioni elementari 23 Il caso peggiore! La legge di Muphy Se c è una possibilità che qualcosa possa andare male, allora è certo che andrà male! Il caso migliore spesso non è significativo! In situazioni pratiche, dobbiamo garantirci che la computazione termini comunque entro un tempo massimo, e questo è possibile valutarlo solo considerando la situazione più sfortunata (e quindi più lenta) possibile.! (es. per andare ad A a B con e senza traffico ) 24 12

Il caso peggiore (2)! Nelle prossime lezioni vedremo il caso si due algoritmi per la ricerca in un o schedario con 1.000.000.000 di schede! Caso migliore entrambi: 1 operazione! Caso peggiore del primo: 1.000.000.000 di operazioni! Caso peggiore: 30 operazioni 25 Criteri qualitativi! Sono requisiti qualitativi di un algoritmo (molto meno importanti di quelli quantitativi )! Adattabilità dell algoritmo a soluzioni diverse! Semplicità! Modularità! Eleganza 26 13