Corso di Geometria Computazionale Lezioni dell'a.a. 2022-23 II Periodo Didattico ==================== *** Lezione 1 - 27/02/23 *** 0. Informazioni generali sul corso (pagine del corso). 1. Interesse informatico per la Geometria Computazionale (CG): - Misto numerico/simbolico; - Accuratezza/robustezza dell'elaborazione numerica; - Analisi dei casi (proliferazione, specialmente in > 2D); - Laboratorio di algoritmica e programmazione; - Applicazioni in settori per cui la geometria e' rilevante (o l'interpretazione geometrica, p. es. Programmazione Lineare). 2. Interesse matematico per la CG: - Punto di vista complementare a quello prevalente nella disciplina: importanza delle risorse messe in gioco; - Correttezza "in linea di principio" (mondo ideale) degli algoritmi. 3. Cenni alle problematiche legate all'elaborazione numerica in ambito CG (vedi schede "about_robustness.pdf"). 3.1. Informazioni relative alle strutture geometriche: - posizioni/orientazioni spaziali "assolute": dati numerici (misure); - relazioni fra componenti (p.es. topologiche, di ordinamento, ...). 3.2. Piccola indagine che rielabora un esperimento di C.M. Hoffmann (1989): la coerenza delle relazioni puo' essere compromessa! 3.3. Elaborazione algoritmica: - decisioni basate su relazioni; - costruzione di nuovi oggetti (caratterizzati da informazioni numeriche risultanti dall'elaborazione). 3.4. Osservazioni: - in linea di massima e' (quasi) possibile valutare correttamente le relazioni fra oggetti rappresentati correttamente; - non e' invece sempre possibile/praticabile costruire oggetti con sufficiente accuratezza; - Assumendo i dati iniziali corretti (= sufficientemente accurati), i problemi piu' drammatici si pongono quando le *decisioni* assunte si basano su relazioni che coinvolgono i nuovi oggetti costruiti nel corso dell'elaborazione algoritmica... 4. Interazioni fra informazioni numeriche e simboliche... (esempi) - Poligono semplice rappresentato dalla sequenza dei vertici (in verso antiorario); - Tre vertici allineati; - Due poligoni P e Q rappresentati in questo modo descrivono (delimitano) lo stesso insieme di punti? - Possibile risposta: se hanno un diverso numero di vertici sono diversi (economica, ma presupponendo una rappresentazione economica!); - Un poligono P e' convesso? - Possibile risposta: se in corrispondenza a ciascun vertice i lati "curvano" sempre a sinistra (economica, per una rappresentazione economica!); - Operativamente fa differenza ammettere o meno tre vertici allineati; - E se il vertice intermedio dei tre allineati e' approssimato? --> test di convessita' in bilico! 5. Annotazione sul codice: hoffmann.cpp - Un'occhiata al codice... - Utilizzo delle strutture e operazioni primitive di CGAL! Riferimenti: v. schede "about_robustness.pdf". C.M. Hoffmann, "The Problems of Accuracy and Robustness in Geometric Computation", Computer, 22(3), 1989. *** Lezione 2 - 28/02/23 *** 0. Problema dell'individuazione del convex hull: motivazioni. - Problema classico; - Semplice da formulare; - Semplice da risolvere... in modo efficiente; - Si presta all'applicazione di importanti approcci algoritmici generali della geometria computazionale. 1. Algoritmo ingenuo per la costruzione del convex hull di un insieme finito di punti nel piano. 1.1. Proprieta' geometriche. - definizioni (convessita') e definizioni operative... - ...intersezione di tutte le regioni convesse... - ...intersezione di semipiani: quali? (insieme minimale); - semipiani e rette: rette orientate e segmenti orientati; - punti alla sinistra di una retta orientata (per due vertici del contorno del convex hull). 1.2. Applicazione "brute force" della definizione operativa: - tutti gli "altri" punti dalla stessa parte; - CGAL::left_turn( p1, p2, q ) [ --> programma ]. 1.3. Casi degeneri! - "Tutti gli altri punti a sinistra"...? - in prima istanza e' tipico (e utile) prescindere dai casi degeneri (degeneracies); - Analisi sommaria del problema: "configurazione generica" (general configuration); - come procedere nell'eventualita' di punti del contorno allineati lungo una retta? - cosa mi prefiggo di ottenere? - conseguenze per l'integrita' della costruzione (relazioni fra entita' geometriche). 1.4. Analisi dei costi computazionali - identificazione dei lati del convex hull; - stima dei costi dell'algoritmo "brute force": O( n^3 ) 1.5. Opportunita' di organizzare spigoli/vertici del contorno del convex hull in modo ordinato: - stima dei costi computazionali nel caso peggiore (schema ingenuo, ma fin qui non influisce un gran che): O( n^2 ) - quali implicazioni nei casi degeneri? 1.6. Robustezza dell'approccio naive. - nel caso di perturbazioni critiche introdotte dalle approssimazioni dell'aritmetica FP... - ...e' in gioco l'integrita' strutturale del risultato! 2. Si pu˜ fare di meglio in termini di prestazioni? - Se si restasse "ancorati" al contorno? - Occorre individuare un primo vertice... - Jarvis' March (1973): O( hn ) ! [ --> programma ] - Caso peggiore: O( n^2 ) - Tuttavia efficiente se h << n ... Riferimenti: v. sez. 1.1 del libro consigliato; schede "convex_hull.pdf". R.A. Jarvis, "On the identification of the convex hull of a finite set of points in the plane", Information Processing Letters, 2, 1973. *** Lezione 3 - 6/03/23 *** 1. Lower bound per i costi computazionali. - Fino a che punto possiamo sperare di migliorare le prestazioni? - Soluzione: lati del convex hull... ordinati! - Problema dell'ordinamento di una sequenza numerica si puo' ridurre al problema della costruzione del convex hull: p. es., insieme di punti p = (x, x^2) - Lower bound: Omega( n log n ) - O( n log n ) ottimale (e perseguibile nel caso peggiore! -- vedi seguito). - Jarvis' March efficiente se ci si aspetta h(n) <= log(n) ! (caso medio) 2. Complessita' intrinseca del convex hull. - Ma quanti lati/vertici ci si pu˜ aspettare per n punti? Quanti vertici del contorno rispetto ai punti in input? - Ovviamente dipende dalla distribuzione dei punti. - Har-Peled (1997, 2011): [ progetto di uno studente ] O( n^(1/3) ) per distribuzione uniforme in un disco (cenni alla struttura della dimostrazione); O( log n ) per distribuzione uniforme in un triangolo/quadrato; O( k log n ) per distribuzione uniforme in un poligono di k lati. - Jarvis' March Ok per distribuzione uniforme in un triangolo/quadrato... - O si puo' fare ancora meglio nelle stesse ipotesi? - Golin & Sedgewick (1988): [ progetto di uno studente ] n punti distribuiti uniformemente in un quadrato... costruzione che consente di rimuovere molti punti interni in O( n ) ... lasciando O( n^(1/2) ) candidati vertici del convex hull. - Golin & Sedgewick + Jarvis' March (distribuzione uniforme in un quadrato): O( n ) + O( n^(1/2) ) * O( n^(1/2) ) = O( n ) ! -- costo atteso. - E certamente non si puo' fare meglio di O( n ) . 3. Algoritmi per la costruzione del convex hull di un insieme finito di punti nel piano: Graham's scan. 3.1. Approccio incrementale per un insieme di punti S. - lower hull di S' < S --> lower hull di S" = S' + p - ordinamento appropriato dei punti: coordinata x crescente; - impostazione intuitiva dello schema algoritmico (visualizzazione passo passo); - normalmente le questioni di dettaglio sono affrontate in una fase successiva - upper hull: procedimento simmetrico. 3.2. Casi degeneri: piu' punti con la stessa coordinata x. - ordinamento lessicografico dei punti; - interpretazione geometrica dell'ordinamento lessicografico (perturbazione "simbolica"). 3.3. Casi degeneri: allineamento di punti. - "piega" a sinistra in senso stretto. 3.4. Robustezza. - realizzata almeno nel senso dell'integrita' strutturale (confronta schema "brute force"). 3.5. Graham's scan (vedi codice in convex_hull.cpp): - costruzione incrementale del lower hull; - costruzione incrementale dell'upper hull. 3.6. Analisi della correttezza. - invarianti della scansione: lower hull e convessita'; - conservazione delle proprieta' invarianti: non ci sono punti "al di sotto" (a destra) del lower hull e il lower hull e' convesso (pieghe a sinistra); - simmetricamente per l'upper hull. 3.7. Analisi dei costi computazionali. - ordinamento dei punti: O( n log n ); - "ammortamento" del contributo del ciclo (while) interno; - lower + upper hull: O( n ); - E' concepibile un algoritmo piu' efficiente nel caso peggiore? 3. Esercizio: - costruzione del convex hull tramite diverso ordinamento, angolare, alla base del procedimento Graham's scan (come partire? serve calcolare gli angoli?). Riferimenti: v. cap. 1 del libro consigliato; schede "convex_hull.pdf". S. Har-Peled, "On the Expected Complexity of Random Convex Hulls", ArXiv e-prints, 2011. M. Golin & R. Sedgewick, "Analysis of a Simple Yet Efficient Convex Hull Algorithm", Proc. of the 4th Symposium on Computational Geometry, 1988. F. P. Preparata and S. J. Hong, "Convex Hulls of Finite Sets of Points in Two and Three Dimensions", Comm. of the ACM, 20(2), 1977 *** Lezione 4 - 7/03/23 *** 1. Algoritmi per la costruzione del convex hull di un insieme finito di punti nel piano: approccio divide-et-impera. 1.1. Schema dell'algoritmo: - impostazione di massima; - ordinamento lessicografico e bipartizione dei punti; - convex hull dei due sottoinsiemi di punti; - spigoli "tangenti". 1.2. Correttezza: - analisi della tecnica per selezionare e connettere i vertici utili delle costruzioni ricorsive. 1.3. Analisi dei costi. - relazione: T(n) = 2 T(n/2) + O( n ); - soluzione: O( n log n ); - un'occhiata al codice. 2. Algoritmi per la costruzione del convex hull: approccio incrementale randomizzato. 2.1. Schema generale. - "conflitti" e grafo dei conflitti; - esempio: cenni relativi al caso dell'ordinamento (quick sort rivisitato?). 2.2. Approccio randomizzato alla costruzione del convex hull. - particolarizzazione dello schema generale nel caso del convex hull; - definizione dei conflitti; - impostazione di massima dell'algoritmo randomizzato; - caratterizzazione del procedimento (visualizzazione). Riferimenti: v. cap. 1 del libro consigliato; schede "convex_hull.pdf". F. P. Preparata and S. J. Hong, "Convex Hulls of Finite Sets of Points in Two and Three Dimensions", Comm. of the ACM, 20(2), 1977 O. Devillers, "An introduction to randomization in computational geometry", Theoretical Computer Science, 157, 1996 *** Lezione 5 - 13/03/23 *** 1. Algoritmi per la costruzione del convex hull: approccio incrementale randomizzato (seguito). 1.1. Ricapitolazione intuitiva dell'approccio: - Schede ("convex_hull.pdf"). 1.2. Approccio randomizzato alla costruzione del convex hull. - convex hull iniziale: triangolo; - definizione dei conflitti nel caso del convex hull; - ipotesi: randomizzazione; - stima dei costi nel caso medio: backward analysis; - progressione armonica: O( log n ); - costo atteso: O( n log n ); - Codice dell'algoritmo incrementale randomizzato. 1.3. Osservazione: - Nel caso medio, tre algoritmi O( n log n ) completamente diversi! 1.4. Modellini con il codice degli algoritmi presentati che applicano i tre approcci: "convex_hull.cpp" 2. Dal caso statico al caso semi-dinamico (solo inserimenti). - Aggiornamenti del convex hull determinati dall'introduzioni di nuovi punti; - 'Conflict graph' --> 'influence graph'; - Raffinamento dello schema nel caso semi-dinamico; - Cenni relativi al caso dell'ordinamento; - Algoritmo semi-dinamico per il convex hull: alberi costruiti a partire dalle regioni associate ai tre lati del triangolo iniziale. 3. Generalizzabilita' in 3D. - La strategia Graham's scan non si presta ad immediate generalizzazioni in spazi a piu' di due dimensioni... - schema divide-et-impera (v. Preparata & Hong); - schema randomizzato (v. Devillers). 4. Schema ricorsivo di Preparata & Hong per il convex hull in 3D. 4.1. Analisi intuitiva dei costi computazionali. 4.2. Note a margine: relazione fra numero di vertici, spigoli e facce di un poliedro. - Dimostrazione della formula di Eulero nella forma: V + F = E + C + 1 - Caso base: numero di vertici V = 1; numero di spigoli E = 0; numero di facce F = 1; numero di componenti connesse C = 1. - Induzione: aggiungendo un vertice isolato V' = V+1, C' = C+1 (inoltre E' = E, F' = F) congiungendo con un nuovo spigolo vertici che appartengono a componenti sconnesse E' = E+1, C' = C-1 (inoltre V' = V, F' = F) congiungendo con un nuovo spigolo vertici che appartengono alla stessa componente connessa E' = E+1, F' = F+1 (inoltre V' = V, C' = C) 4.3. Dimostrazione che (assumendo le opportune ipotesi): V = O( E ) E = O( V ) F = O( E ) - Ipotesi e inferenze: non ci sono vertici isolati V <= 2E Non piu' di uno spigolo fra due vertici F <= 2E/3 (2E semispigoli e >= 3 semispigoli per faccia...) V + F >= E + 2 E <= V + F - 2 < V + 2E/3 E < 3V F < 2V 5. Carrellata di risultati relativi a convex hull con h vertici nel contorno (algoritmi output-sensitive). 5.1. Algoritmi O( n h ) [es. Jarvis; v. lezione 2]. - semplice... - quando converrebbe? - confronto O( h ) vs. O( log n ) 5.2. Algoritmi ottimali "output sensitive" [es. Chan]: O( n log h ) - strutturalmente piu' complessi. - ma vedi anche risultati di Har-Peled (1997, 2011) e Golin & Sedgewick (1988). Riferimenti: v. cap. 1 e sez. 2.1 del libro consigliato; schede "convex_hull.pdf". F. P. Preparata and S. J. Hong, "Convex Hulls of Finite Sets of Points in Two and Three Dimensions", Comm. of the ACM, 20(2), 1977 O. Devillers, "An introduction to randomization in computational geometry", Theoretical Computer Science, 157, 1996 T. M. Chan, "Optimal Output-Sensitive Convex Hull Algorithms in Two and Three Dimensions", Discrete Comput. Geom. 16, 1996 *** Lezione 6 - 14/03/23 *** 1. Introduzione alla tecnica di plane sweep: - Ingredienti: sweep line, eventi; - P.es., approccio a problemi di intersezione di segmenti nel piano. 2. Tecnica di plane sweep applicata a problemi di intersezione di un insieme di segmenti nel piano. 2.1. Complessita' dell'output nel caso pessimo. 2.2. Abbozzo: intersezione di un segmento con tutti gli altri intercettati dalla sweep line. - "Eventi": ENTER / EXIT; - Ordinamento lessicografico degli eventi = estremi dei segmenti. 2.3. Test di intersezione in tempo O( n log n ): algoritmo di Shamos & Hoey. - Eventi come sopra; - Ordinamento dei segmenti intercettati dalla sweep line in relazione al punto di intersezione (struttura BST). 3. Tecnica di plane sweep applicata a problemi di intersezione di un insieme di segmenti nel piano. - Visualizzazione passo-passo del processo di plane sweep nei casi dell'algoritmo ingenuo e del test di intersezione; - Richiamo delle basi della correttezza dell'algoritmo per il test di intersezione. 4. Tecnica di plane sweep applicata a problemi di intersezione di un insieme di segmenti nel piano (seguito). - Analisi dei costi dell'algoritmo per il test di intersezione; - "Element uniqueness": dimostrazione del lower bound; - Richiamo delle basi della correttezza dell'algoritmo per il test di intersezione. 5. Esercizio: - analogo algoritmo usando i semipiani esterni individuati dagli spigoli del convex hull al posto dei settori esterni (cosa succede in caso di ambiguita'?). Riferimenti: v. sez. 2.1 del libro consigliato; schede "convex_hull.pdf", "plane_sweep.pdf". M.I. Shamos and D.J. Hoey, "Geometric intersection problems", Proc. Conf. Foundations of Computer Science, 1976 *** Lezione 7 - 20/03/23 *** 1. Tecnica di plane sweep applicata a problemi di intersezione di un insieme di segmenti nel piano (seguito). - Analisi del codice degll'algoritmo di Shamos & Hoey (edi codice esempi "plane_sweep.cpp"); - Trattamento di alcuni casi degeneri. 2. Algoritmo di Bentley & Ottmann. 2.1. Plane sweep. - "Eventi": ENTER / EXIT / SWAP; - Coda con priorita' EQ: accesso secondo l'ordine lessicografico; - Ordinamento dei segmenti intercettati dalla sweep line in relazione al punto di intersezione (struttura BST). 2.2. Ipotesi semplificative: - nessun segmento parallelo alla sweep line; - segmenti non sovrapposti (= piu' di un punto di intersezione); - estremi non intersecano altri segmenti; - nessun punto comune a piu' di due segmenti. 2.3. Visualizzazione passo-passo del processo di plane sweep. - punti di intersezione a sinistra della sweep line? - puo' accadere che il test di intersezione di due segmenti venga ripeturo piu' di una volta? 3. Discussione dell'algoritmo di Bentley & Ottmann. 3.1. Correttezza. - Osservazione: prima di intersecarsi due segmenti diventano adiacenti nella struttura associata alla sweep line; - Invariante: tutte le intersezioni nell'area spazzata dalla sweep line sono state determinate; - Raffinamento delle strutture introdotte da Shamos & Hoey e trattamento degli eventi replicati. 3.2. Analisi: n segmenti + k intersezioni. - Eventi: O( n + k ) - Elaborazione di un evento: O( log n ) - Tempo: O( (n+k) log n ) - Spazio: da O( n+k ) a O( n ) [raffinamento tecnico] - Gestione di eventi SWAP ri-generati piu' volte. Riferimenti: v. sez. 2.1 del libro consigliato; schede "plane_sweep.pdf". M.I. Shamos and D.J. Hoey, "Geometric intersection problems", Proc. Conf. Foundations of Computer Science, 1976 J.L. Bentley and T. A. Ottmann, "Algorithms for Reporting and Counting Geometric Intersections", IEEE Trans. on Computer, C-28(9), 1979 *** Lezione 8 - 21/03/23 *** 0. Nota a margine: Problema dell'unicita' relativa a numeri interi (Lower bound dei costi computazionali). - La dimostrazione proposta (vedi schede) vale per collezioni finite di numeri reali, ma anche limitatamente ai razionali (assumendo alpha razionale, che e' consistente con il valore sostituito nel caso di permutazioni di razionali); - Il problema per una collezione di razionali si puo' ridurre a un corrispondente problema per una collezione di interi (moltiplicando i razionali per il minimo comune multiplo di tutti i 'denominatori' coinvolti denominatori). 1. Discussione dell'algoritmo di Bentley & Ottmann (seguito). 1.1. Visualizzazione dell'esecuzione dell'algoritmo di Bentley-Ottmann. 1.2. Analisi del codice del modello (vedi codice esempi "plane_sweep.cpp"). 1.3. Superamento di alcune ipotesi semplificative. - Trattamento dei segmenti verticali; - Trattamento di intersezioni che coinvolgono estremi e/o piu' di due segmenti. 1.4. Eventi "ibridi" aggiornati dinamicamente e stima dei costi raffinata in relazione al numero i di intersezioni: O( (n+i) log n ) 2. Variazioni sul tema. 2.1. Algoritmo ottimale nel caso peggiore, di interesse teorico. - Chazelle & Edelsbrunner: O( n log n + k ) 2.2. Tecniche incrementali basate su randomization. - Suddivisioni trapezoidali (da riprendere piu' in dettaglio successivamente); - "Conflitti" e aggiornamento incrementale: locate (estremo) + split + merge (regioni della suddivisione); - Mulmuley: costo nel caso medio O( n log n + k ) Riferimenti: v. cap. 2.1 del libro consigliato; schede "plane_sweep.pdf". J.L. Bentley and T.A. Ottmann, "Algorithms for Reporting and Counting Geometric Intersections", IEEE Trans. on Computer, C-28(9), 1979 B. Chazelle & H. Edelsbrunner, "An Optimal Algorithm for Intersecting Line Segments in the Plane", J. ACM, 39(1), 1992 K. Mulmuley, "A Fast Planar Partition Algorithm, I", J. Symbolic Computation, 10, 1990 *** Lezione 9 - 27/03/23 *** 1. Appendice all'algoritmo di Bentley & Ottmann. 1.1. Caso in cui i segmenti sono orizzontali o verticali: - adattamento dello schema relativo al caso generale (applicazione: VLSI); - riduzione dei costi computazionali. 1.2. Conteggio delle intersezioni nel caso in cui i segmenti sono orizzontali o verticali: - ulteriori raffinamenti; - costi computazionali. 2. Struttura DCEL: Doubly-Connected Edge List (struttura essenzialmente introdotta da Muller & Preparata; vedi schede "dcel.pdf"). 2.1. Ingredienti: - vertici; - spigoli --> semi-spigoli; - facce; 2.2. Rappresentazione delle informazioni geometriche e topologiche: - record associati a vertici, spigoli e facce. 3.3. "Navigazione" attraverso una DCEL: - considerazioni legate all'orientazione dei semi-spigoli. 2.4. Esempio. Riferimenti: v. cap. 2.1 del libro consigliato; schede "plane_sweep.pdf". v. cap. 2.3 del libro consigliato; schede "dcel.pdf". J.L. Bentley and T.A. Ottmann, "Algorithms for Reporting and Counting Geometric Intersections", IEEE Trans. on Computer, C-28(9), 1979 *** Lezione 10 - 28/03/23 *** 1. Sovrapposizione di suddivisioni piane rappresentate da DCEL. 1.1. Introduzione dell'approccio al problema: - elaborazione generale tramite plane sweep; - aggiustamenti locali relativi a ciascun vertice. 1.2. Interventi locali relativi alla rete di vertici e spigoli. - casistica: sommario delle tipologie di eventi; - esempio. 2. Sovrapposizione di suddivisioni piane rappresentate da DCEL (seguito). 2.1. Sommario delle tipologie di eventi. 2.2. Interventi locali relativi alla rete di vertici e spigoli - discussione di un esempio; - incidenza dei costi delle operazioni locali. 2.3. Analisi dei costi per la creazione della rete di vertici e spigoli della sovrapposizione: O( (n+k) log n ) dove n = complessita' delle suddivisioni di input k = complessita' della suddivisione risultante 2.4. Integrazione delle informazioni relative alle facce. - facce e contorni esterni; - "buchi" e contorni interni; - determinazione dei cicli di semi-spigoli; - verifica se un contorno e' interno o esterno; - individuazione dei contorni che delimitano (esternamente e internamente) la stessa faccia. 2.5. Correttezza dell'approccio. 2.6. Analisi dei costi complessivi: O( (n+k) log n ) 3. Cenni a possibili applicazioni della sovrapposizione di suddivisioni piane rappresentate da DCEL. Riferimenti: v. cap. 2.3 del libro consigliato; schede "dcel.pdf". D.E. Muller and F.P. Preparata, "Finding the Intersection of Two Convex Polyhedra", Theoretical Computer Science, 7(2), 1978 *** Lezione 11 - 3/04/23 *** 1. Problemi affrontabili attraverso triangolazioni. - Caratterizzazione intuitiva di una trianglazione; - Contestualizzazione: "Guarding art galleries"; - Strumenti: triangolazione + tricolorazione. 2. Triangolazione di un poligono semplice. 2.1. Definizioni: - poligono semplice (i lati non si incrociano, senza cavita'); - diagonale (segmento aperto fra due vertici del poligoono, contenuto interamente all'interno del poligono); - triangolazione (suddivisione in triangoli, tramite diagonali che non si incrociano); - non unicita', in generale, di una triangolazione. 2.2. Esistenza di una triangolazione. - ogni poligono semplice di n vertici ammette una triangolazione di n-2 triangoli; - dimostrtazione per induzione (individuazione di una diagoonale e triangolazione delle componenti risultanti); - dimostrazione "costruttiva" --> algoritmo per costruire una triangolazione, ma inefficiente. 3. "Sorveglianza" di un poligono semplice (art gallery problem). 3.1. Soluzione "sub-ottimale": - Soluzione ottimale: problema NP-hard; - Approccio pragmatico, basato su triangolazione: vertici condivisi da piu' triangoli. 3.2. Tricolorazione dei vertici di un poligono semplice. - Obiettivo: Assegnazione di colori diversi ai tre vertici di ciascun triangolo. 3.3. Esistenza di una tricolorazione: - grafo duale della triangolazione: albero; - colorazione tramite (p.es.) visita in profondita'. 3.4. Soluzione pragmatica: - scegliendo un opportuno colore: <= n/3 vertici; - esistono poligoni per cui questa soluzione e' ottimale. 4. Algoritmo O( n log n ) per la triangolazione. 4.1. Impostazione: - suddivisione in componenti x-monotone; - triangolazione delle componenti x-monotone; - approccio: plane sweep. 4.2. Proprieta' di monotonicita'. - definizione di monotonicita' rispetto a una direzione; - lower/upper boundary; - classificazione dei vertici in relazione alla x-monotonicita': START, END, lower/upper REGULAR, SPLIT, MERGE - esempi; - monotonicita' ricondotta alla non esistenza di vertici SPLIT/MERGE: dimostrazione della proprieta'; - idea: introduzione di diagonali per tagliare il poligono in corrispondenza ai vertici di tipo SPLIT e MERGE. 5. Impostazione della tecnica di plane sweep ai fini della suddivisione di un poligono semplice in componenti x-monotone. 5.1. Strutture. - Event queue (EQ): eventi = vertici, popolata completamente all'inizio del processo; - Sweep line structure (SL): inseriti solo spigoli del contorno inferiore di una componente x-monotona (interno del poligono sopra). 5.2. Tipi di eventi/vertici: - START, END, LOWER_REGULAR, UPPER_REGULAR, SPLIT, MERGE; - orientamento degli spigoli e angolo interno. 5.3. Invarianti del processo di plane sweep. - "helper" di un vertice e introduzione di diagonali. 5.4. Operazioni principali. - insert(e) : inserimento di un nuovo spigolo in SL (contorno inferiore) in corrispondenza a eventi START, LOWER_REGULAR, SPLIT; - remove(e) : rimozione di uno spigolo da SL (contorno inferiore) in corrispondenza a eventi END, LOWER_REGULAR, MERGE; - process(v) : trattamento di un vertice per un'eventuale diagonale in corrispondenza a eventi UPPER_REGULAR, SPLIT, MERGE. Riferimenti: v. sezz. 3.1 e 3.2 del libro consigliato; schede "polygon_triangulation.pdf". D.T. Lee & F.P. Preparata, "Location of a Point in a Planar Subdivision and Its Applications", SIAM Journal on Computing, 6(3), 1977 *** Lezione 12 - 4/04/23 *** 1. Algoritmo per la suddivisione di un poligono semplice in componenti x-monotone. 1.1. Elaborazione degli eventi secondo (Lee & Preparata, 1977; vedi schede "polygon_triangulation.pdf" e modello codice): - START: insert; - END: remove; - LOWER REGULAR: remove + insert; - UPPER REGULAR: process; - SPLIT: process + insert; - MERGE: remove + process. 1.2. Ruolo del "trapezoide fra due vertici che coinvolgono la stessa componente x-monotona. 2. Analisi: - Invarianti; - Tempo: O( n log n ) - Spazio: O( n ) 3. Triangolazione di un poligono x-monotono. - Invarianti e analisi completa dei casi; - Esemplificazione di alcune situazioni (animazione); - Analisi dei costi. 4. Note a margine: - Algoritmo di Chazelle (1990/91): O( n ) [poligono semplice]; - Tetraedrizzazione di un poliedro: analisi di Chazelle (1984) sulla necessita' di introdurre O( n^2 ) punti aggiuntivi. Riferimenti: v. sezz. 3.1-3.3 del libro consigliato; schede "polygon_triangulation.pdf". D.T. Lee & F.P. Preparata, "Location of a Point in a Planar Subdivision and Its Applications", SIAM Journal on Computing, 6(3), 1977 B. Chazelle "Triangulating a Simple Polygon in Linear Time", Discrete & Computational Geometry, 6(5), 1991 B. Chazelle "Convex Partitions of Polyhedra: A Lower Bound and Worst-case Optimal Algorithm", SIAM Journal on Computing, 13(3), 1984 *** Lezione 13 - 17/04/23 *** 1. Decomposizione x-monotona e triangolazione di un poligono semplice attraverso i modelli di codice. - Discussione del codice (versione che assume alcune ipotesi semplificative); - Applicazione della struttura DCEL (CGAL) per la rappresentazione di una suddivisione del piano. 2. Esercizio: triangolazione di un poligono semplice (uso di DCEL) a partire dai moduli realizzati. 3. Mappe trapezoidali. 3.1. Caratterizzazione di una mappa trapezoidale "ingenua" finalizzata all'efficienza di point-location: - "Bounding box"; - Point location in O( log n ) - Ma spazio di memoria O( n^2 ) ! 3.2. Revisione della mappa trapezoidale: - Estensioni verticali in corrispondenza agli estremi dei segmenti; - Ipotesi semplificative; - Costruzione tramite plane sweep (cenni) e problema di consentire una point location efficiente; - Un diverso approccio: algoritmo randomizzato incrementale. 3.3. Regioni di una mappa trapezoidale: - Classificazione delle tipologie; - Complessita' strutturale: |V| <= 6n + 4, |T| <= 3n + 1 (per n segmenti). 3.4. Algoritmo randomizzato incrementale (costruzione): - DAG per incanalare la point location; - Tipologie di nodi: x-nodi, y-nodi, trapezoidi; - Invarianti della costruzione; - Esemplificazione. Riferimenti: v. cap. 3, sezz. 6.1 e 6.2 del libro consigliato; schede "trapezoidal_map.pdf". K. Mulmuley "A fast planar partition algorithm - I" Journal of Symbolic Computation, 10(3), 1990 *** Lezione 14 - 18/04/23 *** 1. Algoritmo randomizzato per costruire una mappa trapezoidale (vedi schede "trapezoidal_map.pdf"). 1.1. Fasi salienti dell'approccio. - Illustrazione attraverso un esempio. 1.2. Stima del costo di point location: - E[ lunghezza cammino attraversi il DAG ] = O( log n ) - Dimostrazione basata sulla tecnica di "backward analysis". 1.3. Stima dei costi in termini di spazio di memoria: - E[ dimensione del DAG ] = O( n ) - Dimostrazione basata sulla tecnica di "backward analysis". Riferimenti: v. sezz. 6.1-6.3 del libro consigliato; schede "trapezoidal_map.pdf". K. Mulmuley "A fast planar partition algorithm - I" Journal of Symbolic Computation, 10(3), 1990 R. Seidel "A Simple and Fast Incremental Randomized Algorithm for Computing Trapezoidal Decompositions and for Triangulating Polygons" Computational Geometry: Theory & Applications, 1(1), 1991 *** Lezione 15 - 24/04/23 *** 1. Algoritmo randomizzato per costruire una mappa trapezoidale (seguito). 1.1. Ricapitolazione dei passi essenziali. - Stima dei costi di point location e in termini di spazio di memoria; - Corrispondenze del ruolo della "backward analysis" nei due casi. 1.2. Stima dei costi di preelaborazione: - E[ preprocessing ] = O( n log n ) 1.3. In sintesi... - Costo della preelaborazione: P(n) = O( n log n ) - Costo atteso di point location: Q(n) = O( log n ) - Dimensione attesa di DAG e mappa: S(n) = O( n ) 2. Trattamento dei casi "degeneri". 2.1. Ipotesi semplificative assunte: - Vertici in "configurazione generale"; - Query points interni alle regioni trapezoidali. 2.2. Indebolimento della prima ipotesi: - Perturbazioni simboliche: trasfromazione affine "immaginata"; - Conseguenze relative alla mappa trapezoidale. 2.3. Indebolimento della seconda ipotesi: - Ruolo dell' "epsilon" immaginato. 3. Problema dell'intersezioni di segmenti rivisitato attraverso una mappa trapezoidale. - Intersezione di segmenti e mappa trapezoidale; - Complessita' strutturale della mappa trapezoidale; 4. Approccio incrementale randomizzato basato su mappe trapezoidali. - Impostazione dell'algoritmo (Mulmuley + Seidel); - Aggiornamenti incrementali. Riferimenti: v. sezz. 6.1-6.3 del libro consigliato; schede "trapezoidal_map.pdf" e "randomized_approach.pdf". K. Mulmuley "A fast planar partition algorithm - I" Journal of Symbolic Computation, 10(3), 1990 R. Seidel "A Simple and Fast Incremental Randomized Algorithm for Computing Trapezoidal Decompositions and for Triangulating Polygons" Computational Geometry: Theory & Applications, 1(1), 1991 R. Seidel "Backwards Analysis of Randomized Geometric Algorithms" New Trends in Discrete and Computational Geometry, 1993 *** Lezione 16 - 2/05/23 *** 1. Intersezioni di segmenti attraverso mappe trapezoidali: Costi computazionali. - Backward analysis; - Analisi dettagliata; - Valutazione chiave: E[ k_R ] = O( k n^2/r^2 ) dove k = numero complessivo di intersezioni k_R = numero di intersezioni per un sottoinsieme R di r segmenti (vedi schede "randomized_approach"). 2. Caso peggiore dell'algoritmo incrementale randomizzato per la determinazione delle intersezioni di un insieme segmenti e interpretazione per k = O( n^2 ). (vedi schede "randomized_approach"). 3. Raffinamento dell'analisi dei costi attesi dell'algoritmo incrementale randomizzato per le intersezioni di segmenti. - Costo atteso relativo all'inserimento del segmento r-imo; - Stima dei costi nel caso peggiore. (vedi schede "randomized_approach"). 4. Algoritmo randomizzato per costruire una mappa trapezoidale attraverso un modello di codice. - Discussione del codice (che assume ipotesi semplificative). Riferimenti: schede "randomized_approach.pdf". K. Mulmuley "A fast planar partition algorithm - I" Journal of Symbolic Computation, 10(3), 1990 R. Seidel "Backwards Analysis of Randomized Geometric Algorithms" New Trends in Discrete and Computational Geometry, 1993 *** Lezione 17 - 8/05/23 *** 1. Point location in suddivisioni piane x-monotone: famiglia di separatori e ordinamento delle regioni x-monotone. - Relazione "stare sopra/sotto" fra componenti monotone (regioni, spigoli, vertici, separatori); - Relazione "stare immediatamente sopra/sotto" fra regioni adiacenti; - Proprieta' delle relazioni introdotte: aciclicita', identita' delle chiusure transitive; - Insieme di "separating chains". 2. Point location in suddivisioni piane x-monotone (seguito): famiglia di separatori e ordinamento delle regioni x-monotone. - Successione regioni/separatori e spigoli condivisi da piu' separatori (successivi); - Esistenza di una famiglia di separatori per qualsiasi suddivisione monotona. 3. Point location in suddivisioni piane x-monotone: schema di point-location di Lee & Preparata. - Struttura dell'algoritmo; - Analisi dei costi: O( log^2 m ) [m spigoli]; - Revisione dello schema di point-location compatibile con una struttura che occupa spazio O( m ) in memoria; - spigoli e "gap". Riferimenti: schede "layered_dag.pdf". D.T. Lee and F.P. Preparata, "Location of a Point in a Planar Subdivision and Its Applications", SIAM J. of Computing, 6, 1977 *** Lezione 18 - 9/05/23 *** 0. Richiamo del ruolo dell'albero (fissato a priori) per incanalare la ricerca (point location): - ogni spigolo e' rappresentato una sola volta; - resta il costo log-quadro di point location. 1. Point location in suddivisioni piane x-monotone: algoritmo di Edelsbrunner, Guibas & Stolfi. - Raffinamento delle catene associate ai separatori; - Layered DAG: nodi di tipo x-test, edge-test e gap-test; - Ulteriore revisione dello schema di point-location; - Point-location in O( log m ). 2. Algoritmo di Edelsbrunner, Guibas & Stolfi: complessita' della rappresentazione del DAG. - Calcolo di una stima dello spazio di memoria richiesto; - Numero di nodi di x-test <= 4m. Riferimenti: schede "layered_dag.pdf". H. Edelsbrunner, L.J. Guibas and J. Stolfi, "Optimal Point Location in a Monotone Subdivision", SIAM J. of Computing, 15(2), 1986 D.T. Lee and F.P. Preparata, "Location of a Point in a Planar Subdivision and Its Applications", SIAM J. of Computing, 6, 1977 *** Lezione 19 - 15/05/23 *** 1. Algoritmo di Edelsbrunner, Guibas & Stolfi: costruzione del layered DAG. - Struttura del Layered DAG piu' in dettaglio; - Raffinamento bottom-up delle catene associate ai separatori; - Integrazione di un albero di nodi di x-test per la localizzazione in corrispondenza al separatore/radice dell'albero dei separatori. 2. Algoritmo di Edelsbrunner, Guibas & Stolfi: stima dei costi di preelaborazione. - Costi del raffinamento delle catene: O( m ); - Costi di costruzione delle catene, (visita in ordine topologico di due grafi): O( m ); - Identificazione del least common ancestor di due nodi in O( 1 ). 3. Ricapitolazione dei costi computazionali: - Point-location: O( log m ) - Spazio di memoria: O( m ) - Preelaborazione: O( m ) 4. Diagrammi di Voronoi. 3.1. Definizioni. 3.2. Caratterizzazione (i): - Bisettori di coppie di siti e spigoli del diagramma; - Celle come intersezione di semipiani; - Convessita' delle celle; - bisettori dei lati del convex hull. 3.3. Proprieta' di connessione: - caso di punti (tutti) allineati; - caso generale. Riferimenti: vedi schede "layered_dag.pdf" e "voronoi_diagram.pdf". v. sez. 7.1 e introduzione della sez. 7.2 del libro consigliato. H. Edelsbrunner, L.J. Guibas and J. Stolfi, "Optimal Point Location in a Monotone Subdivision", SIAM J. of Computing, 15(2), 1986 *** Lezione 20 - 16/05/23 *** 1. Diagrammi di Voronoi (seguito). 1.1. Complessita' strutturale: - numero di facce, spigoli, vertici. 1.2. Caratterizzazione (ii): - Cerchi per tre siti e vertici del diagramma; - Cerchi per due siti e spigoli del diagramma. 1.3. Impostazione della costruzione di un diagramma di Voronoi. - algoritmo ingenuo basato sull'intersezione di semipiani; - "lower bound" Omega( n log n ); - idee alla base della tecnica di plane-sweep di Fortune; - concetto di "beach-line". 2. Algoritmo di Fortune per la costruzione del diagramma di Voronoi: dinamica della beach-line ed eventi relativi (revisione di Guibas & Stolfi, 1988). 2.1. Struttura ed evoluzione della beach-line. - composizione attraverso archi di parabola; - y-monotonicita'; - breakpoint e spigoli del diagramma; - emergenza di nuovi archi; - estinzione di archi; - complessita' strutturale della beach-line. 2.2. Caratterizzazione delle regioni del piano in relazione alla sweep line: - sweep-line e beach-line; - regione dove il diagramma di Voronoi e' definito; - regione di incertezza, senza siti; - regione inesplorata; - interpretazione dei breakpoint. Riferimenti: v. sezz. 7.1 e 7.2 del libro consigliato. vedi schede "voronoi_diagram.pdf". S. Fortune, "A Sweepline Algorithm for Voronoi Diagrams" Algorithmica, 2(1), 1987 L.J. Guibas & J. Stolfi, "Ruler, Compass and Computer: Theoretical Foundations of Computer Graphics and CAD" NATO ASI Series, 40, 1988 *** Lezione 21 - 22/05/23 *** 1. Algoritmo di Fortune per la costruzione del diagramma di Voronoi: dinamica della beach-line ed eventi relativi (seguito). 1.3. Cambiamenti nella struttura topologica della beach-line: - site event: introduzione di un nuovo arco; - circle event: estinzione di un arco; - caratterizzazione degli eventi. 2. Algoritmo di Fortune per la costruzione del diagramma di Voronoi: strutture dati. 2.1. Rappresentazione della suddivisione: DCEL (p.es.): - trattamento degli spigoli illimitati. 2.2. Rappresentazione della struttura associata alla beach-line (albero binario di ricerca bilanciato): - foglie = archi; - nodi intermedi = breakpoint; 2.3. Coda degli eventi. 2.4. Collegamenti fra le diverse strutture: - puntatori da breakpoint a spigoli tracciati; - puntatori fra archi e circle event correlati. 3. Algoritmo di Fortune: dettagli sul processo di elaborazione. - Individuazione ed elaborazione degli eventi; - Generazione dinamica dei circle event; - Completezza ai fini dell'individuazione dei vertici; - Circle event potenziali e "false alarm". Riferimenti: v. sez. 7.2 del libro consigliato. vedi schede "voronoi_diagram.pdf". S. Fortune, "A Sweepline Algorithm for Voronoi Diagrams" Algorithmica, 2(1), 1987 L.J. Guibas & J. Stolfi, "Ruler, Compass and Computer: Theoretical Foundations of Computer Graphics and CAD" NATO ASI Series, 40, 1988 *** Lezione 22 - 23/05/23 *** 1. Algoritmo di Fortune: ricapitolazione della struttura generale. - Processo di plane sweep; - Elaborazione di site event; - Elaborazione di circle event. 2. Algoritmo di Fortune: analisi dei costi computazionali: - numero di site event; - numero di circle event effettivamente elaborati; - limitazione del numero di false alarm; - costi di accesso alle strutture e spazio di memoria. 3. Algoritmo di Fortune: trattamento dei casi "degeneri". - Allineamenti verticali di siti; - Vertici di grado maggiore di tre. 4. Altri approcci alla costruzione del diagramma di Voronoi. 4.1. Algoritmo di Shamos & Hoey (1975): - tecnica "divide et impera"; - merge dei diagrammi parziali; - spezzata che delimita il campo di influenza dei diagrammi parziali; - ruolo del convex hull. 4.2. Algoritmo di Bentley et al. (1980): - Algoritmo con costo atteso lineare, nel caso di distribuzione uniforme dei siti. Riferimenti: v. cap. 7 del libro consigliato. vedi schede "voronoi_diagram.pdf". S. Fortune, "A Sweepline Algorithm for Voronoi Diagrams" Algorithmica, 2(1), 1987 L.J. Guibas & J. Stolfi, "Ruler, Compass and Computer: Theoretical Foundations of Computer Graphics and CAD" NATO ASI Series, 40, 1988 M.I. Shamos and Hoey, "Closest-point Problems", Proc. of the IEEE Symposium on Foundations of Computer Science, 1975 J.L. Bentley, B.W. Weide & A.C. Yao "Optimal Expected-Time Algorithms for Closest Point Problems" ACM Transactions on Mathematical Software, 6(4), 1980 *** Lezione 23 - 29/05/23 *** 0. Triangolazione di un insieme di punti: - Introduzione generale; - Complessita' strutturale di una triangolazione di n punti, di cui k sul contorno del convex hull. 1. Proprieta' delle triangolazioni. - Vettore degli angoli; - "Bonta'" di una triangolazione; - Ordine lessicografico dei vettori di angoli; - Ottimalita' rispetto agli angoli; - Operazione di "edge flip"; - Spigoli "illegali" e condizioni per la verifica. 2. Triangolazioni di Delaunay. 2.1. Algoritmo "brute-force" basato su edge-flip; 2.2. Grafi di Delaunay. - definizione in relazione al diagramma di Voronoi; - proprieta': grafo piano; - caratterizzazione e configurazione generica di punti. 2.3. Grafi e triangolazioni di Delaunay. - definizione di triangolazione di Delaunay in relazione al grafo di Delaunay; - condizioni di unicita'. 2.4. Grafi e triangolazioni di Delaunay. - caratterizzazione di una triangolazione di Delaunay mutuata dalla caratterizzazione di un diagramma di Voronoi; - condizioni relative ai cerchi circoscritti ai triangoli di una triangolazione di Delaunay. 2.5. Triangolazioni "legali" e triangolazioni di Delaunay. - equivalenza dei concetti; - ottimalita' nel caso di configurazione generica di punti; - caratterizzazione negli altri casi (massimizzazione dell'angolo minimo). 3. Impostazione di un algoritmo incrementale randomizzato per calcolare una triangolazione di Delaunay. 3.1. Implicazioni dell'introduzione di un nuovo punto: - spigoli certamente legali; - spigoli che possono diventare illegali. 3.2. Approccio: - triangolazione iniziale; - randomizzazione; - point location e "legalizzazione" (ricorsiva); - operazioni finali. 3.34. Correttezza: - invarianti; - proprieta' geometriche alla base della correttezza. Riferimenti: v. sezz. 9.1 e 9.2 del libro consigliato; vedi schede "delaunay_triangulation.pdf". *** Lezione 24 - 30/05/23 *** 0. Ricapitolazione dei passaggi salienti dell'algoritmo incrementale randomizzato per costruire la triangolazione di Delaunay. 1. Struttura (DAG) per incanalare la point-location: - foglie = triangoli attuali; - nodi interni = triangoli relativi a uno stadio precedente. 2. Triangolazioni di Delaunay: Trattamento del triangolo iniziale. - Scelta del triangolo iniziale e elementi extra introdotti nel corso della triangolazione; - Trattamento simbolico dei punti di supporto; - Point location e ordine lessicografico dei punti nel caso di vertici del triangolo iniziale; - Edge flip in presenza di punti trattati simbolicamente. 3. Triangolazioni di Delaunay: Analisi dei costi. 3.1. Complessita' strutturale: - numero di triangoli e spigoli al passo generico; - valore atteso del grado di un punto; - valore atteso del numero complessivo di triangoli costruiti; - spazio di memoria O( n ). 3.2. Costi cumulativi di point location: - O( n log n ) - solo risultato; vedi eventualmente appendice schede "delaunay_triangulation.pdf" Riferimenti: v. sezz. 9.2 e 9.3 del libro consigliato; vedi schede "delaunay_triangulation.pdf". L.J. Guibas, D.E. Knuth & M. Sharir "Randomized incremental construction of Delaunay and Voronoi diagrams" Algorithmica, 7(1), 1992 K. Mulmuley "Computational Geometry: An introduction through randomized algorithms" Prentice Hall, 1994 *** Fine del corso ***