La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Richiami di concetti generali

Presentazioni simili


Presentazione sul tema: "Richiami di concetti generali"— Transcript della presentazione:

1 Richiami di concetti generali
Lezione n°1 Prof.ssa Rossella Petreschi Lezione del 6 /10/2011 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitoli da 1 a3 del testo Giorgio Ausiello, Rossella Petreschi “L’informatica invisibile. Come gli algoritmi regolano la nostra vita… e tutto il resto” Edizioni: Mondadori Università /Sapienza Università di Roma Algoritmi e Strutture Dati a.a.2011/2012

2 Algoritmi e Strutture Dati a.a.2011/2012
Al-Khuwarizmi La parola algoritmo deriva dalla latinizzazione del nome Abdallah Mohamed Abu Jafar Ibn Musa al-Khuwarizmi al-Magusi (780/850d.c).Matematico, astronomo, astrologo e geografo visse a Baghdad presso la corte del califfo al-Ma’mun che lo nominò responsabile della famosa biblioteca Bayt al-Hikma (casa della speranza). Fino al sec.XVII algoritmo indicava il sistema di numerazione posizionale. per via del testo Algoritmi de numero indorum Algoritmi e Strutture Dati a.a.2011/2012

3 I primi algoritmi (2000-1650 a.c.)
Problema n°51 del papiro di Rhind Se ti viene detto: un triangolo di 10 khet di altezza e 4 khet la sua base. Quale è la sua area? Fare come si deve. Fai la metà di 4, cioè 2. Fai la moltiplicazione di 10 per 2. E’ la sua area. La sua area è 20. Da tavoletta babilonese Il numero è 4;10.Qual è il suo inverso? Procedi come segue. Forma l’inverso di 10,troverai 6. Moltiplica 6 per 4 troverai 24. Aggiungi 1 troverai 25.Forma l’inverso di 25 troverai 2;24.Moltiplica 2;24 per 6. Troverai 14;24. L’inverso è 14;24.Questo è il modo di procedere. Algoritmi e Strutture Dati a.a.2011/2012

4 L’algoritmo di Euclide libro VII degli Elementi
Supponiamo che siano dati due numeri AB e G∆ non primi tra loro e che G∆ sia il più piccolo. Si deve trovare la più grande misura comune dei numeri AB e G∆. Se G∆ misura AB allora G∆ è la misura comune di AB e G∆ perchè G∆ misura anche se stesso; è evidente che esso è la misura comune più grande poiché nessun numero maggiore di G∆ può misurare G∆. Ma se G∆ non misura AB e se togliamo il minore tra AB e G∆ dal maggiore resterà qualche numero che misura ciò che rimane. Il resto non sarà uno, altrimenti i numeri AB e G∆ sarebbero primi tra loro, il che non è ipotizzato. Supponiamo che G∆ misurando AB lasci AE più piccolo di lui, e che AE, misurando G∆ lasci GZ più piccolo di lui e che infine GZ misuri AE. Poichè GZ misura AE e AE misura ∆Z, GZ misura ∆Z. Ma esso misura se stesso quindi misura l’intero G∆. Ma G∆ misura BE dunque GZ misura EB ma esso misura anche AE, quindi esso misura l’intero AB. Dunque GZ è una misura comune di AB e G∆. Input: due numeri interi n ed m Output: MCD(n,m) Passo 1: Se n = m, MCD(n,m) = n; Passo 2: altrimenti se m>n MCD(m-n,n) altrimenti MCD(n-m,m) se n < m Algoritmi e Strutture Dati a.a.2011/2012

5 Algoritmi e Strutture Dati a.a.2011/2012
Secondo Donald E. Knuth dato un particolare input, un algoritmo deve generare un output proseguendo per passi successivi (sequenza di operazioni elementari) caratterizzati dalle seguenti proprietà: Finitezza Effettività Definitezza The Art of Computer Programming. Volume 1: Fundamental Algorithms. Algoritmi e Strutture Dati a.a.2011/2012

6 Algoritmi e Strutture Dati a.a.2011/2012
Finitezza Ogni algoritmo deve sempre terminare dopo l’esecuzione di un numero finito di passi. Quando (raramente) si accetta la non terminazione di un algoritmo si parla di procedura computazionale. Esempio di procedura computazionale: il sistema operativo di un computer progettato per controllare l’esecuzione di altri programmi e per restare in stato di attesa quando nessun programma è in esecuzione. Algoritmi e Strutture Dati a.a.2011/2012

7 Algoritmi e Strutture Dati a.a.2011/2012
Effettività Ogni algoritmo deve essere effettivamente eseguibile, ovvero ogni operazione deve essere sufficientemente di base da poter essere eseguita a carta e penna in una quantità finita di tempo. Esempio di mancanza di effettività: la divisione di un numero naturale per 0. Algoritmi e Strutture Dati a.a.2011/2012

8 Algoritmi e Strutture Dati a.a.2011/2012
Definitezza Ogni passo di un algoritmo deve essere definito in modo chiaro e non ambiguo, ovvero deve dar luogo alla stessa sequenza di operazioni e di risultati, indipendentemente da chi lo esegue e in qualunque momento venga eseguito. Esempio di mancanza di definitezza: ricette di specialità culinarie (che quindi non sono algoritmi), dove sono molto diffusi i termini “a piacimento” o “quanto basta”. Algoritmi e Strutture Dati a.a.2011/2012

9 Algoritmi e Strutture Dati a.a.2011/2012
Validazione Una volta che un algoritmo è stato progettato bisogna provarne la correttezza, ovvero bisogna dimostrare che esso fornisce l’output corretto per ogni possibile input. Solo dopo che è stato validato, un algoritmo può essere trasformato in programma. Algoritmi e Strutture Dati a.a.2011/2012

10 Algoritmi e Strutture Dati a.a.2011/2012
Programma Programma è un algoritmo espresso in un opportuno linguaggio di programmazione I linguaggi di programmazione sono stati introdotti per garantire la definitezza ed evitare le ambiguità, ovvero progettati in modo che ogni enunciato ammesso dal sistema abbia un unico significato quando interpretato da un calcolatore. Algoritmi e Strutture Dati a.a.2011/2012

11 Algoritmi e Strutture Dati a.a.2011/2012
Correttezza Provare la correttezza di un programma vuol dire verificare che il programma esprime in modo corretto l’algoritmo che sta implementando. Notare la differenza fra la validazione (che riguarda la “filosofia “ dell’algoritmo) e la correttezza (che riguarda l’analisi del programma). Algoritmi e Strutture Dati a.a.2011/2012

12 Algoritmi e Strutture Dati a.a.2011/2012
Costo di un programma L’esecuzione di un programma richiede il consumo di risorse computazionali: spazio, tempo, processori. Poichè il tempo è la misura più significativa, si ha che: il costo di un programma è in genere calcolato rispetto al tempo richiesto per la sua esecuzione e la definizione di tempo di esecuzione, per essere robusta, deve essere definita in modo indipendente dal modello di calcolo adoperato, pertanto ci si può riferire direttamente al costo di un algoritmo Algoritmi e Strutture Dati a.a.2011/2012

13 Algoritmi e Strutture Dati a.a.2011/2012
Bontà di un algoritmo La bontà di un algoritmo è determinata dal suo costo, ovvero dal computo del numero di operazioni elementari compiute dall’algoritmo stesso. Una operazione è elementare se si considera indipendente dalla dimensione degli operandi. La complessità in tempo di un algoritmo permette di stabilire un limite superiore al tempo di calcolo reale dell’algoritmo: tempo reale = tempo 1 operazione elementare × complessità Algoritmi e Strutture Dati a.a.2011/2012

14 Caso peggiore e caso medio
Analisi del caso peggiore Il tempo è determinato considerando, per ciascuna dimensione, l’istanza che richiede maggior tempo di calcolo. Analisi del caso medio Il tempo è determinato calcolando, per ciascuna dimensione, la media dei tempi di calcolo per le istanze di quella dimensione. Il calcolo del caso medio non è sempre possibile: per una buona stima occorre conoscere la distribuzione di probabilità delle istanze del problema. In generale, il tempo richiesto da un algoritmo cresce con la dimensione dell’input. Algoritmi e Strutture Dati a.a.2011/2012

15 In generale,ma non sempre…
Somma dei primi n numeri interi dipendente dall’input: O(n) Input: un numero intero n Output: S = somma dei primi n numeri interi Passo 1: Si pone S = 0; Passo 2: Si ripete S = S + i per i = 1, ..., n Passo 3: Si fornisce S in output Somma dei primi n numeri interi indipendente dall’input:O(1) Passo 1: S = n x (n+1)/2; Algoritmi e Strutture Dati a.a.2011/2012

16 Sfruttare le proprietà del problema
Ricerca sequenziale, elementi in ordine casuale: O(n) Input: A: vettore di n elementi; x: elemento noto Output: j: 1 ≤ j ≤ n, se x = A(j), j = 0 altrimenti Passo 1: Si pone j = 1; Passo 2: Si ripete j = j + 1 finchè non si trova j > n o x = A(j) Passo 3: Se j > n allora si pone j = 0 Passo 4: Si fornisce j in output Ricerca dicotomica, elementi ordinati: O(logn) Input: A: vettore di n elementi ordinati in modo non decrescente; x: elemento noto Passo 1: Si pone j = 0, sx = 1, dx = n; Passo 2: Si ripete mezzo = (sx+dx)/2 se x = A(mezzo) allora j = mezzo altrimenti se x < A(mezzo) allora dx = mezzo -1 altrimenti sx = mezzo +1 fintanto che sx ≤ dx e j = 0 Passo 3: Si fornisce j in output Algoritmi e Strutture Dati a.a.2011/2012

17 Complessità asintotica
 grande(limite asintotico superiore) f(n) = (g(n)) se e solo f (n) ≤ c g(n) ∀n ≥ no Omega(limite asintotico inferiore) f(n) = (g(n)) se e solo f (n) ≥ c g(n) ∀n ≥ no Teta(limite asintotico stretto) f(n) =(g(n)) se e solo c1 g(n) ≤ f (n) ≤ c2 g(n) ∀n ≥ no Algoritmi e Strutture Dati a.a.2011/2012

18 Classificazione degli algoritmi(1)
O(1) : tempo di elaborazione costante O(logn),O(n), O(n2) e O(n3): tempologaritmico, lineare, quadratico e cubico ,rispettivamente O(nk): tempo polinomiale, k costante O(2n ): tempo esponenziale Algoritmi e Strutture Dati a.a.2011/2012

19 Classificazione degli algoritmi(2)
algoritmi deterministici se per ogni istruzione esiste, a parita` di dati d'ingresso, un solo passo successivo. algoritmi non deterministici se contiene almeno una istruzione che ammette piu` passi successivi. Algoritmi e Strutture Dati a.a.2011/2012

20 Classificazione dei problemi(1)
Problemi di decisione soluzione vero o falso Problemi di ottimizzazione soluzione la migliore fra le possibili Problemi di enumerazione Problemi di ricerca Algoritmi e Strutture Dati a.a.2011/2012

21 Classificazione dei problemi(2)
P ≠ NP ? Uno dei 7 problemi da US$ selezionati dl Clay Matematics Institute Vinay Deolalikar (Hewlett-Packard Labs) Grigory Perelman (Poincaré conjecture) Algoritmi e Strutture Dati a.a.2011/2012

22 Andamento di alcune funzioni
Algoritmi e Strutture Dati a.a.2011/2012

23 Analizzare con attenzione
O(1) < O(log n) < O(n) < O(n2 ) < O(n3 ) < ... < O(2n ) anche se la disuguaglianza può valere solo per valori di n decisamente grandi: n!< n1000 per n < 1165 e ancora bisogna fare attenzione quando ci sono le costanti moltiplicative n2 giorni > n3secondi dato che 1 giorno = secondi Algoritmi e Strutture Dati a.a.2011/2012

24 Algoritmi e Strutture Dati a.a.2011/2012
Ridurre la costante Input: un vettore di n elementi distinti, min =max=1 Output: max, min Alg1:: O(n), c.m. = 2 Passo : for j = 2 to n if A[j ] > A[max] then max ← j else if A[j ] < A[min] then min ← j Alg2:: O(n), c.m. = 3/2 Passo 0 : for (j = 0 to n-2, step 2) if A[j+1 ] > A[j+2] then (cmax ← j+1, cmin ←j+ 2) else (cmax ←j+ 2, cmin ← j+1) if A[cmin] < A[min] then min ← cmin if A[cmax ] > A[max] then max ← cmax Passo 1 : If j = n-1 then if A[j ] > A[max] then max ← j then if A[j ] < A[min] then min ← j Algoritmi e Strutture Dati a.a.2011/2012

25 Confronto fra algoritmi
fissare una misura comune per la dimensione dell’istanza; fissare quali sono le operazioni elementari da contare; determinare la complessità considerando anche le costanti; considerare gli ordini di grandezza solo se le costanti moltiplicative sono del medesimo ordine. Algoritmi e Strutture Dati a.a.2011/2012


Scaricare ppt "Richiami di concetti generali"

Presentazioni simili


Annunci Google