Costruzione di Interfacce
|
|
- Clementina Mauri
- 5 anni fa
- Visualizzazioni
Transcript
1 Costruzione di Interfacce Scene dinamiche e Collision detection Fabio Ganovelli fabio.ganovelli@isti.cnr.it
2 Scene dinamiche Scene in cui gli oggetti si possono muovere Molte applicazioni: chirurgia virtuale giochi animazione fenomeni naturali progetti di C.I. Ma è grafica? Non proprio, è un campo interdisciplinare (fisica, robotica, ingegneria, informatica)......ma i grafici se ne occupano parecchio
3 Scene dinamiche Due problemi: modellare il comportamento di un oggetto sottoposto a forze modellare l interazione tra più oggetti Cosa affrontiamo oggi: simulazione interattiva: come è organizzato il codice Il minimo indispensabile di fisica Soluzioni fondamentali per modellare l interazione tra oggetti
4 Il codice init(){ t = 0;// il tempo corrente} void main_cycle(){ simulate(dt); /* una funzione che calcola tutto quello che succede nei prossimo dt di tempo (da t a t+dt) */ render(); /* la funzione che fa il rendering della scena */ } t=t+dt; /* avanzamento del tempo */ brutto! Il tempo avanza con velocità dipendente dalla CPU
5 Il codice: temporizzazione init(){ t = 0;} void main_cycle(){ dt=clock() - t; simulate(dt); render(); t=t+dt; } bene, purchè l esecuzione di simulate(dt) non duri più di dt!! Il Frame Rate è sacro!
6 Lo stato Stato di un oggetto: il minimo: posizione velocità qualcosa in più: p = (x,y,z) v = (vx,vy,vz) accelerazione a = (ax,ay,az) un po più completo: massa m forza agente f = (fx,fy,fz)
7 Un passo di simulazione void simulate(dt){ for (ogni oggetto obj nella scena) { obj.p = obj.p + dt * obj.v; obj.v = obj.v + dt * obj.a; }... // >> qui cosa ci mettiamo? << } Es: obj.a costante per tutti gli oggetti obj.a =(0,0,-9.8)
8 Interazione tra oggetti Se un oggetto si muove può andare a sbattere contro parti statiche della scena (es: un muro) contro parti dinamiche della scena (es: un altro oggetto) Il disegno di algoritmi e strutture dati per rilevare quando questo accade si chiama Collision Detection E quando l abbiamo rilevato? lo stato dell oggetto deve essere modificato di conseguenza: Collision Response
9 Esempio: p v La palla si trova in posizione p e ha velocità v p Dopo un passo di simulazione la palla è più vicina al terreno v p p v La palla raggiunge il terreno. Ce ne accorgiamo (CD) Cambiamo lo stato riflettendo la velocità (CR) v Collision detection Collision response
10 Così sarebbe bello! La simulazione procede per intervalli discreti Le collisioni avvengono in un momento qualsiasi Quindi: gestire la collision response diventa più complicato rilevare le collisioni diventa più difficile v al tempo t p p al tempo t+dt v Collision detection Collision response tunnelling
11 Soluzione brute force dividiamo l intervallo dt in parti più piccole e ignoriamo il problema t t+dt simulate(dt)
12 Collision Detection tra due oggetti caso facile: i due oggetti sono sfere r1 c1 d r2 c2 se d < r1+r2 c è intersezione tra le sfere (c2-c1)*(c2-c1) < (r1 + r2) 2 Più in generale i casi in cui il bordo degli oggetti si esprime analiticamente in forma chiusa con una funzione semplice (piani, sfere, ellissoidi..)
13 Collision Detection tra due oggetti Gli oggetti sono descritti da poligoni Brute force: si testano tutte le coppie di poligoni costo = n1*n2*c n1 numero di poligoni del primo oggetto n2 numero di poligoni del secondo oggetto costo di un test di intersezione tra due poligoni male! Il costo è quadratico nel numero di poligoni!
14 Bounding Volumes Un concetto fondamentale: Bounding Volume Il BV di un oggetto è una primitiva geometrica per cui il test di intersezione sia efficiente (tempo costante) e contenente l oggetto ES: bounding spheres L idea: se i bounding volumes di due oggetti non si intersecano, nemmeno gli oggetti si intersecano
15 Gerarchie di bounding volumes...e se i BV si intersecano? usiamo i BV di una partizione degli oggetti...ricorsivamente.
16 Gerarchie di bounding volumes i poligoni vengono testati solo quando in bounding volumes foglia si intersecano
17 Gerarchie di Bounding Volumes Molte varianti: Che tipo di Bounding Volumes? sfere, axis aligned bounding boxes (AABB), object oriented bounding boxes (OOBB)... Che tipo di gerarchia? bin-tree, oct-tree, K-DOP... Come si costruisce? Come si visita l albero durante la CD? depth first, breadth first, priority scheduling
18 Costo T c = N v *C v + N n *C n + N s *C s v : nodi visitati n : coppie di bounding volumes testati s : coppie di poligoni testati N: numero di C: costo di
19 BV: non solo sfere AABB OBB k-dop il BV è un box con le facce parallele ai piani nel sistema di riferimento dell oggeto il BV è un box con le facce parallele a un sistema di riferimento ottimale il BV è un poliedro convesso con le facce parallele a un insieme di k piani prefissato Cosa scegliereste in questo caso?
20 Esempio: AABB vs OBB AABB OBB
21 Uso della gerarchia deque< pair<node,node> > pairs_to_test; // coda delle coppie di nodi da testare. All inizio contiene solo la // coppia dei nodi radice delle due gerarchie bool collision_detection(){ while(! pairs_to_test.empty() ) { pairs_to_test.pop_front();...// assegna la coppia di valori a n1 e n2 if( n1 e n2 sono nodi foglia) return test_all_pairs( polygons_of(n1),polygons_of(n2)); // test_all_pair testa brute force tutte le coppie di poligoni contenute nei nodi n1 e n2 else { if(bv(n1) > BV(n2) ) for( tutti n_i figli di n1) pairs_to_test.insert( pair(n_i,n2) ); else for( tutti n_i figli di n2) pairs_to_test.insert( pair(n1,n_i) ); } } return false; }
22 Ingredienti per implentare uno schema Saper calcolare il BV di un insieme (di poligoni, di altri BV) Saper calcolare se due BV si intersecano (già visto per le sfere) Saper visitare la gerarchia
23 Collision response La risposta dipende dal modello fisico che si sta usando. Caso più semplice: 2 (v N)*N N v v v = v 2 (v N)*N v: velocità prima dell urto v : velocità dopo l urto N: normale della superficie nel punto di contatto ci fermiamo qui..
24 CD e CR tra un oggetto e la scena statica Oss 1: la scena non è altro che un oggetto fermo! Oss 2: il BV della scena contiene tutto possiamo indicizzare lo spazio e risparmiarci un bel pò di conti
25 CD e CR tra un oggetto e la scena statica lo spazio è suddiviso in una griglia uniforme ogni cella contiene una lista di puntatori agli oggetti (della scena) che la intersecano data la posizione dell oggetto in movimento (es: la macchinina) è facile calcolare le celle che interseca si testa l intersezione solo con gli oggetti contenuti in tali celle
26 Collision Detection tra molti oggetti..fin qui sappiamo trattare in modo efficiente la CD tra due oggetti e tra un oggetto e la scena..e se ho tanti oggetti che si muovono? brute force: proviamo a testare tutte le coppie di oggetti costo : n * n, n numero di oggetti Doh! siamo daccapo..
27 Sweep and Prune Oss 1: due box allineati con gli assi si intersecano sse le loro proiezioni sugli assi x,y e z si intersecano L idea: Usiamo dei box allineati con gli assi come BV Proiettiamo i BV sugli assi Usiamo Oss 1 per decidere quali sono le coppie da testare fin qui niente di nuovo..
28 Sweep and Prune y_min(c) C y_max(c) X_list x_min(c) x_max(c) ogni proiezione su un asse è un intervallo teniamo una lista per ogni asse la lista contiene tutti gli estremi degli intervalli ad ogni passo la lista viene ordinata
29 Sweep and Prune tabella xy A B C A - B 11 - C B A C tabella di grandezza n*n ogni cella contiene un bit per ogni asse potential_collision lista di coppie le cui proiezioni si intersecano in tutti gli assi Y-list X-list
30 S&P: Insertion Sort void InsertionSort_X(){ for( i = 1; i < N;++i) { if( x[i] < x[i-1]) { i1=i-1; while( (i1>0) and (x[i1]<x[i1-1]) { swap(i1,i1-1); i1--; } } } } Esempio: X = 3,5,7,13,2 i=4 X = 3,5,7,2,13 i1= 3 X = 3,5,2,7,13 i1= 2 X = 3,2,5,7,13 i1= 1 X = 2,3,5,7,13 La complessità è O(n^2) nel caso pessimo e nel caso medio Però è O(n) se sussiste Frame to Frame Coherency...che è proprio il nostro caso... la tabella viene aggiornata durante l insertion sort, nella funzione swap(i1,i1-1)
31 S&P: tabella e potential_collision void swapx(a,b){ // A è il box che proietta a // B è il box che proietta b if(a è un massimo e b è un minimo) { tabella(a,b).bit_x = 0; remove_from_potential_collision(a,b); } A a b B else a b if(a è un minimo e b è un massimo) B tabella(a,b).bit_x = 1; if(tabella(a,b).bit_x && tabella(a,b).bit_y)) add_to_potential_collision (A,B); } } add_to_potential_collision e remove_from_potential_collision operano in tempo costante potential_collision NON viene azzerata da uno step all altro stessa implementazione per tutti gli assi A
32 S&P: gestione di potential_collision add_to_potential_collision aggiunge un elemento (A,B) sse non è già presente remove_to_potential_collision rimuove un elemento (A,B) sse è presente possibile implementazione: potential_collision è una lista di puntatori a cella di tabella (= coppia) ogni cella di tabella contiene un iteratore di tale lista. Vuoto se non è presente (o usate un valore booleano, come credete) Così inserzione (che va bene in cima alla lista) e rimozione si fanno in tempo costante A bit_x bit_y B list iterator potential_collision cell pointer
33 Riassumendo S&P ha un tempo lineare nel caso di Frame to Frame coherency restituisce la lista di oggetti i cui bounding box si intersecano da lì si può procedere ai test per coppie Questa fase di scrematura viene riferita come Broad Phase Collision Detection, mentre quella tra coppie Narrow Phase CD
34 Conclusioni nella vita reale (il progettino) vi servirà molto meno di quello che si è visto Una Bounding Sphere intorno al vostro omino, macchinina, palla basta e avanza Se avete uno scene graph potete usare direttamente quello come gerarchia e associate il BV come membro del nodo se volete cimentarvi in qualcosa di più chiedete pure aiuto
35 Riferimenti bibliografici [AABB TREE} Efficient Collision Detection of Complex Deformable Models using AABB Trees Gino van den Bergen Journal of Graphics Tools: JGT, [OBB TREE]OBB-Tree: A Hierarchical Structure for Rapid Interference Detection, S. Gottschalk, M.C. Lin, D. Manocha, Computer Graphics, 1996, [Sweep and Prune] I-{COLLIDE}: An Interactive and Exact Collision Detection System for Large-Scale Environments, Jonathan D. Cohen and Ming C. Lin and Dinesh Manocha and Madhav K. Ponamgi, Symposium on Interactive 3D Graphics, [Sphere tree] Collision detection for animation using sphere-trees I.J.Palmer & R.L.Grimsdale, Computer Graphics Forum, 14(2), 1995, pp altre slides su CD:
Intersezioni e collisioni
Intersezioni e collisioni Dove si descrivono i principali algoritmi per verificare l intersezione tra oggetti geometrici o rilevarne la collisione Introduzione Richiami di geometria analitica Intersezioni
Stadio di Applicazione
Stadio di Applicazione SCENE MANAGEMENT Grafica 3D in tempo reale: Realtà virtuale: refresh rate minimo 25 Hz Necessità: processare velocemente scene complesse (t frame
Tecniche per applicazioni interattive
Tecniche per applicazioni interattive Dove si introducono alcune tecniche di rendering adatte alla realizzazione di applicazioni interattive. Introduzione Visibility culling Livello di dettaglio continuo
Strutture dati Alberi binari
Strutture dati - 2 - Alberi binari Definizione L albero è un insieme di elementi (nodi), sui quali è definita una relazione di discendenza con due proprietà: esiste un solo nodo radice senza predecessori
Algoritmi e Strutture Dati Laboratorio 20/10/2008. Prof. Pier Luca Lanzi
Algoritmi e Strutture Dati Laboratorio 20/10/2008 Primo Esercizio 2 Scrivere un programma per misurare il tempo necessario per ordinare un vettore di interi contenente 10-10 7 elementi utilizzando l insertion
Algoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
Algoritmi e Strutture Dati
Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto
Algoritmi e Strutture Dati
Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto
Computer Graphics. Se non si vede, che non ci sia CULLING. Notazione. Lo chiamiamo culling se si scartano primitive intere.
Computer Graphics Lezione 6: culling: se c è ma non si vede! Università dell Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2010/11 Marco Tarini Se non si vede,
Alberi ed Alberi Binari di Ricerca
Alberi ed Alberi Binari di Ricerca 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
Poligoni, Poliedri e Volumi
Poligoni, Poliedri e Volumi Poligoni Un poligono è una figura con n la5, definita da un insieme ordinato di almeno 3 pun5 nel piano, nel quale ogni punto è collegato al successivo (e l ul5mo al primo)
tipi di dato astratti
tipi di dato astratti A. FERRARI ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica
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,
Computer Graphics. Se non si vede, che non ci sia CULLING. Tipi di Culling. Notazione. Occlusion culling
Computer Graphics Lezione 6: culling: se c è ma non si vede! Università dell Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2011/12 Marco Tarini Se non si vede,
Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).
Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari
Algoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.
Esercitazione 8. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 8 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Appello del 24 Gennaio 2007 Esercizio 1 (ASD) 1. Sia T (n) = T (n/6) + T (n/3) + Θ(n). Considerare ciascuna delle seguenti affermazioni
Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
Code a priorità. Progettazione di Algoritmi Matricole congrue a 1. Docente: Annalisa De Bonis
Code a priorità Progettazione di Algoritmi 2018-19 Matricole congrue a 1 Docente: Annalisa De Bonis 26 Coda a priorità Una coda a priorità è un collezione di elementi a ciascuno dei quali è assegnata una
Grafica Computazionale
Grafica Computazionale Ray-Tracing Fabio Ganovelli fabio.ganovelli@isti.cnr.it a.a. 2005-2006 Ray-Tracing e Rasterization Rendering in Computer Graphics Rasterization: Proiettare la scena sullo schermo
Informatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann
Informatica 3 LEZIONE 16: Heap - Codifica di Huffmann Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann Informatica 3 Lezione 16 - Modulo 1 Heap e code di priorità Introduzione
tipi di dato astratti
tipi di dato astratti liste pile code alberi grafi Alberto Ferrari Informatica ADT o un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità
Ordinamento per inserzione e per fusione
Ordinamento per inserzione e per fusione Alessio Orlandi 15 marzo 2010 Fusione: problema Problema Siano A e B due array di n A e n B interi rispettivamente. Si supponga che A e B siano ordinati in modo
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
Heap e Code di Priorità
Heap e Code di Priorità heap heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. ogni nodo contiene una chiave maggiore o eguale di quelle presenti negli eventuali figli non
Lezione 10 Alberi e gestione delle eccezioni
Lezione 10 Alberi e gestione delle eccezioni Informatica 5 Maggio 2016 1 Visita in ampiezza ed esercizi Esercizio: stampa per livelli Scrivere una funzione che stampa le etichette di tutti i nodi dell
Linked Lists. Liste linkate (1) Progettazione: struct. Liste linkate (2)
Liste linkate () Linked Lists La combinazione di class/struct e puntatori porta alla creazioni di interessanti Abstract Data Type liste linkate ( stack, queues ), trees Liste linkate come strutture struct
Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari
lgoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.
Espressioni aritmetiche
Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:
Informatica 3. Informatica 3. LEZIONE 14: Alberi binari: introduzione. Lezione 14 - Modulo 1. Definizioni. Introduzione. Definizioni e proprietà
Informatica 3 Informatica 3 LEZIONE 14: Alberi binari: introduzione Lezione 14 - Modulo 1 Modulo 1: Definizioni e proprietà Modulo 2: Attraversamento degli alberi binari Definizioni e proprietà Politecnico
Scritto di Algoritmi e s.d. (1o anno) 16 Gennaio 2004 TESTO E RISPOSTE
Scritto di Algoritmi e s.d. (1o anno) 16 Gennaio 2004 TESTO E RISPOSTE Esercizio 1 (punti 1 + 4 in prima approssimazione) Consideriamo il seguente codice C: typedef struct nodo * Alb; struct nodo { int
Real Time Physics with XVR. Rosario Leonardi PERCRO
Real Time Physics with XVR Rosario Leonardi PERCRO rosario.leonardi@gmail.com www.rosario3d.com Overview Perché si usano le simulazioni fisiche? La fisica è complessa Le simulazioni sono complesse Time
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
Il TDA Map. Tabelle hash
Il TDA Map Tabelle hash Definizione informale Il TDA Map memorizza coppie formate da una chiave k e da un valore v La coppia è chiamata entry Ogni chiave deve essere unica Questa è la differenza principale
Definizione informale. Il TDA Map memorizza coppie formate da una chiave k e da un valore v. La coppia è chiamata entry. Ogni chiave deve essere unica
Il TDA Map Tabelle hash Definizione informale Il TDA Map memorizza coppie formate da una chiave k e da un valore v La coppia è chiamata entry Ogni chiave deve essere unica Questa è la differenza principale
Il TDA Map. Definizione informale. I metodi del TDA Map 2. I metodi del TDA Map 1. Interfaccia Map 1 NO_SUCH_KEY. Tabelle hash
Il TDA Map Tabelle hash Definizione informale Il TDA Map memorizza coppie formate da una chiave k e da un valore v La coppia è chiamata entry Ogni chiave deve essere unica Questa è la differenza principale
Alberi. CORDA Informatica. A. Ferrari. Testi da. Marco Bernardo Edoardo Bontà. Dispense del Corso di. Algoritmi e Strutture Dati
Alberi CORDA Informatica A. Ferrari Testi da Marco Bernardo Edoardo Bontà Dispense del Corso di Algoritmi e Strutture Dati Albero - definizione Albero Figli, fratelli, nodi, foglie Grado, livello, altezza,
Liste concatenate. Violetta Lonati
Liste concatenate Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 2 novembre 2017 Violetta Lonati Liste
Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture
Linked Lists Liste linkate () La combinazione di class/struct e puntatori porta alla creazioni di interessanti Abstract Data Type liste linkate ( stack, queues ), trees Liste linkate come strutture struct
Alberi. Definizione, realizzazione e algoritmi elementari. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 7
Alberi Definizione, realizzazione e algoritmi elementari Cosa sono gli alberi? Strutture gerarchiche di ogni tipo Generale Colonnello 1 Colonnello k Maggiore 1,1 Maggiore 1,m Capitano Maggiore k,1 Maggiore
Databases. Architettura di un DBMS: Struttura ad indice per i files, B + -Trees
Databases Architettura di un DBMS: Struttura ad indice per i files, B + -Trees Indici Un indice consiste di coppie e supporta l efficiente recupero di tutte le etichette con chiave
Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica
Alberi ( GT. 7 ) Albero definizioni Albero ADT (Abstract Data Type) Algoritmi di base su alberi Alberi binari Strutture dati per rappresentare alberi Implementazione AlberoBinario 1 Alberi (GT. 7) In informatica,
Algoritmi e strutture dati
Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 3 Implementazioni dei dizionari ordinati Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio
Grafi non orientati. Grafi (non orientati) Rappresentazione di Grafi: matrice delle adiacenze. Tipiche applicazioni di modelli basati su grafi
Grafi non orientati Grafi (non orientati) Notazione. G = (V, E) V = nodi (o vertici). E = archi (o lati) tra coppie di nodi. Modella relazioni definite tra coppie di oggetti. aglia di un grafo: numero
ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)
ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 0/0) DISPENSA N. 6 Esercizi su alberi di ricerca e AVL Notazione: Per un albero T scriviamo T per indicare il numero dei nodi di T e h(t ) per indicare
Esercizi su alberi binari
Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica
A. Ferrari. oggetti & game. Python. Alberto Ferrari Informatica
oggetti & game Python oggetto o le applicazioni utilizzano oggetti o gli oggetti hanno uno stato interno in campi (attributi) privati o concetto di incapsulamento (black box) o gli oggetti hanno un comportamento
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
heap heap heap? max- e min-heap concetti ed applicazioni heap = catasta condizione di heap non è una struttura ordinata
heap heap concetti ed applicazioni heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. tutte le foglie sono a sinistra ma non è un BST!! 3. ogni nodo contiene una chiave maggiore
Organigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre
Alberi Struttura dati Albero Organigramma Gerarchia (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre Esempio di un organigramma di un azienda Tree terminology
La Standard Template Library Heap, algoritmi e funtori
La Standard Template Library Heap, algoritmi e funtori Pericle Perazzo 27 maggio 2011 Riassunto contenitori e iteratori Un contenitore è un oggetto che contiene un insieme di altri oggetti di tipo omogeneo
ALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI
SOMMARIO ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI Dimensione e Altezza ALBERI BINARI DI RICERCA (BST) Introduzione Ricerca, inserimento e cancellazione Implementazione
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
Grafica Computazionale
Grafica Computazionale Rimozione delle superfici nascoste Fabio Ganovelli fabio.ganovelli@gmail.com a.a. 2006-2007 Dalle diapositive a corredo del libro: Fondamenti di Grafica Tridimensionale Interattiva
Prova di Algoritmi e s.d. (1o anno) 7 Febbraio TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 7 Febbraio 2003 TESTO e RISPOSTE Esercizio 1 (punti 5 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali). Riportiamo
Basi di Dati e Sistemi Informativi. Organizzazione fisica dei dati. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale
Giuseppe Loseto Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale Struttura DBMS Gestore delle interrogazioni Decide le strategie di accesso ai dati per rispondere alle interrogazioni Gestore
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
Algoritmi e Strutture Dati Geometria Computazionale. Daniele Loiacono
Algoritmi e Strutture Dati Geometria Computazionale Riferimenti 2 T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein Introduction to Algorithms, Second Edition Queste trasparenze sono disponibili su http://dei.polimi.it/upload/loiacono
Esercizio. 2 i=i*2) j=j*2)
Esercizio 1 Esercizio 2 i=i*2) j=j*2) Soluzione Il frammento è composto da due parti quasi identiche. L unica differenza è il modo in cui crescono i contatori. Nella prima parte la crescita è lineare mentre
Informatica 3. Informatica 3. LEZIONE 23: Indicizzazione. Lezione 23 - Modulo 1. Indicizzazione. Introduzione. Indicizzazione:
Informatica 3 Informatica 3 LEZIONE 23: Indicizzazione Lezione 23 - Modulo 1 Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees Indicizzazione lineare, ISAM e
In questa lezione Alberi binari di ricerca
In questa lezione Alberi binari di ricerca!1 Dizionari Un dizionario è una struttura dati costituita da un insieme con le operazioni di inserimento, cancellazione e verifica di appartenenza di un elemento.
Algoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Code di priorità (Heap e heap_sort) m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi,
Alberi. In informatica, un albero è un modello astratto di una struttura dati gerarchica
Il TDA Tree Alberi In informatica, un albero è un modello astratto di una struttura dati gerarchica Struttura dati non lineare Si pensi al file system di un sistema operativo Le relazioni in un albero
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it 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
Grafica Computazionale
Grafica Computazionale Laboratorio: Le trasformazioni Laboratorio: Il progetto SoftOgl: Software OpenGL Fabio Ganovelli fabio.ganovelli@isti.cnr.it a.a. 2005-2006 Obiettivi (oggi) le trasformazioni della
SOMMARIO STACK. STACK: specifica STACK
SOMMARIO STACK Pila (stack): una struttura dati lineare a cui si può accedere soltanto mediante uno dei suoi capi per memorizzare e per estrarre dati. Specifica (descrizione). Implementazione (realizzazione).
Corso di Algoritmi e Strutture Dati Informatica per il Management Prova Scritta, 9/9/2015
Corso di Algoritmi e Strutture Dati Informatica per il Management Prova Scritta, 9/9/2015 Chi deve recuperare il progetto del modulo 1 ha 1 ora e 0 minuti per svolgere gli esercizi 1, 2, Chi deve recuperare
Problemi di ordinamento
Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata
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 e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari I Un albero è un caso particolare di grafo I I I I È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine
PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE
PROGRAMMAZIONE II canale A-D 2007-2008 14 luglio 2008 TRACCIA DI SOLUZIONE 1. Si vogliono realizzare mediante puntatori delle liste circolari, cioè delle liste tali che l ultimo elemento della lista punta
Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati
Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica Modulo di Laboratorio di Algoritmi e Strutture Dati Alberi binari Giovanna Melideo melideo@di.univaq.it 1 Alberi
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
Lezione 6: 12 Novembre 2013
Tutorato di Algoritmi e Strutture Dati [CT0371] Tutor: Alberto Carraro Lezione 6: 12 Novembre 2013 Disclaimer: Queste note non sono state sottoposte al consueto controllo riservato alle pubblicazioni ufficiali.
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
Note per la Lezione 22 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 0 09 Note per la Lezione Ugo Vaccaro Nella lezione scorsa abbiamo introdotto la vista in ampiezza di grafi. Essenzialmente, esso è un metodo per esplorare in
Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.
Esercizio 1 E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1 livello 0 FB = -1 FB = -1 livello 1 FB = -1 livello 2 livello 3 L altezza è 3, il minimo si trova nel
Esempi. Albero di interi. Struttura che non è un albero!
albero si dice "grafo diretto" un insieme di nodi legati "a due a due" da archi direzionati (puntatori) un albero è un grafo diretto in cui ogni nodo può avere un solo arco entrante ed un qualunque numero
In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.
In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni
5.1 Metodo Branch and Bound
5. Metodo Branch and Bound Consideriamo un generico problema di ottimizzazione min{ c(x) : x X } Idea: Ricondurre la risoluzione di un problema difficile a quella di sottoproblemi più semplici effettuando
Laboratorio di Algoritmi
Laboratorio di Algoritmi Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Martedì 8.30-10.30 in aula 3 Mercoledì 10.30-12.30 in Aula 2 Giovedì 8.30-10.30 in
Alberi di Decisione. Fabio Aiolli Sito web del corso
Alberi di Decisione Fabio Aiolli www.math.unipd.it/~aiolli Sito web del corso www.math.unipd.it/~aiolli/corsi/1516/aa/aa.html Alberi di Decisione In molte applicazioni del mondo reale non è sufficiente
Implementazione ADT: Alberi
Implementazione ADT: Alberi Livelli di astrazione 2001/2002 1 Esercitazione 5 (E6): alberi (tree) albero struttura dati fondamentale, soprattutto per le operazioni di ricerca tipi di albero con radice
argomenti alberi terminologia tipo di dato astratto albero tipo astratto, implementazione, algoritmi es.: radice R con n sottoalberi radice
argomenti alberi tipo astratto, implementazione, algoritmi! tipo astratto albero! definizione! implementazione in Java! algoritmi di visita! alberi binari! implementazione di alberi binari in Java ASD
Algoritmi e Strutture Dati 03/05/2013
Algoritmi e Strutture Dati 03/05/2013 Esercizio 1 L equazione di ricorrenza è la seguente: T (n) = 1 n 1 T ( n/2 ) + T ( n/3 ) + n/2 Proviamo a dimostrare che T (n) = Θ(n). E facile vedere che T (n) =
alberi tipo astratto, implementazione, algoritmi
alberi tipo astratto, implementazione, algoritmi argomenti tipo astratto albero definizione implementazione in Java algoritmi di visita alberi binari implementazione di alberi binari in Java ASD - Alberi
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
Altri Esercizi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E17. C. Limongelli Maggio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E17 C. Limongelli Maggio 2012 1 Contenuti q Definizione di classi con ereditarietà q Uso di tipi di dati astratti q Ricorsione
Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree
Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Si definisca Interval Tree un albero binario di ricerca le
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
Alberi. Cosa sono gli alberi? Strutture gerarchiche di ogni tipo. Definizione, realizzazione e algoritmi elementari. Generale.
Alberi Definizione, realizzazione e algoritmi elementari Cosa sono gli alberi? trutture gerarchiche di ogni tipo Generale Colonnello Colonnello k Maggiore, Maggiore,m Capitano Maggiore k, Maggiore k,n
Organizzazioni hash. Corso di Basi di Dati e Sistemi Informativi
Organizzazioni hash Corso di Basi di Dati e Sistemi Informativi 1 Hashing index-based data organizations: relazione tra chiave e indirizzo esplicita tramite puntatori. hash-based organizations: relazione
Implementazione di dizionari
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri campi in cui sono memorizzati i dati associati alla
Alberi di Decisione. Corso di AA, anno 2017/18, Padova. Fabio Aiolli. 23 Ottobre Fabio Aiolli Alberi di Decisione 23 Ottobre / 16
Alberi di Decisione Corso di AA, anno 2017/18, Padova Fabio Aiolli 23 Ottobre 2017 Fabio Aiolli Alberi di Decisione 23 Ottobre 2017 1 / 16 Alberi di decisione (Decision Trees) In molte applicazioni del
Altri Esercizi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2. Dispensa E09. C. Limongelli Marzo 2008
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E09 Altri Esercizi C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Altri Esercizi 1 Contenuti!Definizione
Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4
Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Bilanciamento negli alberi di ricerca @ G. Gini 2013 Dizionari Dizionario Insieme dinamico che implementa le seguenti funzionalità Cerca