Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Ordinamenti non basati su confronti
|
|
- Silvio Magnani
- 6 anni fa
- Visualizzazioni
Transcript
1 Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006 Radix Sorts Marco Antoniotti Ordinamenti non basati su confronti Per gli algoritmi di ordinamento basati su confronti di N elementi esiste il limite inferiore Ω(N lg(n)) È possibile ordinare N elementi in tempo minore sfruttando la struttura delle chiavi da ordinare Variazioni Radix sort Counting Sort Bucket Sort MSD sort Ecc. Ecc. Ecc. II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 1/22 1
2 Radix Sort Radix (radice) sort su stringhe Stessa idea per bits, cifre, ecc Ovvero, utile per tutte quelle chiavi che possono venir destrutturate in componenti più semplici Applicazioni Ordinamento tra stringhe Indicizzazione di testi Controllo copiature e plagiarizzazioni Biologia molecolare computazionale II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 2/22 Applicazione: controllo ridondanza Sottostringa ripetuta più lunga Data una stringa di N caratteri, trovare la sottostringa ripetuta più lunga Esempio a a c a a g t t t a c a a g c Applicazione: biologia molecolare computazionale Forza bruta e stupida Si provano tutti gli indici i e j e tutte le possibili lunghezze k Complessità O(W N 3 ) dove W è la lunghezza del match più lungo, mentre N è la lunghezza della stringa II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 3/22 2
3 Applicazione: controllo ridondanza Sottostringa ripetuta più lunga Data una stringa di N caratteri, trovare la sottostringa ripetuta più lunga Esempio a a c a a g t t t a c a a g c Applicazione: biologia molecolare computazionale Forza bruta meno stupida Si provano tutti gli indici i e j per ogni inizio di un possibile match Complessità O(W N 2 ) dove W è la lunghezza del match più lungo, mentre N è la lunghezza della stringa II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 4/22 Una soluzione basata sull ordinamento dei suffissi Suffix sort Si generano tutti i suffissi dell input Si ordinano i suffissi per avvicinare tutti match più lunghi II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 5/22 3
4 Problema: come ordinare efficientemente tutte queste stringhe Notazione Stringa = sequenza di lunghezza variabile di caratteri W = massimo numero di caratteri per stringa N = numero di stringhe in input R = radice N.B. La radice è 256 per ASCII esteso, per l UNICODE originale, da 4 a 27 o poco più per gli standard di rappresentazione di sequenze genomiche Sintassi C e C++ Array di stringhe: char* a[]; (Potremmo usare STL in C++) Numero di stringhe: int N; L i-esima stringa: a[i]; Il d-esimo carattere della stringa i-esima: a[i][d]; Le stringa da ordinare: a[0] a[n-1] II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 6/22 In C Codice per risolvere il problema #define N /* some number */ char * s = read_string(stdin, N); char ** suffixes = malloc(n * sizeof(char *)); int i; for (i = 0; i < N; i++) suffixes[i] = substring(s, i, N); string_sort(suffixes); fprintf(stdout, %s\n, lcp(suffixes)); Quicksort di stringhe, per esempio Least common prefix di stringhe adiacenti II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 7/22 4
5 Prestazioni di string sort Il nostro algoritmo per l ordinamento dei suffissi può assumere le prestazioni di quicksort Quindi le prestazioni saranno O(W N lg(n)) ovvero un miglioramento notevole Ciononostante si può - in questo caso - far meglio Idea: key indexing counting come passo base II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 8/22 Key Indexing Counting (primo passo) Si contano le frequenze di ogni lettera (in posizione 0) int *count = (int*) malloc(sizeof(int) * (256+1)); int i; for (i = 0; i < N; i++) { char c = a[i][d]; count[c + 1]++; d = 0 in quest esempio II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 9/22 5
6 Key Indexing Counting (secondo passo) Si contano le frequenze di ogni lettera (in posizione 0) Si computanto le frequenze cumulative for (i = 0; i < 256; i++) { count[i] += count[i - 1]; Frequenze cumulative II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 10/22 Key Indexing Counting (terzo passo) Si contano le frequenze di ogni lettera (in posizione 0) Si computanto le frequenze cumulative Si riarrangiano le string sulla base delle frequenze cumulative char ** temp; /* N puntatori */ for (i = 0; i < N; i++) { char c = a[i][d]; temp[count[c]++] = a[i]; Riarrangiamento II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 11/22 6
7 Key Indexing Counting (quarto passo) Si contano le frequenze di ogni lettera (in posizione 0) Si computanto le frequenze cumulative Si riarrangiano le string sulla base delle frequenze cumulative Si ricopia su a l array temp for (i = 0; i < N; i++) { a[i] = temp[i]; Ri-copia II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 12/22 LSD Radix Sort Least significant digit radix sort Un metodo di ordinamento molto antico II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 13/22 7
8 LSD Radix Sort Consideriamo i caratteri o cifre (digits) di ogni elemento da destra (meno significativo) a sinistra (più significativo) Si usi il metodo di key indexing per ordinare stabilmente ogni elemento II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 14/22 LSD Radix Sort Consideriamo i caratteri o cifre (digits) di ogni elemento da destra (meno significativo) a sinistra (più significativo) Si usi il metodo di key indexing per ordinare stabilmente ogni elemento void sorting_lsd(char * a[], int N, int W) { int d; for (d = W - 1; d >= 0; d--) { /* key-indexing count sort su tutti i caratteri d. */ Si assumono N stringhe di lunghezza fissa W II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 15/22 8
9 LSD Radix Sort: prestazioni LSD radix sort ha la seguente complessità Θ(W(N + R)) Domanda: perchè non si sta violando il limite inferiore di Ω(N lg(n)) sugli ordinamenti? Vantaggi È il metodo di ordinamento più veloce per insiemi di stringhe di lunghezza fissa (e.g. C.A.P. o C.F.) Svantaggi Accesso alla memoria molto casuale (caching) Ciclo interno molto complesso Perde molto tempo sugli elementi meno significativi Non funziona per stringhe di lunghezza variabile Poco ordine fino all ultimo passo Obiettivo: trovare un algoritmo che funzioni bene per stringhe di lunghezza variabile II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 16/22 MSD Radix Sort Most Significant Digit radix sort Si partiziona l input (e.g. N stringhe) in W parti secondo il primo elemento (carattere) Si ordina ricorsivamente ogni stringa cha inizia con lo stesso carattere (ecc. ecc.) Domanda: come si ordina secondo il d-esimo carattere? Si usa key-indexing counting sort II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 17/22 9
10 MSD Radix Sort void sorting_msd(char * a[], int N, int W) { msd(a, 0, N - 1, 0, W); void msd(char * a[], int l, int r, int d, int W) { int * count; int i; if (r <= l) return; /* key-indexing counting sort sull elemento d da a[l] a a[r]. */ count = (int*) malloc(sizeof(int) * (256+1)); /* */ /* Si ordinano ricorsivamente le 255 partizioni * (Si assume che le stringhe siano terminate da \0. */ for (i = 0; i < 255; i++) msd(a, l + count[i], l + count[i + 1] - 1, d + 1, W); II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 18/22 MSD Radix Sort: analisi Complessità La complessità di MSD Radix Sort è O(W(N + R)) come LSD Svantaggi Troppo lento per piccoli insiemi di elementi ASCII: 100x più lento di insertion sort per N = 2 UNICODE: 30000x più lento di insertion sort per N = 2 Enorme numero di chiamate ricorsive su piccoli insiemi Soluzione Si usa insertion sort su piccoli inputs Competitivo con soluzioni basate su quicksort II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 19/22 10
11 Struttura ricorsiva delle chiamate di MSD Radix Sort Struttura a trie : la struttura di MSD Radix Sort Problema: l algoritmo tocca un mucchio di nodi vuoti L albero può essere in realtà R volte più grande di quanto appaia II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 20/22 Corrispondenza tra alberi ed algoritmi di ordinamento I Binary Search Trees (BSTs) corrispondono alla struttura ricorsiva di quicksort I trie a R vie corrispondono alla struttura ricorsiva di MSD Radix Sort II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 21/22 11
12 Conclusioni Gli algoritmi di ordinamento basati su confronti hanno un limite teorico e pratico di Ω(N lg(n)) Sfruttando la struttura delle chiavi su cui eseguire l ordinamento (stringhe e caratteri, numeri e cifre) è possibile battere questo limite in alcuni casi L operazione di key-counting sort è fondamentale Least Significant Digit Radix Sort Most Significant Digit Radix Sort Quicksort ha una struttura ricorsiva di chiamate corrispondente a BSTs MSD ha una struttura ricorsiva di chiamate corrispondente ai tries ad R vie II Semestre 2005/2006 Laboratorio Algoritmi - Marco Antoniotti 22/22 12
Sommario. Algoritmi di ordinamento lineari: CountingSort. BucketSort. RadixSort
Sommario Algoritmi di ordinamento lineari:! CountingSort! BucketSort! RadixSort 1 Ordinamento in tempo lineare. Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento generali, nel
char *s; s = (char *) malloc(5*sizeof(char)); scanf( %s, s); Stringhe
char *s; s = (char *) malloc(5*sizeof(char)); scanf( %s, s); Stringhe Stringhe s char *s; s = (char *) malloc(5*sizeof(char)); scanf( %s, s); c i a o \0 Scrivere un programma che legga da input un array
Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006
aboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006 Insiemi di Stringhe e tries Marco Antoniotti Sommario Dizionari Dizionari Associazioni tra chiavi e valori Ricerca per chiave BSTs bilanciati
Algoritmi di ordinamento
Algoritmi di ordinamento Il problema Vogliamo ordinare un array monodimensionale in modo crescente per il caso decrescente valgono le stesse considerazioni Vari algoritmi possibili Diverse caratteristiche
Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente
Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente Divide et impera - Schema generale Divide-et-impera (P, n) if n k then risolvi direttamente
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 4 Ordinamento Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare una lista di nomi alfabeticamente, o un
Algoritmi di ordinamento
Algoritmi di ordinamento Il problema Vogliamo ordinare un array monodimensionale in modo crescente per il caso decrescente valgono le stesse considerazioni Vari algoritmi possibili Diverse caratteristiche
Ordinamento per inserzione e per fusione
Ordinamento per inserzione e per fusione Alessio Orlandi 15 marzo 2010 Fusione: problema Problema Siano A e B due array di n A e n B interi rispettivamente. Si supponga che A e B siano ordinati in modo
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano. Usa la tecnica del divide et impera:
MergeSort Usa la tecnica del divide et impera: 1 Divide: dividi l array a metà 2 Risolvi i due sottoproblemi ricorsivamente 3 Impera: fondi le due sottosequenze ordinate 1 Esempio di esecuzione 7 2 4 5
Algoritmi di ordinamento (I parte)
(I parte) Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Definizione formale del problema Input:! Una sequenza di n numeri Output:! Una permutazione
Quick Sort. PARTITION(A,p,r) risistema il sottoarray A[p...r] e riporta l indice q:
Quick Sort - Ordinamento in loco - Tempo di esecuzione nel caso peggiore: Θ(n 2 ) - Tempo di esecuzione nel caso medio: Θ(n lg n) - I fattori costanti nascosti nella notazione Θ sono abbastanza piccoli
Algoritmi di Ordinamento
Algoritmi di Ordinamento 1 Algoritmi di ordinamento Selection Sort Quick Sort Lower bound alla complessità degli algoritmi di ordinamento Statistiche di ordine 2 Selection Sort SelectionSort(dati[]) {
Algoritmi di ordinamento
Algoritmi di ordinamento Selection Sort Quick Sort Lower bound alla complessità degli algoritmi di ordinamento giu 03 ASD 1 Selection Sort SelectionSort(dati[]) { for (i=0; i
Algoritmi di ordinamento: Array e ricorsione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Indice Algoritmi di ordinamento: Insertion
Laboratorio di algoritmi e strutture dati
Laboratorio di algoritmi e strutture dati Docente: Violetta Lonati mercoledì 15 novemb017 L esercitazione di oggi prevede di utilizzare gli alberi binari e in particolare gli alberi binari di ricerca.
Algoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 1 Settembre 2016 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2 ore e 30 minuti. Chi deve sostenere solo il modulo di
Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Heap e Heapsort Algoritmi di ordinamento Insertion Sort Quicksort Heapsort Insertion Sort L
Lezione 5. Giuditta Franco. 19 Febbraio 2008
Outline Lezione 5 Dipartimento di Informatica, Università di Verona 19 Febbraio 2008 Talk Outline Outline 1. 2. 3. Come costruire un Un esempio introduttivo L albero dei suffissi di una data stringa è
Rappresentazione di numeri interi e frazionari. 28 settembre 2015 (ore 9-11)
Rappresentazione di numeri interi e frazionari 28 settembre 2015 (ore 9-11) Punto della situazione Vogliamo «dialogare» col computer: impariamo le rappresentazioni in binario Abbiamo visto la rappresentazioni
Rappresentazione dell informazione. 27 settembre 2018
Rappresentazione dell informazione 27 settembre 2018 Notazione posizionale per numeri interi In base b. I simboli ammessi sono 0,1,, b-1. Una sequenza / stringa di 0, 1,, b-1, di lunghezza n a n-1 a n-2
Per regnare occorre tenere divisi i nemici e trarne vantaggio. fai ad ogni passo la scelta più conveniente
Progetto di algoritmi sequenziali (un solo esecutore ) Divide et Impera Per regnare occorre tenere divisi i nemici e trarne vantaggio Greedy fai ad ogni passo la scelta più conveniente Buoni risultati
Algoritmi di ordinamento
Algoritmi di ordinamento! Selection Sort! Quick Sort! Lower bound alla complessità degli algoritmi di ordinamento Ordinamento 1 Selection Sort SelectionSort(dati[]) { for (i=0; idati.length-1; i++) { min
Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Ordinamenti: mergesort e quicksort
Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006 Ordinamenti: mergesort e quicksort Marco Antoniotti Mergesort e Quicksort Due importantissimi algoritmi di ordinamento La conoscenza completa
ALGORITMI DI ORDINAMENTO E RICERCA BINARIA. Docente: Giorgio Giacinto AA 2008/2009. problema dell ordinamento in modi diversi
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z
Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z Anno Accademico 2002-2003 9 luglio 2002-03 Domanda 1, punti 6 Si consideri la seguente classe Java, in cui,
Algoritmi di ordinamento: Array e ricorsione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Insertion Sort Quicksort Heapsort Indice
Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10
Stringhe in C Luca Abeni Informatica Luca Abeni 1 / 10 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe
Esercizi vari. Alberto Montresor. 19 Agosto, 2014
Esercizi vari Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive soluzioni
Algoritmo di ordinamento sul posto che ha tempo di esecuzione :
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : - O(n 2 ) nel caso peggiore - O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior
Laboratorio di algoritmi e strutture dati
Laboratorio di algoritmi e strutture dati Docente: Violetta Lonati mercoledì 25 novemb009 L esercitazione di oggi prevede di utilizzare gli alberi binari e in particolare gli alberi binari di ricerca.
Algoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
Algoritmi di ordinamento
Capitolo 7 Algoritmi di ordinamento 7.1 Selection sort L algoritmo di ordinamento per selezione opera nel modo seguente: supponiamo che i primi k elementi siano ordinati; l algoritmo sceglie il minimo
Informatica (A-K) 14. Linguaggio C -4
Strutture Dati in C Le strutture dati sono entità che permettono di memorizzare dati in modo organizzato e funzionale a particolari esigenze Informatica (A-K) 14. Linguaggio C -4 Strutture Dati tipiche
Algoritmi e Strutture Dati
Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto
Algoritmi e Strutture Dati
Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto
Esercizi per il corso di Algoritmi, anno accademico 2011/12
Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli
Lezione 6 Selection/Insertion Sort su interi e stringhe
Lezione 6 Selection/Insertion Sort su interi e stringhe Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Tutoraggio Venerdì 14
Ricorsione. DD cap. 5 pp KP cap. 5 pp
Ricorsione DD cap. 5 pp.160-184 KP cap. 5 pp.199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale se n>1 n!=n(n-1)(n-2)(n-3) 1; se n=0 o 1 n!=1. ma (n-1)! la definizione
T 1 =1. n 4 n log n. T n =3 T. Esercizio 1 (6 punti) A.A Esame di Algoritmi e strutture dati 18 luglio 2008
A.A. 00 0 Esame di Algoritmi e strutture dati luglio 00 Esercizio (6 punti) Risolvere con almeno due metodi diversi la seguente relazione di ricorrenza T = T n = T n n log n A.A. 00 0 Esame di Algoritmi
Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Templates C++ ed Alberi di Ricerca
Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006 Templates C++ ed Alberi di Ricerca Marco Antoniotti Laboratorio Comunicazioni di servizio Da settimana prossima di venerdì 12, 19 e 26 1
Fondamenti di Programmazione
A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome
TRIE (albero digitale di ricerca)
TRIE (albero digitale di ricerca) Struttura dati impiegata per memorizzare un insieme S di n stringhe (il vocabolario V). Tabelle hash le operazioni di dizionario hanno costo O(m) al caso medio per una
Riepilogo della puntata precedente
Riepilogo della puntata precedente Da quanto detto la volta scorsa, la scelta di passare un array mediante un puntatore è giustificata solo dal risparmio, in termini di memoria, che tale scelta comporta.
Heap e code di priorità
Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010
Lezione 8 Struct e qsort
Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort
Alberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort
Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Selection e Insertion Sort Ordinamento Dato un insieme S di n elementi presi da un dominio totalmente ordinato, ordinare S in ordine non crescente o non
Alberi binari e alberi binari di ricerca
Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Alberi Un albero è una collezione non vuota di: nodi con nome e informazioni
9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
Esempio di Prova Scritta
Esempio di Prova Scritta La prova scritta è composta da alcuni esercizi per un totale di 12 punti, sufficienza con 7 punti (durata: circa 1h). Le tipologie di esercizi possibili comprendono: sintesi di
Heap e Code di Priorità
Heap e Code di Priorità heap heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. ogni nodo contiene una chiave maggiore o eguale di quelle presenti negli eventuali figli non
Alberi. Alberi: Esempio di utilizzo
Sono strutture dati del tipo: Alberi SOTTOALBERO n1 RADICE DELL ALBERO () n2 n n4 Profondità o Livello 0 1 n n n n n n 2 NODI FOGLIA (LEAF NODES) 1 Alberi: Esempio di utilizzo Rappresentazione di un file
Alberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica giovedì 9
Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.
Tipi di dati fondamentali Tipi di dati fondamentali Linguaggi di Programmazione I Ferdinando Cicalese caratteri: char signed char unsigned char interi short int long interi unsigned short unsigned unsigned
Lezione 6 Struct e qsort
Lezione 6 Struct e qsort Rossano Venturini rossano.venturini@unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Struct Struct Fino ad ora abbiamo utilizzato
Argomenti. Array. Stringhe. Merge sort
ARRAY Ivan Lanese Argomenti Array Stringhe Merge sort Array E' una struttura dati che contiene più elementi dello stesso tipo Normalmente su elementi diversi di uno stesso array si fanno operazioni simili
ORDINAMENTO PER SELEZIONE ORDINAMENTO PER SELEZIONE ORDINAMENTO VELOCE CONFRONTI
ORDINAMENTO PER SELEZIONE Per l analisi delle prestazioni di tale algoritmo di ordinamento, si considerano i due cicli for annidati: poiché i confronti avvengono nel ciclo interno si ha che n 2 i= 0 (
Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012
Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012 Igor Melatti Cenni sui puntatori in C Per ogni variabile normale dichiarata, il compilatore riserva una precisa quantità di
Algoritmi di ordinamento (I parte)
Algoritmi di ordinamento (I parte) E2: sommario Classificazione degli algoritmi di ordinamento Studio di due implementazioni di algoritmi che utilizzano interfaccia Comparable Algoritmo per inserimento
Progetto Corda. Alberto Ferrari. Alberto Ferrari Ingegneria dell'informazione, UniPR. 18/12/2017 Progetto Corda
Progetto Corda Alberto Ferrari Alberto Ferrari Ingegneria dell'informazione, UniPR file:///e:/cordanoweb/lez/array.html#3 1/33 Array (ordinamento) 2/33 file:///e:/cordanoweb/lez/array.html#3 2/33 Sort
Lezione 8: Stringhe ed array multidimensionali
Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si
Programmazione di base
Fondamenti di Informatica Testo A Secondo Appello 016-17 febbraio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene
Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).
Ricerca in Array/Lista. Dato un array o lista di n elementi, vogliamo trovarne uno (e.g., un numero x in un array di interi)
Tabelle Hash Ricerca in Array/Lista Dato un array o lista di n elementi, vogliamo trovarne uno (e.g., un numero x in un array di interi) Ricerca in Array/Lista Dato un array o lista di n elementi, vogliamo
Array. Aggragati di variabili omogenee...
Array Aggragati di variabili omogenee... Cosa è un array È un insieme di variabili omogenee identificato da un indice, ad esempio Se devo leggere 1 numeri dallo standard input e memorizzarli all'interno
Alberi Binari di Ricerca
Alberi Binari di Ricerca Prof. G. M. Farinella gfarinella@dmi.unict.it www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,
Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
Algoritmi e Strutture Dati
Cognome................................ Nome................................... Matricola............................... Algoritmi e Strutture Dati Prova scritta del 24 febbraio 2017 TEMPO DISPONIBILE:
Spesso sono definite anche le seguenti operazioni:
Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una relazione d ordine. Sono definite almeno le seguenti operazioni:
Ordinamento efficiente: quick-sort
Ordinamento efficiente: quick-sort Si cerca di ridurre la parte disordinata di più di un elemento per volta (a differenza di selection-sort e bubble-sort) L idea è di ordinare parzialmente l array, in
Problemi di ordinamento
Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata
Informatica! Appunti della lezione 8!
Informatica! Appunti della lezione 8! Palindromia! Una stringa si dice palindroma quando si legge allo stesso modo da destra e da sinistra (es.: itopinonavevanonipoti )! Il problema del riconoscimento
Allora v = v2 =
Problema: a partire da due sequenze ordinate v1 e v2 di elementi vogliamo costruirne una ordinata v con tutti gli elementi di v1 e v2 Algoritmo ricorsivo: Se le due sequenze contengono elementi confronta
Databases. Architettura di un DBMS: Struttura ad indice per i files, B + -Trees
Databases Architettura di un DBMS: Struttura ad indice per i files, B + -Trees Indici Un indice consiste di coppie e supporta l efficiente recupero di tutte le etichette con chiave
Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale
Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base
Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile
Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z 28 giugno 2005 tempo a disposizione: 2 ore
Domanda 1, punti 6 Esame di Algoritmi e trutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M- 8 giugno 00 tempo a disposizione: ore Con riferimento all algoritmo mistero1, determinarne
Algoritmi di Ricerca. Esempi di programmi Java. Prof. Angela Bonifati
Passaggio dei parametri in Java Nel seguente esempio public class parametri2 public static void main(string args[]) int x = 1; int y; double d[] = new double[2]; d[0] = 25; y= metodo1(d, x); System.out.println("Il
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Quicksort (*) e metodi di ordinamento lineari Punto della situazione Problema dell ordinamento: Lower bound (n log n) Upper bound O(n log n) Algoritmi
Introduzione al linguaggio C Dati aggregati
Introduzione al linguaggio C Dati aggregati Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 5 ottobre
UNIVERSITÀ DEGLI STUDI DI BERGAMO
UNIVERSITÀ DEGLI STUDI DI BERGAMO DIPARTIMENTO DI INGEGNERIA DELL INFORMAZIONE E METODI MATEMATICI Corso di Laurea in Ingegneria Informatica Esame di Informatica III B Progettazione e algoritmi a.a. 2011/12
Laboratorio di Algoritmi e Strutture Dati. Code con Priorità
Laboratorio di Algoritmi e Strutture Dati Code con Priorità Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso
Alberi ed Alberi Binari
Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,
Dizionari Liste invertite e Trie
Dizionari Liste invertite e Trie Lucidi tratti da Crescenzi Gambosi Grossi, Strutture di dati e algoritmi Progettazione, analisi e visualizzazione Addison-Wesley, 2006 Dizionari Universo U delle chiavi
Algoritmi di Ordinamento Corso di Informatica Laurea in Fisica. prof. ing. Corrado Santoro
Algoritmi di Ordinamento Corso di Informatica Laurea in Fisica prof. ing. Corrado Santoro ፫ Bubble Sort Se l i-esimo elemento è maggiore dell elemento i+-esimo, essi vengono scambiati. Si termina quando
I puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria Vettore = puntatore Vettore come parametro a funzione Puntatori e stringhe Vettori di puntatori 2 2006 Politecnico di Torino 1 Vettore = puntatore Data una
Il linguaggio dei computer: rappresentazione in binario e algoritmi di conversione 20 settembre 2017
Il linguaggio dei computer: rappresentazione in binario e algoritmi di conversione 20 settembre 2017 Architettura degli Elaboratori L Architettura (informatica) è l insieme dei criteri in base ai quali
Sommario. Un algoritmo di ordinamento di complessità lineare: CountingSort. [CLRS10] cap. 8 par.8.2
Sommario Un algoritmo di ordinamento di complessità lineare: CountingSort [CLRS10] cap. 8 par.8.2!1 Ordinamento in tempo lineare. Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento
Esempi di programmazione in C
Esempi di programmazione in C Problemi elementari..................................... 363 Somma tra due numeri positivi......................... 363 Moltiplicazione di due numeri positivi attraverso la
Alberi. CORDA Informatica. A. Ferrari. Testi da. Marco Bernardo Edoardo Bontà. Dispense del Corso di. Algoritmi e Strutture Dati
Alberi CORDA Informatica A. Ferrari Testi da Marco Bernardo Edoardo Bontà Dispense del Corso di Algoritmi e Strutture Dati Albero - definizione Albero Figli, fratelli, nodi, foglie Grado, livello, altezza,
Dati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
Ordinamento di una lista: bubble-sort
Ordinamento di una lista: bubble-sort L idea è di far galleggiare il minimo della lista nelle prima posizione Riduco la parte di lista da considerare, escludendo le prime posizioni già ordinate Ordinamento:
Precisazione sui tipi in ANSi C
Precisazione sui tipi in ANSi C Tipi primitivi del C Un tipo è costituito da un insieme di valori ed un insieme di operazioni su questi valori. Classificazione dei tipi primitivi del C scalari aritmetici:
Organizzazione Fisica dei Dati (Parte II)
Modello Fisico dei Dati Basi di Dati / Complementi di Basi di Dati 1 Organizzazione Fisica dei Dati (Parte II) Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Modello Fisico
Capitolo 19. Ricorsione
Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!
Esempio di Prova Scritta
Esempio di Prova Scritta La prova scritta è composta da alcuni esercizi per un totale di 10 punti (durata:circa 1h15 ). Le tipologie di esercizi possibili comprendono:! sintesi di una funzione ricorsiva/iterativa,