UD 3.5a: Searching (parte 1) ALGORITMO DI RICERCA SEQUENZIALE. Dispense, cap

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "UD 3.5a: Searching (parte 1) ALGORITMO DI RICERCA SEQUENZIALE. Dispense, cap"

Transcript

1 UD 3.5a: Searching (parte 1) ALGORITMO DI RICERCA SEQUENZIALE Dispense, cap

2 Ricerca di un'informazione in una tabella Determinare se una parola X è presente in un dizionario (cioè in una lista di parole). La parola X può essere il nome di una persona, il titolo di un libro, il numero di una carta di credito, o altro. Supponiamo che N differenti parole siano immagazzinate in N celle di memoria contigue in un elaboratore. Si deve costruire un algoritmo che prenda in input la parola X e dia in output la posizione J in cui appare X. Pertanto, se X è presente, il risultato sarà compreso tra 1 ed N; se invece X non si trova in memoria, il risultato sarà 0.

3 Algoritmo di Ricerca Sequenziale Collocare le N parole in memoria, nelle posizioni da 1 ad N Esaminare ogni parola, a partire dall ultima, tornando indietro verso la prima Alla fine Se la parola X si trova nel Dizionario, l algoritmo fornisce in uscita la sua posizione, J, e poi si ferma Se la parola X non è presente nel dizionario, l algoritmo si ferma con 0 in uscita.

4 Algoritmo di Ricerca Sequenziale Vediamo, adesso, prima il flow chart dell algoritmo e poi il programma Pascal corrispondente (il programma legge il valore n da input - in questo esempio, per semplicità, n 30 - e poi legge n linee dal file di testo DIZ.TXT, ognuna contenente una parola ) La variabile K non fa parte della computazione, ma serve per poter determinare se il corpo del ciclo va eseguito o se bisogna uscire da esso in caso di presenza di Parola nel vettore Dizionario. Infatti si esce dal ciclo se J=0 (non c è Parola in Dizionario) oppure se K=0 L algoritmo funziona sempre, anche per n=0.

5 Algoritmo di Ricerca Sequenziale

6 Algoritmo di Ricerca Sequenziale program ricerca_sequenziale; var Dizionario: array [1..30] of string; Parola : string; N, i,j,k : integer; DIZ Begin : Text; assign (Diz, 'c:\esami\diz.txt'); reset (Diz); for i:=1 to 30 do readln (Diz, Dizionario[i]); close (Diz); read (Parola); J := 30; K := 1; while (K>0) AND (J>0) do begin end; if Parola = Dizionario[J] writeln (J) end. then K := 0 else J:=J-1;

7 Algoritmo di Ricerca Sequenziale Tale algoritmo risolve sicuramente il problema ma la soluzione non sembra molto efficiente. Infatti, quando il numero di parole diventa grande (ad es ) la ricerca sequenziale richiede, nel caso peggiore, un numero di passi computazionali molto elevato ( per il nostro esempio). Tale algoritmo equivale alla ricerca di un numero telefonico fatta consultando l elenco degli abbonati pagina per pagina a partire dalla prima pagina, colonna per colonna, una riga alla volta.

8 UD 3.5b: Searching (parte 2) ALGORITMO DI RICERCA BINARIA Dispense, cap. 5.3

9 Algoritmo di Ricerca Binaria Su un archivio ordinato è possibile utilizzare una tecnica di ricerca ottimale, la Ricerca Binaria, L ordinamento comporta un vantaggio sostanziale perché in ogni punto dell'elenco è sufficiente un semplice sguardo per eliminare una grande quantità di elementi La Ricerca Binaria permette di cercare un elemento in un archivio con un numero di operazioni pari al logaritmo in base 2 del numero degli elementi presenti nell archivio.

10 Algoritmo di Ricerca Binaria ALGORITMO DI RICERCA BINARIA Si controlla l elemento centrale del dizionario. Se esso è proprio la parola cercata, ci si ferma. In caso contrario, se il dato da cercare segue l elemento centrale si ripete la ricerca nella parte di archivio a destra di quello centrale, scartando i dati contenuti nella semi tabella di sinistra (che precedono sicuramente quello cercato). se il dato da cercare precede l elemento centrale si ripete la ricerca nella parte di archivio a sinistra di quello centrale, scartando tutti i dati contenuti nella semi tabella di destra (che precedono quello cercato). Ad ogni passo si dimezza la dimensione dell archivio.

11 Algoritmo di Ricerca Binaria Situazione iniziale schedario

12 Algoritmo di Ricerca Binaria Ogni volta elimino la metà delle schede, oppure mi fermo perché ho trovato la scheda cercata Ogni volta divido il numero N delle schede per 2, mi fermo quando N è diventato 1 o 0 Al più eseguo x passi dove x è il logaritmo in base 2 di N Scheda cercata!

13 Algoritmo di Ricerca Binaria Innanzitutto dobbiamo stabilire cosa fare quando la tabella contiene un numero pari di elementi. Infatti in questo caso non c è un (unico) elemento centrale. L elemento centrale verrà calcolato come: (sin+des)/2 Le parentesi significano arrotonda per difetto all intero più vicino. Ad es. se sin=1 e des=10, allora (sin+des)/2 = 11/2 = 5,5 = 5

14 Algoritmo di Ricerca Binaria E poi dobbiamo stabilire qual è la condizione di terminazione in caso di insuccesso. L elemento non è nella tabella quando l intervallo diventa vuoto, cioè il limite destro cade più a sinistra del limite sinistro

15 Algoritmo di Ricerca Binaria (parte 1)

16 Algoritmo di Ricerca Binaria (parte 2)

17 Algoritmo di Ricerca Binaria program ricerca_binaria; var Dizionario : array [1..30] of string; Parola : string; i,j,k : integer; sin, des : integer; DIZ : Text; begin assign (Diz, 'c:\esami\diz.txt'); reset (Diz); for i:=1 to 30 do readln (Diz,Dizionario[i]); close (Diz); read (Parola); sin := 1; des := 30; J := (sin+des) div 2; K := 1; while (K<>0) AND (des>= sin) do begin if Parola = Dizionario[J] then K := 0 else begin if Parola < Dizionario[J] then des := j-1 else sin := J+1; J := (sin+des) div 2; end; end; if k <> 0 then writeln ('Nome assente') else writeln ('Nome in posiz.',j); end.

18 UD 3.5c: Searching (parte 3) PRESTAZIONI DEI DUE ALGORITMI DI RICERCA Dispense, cap. 5.4

19 Algoritmi a confronto Ad occhio il secondo algoritmo sembra più veloce del primo. E possibile quantizzare tale differenza? La risposta è affermativa e fa uso di alcune semplici tecniche matematiche.

20 Prestazioni della Ricerca Sequenziale Il primo algoritmo, nel caso peggiore, esegue un numero di passi proporzionale al numero delle parole. Se N= l'algoritmo di ricerca sequenziale farà di operazioni di confronto.

21 Prestazioni della Ricerca Binaria l'algoritmo elimina metà della tabella dopo ogni esecuzione di un'operazione di confronto, per cui all'inizio opererà con N elementi; al passo successivo gli elementi saranno N/2; al passo ancora successivo questi saranno la metà di quelli presenti al passo 2, cioè N/4 e così via.

22 Prestazioni della Ricerca Binaria Quanti passi saranno necessari prima di ridursi ad un intervallo con un solo elemento? k, dove k è il più piccolo intero tale che 2 k sia maggiore di N tale numero è l intero ottenuto arrotondando per eccesso il log 2 n (si legge logaritmo in base 2 di n ) oppure (è la stessa cosa) l intero più piccolo che sia maggiore o uguale al log 2 n [1]. [1] In pratica, si calcola il log 2 n e si arrotonda il risultato al più vicino numero intero che è maggiore o uguale a tale valore. Ad esempio, per n=100 il logaritmo in base 2 è 6, , che viene arrotondato a 7 (intero più piccolo che è maggiore di 6, )

23 Algoritmi a confronto Così, qualora la ricerca sia applicata ad una tabella con di elementi L algoritmo di ricerca sequenziale effettuerà, nel caso peggiore, di confronti L algoritmo di ricerca binaria effettuerà, nel caso peggiore, 20 confronti. Infatti 2 19 è inferiore ad ma 2 20 ne è superiore. Si dirà che: l algoritmo di ricerca sequenziale ha una complessità di tempo dell ordine di n l algoritmo di ricerca binaria ha una complessità di tempo dell ordine del log 2 n.

24 Algoritmi a confronto Abbiamo così due formule che ci permettono di calcolare la velocità di un algoritmo di ricerca di un elemento in una tabella, che è basato sul numero di dati input ed è indipendente dalle prestazioni del singolo computer. Numero elementi Tempo Ricerca seq. Tempo Ricerca Binaria

25 E nel caso medio? Ognuna delle N parole della tabella ha la stesse probabilità di essere esaminata Per la Ricerca Sequenziale la risposta è data dalla media ( N) N( N 1) N 2 che è uguale ad ( N 1) 2 cioè, per trovare X dovremmo consultare in media metà della tabella

26 E nel caso medio? Per l algoritmo di ricerca binaria, il calcolo è più complicato k ( 2 k - k - 1) N dove k è il numero di confronti richiesto nel caso più sfavorevole. Per valori di N molto elevati il risultato è approssimativamente uguale a k-1 nel caso medio dunque, il secondo algoritmo necessita di un solo confronto in meno rispetto al caso peggiore.

27 UD 3.5c: Searching (parte 4) COMPLESSITA INTRINSECA Dispense, cap. 5.5

28 Complessità intrinseca della Ricerca Se si sceglie la strategia basata sui confronti, è possibile fare meglio dell algoritmo di ricerca binaria? Ricorda che la ricerca binaria in k confronti riesce ad esaminare tabelle contenenti fino a 2 k -1 elementi. La risposta è No. Un qualsiasi algoritmo che è basato sul confronto di valori [1], in k passi potrà esaminare al massimo 2 k -1 differenti elementi, indipendentemente dalla strategia adottata. [1] Ad ogni passo, infatti, si confronta l elemento da cercare (Parola) con uno degli elementi della tabella (Dizionario[J])

29 Complessità intrinseca della Ricerca Infatti, il primo confronto avverrà sempre con 1 elemento (nel nostro caso con quello centrale di tutta la tabella) l esito del primo confronto potrà indirizzare il secondo verso non più di due altri elementi (infatti il confronto dà un risultato con soli due valori), per cui il secondo confronto avrà a che fare con al più altri 2 elementi il terzo confronto avrà a che fare con 4 possibili altri elementi il k-simo confronto potrà raggiungere, al massimo, 2 k-1 elementi distinti. Dalla matematica sappiamo che k 1 i 0 2 i 2 k 1

30 Complessità intrinseca della Ricerca Nessun algoritmo potrà impiegare meno di k operazioni per analizzare 2 k -1 elementi E inutile cercare algoritmi più veloci della ricerca binaria (se si vuole utilizzare la tecnica del confronto tra elementi). Nessun genio nemmeno fra 1 miliardo di anni e oltre (se la razza umana dovesse ancora esistere) potrà dare un algoritmo, basato su confronti, migliore della ricerca binaria

31 Altre applicazioni della Ricerca Binaria Tale algoritmo ci permette di definire una strategia vincente in molti giochi, nei quali bisogna individuare un elemento tra tanti possibili candidati, purché sull insieme dei candidati sia definito un ordinamento totale, cioè sia possibile, dati due qualsiasi elementi, stabilire quale dei due precede l altro gioco che richiede di indovinare quanti fagioli siano presenti in un contenitore. Limitando il numero massimo di fagioli ad un valore anche elevato, quale ad esempio , basterà applicare l algoritmo di ricerca binaria e, al massimo dopo 20 tentativi si avrà la certezza di indovinare l esatto numero di fagioli!

32 UD 3.5e: Searching (parte 5) HASHING Dispense, cap. 5.7

33 Hashing (miscuglio) Strategia diversa rispetto a quella basata su confronti Inutilizzabile da un essere umano Ma ben adatta ad un calcolatore. Trattare i caratteri di una parola come se fossero numeri rielaborandoli in modo da assegnare ad ogni parola un unico numero che sarà proprio l indirizzo della tabella nel quale memorizzare la parola.

34 Metodo per la generazione dell indirizzo Un metodo per la generazione di un indirizzo compreso tra 0 ed (n-1) è il seguente: 1. Si assegna ad ogni lettera la sua posizione nell alfabeto (a=1, b=2,, z=26) 2. Per ogni parola si sommano tutti i numeri corrispondenti alle singole lettere, ottenendo quindi, per ogni parola, un solo numero 3. Si trasforma questo numero in un valore compreso tra 0 ed (n-1)

35 Metodo per la generazione dell indirizzo Se la tabella ha n celle, si vuole che questo indirizzo sia un valore compreso tra 0 e (n-1). Per ottenere ciò si può dividere tale valore per il numero di posizioni disponibili nella tabella, n prenderne il resto, che è un numero compreso tra 0 e (n-1) Esempio THE genera il numero T=20 + H=8 + E=5 cioè 33, che diviso per 32 dà come resto 1. OF invece genera il numero O=15 + F=6 cioè 21 che, ovviamente, dà come risultato proprio 21. La parola THE verrà memorizzata nella cella numero 1 e la parola OF nella cella numero 21.

36 Esempio I calcoli completi per l esempio delle 31 parole inglesi più frequenti è riportato nella seguente tabella:

37 Collisione Se si è fortunati, ad ogni parola corrisponderà un indirizzo diverso e le ricerche risulteranno molto veloci. Con il metodo Hashing può però capitare che a due o più parole corrisponda uno stesso numero.

38 Collisione Questa situazione si verifica anche più spesso di quanto si possa pensare. Esempio del compleanno: se in una stanza ci sono 23 o più persone è più probabile che ce ne siano due nate lo stesso giorno piuttosto che siano tutte nate in giorni differenti. Qui m=365 e la funzione di hash associa ad ogni persona il suo giorno di nascita (un numero tra 1 e 365). Addirittura, in un gruppo di 88 o più persone è probabile che ce ne siano almeno 3 nati lo stesso giorno.

39 Risoluzione delle Collisioni Vediamo un metodo detto a scandaglio lineare per la risoluzione delle collisioni: In caso di collisione si inserisca la parola nella cella precedente; se anche questa è occupata si provi con quella ancora precedente e così via fino ad arrivare all inizio della tabella. In caso di ulteriore collisione si riprende a partire dall ultima cella della tabella. Questa tecnica è detta a scandaglio lineare

40 Esempio Applichiamo il metodo all insieme delle 31 parole inglesi, ordinato alfabeticamente.

41 Esempio Si noti che, in alcuni casi, il numero delle collisioni è veramente alto. WHICH e OF generano 5 collisioni prima di trovare la posizione nella tabella YOU genera addirittura 20 collisioni Per limitare questa situazione si utilizzano tabelle più grandi del numero di elementi da memorizzare. Analisi matematiche hanno mostrato che un fattore di occupazione dell 80% dà buoni risultati.

42 Svantaggi Si possono creare lunghe code su un'unica cella Il metodo hash, così come descritto qui, dà scarsi risultati nel caso in cui la parola non sia presente. Esistono delle varianti della tecnica base che permettono di migliorare sensibilmente tale prestazione inserire gli elementi in ordine alfabetico inverso In caso di collisione, tutti gli elementi tra h(x) e l effettiva posizione di x precedono alfabeticamente x. Quindi la ricerca di x, in caso di assenza di x può terminare non appena si incontra una parola che segue alfabeticamente x, senza arrivare alla fine della catena delle collisioni.

43 Vantaggi Il vantaggio principale dell uso della tecnica di hashing è nel fatto che, in una tabella piena all 80% il numero medio di collisioni in caso di ricerca con successo è pari a 3 il numero medio di collisioni nel caso di ricerca senza successo è di 13. Inoltre tali valori sono costanti, non dipendono quindi dalla dimensione dell input come pure dipendeva l algoritmo di ricerca binaria.

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi

Dettagli

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo 1 Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione dell informazione Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Algoritmi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Algoritmi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Algoritmi Algoritmi classici Alcuni problemi si presentano con elevata frequenza e sono stati ampiamente studiati Ricerca di un elemento in un vettore

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

RICERCA IN UN VETTORE

RICERCA IN UN VETTORE RICERCA IN UN ETTORE La ricerca controlla se gli elementi di un vettore contengono un certo valore dato (detto anche chiave K) e comunica se l'elemento cercato esiste non esiste e nel caso che esista può

Dettagli

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare

Dettagli

La ricerca dicotomica

La ricerca dicotomica La ricerca dicotomica Se l array è ordinato, la ricerca di un elemento può essere realizzata in modo più efficiente rispetto alla ricerca sequenziale, utilizzando la ricerca dicotomica. Si usa il termine

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

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

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi

Dettagli

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

Dettagli

Efficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale

Efficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale Efficienza: esempi Fondamenti di Informatica Ferdinando Cicalese Nella lezione precedente! Qualche problema computazionale " Trova min " Selection sort! Pseudocodice per descrivere algoritmi " Variabili

Dettagli

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli

Dettagli

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Algoritmi greedy Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Gli algoritmi greedy sono algoritmi basati sull idea

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio) Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande

Dettagli

Calcolare x n = x x x (n volte)

Calcolare x n = x x x (n volte) Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Heap scenario. Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero);

Heap scenario. Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero); Heap Heap scenario Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero); Voglio poter: inserire: nuovi elementi, ciascuno con una data priorità

Dettagli

UD 3.2b: Programmazione in Pascal (1)

UD 3.2b: Programmazione in Pascal (1) UD 3.2b: Programmazione in Pascal (1) Il Linguaggio di Programmazione Pascal Esistono molti linguaggi di programmazione. Per motivi didattici utilizzeremo una versione ridotta di un linguaggio di programmazione

Dettagli

DETERMINAZIONE DEL MASSIMO E DEL SECONDO MASSIMO DI n OGGETTI?

DETERMINAZIONE DEL MASSIMO E DEL SECONDO MASSIMO DI n OGGETTI? DETERMINAZIONE DEL MASSIMO E DEL SECONDO MASSIMO DI n OGGETTI? (Gli oggetti sono tutti diversi) Se si ragiona in modo analogo al caso della ricerca del massimo e del minimo, si può vedere che si ottiene

Dettagli

Problemi algoritmici e Complessità degli algoritmi

Problemi algoritmici e Complessità degli algoritmi Problemi algoritmici e Complessità degli algoritmi Università degli Studi di Salerno Corso di Laurea in Scienze della comunicazione Informatica generale Docente: Angela Peduto A.A. 2005/2006 Problemi algoritmici!

Dettagli

Esercizi Capitolo 7 - Hash

Esercizi Capitolo 7 - Hash Esercizi Capitolo 7 - Hash 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

Dettagli

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER 1 STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER Un computer e una macchina che riceve in ingresso delle informazioni, le elabora secondo un determinato procedimento e produce dei risultati che vengono

Dettagli

Dall algoritmo al programma

Dall algoritmo al programma Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione

Dettagli

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto Argomenti della lezione Introduzione agli Algoritmi e alle Strutture Dati Operazioni su Liste Dr. Emanuela Merelli Tipi di Dato Astratto Lista Lineare Pila Coda Concetto di Struttura dati dinamiche Lista

Dettagli

Algoritmi di ordinamento

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

Dettagli

ORDINE DI INSERIMENTO DELLE CHIAVI <35 >35

ORDINE DI INSERIMENTO DELLE CHIAVI <35 >35 LIBRERIA WEB Alberi binari 3. Alberi binari e tecniche di hashing per la gestione delle chiavi Gli indici di un file possono essere trattati in modo efficiente con tecniche che si basano sull uso di alberi

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29 Macchine di Turing Francesco Paoli Istituzioni di logica, 2016-17 Francesco Paoli (Istituzioni di logica, 2016-17) Macchine di Turing 1 / 29 Alan M. Turing (1912-1954) Francesco Paoli (Istituzioni di logica,

Dettagli

Permutazioni. 1 Introduzione

Permutazioni. 1 Introduzione Permutazioni 1 Introduzione Una permutazione su un insieme di n elementi (di solito {1, 2,...,n}) è una funzione biiettiva dall insieme in sé. In parole povere, è una regola che a ogni elemento dell insieme,

Dettagli

Massimo Benerecetti Tabelle Hash: gestione delle collisioni

Massimo Benerecetti Tabelle Hash: gestione delle collisioni Massimo Benerecetti Tabelle Hash: gestione delle collisioni # Lezione n. Parole chiave: Corso di Laurea: Informatica Insegnamento: Algoritmi e Strutture Dati I Email Docente: bene@na.infn.it A.A. 2009-2010

Dettagli

Informatica, Algoritmi, Linguaggi

Informatica, Algoritmi, Linguaggi Elementi di Informatica e Applicazioni Numeriche T Informatica, Algoritmi, Linguaggi Cos'è l'informatica? Che cos'è l'informatica? Cos'è l'informatica? Che cos'è l'informatica? Dell'informatica possiamo

Dettagli

Algoritmi e Strutture di Dati (3 a Ed.) String matching. Alan Bertossi, Alberto Montresor

Algoritmi e Strutture di Dati (3 a Ed.) String matching. Alan Bertossi, Alberto Montresor Algoritmi e Strutture di Dati (3 a Ed.) String matching Alan Bertossi, Alberto Montresor STRING MATCHING. Date una stringa P di m caratteri (pattern) e una stringa T di n caratteri, con m n, trovare un

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

Come ragiona il computer. Problemi e algoritmi

Come ragiona il computer. Problemi e algoritmi Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Per risolvere il problema

Dettagli

Efficienza: esempi. Fondamenti di Informatica. Ferdinando Cicalese. Nella lezione precedente. Pseudocodice per descrivere algoritmi

Efficienza: esempi. Fondamenti di Informatica. Ferdinando Cicalese. Nella lezione precedente. Pseudocodice per descrivere algoritmi Efficienza: esempi Fondamenti di Informatica Ferdinando Cicalese Nella lezione precedente Qualche problema computazionale Trova min Selection sort Pseudocodice per descrivere algoritmi Variabili Assegnamento

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 27 marzo 2012 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

Almerico Murli - Le variabili strutturate (array) VARIABILI STRUTTURATE (ARRAY)

Almerico Murli - Le variabili strutturate (array) VARIABILI STRUTTURATE (ARRAY) VARIABILI STRUTTURATE (ARRAY) 1 successione (di numeri reali): i ℵ a R i vettore (di numeri reali): i I a i R con I ℵ sottoinsieme finito ogni componente del vettore e univocamente determinata dall indice

Dettagli

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore

Dettagli

Ordinamenti per confronto: albero di decisione

Ordinamenti per confronto: albero di decisione Ordinamenti per confronto: albero di decisione Albero di decisione = rappresentazione grafica di tutte le possibili sequenze di confronti eseguite da un algoritmo assegnato di ordinamento per confronto

Dettagli

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth.

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth. PASCAL standard Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth. Nb: primi linguaggi furono: Fortran, Algol, Ada, Cobol (cfr testo)

Dettagli

Massimo Benerecetti Tabelle Hash

Massimo Benerecetti Tabelle Hash Massimo Benerecetti Tabelle Hash # Lezione n. Parole chiave: Corso di Laurea: Informatica Insegnamento: Algoritmi e Strutture Dati I Email Docente: bene@na.infn.it A.A. 2009-2010 Rappresentazione di insiemi

Dettagli

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash Funzioni Hash Sommario Tabelle ad indirizzamento diretto e hash Funzioni Hash Requisiti Metodo della divisione Metodo della moltiplicazione Funzione Hash Universale La ricerca Talvolta si richiede che

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura

Dettagli

Organizzazione Fisica dei Dati (Parte II)

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

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) : PROGRAMMAZIONE (Corsi B e C) Pre-appello di Gennaio 2004 (A.A. 2003/2004) PROGRAMMAZIONE (B e C) S. Straordinaria - Appello di Gennaio (A.A. 2002/2003) 22 Gennaio 2004 ore 11 Aula II di Facoltà (Durata:

Dettagli

Studio degli algoritmi

Studio degli algoritmi COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Studio degli algoritmi Dato un problema P, le problematiche riguardano: Sintesi

Dettagli

unità didattica 3 Le strutture condizionali e le strutture iterative

unità didattica 3 Le strutture condizionali e le strutture iterative unità didattica 3 Le strutture condizionali e le strutture iterative 1. La struttura condizionale Il Pascal prevede la codifica della struttura condizionale (indicata anche con il nome di struttura dell

Dettagli

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito

Dettagli

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Dettagli

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi

Dettagli

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol. Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato

Dettagli

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno : Gli Algoritmi INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze

Dettagli

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso INDICI PER FILE Strutture ausiliarie di accesso 2 Accesso secondario Diamo per scontato che esista già un file con una certa organizzazione primaria con dati non ordinati, ordinati o organizzati secondo

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato Algoritmi, Strutture Dati e Programmi : Dati e Tipi di Dato Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Dati: Variabili e Costanti Un algoritmo (e il programma che ne è rappresentazione)

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli email:emanuela.merelli@unicam.it Argomenti della lezione Elementi di un linguaggio

Dettagli

Calcolare lo Span di un array di numeri

Calcolare lo Span di un array di numeri Calcolare lo Span di un array di numeri Altro esempio di come usare una pila come struttura dati ausiliaria per un algoritmo: Dato un array X, lo span S[i] di X[i] è il massimo numero di elementi consecutivi

Dettagli

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro

Dettagli

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio Appunti di informatica Lezione 10 anno accademico 2016-2017 Mario Verdicchio Esercizio Scrivere un programma che, data una sequenza di 10 interi (scelta dall utente), la ordini in ordine crescente Soluzione

Dettagli

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo

Dettagli

Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto Il Pascal (continua) Università degli Studi di Salerno Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto A.A. 2005/2006 Le procedure! Spesso, soprattutto

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 07/02/07 Nota Questi lucidi sono tratti

Dettagli

UTILIZZIAMO GLI OPERATORI MATEMATICI E COMMENTIAMO IL CODICE

UTILIZZIAMO GLI OPERATORI MATEMATICI E COMMENTIAMO IL CODICE Utilizziamo gli operatori matematici e commentiamo il codice Unità 4 UNITÀ DIDATTICA 4 UTILIZZIAMO GLI OPERATORI MATEMATICI E COMMENTIAMO IL CODICE IN QUESTA UNITÀ IMPAREREMO... come utilizzare gli operatori

Dettagli

Risoluzione di problemi ingegneristici con Excel

Risoluzione di problemi ingegneristici con Excel Risoluzione di problemi ingegneristici con Excel Problemi Ingegneristici Calcolare per via numerica le radici di un equazione Trovare l equazione che lega un set di dati ottenuti empiricamente (fitting

Dettagli

Algoritmi di ordinamento: Array e ricorsione

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

Dettagli

Lezione 6 programmazione in Java

Lezione 6 programmazione in Java Lezione 6 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Confronto di algoritmi Uno stesso problema può essere risolto in modi diversi,

Dettagli

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità.

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità. Linguaggio C Problemi di Ricerca e Ordinamento: Algoritmi e Complessità. 1 Complessità degli Algoritmi Si definisce Complessità di un Algoritmo C(A) la funzione dei parametri rilevanti per A che determina

Dettagli

INFORMATICA GENERALE Prof. Alberto Postiglione. Università degli Studi di Salerno. UD 3.1a: Gli Algoritmi

INFORMATICA GENERALE Prof. Alberto Postiglione. Università degli Studi di Salerno. UD 3.1a: Gli Algoritmi INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno : Gli Algoritmi INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università

Dettagli

Indice. 1 Introduzione 2. 2 Algoritmo di compressione LZ78 3

Indice. 1 Introduzione 2. 2 Algoritmo di compressione LZ78 3 Algoritmi e Strutture Dati 2 e Aneno Acc. 1999/2000 PROF. ALFREDO DE SANTIS Metodo di Compressione LZ78 a cura di Maria Grazia Calabrò z 24 Luglio 2000 Indice 1 Introduzione 2 2 Algoritmo di compressione

Dettagli

Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I)

Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I) Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I) Algoritmi greedy Gli algoritmi per problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Dettagli

A lezione sono stati presentati i seguenti passi per risolvere un problema:

A lezione sono stati presentati i seguenti passi per risolvere un problema: Calcolo delle radici di un polinomio Problema: Dati i coefficienti a,b,c di un polinomio di 2 grado della forma: ax^2 + bx + c = 0, calcolare le radici. A lezione sono stati presentati i seguenti passi

Dettagli

ADT Mappa. Le chiavi (il mezzo per accedere agli elementi) hanno lo scopo di rendere efficiente la ricerca. Strutture Dati

ADT Mappa. Le chiavi (il mezzo per accedere agli elementi) hanno lo scopo di rendere efficiente la ricerca. Strutture Dati ADT Mappa Una mappa è un contenitore di elementi del tipo (k,v) dove k è la chiave e v è il suo corrispondente valore ogni elemento (k,v) viene detto entrata (entry) della mappa entrate multiple con la

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

PASCAL - Record. Il linguaggio PASCAL consente l utilizzo dei RECORD

PASCAL - Record. Il linguaggio PASCAL consente l utilizzo dei RECORD PASCAL - Record Il linguaggio PASCAL consente l utilizzo dei RECORD Si tratta di un contenitore che descrive un oggetto composto da più dati di tipo diverso. 1 Un esempio: IL LIBRO Pensiamo ad una variabile

Dettagli

IL TEOREMA DI BOEHM-JACOPINI

IL TEOREMA DI BOEHM-JACOPINI IL TEOREMA DI BOEHM-JACOPINI Un qualunque algoritmo può essere descritto unicamente attraverso le tre strutture: Sequenza Diramazione Ciclo o iterazione Le tre strutture sono complete. Un qualunque linguaggio

Dettagli

Variabili strutturate

Variabili strutturate Esempio Ordinamento crescente di numeri: 25 7 I passo: 25 7 25 7 7 25 7 25 Variabili strutturate in due scambi 25 è stato portato al suo posto Gli array II passo: 7 25 7 25 7 25 in uno scambio 7 è stato

Dettagli

Esercizi C su array e matrici

Esercizi C su array e matrici Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]

Dettagli

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science) INFORMATICA Cosa è l informatica Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science) E una scienza E una tecnologia Cosa può essere automatizzato nell

Dettagli

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che: Esercizi su Python 14 maggio 2012 1. Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che: 1. conti quanti elementi pari sono presenti nella lista; 2. conti quanti quadrati

Dettagli

Dizionario. Marina Zanella Algoritmi e strutture dati Tabelle hash 1

Dizionario. Marina Zanella Algoritmi e strutture dati Tabelle hash 1 Dizionario Insieme dinamico che offre solo le seguenti operazioni: inserimento di un elemento dato cancellazione di un elemento dato ricerca di un elemento dato (verifica dell appartenenza di un elemento

Dettagli

Cosa è l Informatica?

Cosa è l Informatica? Cosa è l Informatica? Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Scienza della rappresentazione, memorizzazione, elaborazione e trasmissione dell informazione Elaboratore

Dettagli

2. Algoritmi e Programmi

2. Algoritmi e Programmi 12 2. Algoritmi e Programmi Dato un problema, per arrivare ad un programma che lo risolva dobbiamo: individuare di cosa dispongo: gli input; definire cosa voglio ottenere: gli output; trovare un metodo

Dettagli

Analisi asintotica della complessità di tempo degli algoritmi

Analisi asintotica della complessità di tempo degli algoritmi Analisi asintotica della complessità di tempo degli algoritmi Due esempi di funzioni di Python: 1. nel primo mettiamo in evidenza l importanza di una buona organizzazione dei dati in memoria, cioè di una

Dettagli

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra

Dettagli

INTRODUZIONE INTRODUZIONE TABELLE HASH FUNZIONE HASH

INTRODUZIONE INTRODUZIONE TABELLE HASH FUNZIONE HASH INTRODUZIONE INTRODUZIONE Una tabella hash è una struttura dati che permette operazioni di ricerca e inserimento molto veloci: in pratica si ha un costo computazionale costante O(1). Si ricorda che la

Dettagli

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi Lezione 4 Problemi trattabili e soluzioni sempre più efficienti Gianluca Rossi Trattabile o intrattabile? Consideriamo ora il problema, ben noto a tutti gli studenti a partire dalla scuola media, di calcolare

Dettagli

Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione con i diagrammi di flusso (Flow - chart) Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo

Dettagli

Algoritmi 2 - Dr. Simone Faro - Esercizi sulle Tabelle Hash 1

Algoritmi 2 - Dr. Simone Faro - Esercizi sulle Tabelle Hash 1 Algoritmi 2 - Dr. Simone Faro - Esercizi sulle Tabelle Hash 1 1. Supponete di effettuare una ricerca in una lista concatenata di lunghezza n, dove ogni elemento contiene una chiave k ed un valore hash

Dettagli

Tecnica HASH. Corso di Linguaggi di Programmazione. Stefano Ferilli. Pasquale Lops.

Tecnica HASH. Corso di Linguaggi di Programmazione. Stefano Ferilli. Pasquale Lops. Tecnica HASH Corso di Linguaggi di Programmazione Stefano Ferilli ferilli@di.uniba.it Pasquale Lops lops@di.uniba.it Università degli Studi di Bari A.A. 2003/2004 Linguaggi di Programmazione 1 Obiettivo

Dettagli

Rappresentazione dell Informazione

Rappresentazione dell Informazione Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 7 Tabelle hash Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Implementazioni Dizionario Tempo richiesto dall operazione più costosa: -Liste - Alberi di ricerca

Dettagli

Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Tong Liu April 7, 2016 Liste trabocco (Separate Chaining) Esercizio 1 [Libro 7.5] Un dizionario è realizzato con liste di trabocco.

Dettagli

= < < < < < Matematica 1

= < < < < < Matematica  1 NUMERI NATURALI N I numeri naturali sono: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,... L insieme dei numeri naturali è indicato con la lettera. Si ha cioè: N= 0,1,2,3,4,5,6,7,.... L insieme dei naturali privato

Dettagli

Codice Gray. (versione Marzo 2007)

Codice Gray. (versione Marzo 2007) Codice Gray (versione Marzo 27) Data una formula booleana con n variabili, per costruire una tavola di verità per questa formula è necessario generare tutte le combinazioni di valori per le n variabili.

Dettagli

Esercizi su strutture dati

Esercizi su strutture dati Esercizi su strutture dati Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 21 dicembre 2016 Liste collegate

Dettagli

Esercizi vari. Alberto Montresor. 19 Agosto, 2014

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

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli