Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare.

Slides:



Advertisements
Presentazioni simili
Il problema della ricerca Algoritmi e Strutture Dati.
Advertisements

Elementi di complessità
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
                      Insertion-Sort
Analisi della complessità degli algoritmi
Analisi della complessità degli algoritmi
Sommatorie Proprietà Serie aritmetica Serie geometrica Serie armonica
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.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 8 Code con priorità 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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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 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 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.
Il problema della ricerca Algoritmi e Strutture Dati.
Il problema della ricerca 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: Selection e Insertion Sort Algoritmi e Strutture Dati.
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.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
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 (Mod. B)
e array a più dimensioni
Algoritmi di ordinamento
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
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)
Algoritmi e diagrammi di flusso
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
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.
Teoria degli algoritmi e della computabilità Terza giornata: Ricerca e ordinamento ottimi. P vs NP, algoritmi di approssimazione, e il potere della randomizzazione.
Teoria degli algoritmi e della computabilità Seconda giornata: progettare un algoritmo corretto, efficiente, e possibilmente ottimo! Guido Proietti
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à
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
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:
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:
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.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: lower bound Ω(n log n) e MergeSort ((*) l’intera lezione) Algoritmi e Strutture Dati.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Transcript della presentazione:

Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare ricerche in array ordinati in tempo O(log n) Esempi: ordinare una lista di nomi alfabeticamente, o un insieme di numeri, o un insieme di compiti desame in base al cognome dello studente

Insertion sort Insertion-Sort(A) For j 2 to length[A] do k A[j] i j – 1 while i > 0 e A[i] > k do A[i+1] A[i] i i – 1 A[i+1] k Insertion sort = Algoritmo di ordinamento A = array che contiene la sequenza da ordinare L insertion sort descrive in maniera formale la procedura con cui ordiniamo una mano di carte da gioco: L indice j indica la carta corrente. L elemento A[j] è copiato nella variabile k; Gli elementi A[1 … j-1] rappresentano le carte già ordinate; Confrontiamo k = A[j] con tutti gli elementi A[1 … j-1] partendo da j-1; Gli elementi più grandi di k vengono uno ad uno spostati a destra fino a che non troviamo la giusta posizione della carta corrente.

Insertion sort Insertion-Sort(A) For j 2 to length[A] do k A[j] i j – 1 while i > 0 e A[i] > k do A[i+1] A[i] i i – 1 A[i+1] k Insertion sort = Algoritmo di ordinamento Esempio input: A = j= j= j= j= j= A = array che contiene la sequenza da ordinare Notare: Lalgoritmo di insertion sort è corretto! (si dimostra banalmente per induzione)

Insertion-Sort(A) For j 2 to length[A] do k A[j] i j – 1 while i > 0 e A[i] > k do A[i+1] A[i] i i – 1 A[i+1] k Analisi di Insertion sort Costo N.volte c1 n- 1 c2 n -1 c3 n -1 c4 c5 c6 c7 n -1 t j = numero di volte che, per un fissato j, viene eseguito il test del ciclo while (dipende dall input). T(n) = tempo di esecuzione dellalgoritmo.

Analisi di Insertion Sort Caso migliore - A= ordinata non decrescente t j 1 ; j = 2, 3, ……,n Il tempo di esecuzione è una funzione lineare della dimensione dell input n, cioè T best (n)=O(n) Nota: è anche vero che T best (n)=Ω(n), e quindi T best (n)= Θ (n) Espressione generale

Analisi di Insertion Sort Espressione generale Caso peggiore - A= ordinata decrescente t j j ; j= 2, 3, ……, n Il tempo di esecuzione è una funzione quadratica della dimensione dell input n, cioè T worst (n)=O(n 2 ) Nota: è anche vero che T worst (n)=Ω(n 2 ), e quindi T worst (n)= Θ (n 2 )

Analisi di Insertion Sort Espressione generale Caso medio - A= casuale In media t j = j/2 ; j= 2, 3, ……, n Il tempo di esecuzione è una funzione quadratica della dimensione dell input n, cioè T avg (n)=Θ(n 2 ) Ricordiamo che oltre alla complessità temporale dobbiamo valutare anche la complessità spaziale di un algoritmo, ovvero lo spazio di memoria necessario per ospitare le strutture di dati utilizzate dallalgoritmo. La complessità spaziale dellInsertion Sort è Θ (n)

Notare Se la complessità spaziale di un certo algoritmo è (g(n)) e tale algoritmo per sua natura è costretto ad ispezionare lintero input, allora la complessità temporale dellalgoritmo è (g(n)). Conseguenze: Nel caso dellInsertion Sort: T(n) = (S(n)) dove T(n) = compl.temp S(n) = compl.spaziale La complessità spaziale di qualsiasi algoritmo che risolve il problema dellordinamento è (n). Qualsiasi algoritmo che risolve il problema dellordinamento ha complessità temporale T(n)= (n)

Esercizi di approfondimento Illustrare levoluzione di Insertion-Sort applicata allarray A= Riscrivere la procedura di Insertion-Sort per ordinare in modo non crescente Reverse Insertion-Sort(A) For j 2 to length[A] do k A[j] i j – 1 while i > 0 e A[i] < k do A[i+1] A[i] i i – 1 A[i+1] k