Capitolo 4 Ordinamento: lower bound Ω(n log n) e MergeSort ((*) l’intera lezione) Algoritmi e...

Click here to load reader

download Capitolo 4 Ordinamento: lower bound Ω(n log n) e MergeSort ((*) l’intera lezione) Algoritmi e Strutture Dati

of 24

  • date post

    03-May-2015
  • Category

    Documents

  • view

    214
  • download

    0

Embed Size (px)

Transcript of Capitolo 4 Ordinamento: lower bound Ω(n log n) e MergeSort ((*) l’intera lezione) Algoritmi e...

  • Slide 1
  • Capitolo 4 Ordinamento: lower bound (n log n) e MergeSort ((*) lintera lezione) Algoritmi e Strutture Dati
  • Slide 2
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 2 Stato dellarte Insertion Sort 2 Insertion Sort 1 (n) Caso migliore T(n) Selection Sort (n 2 ) Caso medio (n 2 ) Caso peggiore (n 2 ) O(n 2 ) S(n) (n) Insertion Sort 3 (n log n)(n 2 ) O(n 2 )(n) Bubble-Sort (n 2 ) (n)
  • Slide 3
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Upper e lower bound di un algoritmo e di un problema
  • Slide 4
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 4 Delimitazioni superiori (upper bound) Definizione (complessit di un algoritmo) Un algoritmo A ha costo di esecuzione O(g(n)) su istanze di dimensione n e rispetto ad una certa risorsa di calcolo (spazio o tempo), se la quantit f(n) di risorsa sufficiente per eseguire A su qualunque istanza di dimensione n (e quindi in particolare anche nel caso peggiore) verifica la relazione f(n)=O(g(n)). Definizione (upper bound di un problema) Un problema P ha una delimitazione superiore alla complessit O(g(n)) rispetto ad una certa risorsa di calcolo (spazio o tempo) se esiste un algoritmo che risolve P il cui costo di esecuzione rispetto a quella risorsa O(g(n)).
  • Slide 5
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 5 Delimitazioni inferiori (lower bound) Definizione Un algoritmo A ha costo di esecuzione (g(n)) su istanze di dimensione n e rispetto ad una certa risorsa di calcolo (spazio o tempo), se la quantit f(n) di risorsa necessaria per eseguire A nel caso peggiore (e quindi non detto che debba essere necessaria per ogni istanza di dimensione n: istanze facili potrebbero richiedere meno risorse!) verifica la relazione f worst (n)= (g(n)). Definizione (lower bound o complessit intrinseca di un problema) Un problema P ha una delimitazione inferiore alla complessit (g(n)) rispetto ad una certa risorsa di calcolo (spazio o tempo) se ogni algoritmo che risolve P ha costo di esecuzione (g(n)) rispetto a quella risorsa.
  • Slide 6
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 6 Ottimalit di un algoritmo Definizione Dato un problema P con complessit intrinseca (g(n)) rispetto ad una certa risorsa di calcolo (spazio o tempo), un algoritmo che risolve P ottimo (in termini di complessit asintotica, ovvero a meno di costanti moltiplicative e di termini additivi/sottrattivi di magnitudine inferiore) se ha costo di esecuzione O(g(n)) rispetto a quella risorsa.
  • Slide 7
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 7 Convenzioni Se scriver che un algoritmo ha complessit T(n) = O(g(n)), intender che su ALCUNE istanze coster (g(n)), ma sulle rimanenti coster o(g(n). Se scriver che un algoritmo ha complessit T(n)=(g(n)), intender che su TUTTE le istanze coster (g(n)) Da ora in poi, quando parler di UB di un problema, mi riferir alla complessit del MIGLIORE ALGORITMO che sono stato in grado di progettare sino a quel momento (ovvero, quello con minore complessit nel caso peggiore). Da ora in poi, quando parler di LB di un problema, mi riferir alla PI GRANDE delimitazione inferiore che sono stato in grado di dimostrare sino a quel momento.
  • Slide 8
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 8 Quindi, per il problema dellordinamento Lower bound temporale: (n) banale: dimensione dellinput Upper bound temporale: O(n 2 ) Insertion Sort 2 e 3 Abbiamo un gap lineare tra upper bound e lower bound! possibile chiudere tale gap?
  • Slide 9
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 9 Ordinamento per confronti Dati due elementi a i ed a j, per determinarne lordinamento relativo effettuiamo una delle seguenti operazioni di confronto: a i a j ; a i a j ; a i a j ; a i a j ; a i a j Non si possono esaminare i valori degli elementi o ottenere informazioni sul loro ordine in altro modo. Notare: Tutti gli algoritmi di ordinamento considerati fino ad ora sono algoritmi di ordinamento per confronto.
  • Slide 10
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 10 Consideriamo un generico algoritmo A, che ordina eseguendo solo confronti: dimostreremo che A esegue (nel caso peggiore) (n log n) confronti Un generico algoritmo di ordinamento per confronti lavora nel modo seguente: -Confronta due elementi a i ed a j (ad esempio effettua il test a i a j ); -A seconda del risultato, riordina e/o decide il confronto successivo da eseguire. Un algoritmo di ordinamento per confronti pu essere descritto in modo astratto usando un albero di decisione, nel quale i nodi interni rappresentano i confronti, mentre le foglie rappresentano gli output prodotti Lower bound (n log n) per lordinamento
  • Slide 11
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Descrive le diverse sequenze di confronti che A esegue su unistanza di lunghezza n; i movimenti dei dati e tutti gli altri aspetti dellalgoritmo vengono ignorati Nodo interno (non foglia): i:j (modella il confronto tra a i e a j ) Nodo foglia: i 1,i 2,,i n (modella una risposta (output) dellalgoritmo, ovvero una permutazione degli elementi) Lalbero di decisione associato ad un algoritmo e alla dimensione n dellistanza Albero di decisione
  • Slide 12
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 12 Esempio Input Riconoscete lalgoritmo associato? proprio lInsertion Sort 2! Esercizio per casa: costruire lalbero di decisione per il SS e per il BS su una sequenza di 3 elementi.
  • Slide 13
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 13 Per una particolare istanza, i confronti eseguiti da A su quella istanza rappresentano un cammino radice foglia Lalgoritmo segue un cammino diverso a seconda delle caratteristiche dellinput Caso peggiore: cammino pi lungo Caso migliore: cammino pi breve Il numero di confronti nel caso peggiore pari allaltezza dellalbero di decisione (ovvero alla lunghezza, in termini di numero di archi, del pi lungo cammino radice-foglia) Propriet
  • Slide 14
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 14 Lemma: Un albero binario (ovvero, in cui ogni nodo interno ha al pi due figli) con k foglie ha altezza h(k) log 2 k. Dim: Dimostrazione per induzione su k: Caso base k=1: banale, perch ogni albero con una foglia deve avere almeno altezza log 2 1=0 (anche nel caso limite dellalbero costituito da un unico nodo ) Caso k>1: supposto vero per k-1 foglie, dimostriamolo per k; poich la radice ha almeno un figlio, uno dei suoi al pi due sottoalberi deve contenere almeno la met (parte intera superiore) delle foglie, e quindi h(k) 1+h( k/2 ) (hp induttiva) 1+log 2 (k/2) =1+log 2 k-log 2 2=log 2 k. QED Altezza in funzione delle foglie
  • Slide 15
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 15 Consideriamo lalbero binario di decisione di un qualsiasi algoritmo che risolve il problema dellordinamento di n elementi Tale albero deve avere almeno n! foglie: infatti, se lalgoritmo corretto, deve contemplare tutti i possibili output, ovvero le n! permutazioni della sequenza di n elementi in input Dal lemma precedente, avremo che laltezza h(n) dellalbero di decisione sar: Il lower bound (n log n) h(n) log 2 (#foglie) log 2 (n!) Formula di Stirling: n! (2 n) 1/2 (n/e) n > (n/e) n > log 2 (n/e) n = = n log 2 (n/e) = n log 2 n n log 2 e = = (n log n) QED =
  • Slide 16
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 16 Problema dellordinamento: Lower bound - (n log n) albero di decisione Upper bound O(n 2 ) IS 2 e 3 Abbiamo ridotto il gap tra LB e UB da (n) a (n/log n); proviamo a costruire un algoritmo ottimo (cio a ridurre il gap a (1)) usando la tecnica del divide et impera: 1 Divide: dividi larray a met 2 Risolvi il sottoproblema ricorsivamente 3 Impera: fondi le due sottosequenze ordinate Un algoritmo ottimo: il MergeSort (John von Neumann, 1945)
  • Slide 17
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 17 Esempio di esecuzione Input ed output delle chiamate ricorsive
  • Slide 18
  • Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright 2004 - The McGraw - Hill Companies, srl 18 Due array ordinati A e B possono essere fusi rapidamente: estrai ripetutamente il minimo di A e B e copialo nellarray di output, finch A oppure B non diventa vuoto copia gli elementi dellarray non