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:

Slides:



Advertisements
Presentazioni simili
Programmazione dinamica: problema della sottosequenza più lunga
Advertisements

                      Insertion-Sort
Unità G3 Algoritmi notevoli. Ordinamento Un insieme di dati {a0, a1, a2, …, an} si dice ordinato in ordine crescente se a0 a1 a2 a3 … an I dati sono generalmente.
RICERCA IN UN VETTORE.
RICERCA IN UN VETTORE. Metodi basati sul confronto di chiavi Si confrontano gli elementi del vettore V con lelemento (chiave K) che si vuole ricercare.
Lez. 10a1 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Strategie per.
Programmazione dinamica
Code con priorità Ordinamento
Master Bioinformatica 2002: Progetto di Algoritmi1 Programmazione Dinamica (PD) Altra tecnica per risolvere problemi di ottimizzazione, piu generale degli.
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 Stesso approccio.
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 Stesso approccio.
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.
Mergesort1 if (n>1) /* la collezione contiene almeno due elementi. */ {1. Dividi la collezione in due di circa la metà degli elementi. 2. chiamata ricorsiva.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Usa la tecnica del.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
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 (Mod. B)
Progetto di algoritmi: metodologia "Divide et Impera"
APPUNTI SUL LINGUAGGIO C
07/04/2003Algoritmi Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure.
Sottoinsiemi disgiunti
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)
Algoritmo SelectSort Invariante di ciclo: ad ogni passo
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
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,…),
Algoritmi e Strutture Dati 8 crediti Calendario: 1 Ott. – 6 Dic. Aula: LuM250 Orario: Lun, Mar, Mer, Gio Giorni di lezione disponibili 40 ~48.
30 ottobre Mergesort F. Bombi 30 ottobre 2002.
Radix-Sort(A,d) // A[i] = cd...c2c1
Algoritmi e Strutture Dati
Passo 3: calcolo del costo minimo
Algoritmi e Strutture Dati
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.
28 ottobre Mergesort F. Bombi 28 ottobre 2003.
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.
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
TECNICA DIVIDE ET IMPERA
Algoritmi e Strutture Dati
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Lo strano mondo degli algoritmi di ordinamento Algoritmi.
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
Lezione 8 Ricorsione Code.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Problemi risolvibili con la programmazione dinamica Abbiamo usato la programmazione dinamica per risolvere due problemi. Cerchiamo ora di capire quali.
GLI ALGORITMI 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.
Divide et Impera Parte 11 - Risoluzione di problemi per divisione in sottoproblemi “bilanciati” Corso A: Prof. Stefano Berardi
Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli
Algoritmi e Strutture Dati Luciano Gualà
L’algoritmo MergeSort
MergeSort Usa la tecnica del divide et impera:
Transcript della presentazione:

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: ordina ricorsivamente le sottosequenze; quelle di lunghezza 1 rimangono inalterate (base) Combina: fonde (merge) le due sottosequenze per produrre la sequenza ordinata MergeSort (A,s,d) if s < d then m (s+d)/2 MergeSort (A,s,m) MergeSort (A,m+1,d) Merge(A,s,m,d)

Spiegazione Lidea è fondere fra loro due sottosequenze già ordinate Occorre un vettore ausiliario di destinazione B (oppure due vettori ausiliari L e R in cui copiare le origini) La procedura di fusione è la chiave: –Si confrontano gli elementi di testa delle due sottosequenze –Si trascrive lelemento minore nel vettore B –Si reitera il procedimento, sinché le due sottosequenze sono entrambe vuote

La procedura Merge Sequenze: –A1: –A2: –B: Step 3: –A1: _ –A2: _ _ 5 7 –B: Step 6: –A1: _ _ _ 8 –A2: _ _ _ 7 –B: Step 1: –A1: –A2: _ –B: 1 Step 2: –A1: _ –A2: _ –B: 1 2 Step 4: –A1: _ _ 6 8 –A2: _ _ 5 7 –B: Step 5: –A1: _ _ 6 8 –A2: _ _ _ 7 –B: Step 7: –A1: _ _ _ 8 –A2: _ _ _ _ –B: Step 8: –A1: _ _ _ _ –A2: _ _ _ _ –B:

MergeSort (A,s,d) If s < d then m (s+d)/2 MergeSort (A,s,m) MergeSort (A,m+1,d) Merge (A,s,m,d) Analisi di complessità di MergeSort Nel seguito usiamo

Merge (A,s,m,d) For i 1 to n 1 do L[i] A[i + s – 1] For j 1 to n 2 do R[j] A[j + m] L[n 1 +1] R[n 2 +1] i j 1 For k s to d do If L[i] R[j] then A[k] L[i] i i + 1 else A[k] R[j] j j + 1 Analisi di complessità di Merge

Ne risulta che Merge ha complessità lineare

Complessità di MergeSort Per semplificare lanalisi, consideriamo sequenze la cui lunghezza è una potenza di 2 –i due sottoproblemi riguardano sottosequenze di ugual lunghezza Quando n = 1, il tempo di elaborazione è (1) Quando n > 1 –Divide: calcolo dellindice mediano della sequenza: (1) –Impera: si risolvono ricorsivamente due sottoproblemi di dimensione n/2: 2T(n/2) –Combina: si applica la procedura Merge a due sottosequenze di n/2 elementi: (n)

Vedremo che T(n)= (n lg n) Complessità di MergeSort (2) Con lipotesi semplificativa n 1 = n 2 = n/2