Geometria obliczeniowa Wykład 2

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

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
Figury płaskie-czworokąty
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,
Badania operacyjne. Wykład 2
Okręgiem o środku O i promieniu r nazywamy zbiór punktów płaszczyzny, których odległości od punktu O są równe r r - promień okręgu. r O O - środek.
CZWOROKĄTY Patryk Madej Ia Rad Bahar Ia.
Geometria obliczeniowa Wykład 1
Geometria obliczeniowa Wykład 2
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
WYKŁAD 7. Spójność i rozpięte drzewa
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 6
Autor: Olszewski Kamil Klasa I TM
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.
Graniastosłupy i Ostrosłupy
GEOMETRIA PROJEKT WYKONALI: Wojciech Szmyd Tomasz Mucha.
,, W KRAINIE CZWOROKĄTÓW ,, Adam Filipowicz VA SPIS TREŚCI
MATEMATYKAAKYTAMETAM
Geometria obliczeniowa Wykład 8
Geometria obliczeniowa Wykład 9
Geometria obliczeniowa Wykład 3
Graniastosłupy.
Figury płaskie I PRZESTRZENNE Wykonała: Klaudia Marszał
Geometria obliczeniowa Wykład 4
Trójkąty.
Geometria obliczeniowa Wykład 6
Geometria obliczeniowa Wykład 7
Wielokąty Wybierz czworokąt.
Prezentacja figury geometryczne otaczające nas na świecie
Geometria obliczeniowa Wykład 12
Geometria obliczeniowa Wykład 13
Opracowała: Julia Głuszek kl. VI b
Własności Figur Płaskich
WŁASNOŚCI FIGUR GEOMETRYCZNYCH
Algorytmy i Struktury Danych
Własności figur płaskich
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.
Grafika i komunikacja człowieka z komputerem
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.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Geometria obrazu Wykład 6
Autor: Marcin Różański
Trójkąty Katarzyna Bereźnicka
WIELOKĄTY Karolina Zielińska kl.v Aleksandra Michałek kl v
Geometria obliczeniowa Wykład 13 Algorytmy randomizowane 1.Lokalizacja punktu w siatce trapezów. 2.Znajdywanie średnicy zbioru punktów w R 3. Algorytmy.
1.problem próbkowania (sampling problem) dobór charakterystycznych punktów powierzchni w celu uzyskania najlepszego efektu przy minimalizacji ilości 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.
Figury płaskie.
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
Figury geometryczne.
Zbiory rozłączne.
Geometria obliczeniowa Wykład 3
Geometria obliczeniowa Wykład 7
Geometria obliczeniowa Wykład 1
Geometria obliczeniowa Wykład 6
Geometria obliczeniowa Wykład 8
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

Geometria obliczeniowa Wykład 2 1. Przybliżona otoczka wypukła. 2. Dynamiczna otoczka wypukła. 3. Otoczka wypukła wielokąta prostego. 4. Triangulacja wielokąta przekątnymi. 5. Triangulacja wielokąta monotonicznego. 6. Optymalna triangulacja wielokąta wypukłego.

Przybliżona otoczka wypukła. Zalety rozwiązań przybliżonych: szybkość, prostota. Wady: niedokładność wyniku. xmin:= skrajnie lewy punkt z S; xmax:= skrajnie prawy punkt z S; podziel przestrzeń między xmin a xmax na k przystających pasów; w każdym pasie i obszarach zew-nętrznych znajdź punkty skrajne względem współrzędnej y; znajdź otoczkę wypukłą dla wy-branych punktów;

Twierdzenie. Dowolny punkt pS, który nie należy do przybliżonej otoczki wypukłej, znajduje się w odległości co najwyżej (xmax-xmin)/k od tej otoczki. Dowód. Punkt p znajduje się nie dalej od brzegu przybliżonej otoczki wypukłej niż wynosi szerokość pasa. Lemat. Algorytm ma złożoność czasową O(n+k). Algorytm ten działa również w przestrzeni trójwymiarowej w czasie O(n+k2 log k). (ćwiczenia)

Dynamiczna otoczka wypukła. Dla danego ciągu wstawień i usunięć punktów ze zbioru S, chcemy stale utrzymywać aktualną otoczkę wypukłą. Otoczkę zapamiętujemy w postaci dwóch łańcuchów: górnego i dolnego. Łańcuchy przechowywane są w struk-turze zrównoważonego drzewa poszu-kiwań binarnych. Każdy liść tej struktury odpowiada punk-towi, zaś każdy węzeł odpowiada most-kowi między łańcuchami określanymi przez poddrzewa. Zapamiętujemy wskaź-niki do odpowiednich wierzchołków.

Lemat. Mostkowanie dwóch rozłącznych łańcuchów wypukłych, zawiera-jących łącznie n punktów, można wykonać w czasie O(log n). Dowód. Jest dziewięć przypadków. Dzięki wykorzystaniu struktury zrówno-ważonego drzewa poszukiwań bi-narnych, rozwiązanie każdego z nich wymaga logarytmicznego czasu. Zaznaczone fragmenty łańcuchów nie wpływają na wynik mostkowania (w pierwszym przypadku co najmniej je-den fragment nie wpływa na wynik).

Twierdzenie. Koszt każdego wstawienia lub usunięcia punktu z otoczki wynosi O(log2 n). Dowód. Wstawiając lub usuwając punkt ze struktury przechodzimy ścieżkę od korzenia do odpowiedniego liścia. Następnie aktualizujemy drzewo na tej ścieżce dokonując rotacji w celu jego zrównoważenia oraz znajdując mosty między łańcuchami otoczek punktów odpowiadających liściom poddrzew o korzeniach w synach badanego węzła. W każdym węźle poświęcamy na to O(1)+O(log n) czasu. Zatem aktualizacja struktury wzdłuż całej ścieżki wymaga czasu O(log2 n). Algorytm ten zawdzięczamy Overmarsowi i van Leeuwenowi.

Otoczka wypukła wielokąta prostego. Definicja. Wielokątem prostym nazywamy obszar ograniczony przez pojedynczy, domknięty, wielokątny łańcuch, który nie przecina się ze sobą. Zagłębieniem wielokąta prostego nazywamy obszar znajdujący się na zewnątrz wielokąta, ale wewnątrz jego otoczki wypukłej. Wierzchołki uwypuklenia będziemy przechowywać na stosie Q.

Obliczamy uwypuklenie wielokąta osobno dla jego górnego i dolnego łańcucha. Analizujemy zależności między ostatnim punktem danego łańcucha wielokąta r, ostatnim wierzchołkiem aktualnie stworzonego uwypuklenia q; jego poprzednikiem u i następ-nikiem v na brzegu wielokąta oraz poprzednikiem w na uwypukleniu. Mamy 4 przypadki. 1. Punkt v znajduje się w zagłębieniu ograniczonym przez prostą l przecho-dzącą przez w i q – aktualne uwypu-klenie nie zmienia się do momentu aż brzeg wielokąta przetnie prostą l. l q u v w r

2. Punkt v znajduje się po przeciw-nej stronie prostej l przechodzącej przez w i q niż punkt r – punkt v staje się ostatnim wierzchołkiem aktualnego uwypuklenia. Spraw-dzamy, czy wierzchołki z Q i v tworzą łamaną wypukłą. Jeśli nie, to usuwamy ze stosu wierzchołki wpadające do wnętrza uwypukle-nia i wstawiamy v. 3. Punkt v znajduje się w kącie wy-znaczonym przez półprostą o po-czątku w w i przechodzącą przez q oraz bliższą z półprostych o po-czątku w q i przechodzących przez r lub u - punkt v staje się ostatnim wierzchołkiem aktualnego uwypu-klenia. Wstawiamy go na stos Q. v l w q u r w q v u r w q v u r

4. Punkt v znajduje się w kącie o wierz-chołku w punkcie q i ramionach wyzna-czonych przez punkty w i r, ale nie należy do zagłębienia, którego wierzchołkiem jest u – aktualne uwypuklenie nie zmienia się do momentu aż brzeg wielokąta przetnie prostą przechodzącą przez q i r. Niech ciąg (qi) dla i = 1, 2, ... oznacza wierzchołki tworzonego uwypuklenia, a ciąg (pi) dla i = 1, 2, ..., n określa wierz-chołki górnego (dolnego) łańcucha bada-nego wielokąta pamiętane w kolejce P. FRONT(P) oznacza pierwszy element P, a POP(P), POP(Q) – usunięcie początku P lub Q. Niech q0=(p1x,-). w q u v r

Algorytm (Lee). P:={p1, p2, ... , pn}; Q  q0; u:=q0; Q  p1; POP(P); i:=1; j:=1; while P   do v:=FRONT(P); if |qi-1qiv|   then if |uqiv|   then if |pnqiv|   then Q  v; u:=pj-1; else while |pnqiFRONT(P)|   do POP(P); j:=j+1 else while |qqi-1FRONT(P)|   do else while |qi-1qiv| >  do POP(Q); Q  v; u:=pj-1;

Złożoność algorytmu. Twierdzenie. Otoczkę wypukłą wielokąta prostego zawierającego n wierzchołków można zbudować w optymalnym czasie (n) i pamięci (n). Dowód. Czas potrzebny na przetworzenie jednego wierzchołka wielokąta jest stały.

Triangulacja wielokąta przekątnymi. Definicja. Przekątną wielokąta nazywamy odcinek I łączący dwa wierzchołki wielokąta F taki, że wnętrze I jest zawarte we wnętrzu F. Triangulacją wielokąta nazywamy jego podział przekątnymi na trójkąty. Każda triangulacja jest dualna do drzewa, którego węzły odpowiadają trójkątom a krawędzie - przekątnym.

Lemat. W każdym wielokącie istnieje wierzchołek, przy którym kąt ma rozwartość mniejszą niż . Twierdzenie. W każdym wielokącie o n > 3 wierzchołkach istnieje przekątna. Dowód. Konstrukcyjny. Znajdujemy wierz-chołek v, przy którym kąt ma rozwartość mniej-szą niż . Badamy trójkąt utworzony przez ten wierzchołek i wierzchołki sąsiednie u i w. Jeśli do tego trójkąta nie należy żaden inny wierz-chołek, to odcinek jest przekątną. W prze-ciwnym przypadku znajdujemy taki wierz-chołek z, że odległość od v prostej równoległej do przechodzącej przez ten wierzchołek jest najmniejsza. Wtedy odcinek jest prze-kątną wielokąta. v u w v z u w

Wniosek. Powyższa metoda pozwala na znalezienie przekątnej w czasie liniowym względem liczby wierzchołków. Przekątna dzieli wielokąt na dwie części. Powtarzając tę procedurę otrzymujemy algorytm triangulacji wielokąta w czasie O(n2). Fakt. Triangulacja wielokąta może być, ale zwykle nie jest, jednoznaczna. (ćwiczenia)

Triangulacja wielokąta monotonicznego. Definicja. Wielokąt prosty nazywamy ściśle mono-tonicznym względem prostej k (wyzna-czającej kierunek monotoniczności), gdy jego brzeg można podzielić na dwa spójne łańcuchy takie, że dowolna prosta prostopadła do k przecina każdy z łańcuchów w co najwyżej jednym punkcie. Wielokąt jest monotoniczny, gdy prze-cięcie dowolnej prostej prostopadłej do k z dowolnym łańcuchem jest spójne. k k k

Algorytm (metoda zamiatania). określ górny i dolny łańcuch wielokąta względem kierunku monotoniczności; posortuj wierzchołki i wstaw je do listy L; usuń pierwsze dwa wierzchołki z L i wstaw je na stos Q; while L   do p:=FRONT(L); POP(L); q:=FRONT(Q); if p i q należą do różnych łańcuchów then while Q   do r:=FRONT(Q); POP(Q); połącz p z r; else POP(Q); r:=FRONT(Q); while |pqr| <  do q:=r; POP(Q); r:=FRONT(Q); wstaw q i p na stos Q; k

Poprawność i złożoność algorytmu. Poprawność algorytmu wynika z faktu, że punkty znajdujące się na stosie Q muszą tworzyć wklęsłą łamaną. Algorytm działa w czasie O(n), gdyż w każdym kroku wykonuje liczbę operacji równą liczbie wierzchołków zdjętych ze stosu Q + pewna stała.

Optymalna triangulacja wielokątów wypukłych. Definicja. Dla danego wielokąta wypukłego P i funkcji wagowej w( ) zdefiniowanej na trójkątach o krawędziach ze zbioru boków i przekątnych wielokąta P, znajdź triangulację o minimalnej sumie wag trójkątów wchodzących w jej skład. Jedną z naturalnych funkcji wagowych jest suma długości boków trójkąta. Wtedy wagą triangu-lacji jest suma długości boków wielokąta P oraz podwojona suma długości jego przekątnych. Zatem minimalną wagę ma wielokąt o minimal-nej sumie długości przekątnych.

Prezentowany algorytm jest algorytmem dynamicznym tzn Prezentowany algorytm jest algorytmem dynamicznym tzn. podczas obliczeń wykorzystywane są wyniki otrzymane wcześniej. Niech P będzie wielokątem o wierzchołkach v0, ..., vn a t[i,j] oznacza aktualnie minimalną wagę triangulacji wielokąta wyznaczanego przez wierzchołki vi-1, ... , vj. Aby rozwiązać ten problem obliczamy kolejno wartości optymalnych triangulacji dla wielokątów wyznaczanych przez pary, trójki, czwórki.... kolejnych wierzchołków wielokąta P. Aby obliczyć optymalną triangu-lację dla wielokąta R o wierzchołkach vs, vs+1, ... , vw, poszukujemy minimalnej wartości triangulacji wyznaczonej przez trójkąt T (vsvwvt, gdzie t  {s, s+1, ..., w}) oraz minimalne triangulacje wielokątów pow-stałych z wielokąta R po wycięciu trójkąta T (wielokąty mogą być zdegenerowane). Zauważmy, że optymalne triangulacje takich wielo-kątów są obliczane we wcześniejszej fazie działania algorytmu. T P R

Algorytm dynamiczny. for i := 1 to n do t[i,i] := 0; for m := 2 to n do for i := 1 to n-m+1 do j := i+m-1; t[i,j] := ; for k := i to j-1 do q := t[i,k]+t[k+1,j]+w(vi-1vkvj); if q < t[i,j] then t[i,j] := q; Lemat. Algorytm ma złożoność (n3).