alberi binari di ricerca (BST)

Размер: px
Начинать показ со страницы:

Download "alberi binari di ricerca (BST)"

Транскрипт

1 Le tabelle di simboli e gli alberi binari di ricerca (BT) ianpiero abodi e Paolo amurati Dip. utomatica e Informatica Politecnico di Torino Tabelle di simboli Definizione: una tabella di simboli è una struttura dati formata da record con chiave con operazioni di base: inserimento di un nuovo record ricerca di un record con chiave data. Talora è detta dizionario /2005 Le tabelle di simboli e i BT 2 1

2 DT tabella di simboli Operazioni: inserimento di un nuovo elemento ricerca di un elemento con data chiave cancellazione di elemento specificato selezione del k-esimo elemento più piccolo ordinamento della tabella secondo la chiave unione di due tabelle /2005 Le tabelle di simboli e i BT 3 lgoritmo di ricerca = implementazione dell DT tabella di simboli. ecord di tipo Item che includono chiavi di tipo Key con operazioni less e eq. key per recuperare la chiave /2005 Le tabelle di simboli e i BT 4 2

3 Interfaccia void Tinit(int) ; int Tcount() ; void Tinsert(Item) ; Item Tsearch(Key) ; void Tdelete(Item) ; Item Tselect(int) ; void Tsort(void (*visit) (Item)) ; /2005 Le tabelle di simboli e i BT 5 estione delle chiavi duplicate truttura primaria con record privi di duplicati, composti da chiave e link a record con la stessa chiave, gestione della duplicazione affidata al client truttura con chiavi duplicate, ricerca che restituisce un qualsiasi record contenente la chiave ecord con chiave e identificatore univoco (eliminazione della duplicazione) /2005 Le tabelle di simboli e i BT 6 3

4 sempio lienttabellaimboli.c equenza di chiavi in input generata casualmente o letta da standard input controllo se la chiave era già stata vista inserimento solo di chiavi non ancora viste nella tabella dei simboli tipi delle chiavi e operazioni su di esse specificati in Item.h /2005 Le tabelle di simboli e i BT 7 icerca indicizzata da chiave Tabelle ad accesso diretto: chiave k U = {0, 1,, M-1} tutte le chiavi sono interi distinti che fungono da indici di un array array st[0, 1,, M-1]: se key, essa è in st[key], altrimenti st[key] contiene NULLitem memorizzazione di un insieme K di K chiavi /2005 Le tabelle di simboli e i BT 8 4

5 1 2 4 U (universo delle chiavi) M-1 TabellaccessoDiretto. st c K (chiavi usate) /2005 Le tabelle di simboli e i BT 9 Vantaggi/svantaggi omplessità delle operazioni di inserimento, ricerca e cancellazione: T(n) = O(1) omplessità delle operazioni di inizializzazione, selezione e ordinamento: T(n) = O(M) Occupazione di memoria (n) = O( U ) = O(M) applicabile per M piccolo spreco di memoria per K << M /2005 Le tabelle di simboli e i BT 10 5

6 icerca sequenziale truttura dati: array lista concatenata Proprietà della struttura dati: ordinata non ordinata /2005 Le tabelle di simboli e i BT 11 TabellarrayOrdinato.c rray ordinato: inserimento con spostamento di una posizione degli elementi più grandi ricerca mediante scansione sequenziale, terminazione: chiave trovata o chiave più grande. rray non ordinato: inserimento in fondo ricerca mediante scansione sequenziale completa /2005 Le tabelle di simboli e i BT 12 6

7 Lista ordinata: inserimento in ordine TabellaListaNonOrdina ta.c ricerca mediante scansione sequenziale, terminazione: chiave trovata o chiave più grande. Lista non ordinata: inserimento in testa ricerca mediante scansione sequenziale completa /2005 Le tabelle di simboli e i BT 13 nalisi di complessità caso peggiore inserim. ricerca array indicizz. 1 1 array ordin. N N lista ordin. N N lista non ordin. 1 N /2005 Le tabelle di simboli e i BT 14 7

8 earch hit: ricerca con successo earch miss: ricerca senza successo. caso medio inserim. search hit search miss array indicizz array ordin. N/2 N/2 N/2 lista ordin. N/2 N/2 N/2 lista non ordin. 1 N/2 N /2005 Le tabelle di simboli e i BT 15 icerca binaria icbin.c osto quadratico per mantenere ordinato l array in inserimento Vantaggioso in situazioni statiche : array ordinato una sola volta all inizio ricerche, non inserzioni/cancellazioni fficienza legata alla capacità di accesso immediato alla cella dell array, svantaggioso usare liste concatenate /2005 Le tabelle di simboli e i BT 16 8

9 nalisi di complessità caso peggiore caso medio inserim. ricerca inserim. search hit search miss ric. bin. N lgn N/2 lgn lgn /2005 Le tabelle di simboli e i BT 17 lberi binari di ricerca (BT) DT albero binario con proprietà: nodo x vale che: nodo y Left(x), key[y] key[x] nodo y ight(x), key[y] key[x] x Left(x) ight(x) /2005 Le tabelle di simboli e i BT 18 9

10 sempi /2005 Le tabelle di simboli e i BT 19 Operazioni search minimum maximum predecessor successor insert sort select delete. TabellaBT.c /2005 Le tabelle di simboli e i BT 20 10

11 earch icerca ricorsiva di un nodo con chiave v: percorrimento dell albero dalla radice terminazione: v uguale alla chiave della radice dell albero (search hit) oppure giunti ad un albero vuoto (search miss) ricorsione: dal nodo x su sottoalbero sinistro se v < della chiave in x su sottoalbero sinistro se v della chiave in x /2005 Le tabelle di simboli e i BT 21 sempio 15 k = < /2005 Le tabelle di simboli e i BT 22 11

12 15 k = > /2005 Le tabelle di simboli e i BT k = > /2005 Le tabelle di simboli e i BT 24 12

13 15 k = = trovato! /2005 Le tabelle di simboli e i BT 25 Min e max Min: seguire il puntatore al sottoalbero sinistro finchè esiste Max: seguire il puntatore al sottoalbero destro finchè esiste /2005 Le tabelle di simboli e i BT 26 13

14 sempio 15 min = 2 max = /2005 Le tabelle di simboli e i BT 27 uccessor uccessore di un nodo x:nodo con la più piccola chiave k > della chiave in x. Due casi: ight(x): succ(x) = min(ight(x)) ight(x): succ(x) = primo antenato di x il cui figlio sinistro è anche un antenato di x. p[x] x x p[x] /2005 Le tabelle di simboli e i BT 28 14

15 sempio 15 x succ(x) /2005 Le tabelle di simboli e i BT succ(x) x /2005 Le tabelle di simboli e i BT 30 15

16 Predecessor Predecessore di un nodo x: nodo con la più grande chiave k < della chiave in x. Due casi: Left(x): pred(x) = max(left(x)) Left(x): pred(x) = primo antenato di x il cui figlio destro è anche un antenato di x /2005 Le tabelle di simboli e i BT 31 sempio 15 x pred(x) /2005 Le tabelle di simboli e i BT 32 16

17 pred(x) x /2005 Le tabelle di simboli e i BT 33 Insert InsertIter.c Inserire in un albero binario di ricerca un nodo z con chiave v mantenimento della proprietà: se il BT è vuoto, creazione del nuovo albero inserimento ricorsivo nel sottoalbero sinistro o destro a seconda del confronto inserimento iterativo: prima si ricerca la posizione, poi si appende il nuovo nodo /2005 Le tabelle di simboli e i BT 34 17

18 sempio z 13 T 12 insert(t,13) /2005 Le tabelle di simboli e i BT 35 z 13 T 12 insert(t,13) /2005 Le tabelle di simboli e i BT 36 18

19 T /2005 Le tabelle di simboli e i BT 37 ort ort.c ttraversamento: elenco dei nodi secondo una strategia: Pre-ordine: x, Left(x), ight(x) In-ordine: Left(x), x, ight(x) Post-ordine: Left(x), ight(x), x omplessità: T(n) = Θ(n). ttraversamento in-ordine: ordinamento crescente delle chiavi /2005 Le tabelle di simboli e i BT 38 19

20 sempio /2005 Le tabelle di simboli e i BT 39 Visita in pre-ordine /2005 Le tabelle di simboli e i BT

21 Visita in-ordine /2005 Le tabelle di simboli e i BT Visita in post-ordine /2005 Le tabelle di simboli e i BT

22 omplessità Le operazioni hanno complessità T(n) = O(h): albero con n nodi completamente bilanciato altezza h = log 2 n albero con n nodi completamente sbilanciato ha altezza h = n O(log 2 n) T(n) O(n) /2005 Le tabelle di simboli e i BT 43 caso peggiore caso medio inserim. ricerca inserim. search hit search miss BT N N lgn lgn lgn /2005 Le tabelle di simboli e i BT 44 22

23 Inserimento alla radice Inserimento dalle foglie a scelta e non obbligatorio Nodi più recenti nella parte alta del BT Operazioni ausiliarie: rotazione a D di radice e suo figlio rotazione a di radice e suo figlio D. Inserimento ricorsivo alla radice: inserimento nel sottoalbero appropriato rotazione per farlo diventare radice dell albero principale /2005 Le tabelle di simboli e i BT 45 otazione a destra di BT x = h->l x y h γ α x x->r = h y α β x->r β γ h->l = x->r link rot(link h) { link x = h->l; h->l = x->r; x->r = h; return x; } /2005 Le tabelle di simboli e i BT 46 23

24 otazione a sinistra di BT h x = h->r x x->l = h α x γ β x->l γ α β h->r = x->l link rotl(link h) { link x = h->r; h->r = x->l; x->l = h; return x; } /2005 Le tabelle di simboli e i BT 47 sempio otazione a sinistra attorno a /2005 Le tabelle di simboli e i BT

25 sempio inserzione di inserzione di alla radice del sottoalbero opportuno /2005 Le tabelle di simboli e i BT 49 rotazione a D /2005 Le tabelle di simboli e i BT 50 25

26 /2005 Le tabelle di simboli e i BT 51 rotazione a D /2005 Le tabelle di simboli e i BT 52 rotazione a

27 /2005 Le tabelle di simboli e i BT 53 rotazione a D /2005 Le tabelle di simboli e i BT 54 rotazione a prog c

28 elect elezione della k-esima chiave più piccola (k=0 chiave minima): t è il numero di nodi del sottoalbero sinistro: t = k: ritorno la radice del sottoalbero t > k: ricorsione nel sottoalbero sinistro alla ricerca della k-esima chiave più piccola t < k: ricorsione nel sottoalbero destro alla ricerca della (k-t-1)-esima chiave più piccola /2005 Le tabelle di simboli e i BT 55 sempio k = 4 quinta più piccola chiave t=7 7>4 scendo a /2005 Le tabelle di simboli e i BT 56 28

29 k = 4 t=3 3<4 scendo a D cerco k=4-3-1= /2005 Le tabelle di simboli e i BT k = 0 t=0 return /2005 Le tabelle di simboli e i BT 58 29

30 Partition progr c iorganizza l albero avendo la k-esima chiave più piccola nella radice: poni il nodo come radice di un sottoalbero: t > k: ricorsione nel sottoalbero sinistro, partizionamento rispetto alla k-esima chiave più piccola t < k: ricorsione nel sottoalbero destro, partizionamento rispetto alla (k-t-1)-esima chiave più piccola esegui rotazione per farlo diventare radice dell albero /2005 Le tabelle di simboli e i BT 59 sempio Partizionamento rispetto alla 5a chiave più piccola (M, k=4) M T /2005 Le tabelle di simboli e i BT 60 30

31 /2005 Le tabelle di simboli e i BT 61 M T rotazione a M T /2005 Le tabelle di simboli e i BT 62 rotazione a D M T M T

32 /2005 Le tabelle di simboli e i BT 63 rotazione a L M T M T /2005 Le tabelle di simboli e i BT 64 rotazione a D M T M T

33 M M T T rotazione a /2005 Le tabelle di simboli e i BT 65 Delete Per cancellare da un albero binario di ricerca un nodo con data chiave v bisogna mantenere: la proprietà dei BT la struttura ad albero binario Passi: controllare se il nodo da cancellare è in uno dei sottoalberi. e sì, cancellazione ricorsiva nel sottoalbero se è la radice, eliminarlo e ricombinare i 2 sottoalberi. La nuova radice è il succ o il pred del nodo cancellato /2005 Le tabelle di simboli e i BT 66 33

34 ancellazione di una radice L N I M P /2005 Le tabelle di simboli e i BT 67 N I M P succ(l) /2005 Le tabelle di simboli e i BT 68 34

35 partition rispetto a M M I N /2005 Le tabelle di simboli e i BT 69 P ricostruzione dell albero con radice M M N I P /2005 Le tabelle di simboli e i BT 70 35

36 /2005 Le tabelle di simboli e i BT 71 sempio progr c cancellazione in sequenza di L,, I N L I N delete L /2005 Le tabelle di simboli e i BT 72 I N delete N I

37 /2005 Le tabelle di simboli e i BT 73 delete N I N I /2005 Le tabelle di simboli e i BT 74 N I N I

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010

Подробнее

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Prof. G. M. Farinella [email protected] www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,

Подробнее

Alberi binari e alberi binari di ricerca

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

Подробнее

Esercitazione 6. Alberi binari di ricerca

Esercitazione 6. Alberi binari di ricerca Esercitazione 6 Alberi binari di ricerca Struttura base Rappresentabile attraverso una struttura dati concatenata in cui ogni nodo è un oggetto di tipo struttura Ogni nodo contiene: campo chiave (key)

Подробнее

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione

Подробнее

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Definizione Visita dell albero inorder Ricerca Ricerca minimo, massimo e successore. Inserimento ed eliminazione di un nodo Problema del bilanciamento dell albero Albero binario

Подробнее

Heap e code di priorità

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

Подробнее

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Alberi Binari di Ricerca (BST) Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Alberi Binari di Ricerca (Binary Search Trees BST)

Подробнее

ADT Coda con priorità

ADT Coda con priorità Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni

Подробнее

TRIE (albero digitale di ricerca)

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

Подробнее

Note per la Lezione 4 Ugo Vaccaro

Note per la Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che

Подробнее

Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.

Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco. Alberi Alberi Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Frodo Dudo Daisy Alberi Gli alberi sono una generalizzazione

Подробнее

Per semplicità eliminiamo le ripetizioni nell'albero.

Per semplicità eliminiamo le ripetizioni nell'albero. Albero binario di ricerca 20 40 100 95 Un albero binario di ricerca é un albero binario in cui ogni nodo ha un etichetta minore o uguale a quelle dei nodi nel sottoalbero radicato nel figlio destro e maggiore

Подробнее

Alberi ed Alberi Binari

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,

Подробнее

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc Algoritmi e Strutture di Dati I 2 Grafo Un grafo G è una coppia (V, E) ove V è un

Подробнее

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

Подробнее

ADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)

ADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte) ADT: Abstract Data Type I tipi di dati astratti (I parte) Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Scopo Livello di astrazione sui dati tale da mascherare completamente

Подробнее

Alberi binari. Ilaria Castelli [email protected] A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

Alberi binari. Ilaria Castelli castelli@dii.unisi.it A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione Alberi binari Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/2010 I. Castelli Alberi binari, A.A. 2009/2010 1/20 Alberi binari

Подробнее

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

Подробнее

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

Подробнее

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Esercizi II parte Esercizio 1 Discutere la correttezza di ciascuna delle seguenti affermazioni. Dimostrare formalmente la validità

Подробнее

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. 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

Подробнее

Algoritmi e Strutture Dati. HeapSort

Algoritmi e Strutture Dati. HeapSort Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene

Подробнее

Alberi e alberi binari I Un albero è un caso particolare di grafo

Alberi e alberi binari I Un albero è un caso particolare di grafo Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra

Подробнее

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Подробнее

Strutture di accesso ai dati: B + -tree

Strutture di accesso ai dati: B + -tree Strutture di accesso ai dati: B + -tree A L B E R T O B E L U S S I S E C O N D A P A R T E A N N O A C C A D E M I C O 2 0 0 9-2 0 0 Osservazione Quando l indice aumenta di dimensioni, non può risiedere

Подробнее

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

Подробнее

Albero di Riscorsione

Albero di Riscorsione Albero di Riscorsione Albero di ricorsione Un albero di ricorsione è un modo di visualizzare cosa accade in un algoritmo divide et impera L etichetta della radice rappresenta il costo non ricorsivo della

Подробнее

Questa soluzione va contemplata quando le lunghezze stimate dalle liste usate sono significativamente maggiori delle dimensioni di un elemento.

Questa soluzione va contemplata quando le lunghezze stimate dalle liste usate sono significativamente maggiori delle dimensioni di un elemento. Un ulteriore semplificazione si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine (e l inizio) di una lista. Questa soluzione va contemplata

Подробнее

I B+ Alberi. Sommario

I B+ Alberi. Sommario I B+ Alberi R. Basili (Basi di Dati, a.a. 2002-3) Sommario Indici organizzati secondo B + -alberi Motivazioni ed Esempio Definizione Ricerca in un B + -albero Esempio Vantaggi Inserimento/Cancellazione

Подробнее

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 8 Code con priorità: Heap binomiali Riepilogo Array non ord. Array ordinato Lista non ordinata Lista ordinata Find Min Insert Delete DelMin Incr. Key Decr. Key merge

Подробнее

Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1

Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1 Algoritmi (9 CFU) (A.A. 2009-10) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1 Overview Definiamo la struttura dati heap Operazioni di costruzione e gestione di un heap Algoritmo Heapsort Code

Подробнее

Alberi Bilanciati di Ricerca

Alberi Bilanciati di Ricerca Alberi Bilanciati di Ricerca Damiano Macedonio Uniersità Ca' Foscari di Venezia [email protected] Copyright 2009, 2010 Moreno Marzolla, Uniersità di Bologna (http://www.moreno.marzolla.name/teaching/asd2010/)

Подробнее

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

Подробнее

alberi binari e ricorsione

alberi binari e ricorsione alberi binari e ricorsione un albero binario: ogni nodo ha al più 2 figli ogni figlio è destro o sinistro figlio sinistro nodo interno radice figlio destro foglia cammini = sequenze di nodi = sequenze

Подробнее

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] Ultimo aggiornamento: 29 novembre 2010 1 Rotazioni semplici in ABR Si consideri l operazione di rotazione semplice applicata

Подробнее

lezione 9 min-heap binario Heap e Alberi posizionali generali

lezione 9 min-heap binario Heap e Alberi posizionali generali lezione 9 Heap e Alberi posizionali generali min-heap binario Un min-heap è un albero binario quasi completo in cui ogni nodo i diverso dalla radice soddisfa la seguente proprietà: il valore memorizzato

Подробнее

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Camil Demetrescu Irene Finocchi Giuseppe F. Italiano Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Indice 1 Un introduzione informale agli algoritmi 1 2 Modelli di calcolo e metodologie di

Подробнее

Liste con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; }

Liste con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; } Liste con sentinella Un ulteriore semplificazione delle operazioni sulle liste si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine e l inizio

Подробнее

Tempo e spazio di calcolo (continua)

Tempo e spazio di calcolo (continua) Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza

Подробнее

Alberi binari. Esercizi su alberi binari

Alberi binari. Esercizi su alberi binari Alberi binari Definizione della struttura dati: struct tree int dato; struct tree *sx, *dx; ; typedef struct tree tree; Esercizi su alberi binari 1. Scrivere una funzione che cerchi un intero k all'interno

Подробнее

Strutture dati dinamiche in C (II)

Strutture dati dinamiche in C (II) Strutture dati dinamiche in C (II) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi [email protected] Sommario Le liste concatenate (ancora ma in modo più formale) L

Подробнее

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi

Подробнее

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Подробнее

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

Подробнее

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,

Подробнее

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati [email protected] Laurea di Informatica - Università di Ferrara 2011-2012 [1] I Dizionari I dizionari sono un caso particolare di insieme in cui sono possibili le seguenti operazioni: verificare l appartenenza

Подробнее

Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Riassunto sui dizionari

Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Riassunto sui dizionari Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006 Alberi di Ricerca Bilanciati Marco Antoniotti Riassunto sui dizionari Dizionario: astrazione di collezioni Operazioni fondamentali

Подробнее

Esercitazioni di Algoritmi e Strutture Dati

Esercitazioni di Algoritmi e Strutture Dati Esercitazioni di Algoritmi e Strutture Dati III esercitazione, 17/03/2016 Tong Liu 1 ESERCIZIO PRECEDENTE Es 2.5, Il rango di un elemento di una lista di interi é la somma degli elementi successivi piú

Подробнее

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste 4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1

Подробнее

Esercizi per il corso di Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati 1 Esercizi per il corso di Algoritmi e Strutture Dati 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 algoritmi

Подробнее

Costo di esecuzione e complessità. Modello di costo e complessità di un algoritmo

Costo di esecuzione e complessità. Modello di costo e complessità di un algoritmo Costo di esecuzione e complessità Modello di costo e complessità di un algoritmo Il costo di esecuzione di un algoritmo quantifica le risorse necessarie per l esecuzione dell algoritmo stesso numero di

Подробнее

In questa lezione Strutture dati elementari: Pila Coda

In questa lezione Strutture dati elementari: Pila Coda In questa lezione Strutture dati elementari: Pila Coda 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni che li modificano (insiemi dinamici). Le

Подробнее

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Dimostrare che un albero non vuoto con n nodi interni, dove ogni nodo interno ha almeno

Подробнее

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di

Подробнее

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

Подробнее

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

Подробнее

Strutture Dinamiche. Fondamenti di Informatica

Strutture Dinamiche. Fondamenti di Informatica Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));

Подробнее

4.1 Modelli di calcolo analisi asintotica e ricorrenze

4.1 Modelli di calcolo analisi asintotica e ricorrenze 4 Esercizi Prima Parte 4.1 Modelli di calcolo analisi asintotica e ricorrenze Esercizio 4 1 Rispondere alle seguenti domande: 1. Come misuriamo l efficienza di un algoritmo?. Quali sono gli algoritmi più

Подробнее

Sommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort

Sommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort Ordinamento Sommario Ordinamento Selection Sort Bubble Sort/ Shaker Sort Shell Sort Cosa e' l'ordinamento Il problema consiste nell elaborare insiemi di dati costituiti da record I record hanno sono costituiti

Подробнее

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 4 Implementazioni delle partizioni Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio 2016.

Подробнее

Le Funzioni e la Ricorsione

Le Funzioni e la Ricorsione Aula V Dip. di Matematica G. Castelnuovo Univ. di Roma La Sapienza Le Funzioni e la Ricorsione Igor Melatti Slides disponibili (assieme ad altro materiale) in: http://www.dsi.uniroma1.it/ melatti/programmazione1.2007.2008.html

Подробнее

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this

Подробнее

Alberto Montresor Università di Trento

Alberto Montresor Università di Trento !! Algoritmi e Strutture Dati! Capitolo 5 - Alberi!!! Alberto Montresor Università di Trento!! This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy

Подробнее

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

Подробнее

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees Informatica 3 LEZIONE 23: Indicizzazione Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees Informatica 3 Lezione 23 - Modulo 1 Indicizzazione lineare, ISAM e

Подробнее

Laboratorio di Informatica

Laboratorio di Informatica Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento

Подробнее

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 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

Подробнее

n deve essere maggiore di 0, altrimenti il metodo restituisce null.

n deve essere maggiore di 0, altrimenti il metodo restituisce null. Esercizio 1 di classe Intersezione che presi in input due Array di int A e B, restituisce in output un array contenente gli elementi presenti sia in A che in B. Esercizio 2 di classe identità che prende

Подробнее