Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Complessità computazionale concreta Corso di Informatica 2 a.a. 2003/04 Lezione 3.

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Ricorrenze Il metodo di sostituzione Il metodo iterativo
Elementi di complessità
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
                      Insertion-Sort
Lez. 51 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Complessita'
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Iterazione enumerativa (for)
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Unintroduzione.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. A)
Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.
Algoritmi e Strutture Dati Introduzione. Gli argomenti di oggi Analisi della bontà degli algoritmi Modello Computazionale Tempo di esecuzione degli algoritmi.
Algoritmi e Strutture Dati III. Algoritmi di Ordinamento
Algoritmi di ordinamento
Studente Claudia Puzzo
COMPLESSITÀ DEGLI ALGORITMI
Elementi di Informatica di base
Radix-Sort(A,d) // A[i] = cd...c2c1
Algoritmi e Strutture Dati
Didattica dei Fondamenti dell’Informatica 2 Seconda giornata: progettare un algoritmo corretto, efficiente, e possibilmente ottimo! Guido Proietti
Heap Ordinamento e code di priorità Ugo de Liguoro.
La complessità media O(n log n) di Quick-Sort vale soltanto se tutte le permutazioni dell’array in ingresso sono ugualmente probabili. In molte applicazioni.
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Complessità di un algoritmo
Corso di Informatica 2 a.a. 2003/04 Lezione 6
Cammini minimi da un sorgente
Teoria degli algoritmi e della computabilità Seconda giornata: progettare un algoritmo corretto, efficiente, e possibilmente ottimo! Guido Proietti
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 2 La ricorsione Corso di Informatica 2 a.a. 2003/04 Lezione 2.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
Complessità degli algoritmi (cenni) CORDA – Informatica A. Ferrari.
alberi completamente sbilanciati
Complessità del problema Se non facciamo ipotesi sul tipo degli elementi della sequenza le uniche operazioni permesse sono confronti e assegnazioni. Problema.
Algoritmi e Strutture Dati Luciano Gualà
Ordinamento1 Algoritmi di ordinamento  Selection Sort  Quick Sort  Lower bound alla complessità degli algoritmi di ordinamento.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Il problema della ricerca Algoritmi e Strutture Dati.
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
Analisi asintotica e Metodi di analisi Algoritmi e Strutture Dati.
Complessità Computazionale
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Quinta giornata Risolvere efficientemente un problema in P: ancora sulla sequenza di Fibonacci.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Sesta giornata Risolvere efficientemente un problema in P: Il problema dell’ordinamento: Insertion.
Capitolo 4 Ordinamento: lower bound Ω(n log n) e MergeSort ((*) l’intera lezione) Algoritmi e Strutture Dati.
Informatica 3 V anno.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Un’introduzione.
Divide et Impera Parte 11 - Risoluzione di problemi per divisione in sottoproblemi “bilanciati” Corso A: Prof. Stefano Berardi
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli
Rudimenti di Complessità Corso di Programmazione II Prof. Dario Catalano.
Transcript della presentazione:

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Complessità computazionale concreta Corso di Informatica 2 a.a. 2003/04 Lezione 3

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Che cos’è la teoria della complessità? La teoria della complessità è un tentativo di dare una risposta matematica a domande come: Cosa vuol dire che un algoritmo è più efficiente di un altro? In che senso un problema di calcolo è più difficile di un altro? Che cosa rende una funzione calcolabile “praticamente trattabile”? Esistono soluzioni ottimali per problemi di calcolo effettivamente risolvibili? Quali problemi si possono risolvere meglio parallelizzando? ecc.

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Problemi e istanze In generale un problema di calcolo è una funzione  : Input   Output  ; un’ istanza del problema  è un particolare x  Input . Es. Input  = N,  (x) = la scomposizione in primi di x Se  è a volori 0,1 allora si parla di problema di decisione. REACHABILITY Dato un grafo finito orientato G = (V,E) e due vertici u, v  V, decidere se esiste un cammino in G da u a v. E’ un problema di decisione un’istanza del quale è una tripla G, u, v. Es.

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Algoritmi Un algoritmo è metodo dettagliato che consente di risolvere un problema di calcolo, ossia di calcolare i valori della funzione . Es. Input (G =(V,E), u, v) // alg. per REACHABILITY S := {u}; M := {u}; while S   do x := un elemento di S; S := S\{x}; foreach y  V if (x,y)  E then M := M  {y}; S := S  {y} if v  M Output 1 else Output 0

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Complessità dinamica Si misura la quantità di risorsa richiesta da ciascuna esecuzione di un algoritmo. E’ dunque una funzione degli ingressi: f A : Input  N Es. Space A (x) = quantità di memoria usata da A in x Time A (x) = numero delle operazioni elementari eseguite da A in x E’ talvolta espressa in termini di una dimensione: | · | : Input  N Es. | n | =  log 2 (n+1)  = lunghezza della rappresentazione binaria di n (  0) Input NN | · | gA gA Complessità nel caso peggiore: g A (n) = max{f A (x) : |x| = n} (che esiste se | n | -1 è finito oppure se f A è limitata su | n | -1, per ogni n).

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Confronto tra algoritmi T A (n) = 100 n T B (n) = 2 n 2 L’algoritmo A è migliore dell’algoritmo B per n > 50; Rimpiazzare B con A è meglio che raddoppiare la velocità del computer:

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Confronto asintotico tra funzioni  f  g    x.  f(x)  g(x) dove   x. P(x)   z  x  z. P(x). Oss.   x. P(x)     x.  P(x)   x. P(x)     x.  P(x) f g z f g f  g    x. f(x)  g(x) dove   x. P(x)   z  x  z. P(x).

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 La relazione  è un preordine f  g non è tricotomica, essendovi funzioni inconfrontabili: f(x) = 1 se x pari 0 se x dispari g(x) = 0 se x pari 1 se x dispari f  g non è un ordine parziale, non essendo antisimmetrica: f  g  f  g   z  x  z. f(x) = g(x) In generale z  0. La relazione f  g è soltanto un preordine (riflessiva e transitiva). Infatti:

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 O-grande Def. Se f (x) e g(x) sono funzioni su N, allora f (n) = O(g(n)) sse  c  R + \{0}  n 0  N  n  n 0. f (n)  c  g(n). A rigore O(g(n)) è un insieme di funzioni, onde si dovrebbe scrivere f (n)  O(g(n)). c g(n) f (n) n0n0

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Le costanti non contano Per ogni f, g, e per ogni costante c > 0: f (n) = O(c  g(n))  f (n) = O(g(n)).  )a fortiori, visto che c > 0.  )esistono d > 0 e n 0 tali che f (n)  d  g(n), per ogni n  n 0 posto k = d/c (esiste perché c  0), abbiamo k > 0 e f (n)  d  g(n) = k  c  g(n) per ogni n  n 0.

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Eliminazione dei termini d’ordine inferiore Se p(x) è un polinomio di grado k a coeff. in R + e x positiva allora p(x) = O(x k ) dove a = max{a i : 0  i  k}. Se q(x) è un polinomio di grado h < k, allora p(x)  O(q(x)): p.a. se p(x) = O(q(x)) = O(x h ), allora q.o. ma perché a k > 0, da cui una contradd. quando x >  d .

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Gli ordini di grandezza OrdiniFunzioni O(1)costanti O(log 2 n)logaritmiche O(n)O(n)lineari O(n log n)n log n O(n2)O(n2)quadratiche O(n3)O(n3)cubiche O(n p ) p > 0polinomiali O(2 n )esponenziali

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Alcune inclusioni importanti O(1) < O(log n): conseguenza del fatto che log n è sup. illimitata. f (n) = O(1)   c   n. f (n)  c Ma, per n  2 c, c  log n definitivamente. O(log n) < O(n): sfruttando il fatto che n < 2 n per ogni n, log n  n  n = 2 log n  2 n O(n) < O(n log n): n > 2  log n > 1  n log n > n

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 O(n p ) < O(2 n ) Lemma. Siano f, g funzioni a valori interi positivi con g(n)  0 per ogni n. Allora: Dall’ipotesi segue che per ogni c > 0, 0  f (n)/g(n) < c q.o., quindi f (n) < c g(n) q.o., ossia f (n) = O(g(n)). P.a. g(n) = O(f (n)): allora esiste d > 0 t.c. g(n)  d f (n) q.o. Poiché g ha valori int. positivi non nulli, 1/ d  f (n)/g(n) q.o., mentre dovrebbe essere, definitivamente, 0  f (n)/g(n) 0. Corollario. O(n p ) < O(2 n ): perché lim n  n p /2 n = 0.

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 O-grande ed o-piccolo Se f (n) = O(g(n)) e g  h, allora f (n) = O(h(n)): quanto “buono” è questo confine superiore? Def. f (n) = o(g(n)) sse  c > 0   n. 0  f (n) < c g(n). Se f (n) = o(g(n)) allora f è un infinitesimo di g, quindi g non è un confine superiore “stretto” di f. Osserviamo infatti che, se g è positiva non nulla:

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Algebra di O-grande (1) Definiamo: f (n) + O(g(n)) = {h :  g  O(g(n)).   n. h(n)  f (n) + g(n)} f (n)  O(g(n)) = {h :  g  O(g(n)).   n. h(n)  f (n)  g(n)} Allora ne segue: f (n) + O(g(n)) = O(f (n) + g(n)) f (n)  O(g(n)) = O(f (n)  g(n)). Similmente definiamo O(f (n)) + O(g(n)) = {h :  f  O(f (n))  g  O(g(n))   n. h(n)  f (n) + g(n)}, ed O(f (n))  O(g(n)) analogamente.

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Algebra di O-grande (2) Ne deriva: f (n) = O(f (n)) c  O(f (n)) = O(f (n))c costante O(f (n)) + O(g(n)) = O(f (n) + g(n)) O(f (n)) + O(f (n)) = O(f (n)) f  g  O(f (n)) + O(g(n)) = O(g(n)) O(f (n))  O(g(n)) = O(f (n)  g(n)) Perciò ad esempio: O(1) + O(1) = O(2) = O(1)ma n  O(1) = O(n)(n è una variabile!)

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Una semplice applicazione IdentityMatrix (Matrix A, int n) // costruisce la matrice identità di ordine n for i := 1 to n do for j := 1 to n do A[i,j] := 0; // T 1 for i := 1 to n do A[i,i] := 1; // T 4 T2T2 T5T5 T3T3 T 1 (n)  c 1 = O(1)T 2 (n) = n  T 1 (n) = n  O(1) = O(n) T 3 (n) = n  T 2 (n) = n  O(n) = O(n 2 ) T 4 (n)  c 2 = O(1) T 5 (n) = n  T 4 (n) = n  O(1) = O(n) T(n) = T 3 (n) + T 5 (n) = O(n 2 ) + O(n) = O(n 2 + n) = O(n 2 )

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3  e  Def. Supposto che g sia asintoticamente non negativa: f (n) =  (g(n)) sse  c  R + \{0}  n 0  N  n  n 0. c  g(n)  f (n). f (n) =  (g(n)) sse  c 1,c 2  R + \{0}  n 0  N  n  n 0. c 1  g(n)  f (n)  c 2  g(n). Teor. f (n) =  (g(n))  f (n) = O(g(n))  f (n) =  (g(n)).

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Notazione asintotica f(x) = O(g(x))   c > 0   x. f (x)  c g(x) f(x) =  (g(x))   c > 0   x. c g(x)  f (x) f(x) =  (g(x))   c 1, c 2 > 0   x. c 1 g(x)  f (x)  c 2 g(x) fc g f(x) = O(g(x)) c g f f(x) =  (g(x)) c 1 g c 2 g f f(x) =  (g(x))

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Relazioni di ricorrenza Sono equazioni, o diseguaglianze, in cui una funzione viene descritta in termini dei suoi valori su argomenti più piccoli: Semplificazioni: 1. Le funzioni si assumono definite su R. 2. Il caso di base si trascura. T(n) =  (1)se n = 1 2T(n/2) +  (n)se n > 1

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Il metodo di sostituzione (1)  Si indovina la soluzione  Si verifica induttivamente che la soluzione sia tale. T(n) = 2T(n/2) + n Soluzione: T(n)  c n log n T(n)  2 (c (n/2) log (n/2)) + nip. ind. = c n log (n/2) + n = c n log n – c n log 2 + n = c n log n – c n + n  c n log n (se c  1)

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Il metodo di sostituzione (2) Quanto vale c ? Se T(1) = 1, allora T(1)  c 1 log 1 = 0 non può valere! Ma T(2)  c 2 log 2, T(3)  c 3 log 3, valgono per c  2. Tanto basta: il confine superiore cercato è asintotico. Attenzione: indovinando T(n) =  c n si può “dimostrare” la tesi T(n) = O(n): T(n)  2(c n/2) + nip. ind. = c n + n = O(n)Errore!!!

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Il metodo di iterazione Sviluppare l’equazione sino ad ottenere una somma di termini che dipendono da n e dalle condizioni iniziali: T(n) = n + 4T(n/2) = n + 4 (n/2 + 4 T(n/4)) = n + 2n (n/4 + 4 T(n/8) ) = n + 2n + 4n (n/8 + 4 T(n/16) ) = n + 2n + … + 2 lg (n-1) n + 4 lg n T(1) = n ( … + 2 lg (n-1) ) + n 2  (1) = n (2 lg n  1) +  (n 2 ) = n 2  n +  (n 2 ) =  (n 2 )

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Il metodo principale Si basa su un teorema: Teor. (versione semplificata) Siano a  1, b > 1 e c  0 delle costanti. T(n) sia definita dalla seguente ricorrenza: T(n) = a T(n/b) +  (n c ), dove n/b rappresenta  n/b  oppure  n/b . Allora: 1.se c < log b a allora T(n) =  (n log b a ), 2.se c = log b a allora T(n) =  (n c log n), 3.se c > log b a allora T(n) =  (n c ).

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Esempi Il tempo di calcolo per l’algoritmo DI-Min-Max soddisfa la ricorrenza: T(n) = 2 T(n/2) +  (1) a = b = 2 c = 0 < 1 = log b aCaso 1 del teorema principale: T(n) =  (n log 2 2 ) =  (n) Il tempo di calcolo per l’algoritmo Merge-Sort soddisfa la ricorrenza: T(n) = 2 T(n/2) +  (n) a = b = 2 c = 1 = log b aCaso 2 del teorema principale: T(n) =  (n c log n) =  (n log n)

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Confini inferiori ed ottimalità  Un problema di calcolo  ha confine inferiore alla complessità g se qualunque algoritmo per  è  (g(n)).  Se  ha confine inferiore g ed esiste un algoritmo di complessità O(g(n)), allora tale algoritmo sarà ottimo per . Nota. Si ricordi che la complessità è valutata nel caso peggiore, e sempre in rapporto ad una risorsa (spazio, tempo, ecc.)

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Confini banali  Dimensione dei dati: quando è necessario esaminare tutti i dati in ingresso, ovvero generare tutti i dati in uscita. Es. La moltiplicazione di due matrici quadrate di ordine n richiede l’ispezione di 2n 2 =  (n 2 ) entrate.  Eventi contabili: quando c’è un evento la cui ripetizione un numero contabile di volte sia necessaria alla soluzione del problema. Es. La determinazione del massimo tra n elementi richiede n  1 =  (n) confronti, in cui altrettanti elementi non massimi risultino minori.

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Alberi di decisione Un albero rappresenta un algoritmo:  i nodi interni rappresentano decisioni,  le foglie rappresentano possibili uscite,  i rami rappresentano particolari esecuzioni. L’albero di decisione che minimizza l’altezza fornisce un confine inferiore al numero di decisioni necessarie nel caso peggiore.

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Alberi quasi perfettamente bilanciati Def. Un albero binario è completo se ha 2 k vertici per ogni livello k non vuoto. Un albero binario è quasi perfettamente bilanciato (qpb) se, avendo altezza h, è completo sino al livello h  1. Le foglie di un albero quasi perfettamente bilanciato di altezza h sono: 2 h  1  s  2 h, ovvero h   log 2 s  Quindi un problema la cui soluzione può rappresentarsi con un albero qpb con s(n) possibili soluzioni è  (log 2 s(n)).

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Il problema dell’ordinamento Nel caso dell’ordinamento:  s(n) = n! (un ordinamento è una permutazione)  i nodi interni rappresentano confronti Nel caso dell’ordinamento (sorting) il numero dei confronti deve essere dunque maggiore di (usando la formula di Stirling): Ossia il problema è  (n log n). Algoritmi O(n log n), come il Merge-Sort e lo Heap-Sort, sono allora ottimi.

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 L’albero per l’ordinamento di 3 el. a:b b:c a:c a < bb < a a, b, c b < cc < b a, c, bc, a, b c < aa < c a:c b, a, cb, c, a c < aa < c b, c, a c < bb < c

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Quando serve l’albero delle decisioni ? Se s(n) =  (f(n) g(n) ) allora l’albero delle decisioni fornisce il confine inferiore  (g(n) log 2 f(n)) utile se f(n) è O(1). Non è interessante nel caso del problema Min-Max, per cui s(n) = n(n  1), ma  log 2 s(n)  =  log 2 n + log 2 (n  1)  peggiore del confine banale  (n).

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 L’oracolo Oracolo: avversario immaginario che divina la situazione più sfavorevole in cui possa operare un algoritmo che risolva il problema per cui si cerca un confine inferiore.

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Il torneo a ab d cd a f f ef h gh f j il m mn m o o op r qr o o Per stabilire il massimo tra n elementi si organizza un torneo: un albero qbf di altezza k = log 2 n.

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Il torneo di consolazione r pr f mf r Per stabilire il secondo tra n elementi si organizza un torneo di consolazione tra tutti gli el. risultati perdenti in scontri diretti col vincitore: m = k. Numero degli incontri (confronti) = numero dei nodi interni dei due alberi: C(n) = n + log 2 n – 2.

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Il doppio torneo è ottimo (1) A = insieme degli incontri per stabilire il massimo tra n el. B = insieme degli incontri in cui ciascun el., salvo il campione, è sconfitto: |B| = n  1. Se a:b  A, con a, b diversi dal campione, allora a:b  B. Se y = numero el. Perdenti col campione in B, allora sono necessari y  1 incontri per stabilire il secondo: |A|  n + y  2. Oracolo: nell’incontro a:b risulta a < b sse il numero degli el. trovati peggiori di b  di quelli peggiori di a: si minimizzano le informazioni ricavabili per transitività. M(j) = numero max el. Peggiori del campione dopo j incontri:

Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Il doppio torneo è ottimo (2) M(j) = numero max el. peggiori del campione dopo j incontri: M(0) = 0 M(j) = 2 M(j  1) + 1se j > 0 Quindi M(j) = 2 j  1: perché risulti M(y) = 2 y – 1  n – 1 occorre che y  log 2 n: sostituendo in |A|  n + y  2 si trova n + log 2 n – 2.