Complessità computazionale degli algoritmi



Похожие документы
Software e Algoritmi

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

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

Software, Algoritmi e Programmi

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

Appunti di Sistemi Elettronici

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

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.

Lezione 8. La macchina universale

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

Corso di Matematica per la Chimica

4 3 4 = 4 x x x 10 0 aaa

Sistema di numerazione binario, operazioni relative e trasformazione da base due a base dieci e viceversa di Luciano Porta

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Calcolatori: Algebra Booleana e Reti Logiche

Origini e caratteristiche dei calcolatori elettronici

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

Breve storia del calcolo automatico

Esempi di algoritmi. Lezione III

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

Architettura di un calcolatore

23/02/2014. Dalla scorsa lezione. La Macchina di Von Neumann. Uomo come esecutore di algoritmi

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

Come ragiona il computer. Problemi e algoritmi

Algoritmi e Complessità

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

Gestione della memoria centrale

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

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

Alessandro Pellegrini

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

10 - Programmare con gli Array

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

Dimensione di uno Spazio vettoriale

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

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

la scienza della rappresentazione e della elaborazione dell informazione

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

EXCEL FUNZIONI PRINCIPALI

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Un po di statistica. Christian Ferrari. Laboratorio di Matematica

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Il calcolo letterale per risolvere problemi e per dimostrare

B9. Equazioni di grado superiore al secondo

Logaritmi ed esponenziali

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Fondamenti e didattica di Matematica Finanziaria

Cos è un Calcolatore?

UNIVERSITÀ DEGLI STUDI DI TERAMO

Corso di Informatica

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

Convertitori numerici in Excel

Attività 9. La città fangosa Minimal Spanning Trees

Introduzione ai Metodi Formali

Appunti del corso di Informatica 1 (IN1 Fondamenti) 2 Introduzione alla programmazione

Dispense di Informatica per l ITG Valadier

Algebra di Boole ed Elementi di Logica

ALGEBRA DELLE PROPOSIZIONI

1. PRIME PROPRIETÀ 2

Algoritmi e strutture dati. Codici di Huffman

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

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

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

I sistemi di numerazione

Architettura del calcolatore

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

LE FUNZIONI A DUE VARIABILI

2. Leggi finanziarie di capitalizzazione

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

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

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Psicometria (8 CFU) Corso di Laurea triennale STANDARDIZZAZIONE

Esercizi Capitolo 6 - Alberi binari di ricerca

La selezione binaria

Corso di Informatica

Problemi, Algoritmi e Programmi

PROGETTO EM.MA PRESIDIO

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

risulta (x) = 1 se x < 0.

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

Funzioni in C. Violetta Lonati

( x) ( x) 0. Equazioni irrazionali

Contenuti. Visione macroscopica Hardware Software. 1 Introduzione. 2 Rappresentazione dell informazione. 3 Architettura del calcolatore

Fondamenti di Informatica. Allievi Automatici A.A Nozioni di Base

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

RISOLUTORE AUTOMATICO PER SUDOKU

Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria).

Sistema operativo: Gestione della memoria

Appunti sulla Macchina di Turing. Macchina di Turing

Descrizione di un algoritmo

Транскрипт:

Complessità computazionale degli algoritmi Lezione n. 3.bis I precursori dei calcolatore Calcolatore di Rodi o di Andikithira 65 a.c. Blaise Pascale pascalina XVII secolo Gottfried Leibniz Joseph Jacquard XVIII secolo Charles Babbage XIX secolo Alan Turing XX secolo - Colossus John Von Neumann macchina programmabile universale - ENIAC 1

Macchina di Babbage Il programma era già cablato all interno del calcolatore La macchina di von Neumann (1) registri Il programma è parte mutevole e risiede nella memoria. Le istruzioni quindi possono mutare nel tempo e il calcolatore è riprogrammabile Macchina Universale 2

La macchina di von Neumann (2) L elaborazione si svolge come segue: un istruzione e i dati che tale istruzione deve manipolare vengono trasferiti o caricati dalla memoria nei registri l unità centrale esegue l istruzione gli eventuali risultati vengono trasferiti dai registri alla memoria si passa all istruzione successiva (o a quella specificata dall istruzione di controllo, se l istruzione eseguita era di questo tipo). L elaborazione è sequenziale: viene eseguita un istruzione per volta La macchina di von Neumann (3) Un programma per una macchina di Von Neumann consiste, pertanto: nella descrizione/prescrizione di una sequenza di istruzioni elementari sui dati combinate con istruzioni di controllo, che modificano l ordine nel quale eseguire le operazioni sui dati A differenza di altre precedenti computer la macchina di von Neumann mette i dati e i programmi allo stesso piano rendendo l esecutore computer riprogrammabile N volte La Pascalina invece era progettata solo per le addizioni 3

Algoritmi ed efficienza Per risolvere un problema possiamo avere diversi algoritmi e tutti risolutori e validi Come scegliere l algoritmo migliore? Correttezza, comprensione ed eleganza, efficienza Se l esecutore è un calcolatore universale cercheremo di scrivere algoritmi efficienti ossia che al crescere dei dati in input il numero delle operazioni svolte sia il migliore Lo studio dell efficienza degli algoritmi porta a studiare la complessità computazionale degli algoritmi stessi secondo due parametri: Tempo quanti giri di CPU compie il computer Spazio quanta memoria occupa Complessità computazionale La complessità computazionale misura quanto tempo e quanta memoria occorre per eseguire un algoritmo per portare a termine la risoluzione del problema Si valuta un ordine di grandezza in base al crescere dei dati inseriti Non è possibile un calcolo esatto quindi si esegue una stima sulla base del caso migliore e del caso peggiore 4

Esempio della ricerca sequenziale Ricerca di un elemento in un insieme ordinato di elementi per esempio un numero telefonico in un elenco ordinato alfabeticamente o un numero intero in un insieme ordinato di numeri interi Siano dati 100 numeri interi; la domanda è: il numero N (per es. 45) è contenuto nell insieme? Algoritmo: Tre variabili: N; Elemento dell insieme, Risultato Acquisisci N e Insieme di elementi Imposta Risultato a Insuccesso Ripeti la scansione degli elementi finchè Risultato vale Successo OR fino alla fine dell insieme Confronto l elemento successivo dell insieme con N Se sono uguali allora imposta Risultato a Successo Comunica la mondo il valore di Risultato Esempio della ricerca sequenziale N=2-10 passi necessari per trovare il numero 2 12-34 - 56 78 23 4-80 44 15 2 Caso peggiore - 10 confronti su 10 numeri N= 12 un passo per raggiungere il numero 12 12-34 - 56 78 23 4-80 44 15 2 Caso migliore 1 confronto su 10 numeri Caso medio (1+10)/2 (1+N)/2 5,5 che arrotondato 5 5

Ricerca sequenziale Se gli elementi dell insieme sono 100 Caso migliore: 1 Caso peggiore: 100 Caso medio: (se N è nella prima posizione il numero dei tentativi è 1) + (se N è nella seconda posizione il numero dei tentativi è 2) + ecc.. Allora il caso medio è (1 + 2 + 3 + + 100) / 100 Più in generale (1 + 2 + 3 + + N) / N Vale N * (N+1)/2 Diviso N dà (N+1)/2 che se N è 100 vale 50 In sintesi (100+1)/2 = 50 arrotondato per difetto Ricerca binaria 6

Ricerca binaria Si suppone di avere una lista ordinata e di cercare Rossi Mario Si suppone di dividere la lista in due e vedere se il nome cercato cade nella prima parte della lista o nella seconda Si identifica così la parte su cui lavorare e si procede ricorsivamente ossia applicando lo stesso procedimento al risultato del passo precedente (pag. 85 Sartor) In questo modo si scarta tutta la parte di indirizzi che sicuramente sono inutili ai nostri fini e ci si concentra sulla parte utile Ricerca binaria Si riduce il problema della metà (circa) a ogni interazione limitando la ricerca alla parte precedente o alla parte successiva del valore di metà dell insieme Ogni tentativo permette di ridurre l ampiezza del problema di un fattore 2. Il primo tentativo riduce il numero degli elementi da confrontare a N/2; il secondo a N/4, ecc. 7

Ricerca binaria caso peggiore: il numero di passi nel caso peggiore è il numero K equivalente al numero di divisioni che consente di arrivare all ultimo elemento, continuo a dividere N finché quello che rimane è un solo elemento N/2/2/2/ /2 = 1 allora ho N/2 k = 1 ossia N = 2 k ossia K= log 2 N, in realtà dobbiamo aggiungere anche 1 ossia il caso in cui i caso migliore: Il numero di passi nel caso migliore è 1 ossia il numero che si trova nella posizione N/2 caso medio: (1+ log 2 N)/2 che appartiene alla famiglia computazionale log 2 N Misure nel caso medio Valore di N 10 100 1 000 Ricerca lineare N/2 5 50 500 Ricerca binaria Log 2 N ~4 ~7 ~10 10 000 100 000 1 000 000 5.000 50.000 500.000 ~ 14 ~ 17 ~ 20 8

Per i curiosi: una rappresentazione grafica Tempo+spazio Ricerca in matrice NxN = N 2 Esponenziale 2 N Ricerca sequenziale N/2 30000 20.000 Ricerca Binaria - log N 10000 10.000 20.000 30.000 40.000 50.000 60.000 dati Classi di complessità Nome della classe Costante Sottolineare Lineare Quadratica Polinomiale Espressione Costante - N log N N (radice di N) N o k*n dove k è una costante (esempio 5N 5 è k) N 2 n k +k*n (esempio N 3 +5N) Esponenziale 2 N 9

Alcuni esempi Quando N raddoppia il tempo di esecuzione Non cambia es. leggi il primo numero di una lista Aumenta di una costante piccola es. ricerca binaria Raddoppia es. prodotto di due liste di numeri N Un pò meno del raddoppio Aumenta di un fattore 4 es. ricerca in una matrice NxN Aumenta di un fattore esponente di x es.sequenza di operazioni su una lista Aumenta di molto secondo la base di cui N è esponente es. torre di Hanoi Si dice complessità Costante - N Logaritmica log N Lineare 2N N log N Quadratica N 2 Polinomiale 3N+5N+N/2 = (8+1/2) N =17/2 N Esponenziale 2 N Misure di efficienza I problemi che si cerca di risolvere in modo automatico sono di tre categorie: Problemi per i quali sono al momento noti un certo numero di algoritmi risolutivi Problemi per i quali è noto che non esistono algoritmi risolutivi Problemi per i quali non si sa se esistano o non esistano algoritmi risolutivi 10

Fare un viaggio fra N città Toccando una sola volta le città Percorso minimo Obama nella campagna elettorale! 49 stati Esempi di problemi esponenziali Problema del commesso viaggiatore In una rete di X città visitarle solo una volta con percorso minimo Genova Milano 2,15h 3,15h Piacenza Problema con complessità computazionale n! Bologna Rompere una chiave di crittografia Attacco informatico di forza bruta Problemi di connessione e di instradamento in Internet (routing) Combinazione delle intercettazioni telefoniche Costruzione di circuiti Logistica dei trasporti Google map Algoritmi euristici abbassano la complessità computazionale da esponenziale a polinomiale 2h 11

Approfondimento: i problemi NP completi Approfondimento alla Lezione n. 3.4 Kurt Gödel 1906-1978 Primo teorema di incompletezza di Gödel Ogni teoria matematica coerente comprende sempre una formula è non dimostrabile e così pure anche la sua negazione Secondo teorema di incompletezza di Gödel Nessun sistema coerente è sufficiente per dimostrare la sua coerenza Esistono problemi indecidibili di cui non si può dimostrare né che è vero né che è falso Esistono problemi irriducibili ossia irrisolvibili, altri ancora non sono calcolabili mediante tempi polinomiali, altri sono calcolabili in un tempo polinomiale 12

Classi di problemi I problemi quindi si possono dividere in tre grandi categorie: Semplici algoritmo polinomiale - P Difficili algoritmo non polinomiale (NP-completi) Indecidibili non si da dire nulla - NP Le ultime due categorie sono problemi intrattabili Una questione aperta nella ricerca informatica attuale è il quesito se P=NP ossia se per ogni problema esiste almeno un algoritmo polinomiale Pare di no! ossia per ora si ha la sensazione, non dimostrata, che P NP NP P NP- Completi Classi di problemi NEXP - tempo esponenziale con macchine NON deterministiche EXP tempo esponenziale con macchine deterministiche PSpace - polinomiali NP polinomiali con macchine NON deterministiche P Log = Log polinomiali Log LOGSpace 13

Materiali di riferimento e Domande possibili Capitolo 3 Sartor http://digilander.libero.it/unno2/sort/complessita.htm Differenza fra la macchina di Von Neumann e gli altri computer Definizione di complessità computazionale Efficienza in termini di tempo e spazio: cosa vuol dire? Caso peggiore, caso migliore, caso medio nella stima dell efficienza di un algoritmo Le classi di complessità costante, lineare, quadratica, logaritmica, esponenziale. 14