Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoPiero Nicolosi Modificato 11 anni fa
1
Il problema della ricerca Algoritmi e Strutture Dati
2
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 2 Esercizio di approfondimento da correggere Sia dato un mazzo di n carte scelte in un universo U di 2n carte distinte, e si supponga di dover verificare se una certa carta x U appartenga o meno al mazzo. Progettare un algoritmo per risolvere tale problema, e analizzarne il costo (in termine di numero di confronti) nel caso migliore, peggiore e medio.
3
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 3 Un primo algoritmo è quello di ricerca sequenziale (o esaustiva), che gestisce il mazzo di carte come una lista L non ordinata Algoritmo di ricerca sequenziale T best (n) = 1 x è in prima posizione T worst (n) = n x L oppure è in ultima posizione T avg (n) = P[x L]·n + P[x L e sia in prima posizione]·1 + P[x L e sia in seconda posizione]·2 +… + P[x L e sia in n-esima posizione]·n Contiamo il numero di confronti (operazione dominante):
4
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 4 Nel caso del mazzo di carte… Assumendo che le istanze siano equidistribuite, la probabilità che una carta appartenga (o non appartenga) al mazzo è ½, e la probabilità che lelemento appartenga al mazzo e sia in posizione i-esima è ½ · 1/n T avg (n) = ½ · n + ½ · 1/n · 1 + ½ · 1/n · 2 +…+ ½ · 1/n · n = = ½ · n + ½ · 1/n · [1+2+…+n] = ½ · n + ½ · 1/n · [n · (n+1)/2] = (3n+1)/4 T avg (n) = T worst (n) = Θ(n) Lanalisi del caso medio può rivelarsi molto complicata…
5
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 5 Algoritmo di ricerca binaria Confronta x con lelemento centrale di L e prosegue nella metà sinistra o destra in base allesito del confronto Se ipotizzassimo che il mazzo di carte fosse una lista L ordinata, potremmo progettare un algoritmo più efficiente: Approfondimento: dimostrare formalmente la correttezza dellalgoritmo.
6
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 6 Esempi su un array di 9 elementi Cerca 2 Cerca 1 Cerca 9 Cerca 3 3<4 quindi a e b si invertono
7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 7 Analisi dellalgoritmo di ricerca binaria T best (n) = 1 lelemento centrale è uguale a x T worst (n) = Θ(log n) x L Infatti, poiché la dimensione del sotto-array su cui si procede si dimezza dopo ogni confronto, dopo li-esimo confronto il sottoarray di interesse ha dimensione n/2 i. Quindi, dopo i= log n +1 confronti, si arriva ad avere a>b. Contiamo i confronti eseguiti nellistruzione 3 (operazione dominante): T avg (n) = P[x L]· ( log n +1 )+ P[x L e sia in posizione centrale]·1 +P[x L e sia in posizione centrale nelle 2 sottometà]·2+ +P[x L e sia in posizione centrale nelle 4 sotto-sottometà]·3 + …+ +P[x L e sia in una delle 2 log n n/2 posizioni raggiungibili con a=b]· ( log n +1 ) 434243414342434
8
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 8 Nel caso del mazzo di carte… Se il mazzo di carte ci venisse dato ordinato, applicando la ricerca binaria avremmo: T avg (n) = ½ · ( log n +1) + ½ · 1/n · 1 + ½ · 2/n · 2 + ½ · 4/n · 3 + … + ½ · (n/2)/n ·( log n +1 ) quindi, se x L, in circa metà dei casi pago ( log n +1 ), e nellaltra metà dei casi pago un valore minore di ( log n +1 ) T avg (n) < ½ · ( log n +1) + ½ · ( log n +1) = log n +1 e poiché T avg (n) > 1/2· log n, ne consegue che T avg (n) =Θ(log n) T avg (n) = T worst (n) = Θ(log n)
9
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 9 Analisi di algoritmi ricorsivi
10
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 10 Lalgoritmo di ricerca binaria può essere riscritto ricorsivamente come: Ricerca binaria in forma ricorsiva Come analizzarlo?
11
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 11 Il tempo di esecuzione dellalgoritmo può essere descritto tramite lequazione di ricorrenza: dove Θ(1) è il costo (costante) che viene speso allinterno di ogni chiamata ricorsiva. Equazioni di ricorrenza Θ(1) + T( (n-1)/2 ) se n1 Θ(1) se n=0 T(n) Mostreremo due metodi per risolvere equazioni di ricorrenza: iterazione e teorema Master
12
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 12 Idea: srotolare la ricorsione, ottenendo una sommatoria dipendente solo dalla dimensione n del problema iniziale (già visto per Fibonacci6 ) Metodo delliterazione Nel caso della ricerca binaria: T(n) Θ(1) + T(n/2) T(n/2) Θ(1) + T(n/4)... T(n) Θ(1) + T(n/2) 2·Θ(1)+ T(n/4) … ( j=1...i Θ(1) ) + T(n/2 i ) = i ·Θ(1) + T(n/2 i ) Per i=log 2 n: T(n) Θ(1)·log n + T(1) = Θ(log n)
13
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 13 Esercizi di approfondimento Risolvere usando il metodo delliterazione le seguenti equazioni di ricorrenza: T(n) = n + T(n-1), T(1)=1; T(n) = 9 T(n/3) + n, T(1)=1; (soluzione sul libro di testo: Esempio 2.4)
14
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 14 Teorema Master (*) Permette di analizzare algoritmi basati sulla tecnica del divide et impera: - dividi il problema (di dimensione n) in a1 sottoproblemi di dimensione n/b, b>1 - risolvi i sottoproblemi ricorsivamente - ricombina le soluzioni Sia f(n) il tempo per dividere e ricombinare istanze di dimensione n. La relazione di ricorrenza è data da: a T(n/b) + f(n) se n>1 Θ(1) se n=1 T(n) =
15
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 15 Algoritmo di ricerca binaria a=1, b=2, f(n)=Θ(1)
16
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 16 La relazione di ricorrenza: Teorema Master (*) ha soluzione: a T(n/b) + f(n) se n>1 Θ(1) se n=1 T(n) = 1. T(n) = (n ) se f(n)=O(n ) per qualche >0 log b a log b a - 2. T(n) = (n log n) se f(n) = (n ) log b a 3. T(n) = (f(n)) se f(n)= (n ) per qualche >0 (ma sotto lulteriore ipotesi che f(n) soddisfi la condizione di regolarità: a f(n/b) c f(n) per qualche c<1 ed n sufficientemente grande) log b a +
17
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 17 1) T(n) = n + 2T(n/2) a=2, b=2, f(n)=n= (n ) T(n)= (n log n) (caso 2 del teorema master) Esempi log 2 2 2) T(n) = 7 + 3T(n/9) a=3, b=9, f(n)=7= n ) T(n)= (n) (caso 1 del teorema master) log 9 3 - 3) T(n) = n + 3T(n/9) a=3, b=9, f(n)=n= (n ) (caso 3 del teorema master) log 9 3 + T(n)= (n) inoltre 3(n/9) c n per c=1/3
18
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 18 4)T(n) = n log n + 2T(n/2) a=2, b=2 e quindi ovviamente non ricade nel caso 1 perché f(n)=n log n O(n ) O(n ) inoltre f(n) Θ (n ), e quindi non ricade nel caso 2, infine non esiste alcun > 0 per cui f(n)= (n ) (n 1+ ) (infatti, per ogni > 0 ) Esempi log 2 2 log 2 2- non si può applicare il teorema Master! 1- log 2 2+
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.