Przecięcia odcinków. Wykład /07

Podobne dokumenty
Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Matematyczne Podstawy Informatyki

Algorytmiczna teoria grafów

Ilustracja S1 S2. S3 ściana zewnętrzna

Sortowanie topologiczne skierowanych grafów acyklicznych

Rozważmy funkcję f : X Y. Dla dowolnego zbioru A X określamy. Dla dowolnego zbioru B Y określamy jego przeciwobraz:

Algorytmy i Struktury Danych

Drzewa poszukiwań binarnych

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Matematyczne Podstawy Informatyki

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Wstęp do Grafiki Komputerowej i Geometrii Obliczeniowej

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

6. Technika zamiatania (na płaszczyźnie)

Klasa III technikum Egzamin poprawkowy z matematyki sierpień I. CIĄGI LICZBOWE 1. Pojęcie ciągu liczbowego. b) a n =

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie

Lista 4. Kamil Matuszewski 22 marca 2016

Definicja pliku kratowego

Suma dwóch grafów. Zespolenie dwóch grafów

Struktury danych: stos, kolejka, lista, drzewo

Lista 0. Kamil Matuszewski 1 marca 2016

Matematyczne Podstawy Informatyki

Akademickie Mistrzostwa Polski w Programowaniu Zespołowym

Wykłady z Matematyki Dyskretnej

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Wskazówki do zadań testowych. Matura 2016

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

Matematyka dyskretna - 7.Drzewa

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska

Wprowadzenie Podstawy Fundamentalne twierdzenie Kolorowanie. Grafy planarne. Przemysław Gordinowicz. Instytut Matematyki, Politechnika Łódzka

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

Grafy co o ich rysowaniu wiedzą przedszkolaki i co z tego wynika dla matematyków

Ogólne wiadomości o grafach

SPÓJNOŚĆ. ,...v k. }, E={v 1. v k. i v k. ,...,v k-1. }. Wierzchołki v 1. v 2. to końce ścieżki.

Obcinanie prymitywów. Mirosław Głowacki Wydział Inżynierii Metali i Informatyki Przemysłowej AGH

Kombinowanie o nieskończoności. 2. Wyspy, mosty, mapy i kredki materiały do ćwiczeń

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

ALGORYTMY I STRUKTURY DANYCH

Opracowanie prof. J. Domsta 1

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

GEOMETRIA PRZESTRZENNA (STEREOMETRIA)

IX Olimpiada Matematyczna Gimnazjalistów

Sortowanie. LABORKA Piotr Ciskowski

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Złożoność algorytmów. Wstęp do Informatyki

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

ALGORYTMY I STRUKTURY DANYCH

Prawa potęgowe w grafach przepływu informacji dla geometrycznych sieci neuronowych

Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz?

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Algorytmy grafiki rastrowej. Mirosław Głowacki Wykład z Grafiki Komputerowej

Graf. Definicja marca / 1

Podstawowe własności grafów. Wykład 3. Własności grafów

Grafika inżynierska geometria wykreślna. 5. Wielościany. Punkty przebicia. Przenikanie wielościanów.

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

PLANIMETRIA CZYLI GEOMETRIA PŁASZCZYZNY CZ. 1

Matematyka dyskretna

Digraf. 13 maja 2017

Teoria grafów II. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Algorytmy dynamiczne. Piotr Sankowski. - p. 1/14

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

Geometria wykreślna. 6. Punkty przebicia, przenikanie wielościanów. dr inż. arch. Anna Wancław. Politechnika Gdańska, Wydział Architektury

Kolorowanie wierzchołków grafu

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Tworzenie gier na urządzenia mobilne

Sortowanie. Bartman Jacek Algorytmy i struktury

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1

Grafy. Graf ( graf ogólny) to para G( V, E), gdzie:

Kolorowanie wierzchołków

Terminarz rozgrywek Ekstraklasy w sezonie 2016/2017

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Algorytmiczna teoria grafów

Wykład 8. Drzewa AVL i 2-3-4

Analiza składowych głównych. Wprowadzenie

Zadanie I. 2. Gdzie w przestrzeni usytuowane są punkty (w której ćwiartce leży dany punkt): F x E' E''

Gramatyki grafowe. Dla v V, ϕ(v) etykieta v. Klasa grafów nad Σ - G Σ.

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

w jednym kwadrat ziemia powietrze równoboczny pięciobok

Jeszcze o algorytmach

G. Wybrane elementy teorii grafów

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Teoretyczne podstawy informatyki

TEORIA GRAFÓW I SIECI

Algorytmy i Struktury Danych, 9. ćwiczenia

Zadania z egzaminów z Algorytmiki

Transkrypt:

Przecięcia odcinków Wykład 2 2006/07

Problem Dane: zbiór S={s 1,...,s n } odcinków na płaszczyźnie Wynik: zbiór punktów przecięć wszystkich odcinków z S, wraz z informacją które odcinki przecinają się w poszczególnych punktach Przypadek ogólny: możliwe wiele przecięć w jednym punkcie, dopuszczalne odcinki pionowe

Algorytm FindIntersections(S) Struktury danych: H kolejka priorytetowa wszystkich znanych zdarzeń na prawo od sweep line (zdarzenie: koniec odcinka lub przecięcie) V zbalansowane drzewo odcinków przecinających sweep line, uporządkowane wg współrzędnej y punktu przecięcia

Algorytm FindIntersections(S) H końce wszystkich odcinków z S (porządek względem współrzędnej x) V //zbalansowane drzewo odcinków, porządek względem kolejności przecinania sweep line Dopóki H Ustal następny punkt p w H, usuń p z H HandleEventPoint(p)

HandleEventPoint(p) Definicje: L(p) zbiór odcinków, których lewy koniec znajduje się w p P(p) zbiór odcinków, których prawy koniec znajduje się w p C(p) zbiór odcinków, które zawierają p we wnętrzu

HandleEventPoint(p) 1. Znajdź zbiór P(p) C(p) wszystkich odcinków w V, które zawierają p [tworzą spójny obszar w porządku przecinania sweep line] 2. Jeśli L(p) P(p) C(p) >1: podaj p jako przecięcie, razem z L(p) P(p) C(p) 3. Usuń P(p) C(p) z V 4. Wstaw L(p) C(p) do V [porządek w jakim przetną sweep line tuż na prawo od p; el. C(p) zmienią kolejność] 5. Szukaj przecięć nowych sąsiadów w V.

5. Szukaj przecięć nowych sąsiadów w V. Jeśli L(p) C(p)= s l najbliższy p element w V, większy od p (wyżej) s r najbliższy p element w V, mniejszy od p (niżej) FindNewEvent(s l, s r, p) w przeciwnym razie: s najmniejszy el. V w L(p) C(p) s l najw. el. V wśród mniejszych od s FindNewEvent(s l, s, p) s największy el. V w L(p) C(p) s r najmn. el. V wśród większych od s FindNewEvent(s, s r, p)

JEŻELI FindNewEvent(s l, s r, p) TO (s l i s r przecinają się na prawo od sweep line lub na sweep line i poniżej p) oraz (punkt przecięcia s l i s r nie występuje w H) dodaj punkt przecięcia s l i s r do H.

Poprawność i koszt Poprawność: jak wcześniej Czas: O(n log n + P log n), gdzie P to liczba przecięć inicjalizacja H: O(n log n) aktualizacja H: O((P+n) log n) P+n zdarzeń przy każdym zdarzeniu: jedno usunięcie, 2 wstawienia wstawienie/usunięcie: O(log n) aktualizacja V: wstawienie/usunięcie: O(log n) liczba wstawień/usunięć = liczba odcinków otrzymanych z S poprzez podział każdego odcinka na części w punktach przecięć Czy liczba tych odcinków liniowa względem liczby przecięć? Patrz: zależność między liczbą krawędzi, wierzchołków i ścian w grafie planarnym.

Dokładniej liczba wstawień/usunięć 2 * liczba krawędzi uzyskanego grafu = 2 * n e liczba wierzchołków grafu = 2n + P = n v Euler Formula: n v n e + n f 2 czyli n e n v +n f -2 a n f n v /3.

Koszt Pamięć: drzewo V: O(n) [w nim tylko odcinki z S] kolejka [priorytetowa] H (też może być drzewo): O(P) [w najgorszym razie wszystkie przecięcia w H w tym samym czasie] Jak zmniejszyć pamięć do O(n)? w H pamiętamy przecięcia tylko tych elementów S, które są sąsiednie w V gdy wstawiamy do H przecięcie odcinki są sąsiednie gdy usuwamy jakieś odcinki z V, usuwamy też ich sąsiadów z H Poprawność: przeciąć się mogą tylko sąsiedzi Czas: liczba wstawień/usunięć do H zwiększona TYLKO o liczbę wstawień/usunięć do V.

Planarny podział płaszczyzny Podwójnie połączona lista krawędzi: wierzchołek v: współrzędne v, IncidentEdge(v) wskazuje na dowolną incydentną półkrawędź; ściana f: OuterComponent(f): wskazuje dowolną półkrawędź na zewnętrznym brzegu InnerComponents(f): lista dziur, dla każdej dziury jedna półkrawędź.

Planarny podział płaszczyzny Podwójnie połączona lista krawędzi: półkrawędź e: Origin(e) wskaźnik na wierzchołek będący początkiem e Twin(e) wskaźnik na bliźniaczą półkrawędź IncidentFace(e) wskaźnik na ścianę incydentną do e (taka ściana tylko jedna ta po lewej od skierowanej krawędzi e) Next(e) następna krawędź w IncidentFace(e) Prev(e) poprzednia krawędź w IncidentFace(e)