Ricerca 01/08/2019 package.

Slides:



Advertisements
Presentazioni simili
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.
Advertisements

Algoritmi notevoli.
Algoritmi notevoli In linguaggio C.
Alberi binari di ricerca
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 ottimi.
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.
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 Stesso approccio.
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 Stesso approccio.
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 Capitolo 4 Ordinamento:
Il problema del dizionario
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.
Algoritmi e Strutture Dati (Mod. A)
07/04/2003Algoritmi Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure.
Tail recursion: esempio
Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti.
Ricerca sequenziale in un array di interi
Teoria degli algoritmi e della computabilità Terza giornata: Ricerca e ordinamento ottimi. P vs NP, algoritmi di approssimazione, e il potere della randomizzazione.
Algoritmo che viene utilizzato per elencare gli elementi di un insieme secondo una sequenza stabilita da una relazione d'ordine, in modo che ogni elemento.
Sistemi e Tecnologie Informatiche
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
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
Lo strano mondo degli algoritmi di ordinamento Algoritmi.
Array (visita e ricerca) CORDA – Informatica A. Ferrari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
6/11/01Ordinamento 1 Un esempio di algoritmi: ordinamento.
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Progettare algoritmi veloci usando strutture dati efficienti
Divide et Impera Quicksort Mergesort Charles Antony Richard Hoare
B-alberi e alberi autoaggiustanti
Approcci nella soluzione di un problema
Sulla complessità Lezione n°2
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Algoritmi e Strutture Dati
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
Quick Sort: Esempio Si consideri il seguente vettore, v, di n=10 elementi: i=inf j=sup Scegliamo come pivot.
Corso Java Cicli e Array.
iterazione o ricorsione nel pensare per OGGETTI
© 2007 SEI-Società Editrice Internazionale, Apogeo
Lezione n°6 Prof.ssa Rossella Petreschi
Scrivere programmi corretti
Ordinamento in tempo lineare
Ricorsione 16/01/2019 package.
Algoritmi e Strutture Dati
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Progettare algoritmi veloci usando strutture dati efficienti
L’algoritmo MergeSort
* 07/16/96 Sez. 2: Ordinamento La consultazione di banche dati è sempre più cruciale in tutte le applicazioni dell’Informatica. Se vogliamo consultare.
MergeSort Usa la tecnica del divide et impera:
concetti ed applicazioni
Lezione Terza Primi passi di programmazione
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Algoritmi di ordinamento
Corso di Fondamenti di Informatica
Transcript della presentazione:

Ricerca 01/08/2019 package

Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l’elemento non è presente nella sequenza stessa. In generale una sequenza di elementi si può realizzare come un array e la scansione avviene usando un indice. Se la sequenza non è ordinata a priori occorre eseguire una ricerca lineare o sequenziale. Se la sequenza è ordinata è opportuno eseguire una ricerca binaria. 01/08/2019 package

/. Una classe per eseguire ricerche lineari in un array non ordinato /** Una classe per eseguire ricerche lineari in un array non ordinato. */ public class LinearSearcher { private int[] a; … /** Trova un valore in un array usando l’algoritmo di ricerca lineare. @param v il valore da cercare @return l’indice in cui si trova il valore, oppure –1 se non è presente nell’array */ public int search(int v){ for (int i = 0; i < a.length; i++){ if (a[i] == v) return i; } return –1; } }

Ricerca binaria L’algoritmo di ricerca lineare richiede che al più tutti gli elementi dell’array vengano confrontati con la chiave. Se l’elemento viene trovato prima di raggiungere la fine della sequenza non sarà necessario proseguire la ricerca. Se la sequenza su cui occorre effettuare la ricerca è ordinata si può usare un algoritmo di ricerca molto più efficiente che cerca la chiave sfruttando il fatto che gli elementi della sequenza sono già disposti in un dato ordine. Esempi di sequenze ordinate: elenco telefonico, agenda, etc. In questi casi si usa un algoritmo di ricerca binaria che è più efficiente perché riduce lo spazio di ricerca. 01/08/2019 package

Ricerca binaria L’algoritmo di ricerca binaria cerca un elemento in una è si è completata la ricerca senza trovarlo: 1. Confronta la chiave con l’elemento centrale della sequenza, 2. Se la chiave è uguale all’elemento centrale, allora la ricerca termina positivamente, 3. Se invece la chiave è maggiore dell’elemento centrale si effettua la ricerca solo sulla sottosequenza a destra, 4. Se invece la chiave è minore dell’elemento centrale dello spazio di ricerca, si effettua la ricerca solo sulla sottosequenza a sinistra. 01/08/2019 package

Ricerca binaria Inizialmente la ricerca è fatta su N elementi, dove N indica la lunghezza della sequenza (lo spazio di ricerca ha dimensione N). Ad ogni iterazione lo spazio della ricerca si riduce di “ circa” la metà. Potremmo dire che si passa da N ad N/2. Il caso peggiore si ha quando l’elemento cercato non si trova nella sequenza (non esiste un elemento uguale alla chiave). Nel caso peggiore, l’iterazione viene eseguita log2 N volte. 01/08/2019 package

/. Una classe per eseguire ricerche binarie in un array /** Una classe per eseguire ricerche binarie in un array. */ public class BinarySearcher { private int[] a; …   /** Trova un valore in un array ordinato, utilizzando l’algoritmo della ricerca binaria. @param v il valore da cercare @return l’indice della posizione in cui si trova il valore, oppure –1 se non è presente */ public int search(int v) { int low = 0; int high = a.length – 1; while (low <= high) { int mid = (low + high) / 2; int diff = a[mid] – v; if (diff == 0) // a[mid] == v return mid; else if (diff < 0) // a[mid] < v low = mid + 1; else high = mid – 1; } return –1; } }

Ricerca in una collezione public int search(String artista) { int low = 0; int high = count - 1; while (low <= high) { int mid = (low + high) / 2; int diff = collection[mid].getArtist().compareTo(artista); if (diff == 0) return mid; else if (diff < 0) low = mid + 1; else high = mid -1; } return - 1; 01/08/2019 package