TECNICA DIVIDE ET IMPERA. 5 2 8 0 4 7 1 9 3 2 6 0 47255 285 2 80 4 75 2 8 0 4 71 9 3 2 62 61 9 31 93629140 5 2 8 0 4 7 1 9 3 2 6 5 2 8 0 4 71 9 3 2 6.

Slides:



Advertisements
Presentazioni simili
                      Insertion-Sort
Advertisements

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Heap Sort. L’algoritmo heap sort è il più lento di quelli di ordinamento O(n * log n) ma, a differenza degli altri (fusione e quick sort) non richiede.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
CORSO DI PROGRAMMAZIONE II
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 Valutazione del tempo di esecuzione degli algoritmi.
Algoritmi e Strutture Dati III. Algoritmi di Ordinamento
Progetto di algoritmi: metodologia "Divide et Impera"
Algoritmi di ordinamento
Algoritmi e Strutture Dati
Lalgoritmo MergeSort Applica la strategia del divide et impera Divide: suddivide la sequenza di n elementi data in due sottosequenze di n/2 elementi Impera:
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Sorting: MERGESORT Vogliamo ordinare lista (a 1,…,a n ). 1.Dividi lista in 2 sottoliste aventi (quasi) la stessa dimensione: (a 1,a 3,a 5,…) e (a 2,a 4,…),
30 ottobre Mergesort F. Bombi 30 ottobre 2002.
Radix-Sort(A,d) // A[i] = cd...c2c1
Algoritmi e Strutture Dati
Merge-Sort(A,p,r) if p < r q = (p+r)/2 Merge-Sort(A,p,q)
Vedremo in seguito che (n log n) è un limite stretto per il problema dellordinamento. Per ora ci limitiamo a dimostrare che: La complessità nel caso pessimo.
Introduzione agli algoritmi e strutture dati 3/ed T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein Copyright © 2010 – The McGraw-Hill Companies srl.
Intuizione:. Come usare il Teorema dellesperto T(n) = aT(n/b)+f(n) 2.Calcolare 4.Se il limite è finito e diverso da 0 siamo nel Caso 2 e 3.Calcolare il.
Teoria degli algoritmi e della computabilità Terza giornata: Ricerca e ordinamento ottimi. P vs NP, algoritmi di approssimazione, e il potere della randomizzazione.
Algoritmi CHE COS’è UN ALGORITMO di ORDINAMENTO?
Array (ordinamento) CORDA – Informatica A. Ferrari.
Valutare la difficoltà dei problemi
Complessità del problema Se non facciamo ipotesi sul tipo degli elementi della sequenza le uniche operazioni permesse sono confronti e assegnazioni. Problema.
Soluzione 6: Algoritmo Quicksort
Ordinamento in tempo lineare Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento generali, ossia per algoritmi che non fanno alcuna.
Algoritmi e Strutture Dati
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
CORSO DI PROGRAMMAZIONE II
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
L’ALGORITMO Un algoritmo è un procedimento formale che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile mediante.
Capitolo 4 Ordinamento: lower bound Ω(n log n) e MergeSort ((*) l’intera lezione) Algoritmi e Strutture Dati.
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
 π BUZZO GIACOMO D’AGOSTINO ALBERTO DE ANGELIS FEDERICA
ISTITUZIONI (regole scritte e nn scritte che governano l’interazione tra individui) → d.p. e contratti → norme sociali con appropriati Δ delle regole.
PIANO DI RIORDINO PRESIDI DI FOLIGNO E SPOLETO
Liceo delle Scienze Umane «BLAISE PASCAL» Voghera
LA VULNERABILITA’ DELLE FAMIGLIE INDEBITATE IN ITALIA
Rappresentazione dei campi di gravità
La setta dei numeri Il teorema di Pitagora. La setta dei numeri Il teorema di Pitagora.
M. Piersanti (1,2), C. cesaroni(3), L. Spogli(3,5), T. Alberti(4), L
MICROCIRCOLAZIONE Moduli microvascolari: arteriole di resistenza, capillare preferenziale, capillari veri, cellule mioepitaliali, venule, anastomosi artero-venose.
Scatti notturni di un viaggiatore.
Rapporto finale di valutazione
Nascita Comitato dei CiNQUE 1859
Italia al CERN 4 aprile 2017 Cryogenics Antonio Perin (TE-CRG)
REACH 2018 Conoscere il portafoglio della propria azienda e avviare subito i preparativi.
SSS «BLAISE PASCAL» Voghera
“BLAISE PASCAL”- Voghera-
“BLAISE PASCAL”- Voghera-
• MODELLO DI COMPORTAMENTO RAZIONALE (def
Corso di Fisica Subnucleare
Campi di gravità e topografia: analisi isostatiche con QGIS
Viganò Samuele, Marone Davide, Mongelli Alessandro
Tassi demografici ed economici
Premessa Negli ultimi anni, il settore nonprofit è stato narrato come un CASO DI GRANDE SUCCESSO, uno dei pochi in una fase di profonda crisi. La narrazione.
Clan Manager For Clash Royale
Transcript della presentazione:

TECNICA DIVIDE ET IMPERA

Soluzione2: Algoritmo Merge-Sort

Merge-Sort(A,p,r) if p < r q =  (p+r)/2  Merge-Sort(A,p,q) Merge-Sort(A,q+1,r) Merge(A,p,q,r)

L   R A[p..q]A[q+1..r]          6 9   6 9   6 9   9   9   9    A[p..r]

Merge(A,p,q,r) n 1 = q – p + 1 n 2 = r – q for i = 1 to n 1 L[i] = A[p + i – 1] for j = 1 to n 2 R[j] = A[q + j] L[n 1 + 1] = R[n 2 + 1] =  i = j = 1 for k = p to r if L[i]  R[j] A[k] = L[i] i = i + 1 else A[k] = R[j] j = j + 1

Merge-Sort(A,p,r) if p < r // altrimenti A[p..r] è ordinato q =  (p+r)/2  Merge-Sort(A,p,q) Merge-Sort(A,q+1,r) Merge(A,p,q,r) Analisi di Merge-Sort: correttezza non ordinati 1 p rn A ordinati 1 p rn A 1 p rn q A

Merge(A,p,q,r) n 1 = q – p + 1 n 2 = r – q for i = 1 to n 1 L[i] = A[p + i – 1] for j = 1 to n 2 R[j] = A[q + j] L[n 1 + 1] = R[n 2 + 1] =  i = j = 1 for k = p to r if L[i]  R[j] A[k] = L[i] i = i + 1 else A[k] = R[j] j = j p rnq A 1 p rn A L ∞ R ∞ 1n1n1 1n2n2 1 p rn A L ∞ R ∞ 1n1n1 1n2n2 k ij 1 p rn A L ∞ R ∞ 1n1n1 1n2n2 k ij

Merge(A,p,q,r) // complessità// n 1 = q – p + 1// n 2 = r – q// for i = 1 to n 1 // L[i] = A[p + i – 1]// for j = 1 to n 2 // R[j] = A[q + j]// L[n 1 + 1] = R[n 2 + 1] =  // i = j = 1// for k = p to r // if L[i]  R[j]// A[k] = L[i]// i = i + 1// else A[k] = R[j]// j = j + 1//

Merge-Sort(A,p,r) //complessità// if p < r // q =  (p+r)/2  // Merge-Sort(A,p,q) // Merge-Sort(A,q+1,r)// Merge(A,p,q,r) //

Dunque esiste N tale che per ogni n > N. Qualunque siano i valori delle costanti a', b', c', a", b" e c" l’algoritmo Merge-Sort è superiore a Insertion-Sort per array di dimensione sufficientemente grande.

Possiamo dire che “cresce come” n 2 mentre “cresce come” n log 2 n. nn2n2 n log 2 n IS n 2 ns MS n log 2 n ns  s0.033  s  s0.664  s ms 10  s s 133  s · m20ms · s · anni30s

dunque esiste N tale che per ogni n > N. Qualunque siano i valori delle costanti a', b', c', a", b" l’algoritmo Insertion-Sort è superiore a Merge-Sort per array (quasi) ordinati e sufficientemente grandi.

Insertion-Sort è anche superiore a Merge-Sort per array piccoli in quanto le costanti a', b', c' in sono generalmente molto maggiori delle costanti a", b" e c" in. Questo suggerisce una modifica di Merge-Sort in cui le porzioni di array di dimensione minore di una certa costante k si ordinano con Insertion-Sort invece di usare ricorsivamente Merge-Sort.

Soluzione3: Algoritmo Merge-Ins-Sort Merge-Ins-Sort(A,p,r) if p < r if r-p+1 < 32 InsertSort(A,p,r) else q =  (p+r)/2  Merge-Ins-Sort(A,p,q) Merge-Ins-Sort(A,q+1,r) Merge(A,p,q,r)