21
Geometria obliczeniowa Wykład 14 Algorytmy randomizowane 1. Programowanie liniowe w R 2 . 2. Lokalizacja punktu w siatce trapezów. 3. Znajdywanie średnicy zbioru punktów w R 3 . Algorytmy równoległe 1. Otoczka wypukła.

Geometria obliczeniowa Wykład 14

  • Upload
    cargan

  • View
    65

  • Download
    1

Embed Size (px)

DESCRIPTION

Geometria obliczeniowa Wykład 14. Algorytmy randomizowane Programowanie liniowe w R 2 . Lokalizacja punktu w siatce trapezów. Znajdywanie średnicy zbioru punktów w R 3 . Algorytmy równoległe 1. Otoczka wypukła. Podstawowe metody stosowane w algorytmach randomizowanych. Metoda Las Vegas. - PowerPoint PPT Presentation

Citation preview

Page 1: Geometria obliczeniowa Wykład 14

Geometria obliczeniowaWykład 14

Algorytmy randomizowane

1. Programowanie liniowe w R2.

2. Lokalizacja punktu w siatce trapezów.

3. Znajdywanie średnicy zbioru punktów w R3.

Algorytmy równoległe

1. Otoczka wypukła.

Page 2: Geometria obliczeniowa Wykład 14

Podstawowe metody stosowane w algorytmach randomizowanych.

Metoda Las Vegas. Metoda ta zawsze daje poprawne rozwiązanie. Natomiast czas trwania algo-rytmu może być zmienny w zależności od układu danych. Przykładem takie-go algorytmu moze być np. Quickhull lub dowolny algorytmy przyrostowy z losowo uporządkowanymi danymi.

Metoda Monte Carlo. Metoda ta zawsze kończy się w ustalonym czasie, ale może z pewnym praw-dopodobieństwem zwrócić zły wynik bądź zwraca wynik tylko z pewną do-kładnością. Przykładem takiego algorytmu może być np. szukanie ścieżki łą-czącej dwa punkty w labiryncie przy losowym wyborze kierunku poruszania się lub losowe próby lokalizacji punktu na płaszczyźnie podzielonej na obszary.

Formalnie efektywność takiego algorytmu jest zmienną losową określoną na przestrzeni możliwych losowych ciągów. Wartość oczekiwana takiej zmien-nej nazywana jest oczekiwanym czasem działania.

Page 3: Geometria obliczeniowa Wykład 14

Programowaniee liniowe w R2.

Dana jest liniowa funkcja celu c oraz n warun-ków brzegowych (zbiór H nierówności linio-wych) opisujących obszar dopuszczalny D, w którym poszukujemy punktu maksymalizujcego (minimalizującego) wartość funkcji c.

Algorytmif obszar wyznaczany przez półpłaszczyzny z H jest ograniczony w kierunku wzrostu wartości funkcji c i nie jest pusty

then określ półpłaszczyzny h1, h2 ograniczające wzrost wartości funkcji c, punkt przecięcia

ich brzegów x:= (h1)(h2) i D:= h1 h2 else return(„Brak rozwiązania”);

for h H-{h1,h2} do if x h then D := D h;

if D then x := {q: c(q) = max p(h)D c(p)} else return(„Brak rozwiązania”);return(x, c(x));

max 3x+2y

y - 0,5x - 3 0

y + 2x - 17 0

-y + x - 7 0

y - 5 0

-y + 0,5x - 3 0

y + x - 10 0

Page 4: Geometria obliczeniowa Wykład 14

TwierdzenieProblem programowania liniowego w R2 dla n warunków brzegowych można rozwiązać w czasie oczekiwanym O(n) z wykorzystaniem O(n) pamięci. Dowód.

Niech vi będzie punktem, w którym funkcja c przyjmuje maksimum (minimum) w obszarze wyznaczanym przez i półpłaszczyzn, a hi i-tą półpłaszczyznę.

Zdefiniujmy zmienną losową Xi przyjmującą wartość 1, gdy vi-1 hi oraz 0 w przeciwnym przypadku.Ponieważ znalezienie nowego maksimum (rozwiązanie problemu jednowymiarowego programowania liniowego), wymaga czasu O(n) (można to zrobić w czasie O(log n) - ale pociąga to za sobą zmiany w strukturze, których chcemy uniknąć), więc oczekiwany czas działania algorytmu wynosi E(n

i=3 O(i)Xi) = ni=3 O(i)E(Xi) .

Wartość E(Xi) szacujemy stosując tzw. analizę powrotną. W tym celu badamy, jak zmie-nia się problem, gdy mając i warunków brzegowych, odejmiemy jedną z półpłaszczyzn.Punkt, w którym funkcja c ma maksimum (minimum) może ulec zmianie, gdy odejmie-my co najwyżej dwie spośród półpłaszczyzn wyznaczających obszar (wyznaczają one wierzchołek, w którym przyjmowane jest maksimum (minimum) - jeśli przez ten punkt przechodzi więcej prostych będących brzegami danych półpłaszczyzn, to może się zda-żyć, że usunięcie dowolnej półpłaszczyzny nie wpływa na wartość funkcji celu.

Zatem E(Xi) 2/i-2 . Stąd ni=3 O(i)E(Xi) = n

i=3 O(1) = O(n) .

Page 5: Geometria obliczeniowa Wykład 14

Lokalizacja punktu w siatce trapezów.

ProblemDany jest prostokątny obszar oraz n zawar-tych w nim odcinków (z których żaden nie jest pionowy i żadne dwa końce nie mają tej samej współrzędnej x-owej ani y-owej). Chcemy odpowiadać na pytanie: Miedzy którymi dwoma odcinkami (od góry i od dołu) znajduje się dany punkt ?

Przedstawimy algorytm przyrostowy znaj-dujący podział obszaru na trapezy oraz tworzący Skonstruujemy strukturę danych umożliwia-jącą odpowiedź na zapytania o położenie punktów, wykorzystującą podział obszaru na trapezy .

Page 6: Geometria obliczeniowa Wykład 14

Struktura jest grafem skierowanym, którego wierzchołki odpowiadają trapezom podziału, końcom odcinków i samym odcinkom. Wierzchołki odpowiadające odcinkom mogą występować wielokrotnie. Wierzchołki od-powiadające trapezom mają zerowy stopień wyjściowy.

Niech pi i qi oznaczają odpowiednio począ-tek i koniec i-tego odcinka si.

Gdy odcinek si zawiera się w jednym z już istniejących trapezów, to w miejsce odpo-wiadającego mu wierzchołka wstawiamy wierzchołek pi, którego lewym synem jest wierzchołek odpowiadający trapezowi pow-stającemu po lewej stronie pi a prawym sy-nem jest qi. Prawym synem qi jest wierzcho-łek odpowiadający trapezowi powstającemu po prawej stronie qi a lewym synem jest si. Lewy i prawy syn si odpowiadają odpowied-nio trapezowi powyżej i poniżej odcinka si.

sk

sm

A

DS(Si-1)

A

siE

D

C

B

qi

si

pi

B

C D

E

Page 7: Geometria obliczeniowa Wykład 14

CBA

Gdy odcinek si przecina wiele istniejących już trapezów, to w miejsce wierzchołka odpowiadającego skrajnie lewemu trape-zowi wstawiamy pi, którego lewym synem jest wierzchołek odpowiadający trapezowi powstającemu po lewej stronie pi a pra-wym synem jest si. W miejsce wierzchołka odpowiadającego skrajnie prawemu trapezowi wstawiamy qi, którego prawym synem jest wierzcho-łek odpowiadający trapezowi powstają-cemu po prawej stronie qi a lewym synem jest si. Pozostałym trapezom odpowiadają wierz-chołki si. Lewy i prawy syn dowolnego wierzchołka si odpowiada odpowiednio trapezowi powstałemu powyżej i poniżej odcinka si w miejscu poprzedniego trapezu.

CA B

sd

sc

sb

sa

DS(Si-1)

Isi H

G

F

ED

pi qisi

si siGD

EF H

I

Page 8: Geometria obliczeniowa Wykład 14

Algorytm

inicjalizuj strukturę DS ;

for i:=1 to n do

z pomocą struktury DS znajdź trapezy,

które przecina odcinek si ;

zastąp w strukturze DS przecinane tra-

pezy nowymi układami wierzchołków;

ED

C

B

A J

I

H

G

F

E

D

C

B

A JI

H

G

F

Page 9: Geometria obliczeniowa Wykład 14

TwierdzenieAlgorytm oblicza sieć trapezów T(S) dla zbioru n odcinków S i tworzy strukturę danych DS(S) dla sieci T(S) w oczekiwanym czasie O(n log n). Oczekiwany rozmiar struktury wynosi O(n), a lokalizacja punktu wymaga oczekiwanego czasu O(log n).Dowód.Zmiana wierzchołka odpowiadającego trapezowi zwiększa długość ścieżki wyszukującej punkt o co najwyżej 3 wierzchołki. Jednak szacowanie długości ścieżki wyszukiwań w ten sposób jest zbyt grube.Rozważmy ścieżkę wyszukiwań punktu q w strukturze danych DS.

Niech Xi oznacza dla 1 i n liczbę wierzchołków na ścieżce wyszukiwań dodanych w i-tej iteracji. Zatem oczekiwana długość ścieżki wyszukiwań wynosi E(n

i=1Xi) = ni=1E(Xi) .

Niech Pi oznacza prawdopodobieństwo przejścia w trakcie lokalizacji punktu q przez wierzchołki stworzone w i-tej iteracji. Mamy E(Xi) 3Pi. Ale Pi=P[tq(Si) tq(Si-1)], gdzie tq(Si) oznacza trapez w sieci powstałej po i-tej iteracji zawierający punkt q.

Page 10: Geometria obliczeniowa Wykład 14

Aby oszacować prawdopodobieństwo Pi zastosujemy analizę powrotną.

W sieci powstałej po i-tej iteracji, zmianę trapezu zawierającego punkt q spowodować może usunięcie co najwyżej czterech krawędzi:

- będącej górną krawędzią trapezu,

- będącej dolną krawędzią trapezu,

- wyznaczającej poprzez swój koniec lewą ścianę trapezu,

- wyznaczającej poprzez swój koniec prawą ścianę trapezu.

Jeśli koniec krawędzi będącej np. dolną krawędzią trapezu wyznacza równocześnie np. lewą ścianę trapezu, to liczba krawędzi, których usunięcie może wpłynąć na zmianę trapezu zawierającego punkt q, może być mniejsza niż 4.

Zatem Pi=P[tq(Si) tq(Si-1)] = P[tq(Si) T(Si-1)] 4/i .

Stąd ni=1E(Xi) n

i=13Pi ni=112/i = 12 n

i=11/i = 12Hn = O(log n).

czyli oczekiwany czas lokalizacji punktu jest O(log n).

Page 11: Geometria obliczeniowa Wykład 14

Zbadajmy oczekiwany rozmiar struktury.

Wynosi on: (Liczba trapezów) + ni=1(Liczba wierzchołków wewnętrznych

stworzonych w i-tej iteracji). Liczba trapezów szacuje się przez O(n). Natomiast liczba wierzchołków dodanych w jednej iteracji może być liniowa względem liczby zbadanych odcinków. Prowadzi to do kwadratowego (pesy-mistycznego) oszacowania rozmiaru omawianej struktury danych (ćwiczenia).

Niech ki oznacza liczbę trapezów tworzonych w i-tej iteracji.

Zatem liczba nowych wierzchołków wewnętrznych wynosi ki-1 (ćwiczenia).

Niech (t,s) będzie równe 1, gdy trapez t T(Si) nie będzie należeć do T(Si-1), gdy usuniemy odcinek s oraz 0 w przeciwnym przypadku.

Mamy sS t [t T(Si)] (t,s) 4T(Si) = O(i) .

Stąd E(ki) = 1/i sS t [t T(Si)] (t,s) O(i)/i = O(1) , czyli oczekiwana liczba nowych wierzchołków wewnętrznych powstałych w i-tej iteracji jest stała. Zatem oczekiwany rozmiar struktury danych wynosi

O(n) + ni=1 E(ki-1) = O(n) + n

i=1 E(ki) = O(n) + ni=1 O(1) = O(n) ,

czyli jest liniowy względem liczby odcinków.

Page 12: Geometria obliczeniowa Wykład 14

Teraz możemy obliczyć oczekiwany czas pracy algorytmu, który wynosi:

(Koszt inicjalizacji) + ni=1 (średni czas wyszukiwania położenia końców

odcinka dodawanego w i-tej iteracji + liczba nowych wierzchołków dodawanych w i-tej iteracji) =

O(1) + ni=1 (O(log i) + O(E(ki))) = O(n log n), co kończy dowód.

Page 13: Geometria obliczeniowa Wykład 14

I(S)

D(S)

Znajdywanie średnicy zbioru punktów w R3.

Definicja

Dla danego zbioru n punktów S średnicą D(S) nazywamy odległość między dwo-ma najdalszymi punktami w S.

Definicja

Niech I(S) oznacza obszar będący częścią wspólną kul o promieniu i środkach w punktach należących do zbioru S.

F(p) oznacza maksymalną odległość mię-dzy punktem p a jakimkolwiek innym punktem ze zbioru S.

pF(p)

Page 14: Geometria obliczeniowa Wykład 14

Fakt.

Dla każdego punktu q I(S), gdy = F(p), zachodzi F(q) F(p) D(S). Natomiast dla q I(S), mamy F(p) F(q) D(S).

Algorytm

while S do

wybierz losowo z S punkt p;

oblicz F(p);

znajdź I(S) dla = F(p);

S := S – (S I(S) );

return();

Page 15: Geometria obliczeniowa Wykład 14

Lemat.

Średnicę zbioru n punktów w R3 można znaleźć w oczekiwanym czasie O(n log n).

Dowód.

W każdym kroku usuwamy co najmniej jeden punkt (wybrany).

F(p) obliczamy w czasie liniowym. Znalezienie I(S) wymaga czasu O(n log n) (postępujemy identycznie jak w przypadku znajdywania przecięcia półprzestrzeni, co jest problemem dualnym do znajdywania otoczki wypukłej). Punkty z S należące do I(S) znajdujemy w czasie O(n log n)

(ćwiczenia).

Ustawmy wartości F(pi), gdzie pi S w ciąg niemalejący. Wtedy wybór punktu p, podobnie jak w quicksorcie, dzieli ciąg na dwie części - punkty, wśród których będziemy szukać rozwiązania i pozostałe. Zakładając, że punkty wybieramy z jednakowym prawdopodobieństwem, możemy obliczyć oczekiwany czas działania algorytmu :

T(n) = O(n) + O(n log n) + n-1i=0 T(i)/n, co daje T(n) = O(n log n).

Page 16: Geometria obliczeniowa Wykład 14

Algorytmy równoległe.

Otoczka wypukła.

Chcemy znaleźć otoczkę wypukłą n elementowego zbioru S punktów na płaszczyźnie.

Rozpatrujemy model PRAM, w którym procesory komunikują się poprzez wspólną pamięć. Wyróżniamy różne rodzaje obliczeń w zależności od tego, czy procesory mogą jednocześnie czytać (CR) informacje z tej samej komórki pamięci czy nie (ER) oraz czy mogą jednocześnie zapisywać dane (CW) czy tylko osobno (EW). W przypadku CW określamy dodat-kowo jaki sposób zapisu danych nie powoduje konfliktu.

Algorytm 1.Dysponujemy O(n3) procesorami CRCW PRAM typu AND (mogą bez-konfliktowo zapisywać te same informacje).

Page 17: Geometria obliczeniowa Wykład 14

for każdy p S do

CH(p,1) := true; CH(p,2):=true;

for każda para q,r S-{p} do

if qpr > then CH(p,1) := false;

if rpq > then CH(p,2) := false;

if CH(p,1) or CH(p,2)

then return(p) ;

Lemat.

Algorytm 1 znajduje otoczkę wypukłą w czasie stałym.

Page 18: Geometria obliczeniowa Wykład 14

Algorytm 2.Dysponujemy O(n2) procesorami CRCW PRAM typu SMALL (zapisują dane o naj-mniejszej wartości).Mierzymy kąt między prostą równoległą do osi x-ów przechodzącą przez punkt p a od-cinkiem łączącym p z punktem q powyżej (G) i poniżej (D), zgodnie (C) i przeciwnie (CC) do ruchu wskazówek zegara.

for każdy p S do for każdy q S-{p} do A(p) := GC(q); B(p) := DCC(q); C(p) := GCC(q); D(p) := DC(q); if A(p)+B(p) or C(p)+D(p) then return(p) ;

Page 19: Geometria obliczeniowa Wykład 14

Lemat.Algorytm 2 znajduje otoczkę wypukłą w czasie stałym.

Algorytm 3.Dysponując O(n) procesorami CREW PRAM skorzystamy z metody „dziel i rządź”.

posortuj punkty względem x-ów;while zbiory nie są dostatecznie małe do dziel je na pierwiastkowo wiele części o zbliżonym rozmiarze;znajdź otoczki małych zbiorów;while jest więcej niż jedna otoczka do połącz otoczki w kolejności odwrot- nej do kolejności podziału;

Page 20: Geometria obliczeniowa Wykład 14

Jak łączymy małe otoczki ?

oblicz styczne zewnętrzne dla każdej pary otoczek stosując wyszukiwanie binarne;

systemem pucharowym znajdź krawędzie lub styczne maksymalnie odchylone od pionu w górę (dla górnych) i w dół (dla dolnych);

połącz krawędzie nowych otoczek w listy;

zastosuj sumy prefiksowe do okreś-lenia kolejności wierzchołków;

stablicuj otoczki;

Page 21: Geometria obliczeniowa Wykład 14

Twierdzenie.

Algorytm 3 znajduje otoczkę wypukłą n elementowego zbioru S punktów na płaszczyźnie w czasie O(log n) wykorzystując w tym celu O(n) pro-cesorów CREW PRAM.

Dowód.

Sortowanie, wyszukiwanie binarne, system pucharowy, sumy prefiksowe na zbiorze n elementowym można wykonać w czasie O(log n).

Zatem złożoność algorytmu opisuje równanie:

T(n) = T(n1/2) + O(log n), czyli T(n) = O(log n).