Geometria obliczeniowa Wykład 8

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

Algorytmy sortowania i porządkowania
Sympleksy n=2.
Grażyna Mirkowska PJWSTK 15 listopad 2000
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Minimalne drzewa rozpinające
Temat: WIELOŚCIANY KLASA III P r.
Przygotowały: Jagoda Pacocha Dominika Ściernicka
Trian_mon(P) Input: y-monotoniczny wielokąt zapamiętany jako zbiór boków, Output: triangulacja D jako zbiór krawędzi. Wyodrębnij prawy i lewy łańcuch punktów,
ALGORYTMY I STRUKTURY DANYCH
CZWOROKĄTY Patryk Madej Ia Rad Bahar Ia.
Geometria obliczeniowa Wykład 1
Geometria obliczeniowa Wykład 2
ALGORYTMY GEOMETRYCZNE.
WYKŁAD 2. Kolorowanie wierzchołków
WYKŁAD 7. Spójność i rozpięte drzewa
WYKŁAD 8. Siła spójności Wierzchołek v nazywamy wierzchołkiem cięcia grafu G, gdy podgraf G-v ma więcej składowych spójności niż G. Krawędź e nazywamy.
WYKŁAD 8. Siła spójności A,B – dowolne podzbiory V(G)
GRAFY PLANARNE To grafy, które można narysować na płaszczyźnie tak, by krawędzie nie przecinały się (poza swoimi końcami). Na przykład K_4, ale nie K_5.
Pola Figur Płaskich.
Geometria obrazu Wykład 9
Geometria obrazu Wykład 8
Geometria obrazu Wykład 12
Geometria obrazu Wykład 6
Geometria obrazu Wykład 2
WYKŁAD 7. Spójność i rozpięte drzewa Graf jest spójny, gdy dla każdego podziału V na dwa rozłączne podzbiory A i B istnieje krawędź z A do B. Definicja.
Krótki kurs geometrii płaszczyzny
GEOMETRIA PROJEKT WYKONALI: Wojciech Szmyd Tomasz Mucha.
Dodatkowe własności funkcji B-sklejanych zawężenie f do K Rozważmy funkcjeIch zawężenia do dowolnego przedziałutworzą układ wielomianów. Dla i=k ten układ.
Geometria obliczeniowa Wykład 9
Geometria obliczeniowa Wykład 3
Figury płaskie I PRZESTRZENNE Wykonała: Klaudia Marszał
Geometria obliczeniowa Wykład 4
Trójkąty.
Geometria obliczeniowa Wykład 6
Rzuty Monge’a cz. 1 dr Renata Jędryczka
Geometria obliczeniowa Wykład 7
PODSTAWOWE WŁASNOŚCI PRZESTRZENI
Geometria obliczeniowa Wykład 5
Geometria obliczeniowa Wykład 12
Geometria obliczeniowa Wykład 13
WŁASNOŚCI FIGUR PŁASKICH
Algorytmy i Struktury Danych
Geometria obliczeniowa Wykład 13 Planowanie ruchu 1.Znajdywanie ścieżki między dwoma punktami. 2.Ruch postępowy robota wielokątnego na płasz- czyźnie.
Geometria obliczeniowa Wykład 10
Grafika i komunikacja człowieka z komputerem
Geometria obliczeniowa Wykład 5 Geometryczne struktury danych 1. Drzewa odcinków 2. Drzewa czwórkowe 3. Drzewa BSP.
Geometria obliczeniowa Wykład 12 Planowanie ruchu 1.Najkrótsza ścieżka między dwoma punktami. 2.Znajdywanie ścieżki między dwoma punktami. 3.Ruch postępowy.
Geometria obrazu Wykład 6
Geometria obliczeniowa Wykład 14 Algorytmy randomizowane 1.Programowanie liniowe w R 2. 2.Lokalizacja punktu w siatce trapezów. 3.Znajdywanie średnicy.
WIELOKĄTY Karolina Zielińska kl.v Aleksandra Michałek kl v
Geometria obliczeniowa Wykład 2
Geometria obliczeniowa Wykład 13 Algorytmy randomizowane 1.Lokalizacja punktu w siatce trapezów. 2.Znajdywanie średnicy zbioru punktów w R 3. Algorytmy.
ALGORYTMY I STRUKTURY DANYCH
FIGURY PŁASKIE.
Indeksy drzewiaste. ISAM ISAM - INDEXED SEQUENTIAL ACCESS METHOD Problem: –Dany jest plik uporządkowany – w jaki sposób zrealizować efektywnie zapytanie.
Geometria obliczeniowa Wykład 10 Dualizacja liniowa c.d. 1. Poziomy 2. Otoczka wypukła Ciągi Davenporta-Schinzela Problemy optymalizacyjne 1. Problem wyważania.
Geometria obliczeniowa Wykład 6
Geometria obliczeniowa Wykład 3
Geometria obliczeniowa Wykład 3
Geometria obliczeniowa Wykład 7
Geometria obliczeniowa Wykład 1
Geometria obliczeniowa Wykład 8
Geometria obliczeniowa Wykład 5
Geometria obliczeniowa Wykład 8
Geometria obliczeniowa Wykład 6
Geometria obliczeniowa Wykład 8
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

Geometria obliczeniowa Wykład 8 Lokalizacja punktu na płaszczyźnie 1. Metoda warstwowa 2. Metoda trapezowa 3. Metoda separatorów 4. Metoda doskonalenia triangulacji

Problem. Dany jest podział D płaszczyzny (lub jej części) na wielokąty proste. Stwórz strukturę danych, która dla danego punktu p pozwoli szybko określać obszar zawierający ten punkt. Ograniczony podział można umieścić w odpowiednio dużym wielokącie wy-pukłym W o małej liczbie boków i po striangulowaniu przecięcia W i nie-ograniczonej części płaszczyzny mo-żemy ograniczyć naszą uwagę do W. Podobnie jak w przypadku lokalizacji punktu w obszarach prostokątnych, czas odpowiedzi na zapytanie o punkt będzie zależeć od rozmiaru struktury i wyboru metody jej konstrukcji.

Przykład. Lokalizacja punktów w podziale.

Metoda warstwowa. Konstrukcja struktury: Podziel przestrzeń na warstwy równoległymi prostymi przechodzącymi przez wierzchołki podziału D. Stablicuj kolejne warstwy oraz ich podział. Lokalizacja punktu: Stosując przeszukiwanie binarne znajdź: - warstwę zawierającą dany punkt, - odpowiednią część warstwy zawierającą dany punkt. Określ obszar odpowiadający znalezionej części warstwy.

Lemat. Struktura danych dla n-wierzchołkowego podziału płaszczyzny ma rozmiar O(n2) i można ją stworzyć, stosując np. algorytm zamiatania, w czasie O(n2). Dowód. W algorytmie zamiatania strukturą zdarzeń jest uporządkowana lista wierzchołków po-działu, a strukturą stanu - zrównoważone drzewo przechowujące uporządkowany ciag krawędzi przecinanych przez miotłę. Łączny czas aktualizacji struktury stanu wynosi O(n log n). Czas tworzenia struktury danych dla zapytań zależy od rozmiaru struktury stanu. Czas lokalizacji punktu w n-wierzchołko-wym podziale płaszczyzny wynosi O(log n).

Metoda trapezów. procedure TRAPEZ(D); posortuj wierzchołki podziału D względem y-ów; znajdź ich medianę ym , prostą k (y = ym) i stwórz dla niej węzeł drzewa z dwoma dowiązaniami; rozbij D względem prostej k na D1 i D2; for i := 1 to 2 do if istnieją krawędzie całkowicie przecinające Di then rozbij Di wzdłuż tych krawędzi; krawędziom przecinającym Di przypisz węzły zrównoważonego poddrzewa węzła dla prostej k z dowiązaniami do tworzonych przez nie podziałów (Tj) ; for każdy podział Tj do if Tj nie jest pusty then TRAPEZ(Tj) else stwórz liść else TRAPEZ(Di); return węzeł dla prostej k;

Równoważenie drzewa. Niech U = T1e1T2...Tk-1ek-1Tk oraz W(U) będzie liczbą wierzchołków podziału płaszczyzny zawartych w U. Niech r będzie taką liczbą, że W(T1) + ... + W(Tr-1) < W(U)/2 oraz W(T1) + ... + W(Tr) > W(U)/2. Wtedy er-1 jest korzeniem drzewa odpowiadającego U, er jego pra-wym synem, a lewym synem er jest poddrzewo odpowiadające Tr. Pozostałe dwa poddrzewa odpo-wiadają początkowemu i końco-wemu fragmentowi U. Gdy W(U) = 0, U odpowiada zrównoważone drzewo krawędzi ei z liśćmi odpowiadającymi pustym trapezom Ti . er-1 er T” Tr T’ e2 T3 T2 T1 e1

Lemat. Niech U będzie pasem odpowiadającym ciągowi T1e1T2e2 ... ek-1Tk, gdzie Ti oznacza i-ty fragment podziału pasa, a ej odpowiednią krawędź rozdzielającą. Niech W(U) oznacza liczbę wierzchoł-ków obszarów podziału płaszczyzny zawartych w U. Wtedy głębokość drze-wa odpowiadającego pasowi U szacuje się przez 3logW(U) + log n + 3, gdzie n jest całkowitą liczbą wierzchołków podziału płaszczyzny. Dowód. Indukcja po W(U). (ćwiczenia) Twierdzenie. W n-wierzchołkowym podziale pła-szczyzny lokalizujemy punkt w czasie O(log n) stosując strukturę danych o rozmiarze O(n log n) stworzoną w czasie O(n log n).

Metoda separatorów. Definicja. Separatorem nazywamy monotoniczną względem danego kierunku łamaną roz-dzielającą podział i tworzoną przez jego krawędzie. Naszym celem jest stworzenie ciągu separatorów (Sn) takiego, że : - każde dwa sąsiednie separatory wyzna-czają dokładnie jeden obszar należący do podziału D, - każdy obszar podziału jest wyznaczany przez separatory, - wszystkie wierzchołki separatorów o niższych numerach leżą po tej samej stronie separatora o numerze wyższym.

Załóżmy, że ciąg separatorów dla danego podziału jest stablicowany oraz że krawędzie każdego sepa-ratora są również stablicowane. Rozmiar struktury wynosi O(n2). Wyszukujemy binarnie separator, który znajduje się powyżej lokalizowanego punktu i taki, że po-przedzający go separator znajduje się poniżej tego punktu (wyszukujemy odpowiednią krawędź sepa-ratora i sprawdzamy, czy jest powyżej, czy poniżej danego punktu). Wyznaczamy w ten sposób obszar zawierający punkt. Lemat. Czas lokalizacji punktu w n-wierzchołkowym podziale płaszczyzny wynosi O(log2 n). Rozmiar struktury pozostaje kwadratowy, nawet gdy sąsiednie separatory mogą określać więcej niż jeden obszar podziału.

Wyznaczanie separatorów. Definicja. Niech zbiór wierzchołków podziału tworzy ciąg uporządkowany względem współrzędnej y-owej (w przypadku równych wartości - względem współ-rzędnej x-owej). Wierzchołek vk jest regularny, gdy istnieją krawędzie (vi,vk) i (vk,vj) dla i < k < j. Podział jest regularny, gdy wszystkie wierzchołki ciągu poza pierwszym i ostatnim są regularne. Każdy podział można zregularyzować stosując algorytm podobny do algo-rytmu podziału wielokąta na wielokąty monotoniczne (łączymy krawędzią wierzchołek nieregularny v z pomocnikiem sąsiadującej z v krawędzi) lub triangulując otoczkę wypukłą podziału.

Załóżmy, że krawędzie podziału są skierowane od wierzchołka o mniej-szym indeksie do wierzchołka o większym indeksie. Niech IN(v) i OUT(v) odpowiednio oznaczają zbiory krawędzi dochodzących do v i wychodzących z v. Niech W(e) oznacza wagę krawędzi e, czyli liczbę separatorów, do któ-rych należy e. Wtedy WIN(v) := eIN(v) W(e) oraz WOUT(v) := eOUT(v) W(e) . Wystarczy pokazać, że wagi można tak dobrać, aby: - waga każdej krawędzi była dodatnia, - WIN(v) = WOUT(v) dla każdego v regularnego. Pierwszy warunek zapewnia, że każda krawędź należy do co najmniej jednego łańcucha. Drugi zaś gwarantuje, że separatory są spójne i nie kończą się w wierzchołku regularnym.

for każda krawędź e do W(e) := 1; for i := 2 to n-1 do procedure WAGI for każda krawędź e do W(e) := 1; for i := 2 to n-1 do v := i-ty wierzchołek w ciągu; WIN(v) := eIN(v) W(e) ; d := pierwsza z lewej krawędź wycho- dząca z v; if WIN(v) > WOUT(v) then W(d) := WIN(v)- WOUT(v)+ W(d); for i := n-1 downto 2 do WOUT(v) := eOUT(v) W(e) ; d := pierwsza z lewej krawędź docho- dząca do v; if WOUT(v) > WIN(v) then W(d) := WOUT(v) - WIN(v) + W(d); 2 3 1 2 3 3 3

Układ separatorów określanych przez wagi krawędzi. Przykład. Układ separatorów określanych przez wagi krawędzi. 1 2 3 1 2 1 2 1 1 1 1 3

W poprzednim algorytmie przechowywa-liśmy stablicowane separatory co znacznie obciążało pamięć. Teraz stosujemy drzewo, w którego węzłach przechowujemy stablicowany ciąg krawędzi danego separatora nie należących do separa-torów odpowiadających przodkom tego sepa-ratora w drzewie. Jeśli w badanym ciągu nie ma krawędzi separatora leżącej bezpośrednio nad lub pod lokalizowanym punktem, to wy-nik badania jest taki sam jak poprzednio. Lemat. Czas lokalizacji punktu w n-wierzchołko-wym podziale płaszczyzny wynosi O(log2 n), przy wykorzystaniu struktury o rozmiarze O(n) tworzonej w czasie O(n log n). 1 6 4 5 3 2

Metoda doskonalenia triangulacji. Załóżmy, że dany podział D ma kształt striangulowanego trójkąta. procedure TRIANGLE(D) T := zbiór trójkątów tworzących D; V := {odpowiedniki trójkątów}; E := ; while |T| > 1 do wybierz niezależny zbiór wewnętrznych wierzchołków stopnia mniejszego niż 12 ; usuń z T trójkąty z tymi wierzchołkami; usuń z D wybrane wierzchołki wraz z incydentnymi krawędziami, ponownie strianguluj D i dodaj nowe trójkąty do T; V := V  {nowe trójkąty}; E := E  {(N,U): N-nowy, U-usunięty, N  S  }; return (V, E); 15 13 14 10 11 12 1 2 3 4 5 6 9 8 7 7 8 9 6 5 4 3 2 1

15 14 3 12 Lemat. Liczba poziomów w grafie jest logarytmi-czna, jego rozmiar jest liniowy względem liczby wierzchołków a każdy wierzchołek ma stopień ograniczony przez stałą. Twierdzenie. Dla n-wierzchołkowego trójkątnego po-działu możemy zlokalizować punkt w czasie O(log n) z pomocą struktury o rozmiarze O(n) stworzonej w czasie O(n). Wniosek. Dla dowolnego podziału o n wierzchołkach czas preprocessingu wynosi O(n) (korzysta-jąc z algorytmu triangulacji Chazelle). 2 1 3 5 6 7 4 8 9 1 15 2 14 12 3 4 11 5 6 13 10 7 8 9

Dziękuję za uwagę.

Ćwiczenia. Udowodnij, że wysokość drzewa tworzonego w metodzie trapezowej jest niewiększa niż 3logW(U) + log n + 3. Podaj przykład podziału, dla którego drzewo tworzone w metodzie trapezowej ma rozmiar (n log n). 3. Wielokąt P nazywamy gwiaździstym, gdy zawiera punkt p taki, że dla każdego punktu qP odcinek pq jest zawarty w P. Wierzchołki wielokąta są stablicowane. W jakim czasie można zlokalizować punkt w wielokącie gwiaździstym ? (znając punkt centralny lub nie) 4. Udowodnij, że liczba poziomów w grafie lokalizacji trójkątami jest logarytmiczna, jego rozmiar jest liniowy względem liczby wierzchołków, a każdy wierzchołek ma stopień ograniczony przez stałą.

5. Jak stworzyć strukturę, dzięki której w czasie O(log n + k), gdzie k jest liczbą rozwiązań, będzie można zlokalizować wszystkie punkty oddalone od danego o nie więcej niż d ?

Udowodnij, że wysokość drzewa tworzonego w metodzie trapezowej jest niewiększa niż 3logW(U) + log n + 3. Dowód. Indukcja po W(U). Dla W(U) = 1 jedyny wierzchołek drzewa odpowiada- jący poziomej prostej przechodzącej przez wierz- chołek podziału znajduje się w korzeniu Tr. Poddrzewa Tr oraz T’ i T” są zrównoważonymi drzewami zawierającymi co najwyżej n wierzchołków odpowiadających trapezom. Zatem wysokość całego drzewa wynosi co najwyżej log n + 3 = 3logW(U) + log n + 3. Załóżmy, że W(U) = k i dla wszystkich łańcuchów U’ takich, że W(U’) < k teza indukcji jest prawdziwa. Niech łańcuch Ur odpowiada poddrzewu Tr. Mamy dwa przypadki. 1) W(Ur)  k/2. Ponieważ dla łańcuchów U’ i U” odpowiadającym poddrzewom T’ i T” mamy W(U’) < k/2 i W(U”) < k/2 . er-1 er T” Tr T’

Zatem wysokości poddrzew T’, T” i Tr szacują się na mocy założenia indukcyjnego przez 3log(k/2) + log k + 3 = 3log k + log k, co daje oszacowanie wysokości całego drzewa przez 3log k + log k + 3  3logW(U) + log n +3. W(Ur) > k/2. Ponieważ W(U’) < k/2 i W(U”) < k/2, więc dla T’ i T” mamy te same oszacowania co powyżej. Korzeniem poddrzewa Tr jest wierzchołek odpowiadający poziomej prostej poprowadzonej przez medianę punktów podziału należących do Ur, więc wagi łańcuchów odpowiadających lewemu i prawemu poddrzewu tego drzewa szacują się przez W(Ur)/2  k/2. Zatem na mocy założenia indukcyjnego ich wysokość szacuje się przez 3log(k/2) + log k + 3 = 3log k + log k, co daje oszacowanie wysokości całego drzewa przez 3log k + log k + 3  3logW(U) + log n +3.