Wektor o pocztku i kocu odpowiednio w punktach. Prosta zawierajca punkty p i q: pq Półprosta zaczynajca si w punkcie p i zawierajca punkt q:.

Podobne dokumenty
Temat: Geometria obliczeniowa cz II. Para najmniej odległych punktów. Sprawdzenie, czy istnieje para przecinajcych si odcinków.

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

Temat: Algorytmy zachłanne

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

KLUCZ PUNKTOWANIA ODPOWIEDZI

Temat: Problem minimalnego drzewa Steinera. Definicja problemu. Zastosowania. Algorytm dokładny Hakimi. Algorytmy aproksymacyjne.

EGZAMIN MATURALNY Z MATEMATYKI

Skojarzenia. Najliczniejsze skojarzenia: Dokładne skojarzenia o maksymalnej sumie wag w obcionych pełnych grafach dwudzielnych.

I Powiatowy Konkurs Matematyka, Fizyka i Informatyka w Technice Etap finałowy 10 kwietnia 2013 grupa elektryczno-elektroniczna

Podstawowe obiekty AutoCAD-a

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

9. Podstawowe narzędzia matematyczne analiz przestrzennych

Bash i algorytmy. Elwira Wachowicz. 20 lutego

OCENIANIE ARKUSZA POZIOM ROZSZERZONY

Elementy geometrii w przestrzeni R 3

KLUCZ ODPOWIEDZI DO ZADA ZAMKNITYCH POPRAWNA ODPOWIED 1 D 2 C 3 C 4 B 5 D 6 A 7 D 8 D 9 A 10 C 11 B 12 A 13 A 14 B 15 D 16 B 17 C 18 A 19 B 20 D

MATERIAŁ WICZENIOWY Z MATEMATYKI

MATERIA&!'WICZENIOWY Z MATEMATYKI

KLUCZ PUNKTOWANIA ODPOWIEDZI

MATERIAŁ WICZENIOWY Z MATEMATYKI

Temat: Algorytmy aproksymacyjne (przyblione) cz. I. Majc do rozwizania trudny obliczeniowo problem, moemy wybra jedno z dwóch nastpujcych podej:

PRAWIDŁOWE ODPOWIEDZI DO ZADA ZAMKNITYCH

Problem decyzyjny naley do klasy NP. (Polynomial), jeeli moe by rozwizany w czasie conajwyej wielomianowym przez algorytm A dla DTM.

ODPOWIEDZI I SCHEMAT PUNKTOWANIA ZESTAW NR 2 POZIOM PODSTAWOWY. 1. x y x y

Aby załoy nowy projekt wybieramy klikamy na napisie, nastpnie wybieramy Opcje Nowy projekt. Podajemy nazw projektu i zatwierdzamy klawiszem OK.

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

IV Powiatowy Konkurs Matematyka, Fizyka i Informatyka w Technice Etap finałowy 1 kwietnia 2016

MAJ Czas pracy: 170 minut. do uzyskania: pobrano z Miejsce na naklejk z kodem KOD. liczby. punktów. pióra z czarnym tuszem

Planowanie adresacji IP dla przedsibiorstwa.

! "#$ %!! "#$ &'!%( )"& $)#(&!%)" %!%*+,-.*+,/ ,5#'*+,/'%

Rozwizania zada otwartych i schematy punktowania Klucz odpowiedzi do zada zamknitych i schemat oceniania zada otwartych

MATERIAŁ WICZENIOWY Z MATEMATYKI

TRYGONOMETRIA FUNKCJE TRYGONOMETRYCZNE KĄTA SKIEROWANEGO

Arkusz maturalny. Šukasz Dawidowski. 25 kwietnia 2016r. Powtórki maturalne

Poprawa efektywnoci metody wstecznej propagacji bdu. Jacek Bartman

1 0 Je»eli wybierzemy baz A = ((1, 1), (2, 1)) to M(f) A A =. 0 2 Daje to znacznie lepszy opis endomorzmu f.

W wielu obliczeniach w matematyce bądź fizyce wykonanie niektórych kroków zależy od spełnienia warunku.

Strategia "dziel i zwyciężaj"

Wykład 16. P 2 (x 2, y 2 ) P 1 (x 1, y 1 ) OX. Odległość tych punktów wyraża się wzorem: P 1 P 2 = (x 1 x 2 ) 2 + (y 1 y 2 ) 2

ZADANIA EGZAMINACYJNE Z MATEMATYKI dla kandydatów na studia w Politechnice Lubelskiej na kierunku: INYNIERIA RODOWISKA

Wprowadzenie do algorytmów. START

Wstp. Warto przepływu to

Metodydowodzenia twierdzeń

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Wektory w przestrzeni

Rysunek przedstawia wykres funkcji y f x. Wska rysunek, na którym jest przedstawiony wykres funkcji y f x 1. A. B. Zadanie 3.

EGZAMIN MATURALNY Z MATEMATYKI

Bazy danych. Plan wykładu. Dekompozycja relacji. Anomalie. Wykład 5: Projektowanie relacyjnych schematów baz danych. SQL - funkcje grupujce

Funkcje, wielomiany. Informacje pomocnicze

1. ODPOWIEDZI DO ZADAŃ TESTOWYCH

Rys1 Rys 2 1. metoda analityczna. Rys 3 Oznaczamy prdy i spadki napi jak na powyszym rysunku. Moemy zapisa: (dla wzłów A i B)

Projektowanie algorytmów rekurencyjnych

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

EGZAMIN MATURALNY 2013 MATEMATYKA

Przykładowe rozwiązania

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

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Zastosowanie programu Microsoft Excel do analizy wyników nauczania

6.2. Baza i wymiar. V nazywamy baz-

Programowanie i struktury danych 1 / 44

Wykłady z matematyki Liczby zespolone

1 Metody iteracyjne rozwi zywania równania f(x)=0

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

W definicji powyszej funkcji załoylimy, e 1 m 1 oraz x0 < xk.

Funkcja kwadratowa, wielomiany oraz funkcje wymierne

= [6; 2]. Wyznacz wierzchołki tego równoległoboku.

Elementy geometrii analitycznej w R 3

Gramatyki regularne i automaty skoczone

Temat: Algorytmy aproksymacyjne dla wybranych NP-trudnych problemów grafowych

Krzywe stożkowe Lekcja VI: Parabola

1 Przypomnienie wiadomo±ci ze szkoªy ±redniej. Rozwi zywanie prostych równa«i nierówno±ci

Bazy danych. Plan wykładu. Metody organizacji pliku rekordów. Pojcie indeksu. Wykład 11: Indeksy. Pojcie indeksu - rodzaje indeksów

1 Bª dy i arytmetyka zmiennopozycyjna

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

oraz spełnia warunki: (*) dla wszystkich wierzchołków

Klasa 2 zakres rozszerzony. 1. Podstawowe własnoci figur geometrycznych na płaszczynie

Przykładowe rozwiązania zadań. Próbnej Matury 2014 z matematyki na poziomie rozszerzonym

Listy i operacje pytania

EGZAMIN MATURALNY Z MATEMATYKI

Kolorowanie wierzchołków

Funkcja liniowa poziom podstawowy

PRZYPOMNIENIE Ka»d przestrze«wektorow V, o wymiarze dim V = n < nad ciaªem F mo»na jednoznacznie odwzorowa na przestrze«f n n-ek uporz dkowanych:

Ukªady równa«liniowych

Zajęcia nr 1 (1h) Dwumian Newtona. Indukcja. Zajęcia nr 2 i 3 (4h) Trygonometria

Rozwi zanie równania ró»niczkowego metod operatorow (zastosowanie transformaty Laplace'a).

EGZAMIN MATURALNY Z MATEMATYKI

Funkcja liniowa i prosta podsumowanie

Macierze. Rozdział Działania na macierzach

GEOMETRIA ANALITYCZNA W PRZESTRZENI

STANDARDY WYMAGA Z MATEMATYKI W KLASIE PIERWSZEJ POZIOM PODSTAWOWY DZIAŁY: ZBIORY, ZBIORY LICZBOWE, DZIAŁANIA W ZBIORACH LICZBOWYCH

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

KONKURS ZOSTAŃ PITAGORASEM MUM. Podstawowe własności figur geometrycznych na płaszczyźnie

KURS WSPOMAGAJĄCY PRZYGOTOWANIA DO MATURY Z MATEMATYKI ZDAJ MATMĘ NA MAKSA. przyjmuje wartości większe od funkcji dokładnie w przedziale

zajęcia 1. Bartosz Górski, Tomasz Kulczyński, Błażej Osiński

Rachunek caªkowy funkcji wielu zmiennych

Egzamin maturalny z matematyki Poziom podstawowy ZADANIA ZAMKNI TE. W zadaniach od 1. do 25. wybierz i zaznacz na karcie odpowiedzi poprawn odpowied.

Zbiory i odwzorowania

Transkrypt:

Temat: Geometria obliczeniowa, cz I. Podstawowe algorytmy geometryczne. Problem sprawdzania przynalenoci punktu do wielokta. Problem otoczki wypukłej algorytmy Grahama, i Jarvisa. 1. Oznaczenia Punkty - małe litery: p, q, r, s itd. Współrzdne punktu p na płaszczynie - (x(p), y(p)) Odcinek o pocztku i kocu odpowiednio w punktach p i q: p - q Wektor o pocztku i kocu odpowiednio w punktach p i q: p q Prosta zawierajca punkty p i q: pq Półprosta zaczynajca si w punkcie p i zawierajca punkt q:.pq 2. Operacje elementarne Operacje arytmetyczne: dodawanie, odejmowanie, mnoenie, dzielenie, pierwiastkowanie, itp 3. Załoenia i uwagi rozwaane s obiekty geometryczne na płaszczynie w kartezjaskim układzie współrzdnych algorytmy powinny realizowa jak najmniej operacji powodujcych przyblienia 1

4. Podstawowe algorytmy geometryczne a) Algorytm sprawdzania, po której stronie prostej ley punkt WP: Trzy punkty: p = (x, y), q = (z, t), r = (u, v) WK: Odpowied na pytanie: Po której stronie prostej pq ley punkt r p p r ϕ q Punkt r ley po lewej stronie prostej pq q ϕ r Punkt r ley po prawej stronie prostej pq q p ϕ r Punkty p, q i r s współliniowe 2

Algorytm Obliczamy warto wyznacznika det( p, q, r), którego znak jest równy znakowi sinusa kta nachylenia wektora p r do wektora p q. det (, q, r) p = x z u y t v 1 1 1 Jeeli det( p, q, r) > 0 to sin ϕ > 0 i wówczas punkt r ley po lewej stronie prostej pq. Jeeli det( p, q, r) < 0 to sin ϕ < 0 i wówczas punkt r ley po prawej stronie prostej pq. Jeeli det( p, q, r) = 0 to sin ϕ = 0 i wówczas punkty p, q i r s współliniowe. 3

b) Algorytm sprawdzania, czy dwa dane punkty le po tej samej stronie prostej WP: Cztery punkty: p = (x, y), q = (z, t), a = (b, c), d = (e, f ) WK: Odpowied na pytanie, czy punkty a i b le po tej samej stronie prostej pq. a p d q Algorytm Przypomnijmy funkcj znaku liczby: 1 gdy x > 0 sgn( x) = 0 gdy x = 0 1 gdy x < 0 Punkty a i d le po tej samej stronie prostej pq wówczas, gdy: sgn det p, q, a = sgn det p, q, d ( ( )) ( ( )) 4

c) Algorytm sprawdzania, czy punkt naley do odcinka WP: Trzy punkty: p = (x, y), q = (z, t), r = (u, v) WK: Odpowied na pytanie, czy punkt r naley do odcinka p - q. Y r q p Algorytm 0 X Jeeli punkt r naley do odcinka p-q, to rzuty prostoktne r na osie (OX i OY) "zawieraj si" w rzutach prostoktnych odcinka p-q. Wynika std, e r naley do odcinka p-q wtedy i tylko wtedy gdy: x( p) x( r) x( q) sgn ( det( p, q, r) ) = 0 przy załoeniu, e x p x q ( ) ( ) i y( p) y( r) y( q) sgn ( det( p, q, r) ) = 0 ( p) y( q) y przy załoeniu, e 5

d) Algorytm sprawdzania, czy dwa odcinki si przecinaj WP: Cztery punkty: p = (x, y), q = (z, t), a = (b, c), d = (e, f ) wyznaczajce dwa odcinki: p-q i a-d. WK: Odpowied na pytanie, czy odcinki p-q i a-d przecinaj si. a d p a d p q q Algorytm Rozwizanie opiera si na spostrzeeniu, e dwa odcinki przecinaj si wtedy i tylko wtedy, gdy punkty p i q le po przeciwnych stronach prostej ad i punkty a i d le po przeciwnych stronach prostej pq lub który z koców jednego z odcinków naley do drugiego. Czyli: ( sgn ( det ( p, q, d )) sgn ( det ( p, q, a )) sgn ( det ( a, d, p )) sgn ( det ( a, d, q ))) ( sgn( det( p, q, a) ) = 0 ( x( p) x( a) x( q) y( p) y( a) y( q) )) ( sgn( det( p, q, d) ) = 0 ( x( p) x( d) x( q) y( p) y( d) y( q) )) ( sgn( det( a, d, p) ) = 0 ( x( a) x( p) x( d) y( a) y( p) y( d) )) ( sgn( det( a, d, q) ) = 0 ( x( a) x( q) x( d) y( a) y( q) y( d) )) przy załoeniu, e x( p) x( q) i y( p) y( q) w przypadku, gdy punkt a lub d naley do p-q i x( a) x( d ) i y( a) x( d ) w przypadku, gdy punkt p lub q naley do a-d 6

5. Problem przynalenoci punktu do wielokta WP: Dany jest cig punktów: w0, w1,..., w n 1 okrelajcy n - wierzchołkowy wielokt W i taki, e dla kadego i = 0,1,..., n 1 odcinek w i w i+ 1 jest bokiem wielokta W (i+1 jest wyliczane modulo n). Dany jest równie punkt p. WK: Odpowied na pytanie, czy punkt p naley do wielokta W. Jeeli punkt p ley na boku wielokta, to stwierdzamy, e naley do wielokta Algorytm rozwizujcy problem przynalenoci opiera si na zalenoci pomidzy liczb przeci dowolnej półprostej o pocztku w punkcie p, a bokami wielokta. p l Punkt p naley do wielokta W wtedy i tylko wtedy, gdy półprosta.pl przecina boki wielokta nieparzyst ilo razy. Zachodz przy tym dwa przypadki szczególne: Półprosta.pl przechodzi przez wierzchołek wielokta. Półprosta.pl zawiera bok wielokta. 7

Uwaga!!! Zanim zaczniemy wyznacza liczb punktów przecicia półprostej z bokami wielokta, sprawdzamy, czy punkt p nie zawiera si w którym z boków wielokta. a 11 p a 1 a 3 a 6 a 2 a 4 a 5 a 7 a 8 a 10 l a 9 Prosta pl zawiera bok a 4 a 5 wielokta. Niech a 3 a 4 oraz a 5 a 6 bd bokami ssiadujcymi z bokiem a 4 a 5, a punkty a 3 i a 6 bd ich kocami tych boków. Jeeli punkty a 3 i a 6 le po tej samej stronie prostej pl, to przyjmujemy, e liczba punktów przecicia pl z bokami a 4 a 5, a 3 a 4 i a 5 a 6 wynosi 0. W przeciwnym razie przyjmujemy, e liczba ta wynosi 1. Prosta pl zawiera wierzchołek a 2 wielokta. Niech a 1 a 2 oraz a 2 a 3 bd bokami ssiadujcymi z wierzchołkiem a 2, a punkty a 1 i a 3 bd ich kocami tych boków. Jeeli punkty a 1 i a 3 le po tej samej stronie prostej pl, to przyjmujemy, e liczba punktów przecicia pl z bokami a 1 a 2 i a 2 a 3 wynosi 0. W przeciwnym razie przyjmujemy, e liczba ta wynosi 1. 8

Poniewa koszt oblicze zwizanych z kadym bokiem i wierzchołkami n - kta jest stały, złoono sprawdzenia, czy punkt ley w jego wntrzu, jest O(n). 6. Otoczka wypukła Otoczk wypukł dowolnego niepustego zbioru punktów S nazywamy najmniejszy zbiór wypukły zawierajcy S. Mona udowodni, e jeli S jest zbiorem skoczonym, to jego otoczka wypukła jest wieloktem wypukłym o wierzchołkach ze zbioru S (czasami zredukowanym do odcinka lub punktu). WP: Skoczony zbiór punktów S { p, 1 p2,..., p n } =. WK: Cig punktów W : po 1, po2,..., pow taki, e p oi S (dla kadego i = 1, 2,..., w), wyznaczajcy wierzchołki najmniejszego wielokta wypukłego zawierajcego wszystkie punkty z S. Kolejno punktów w cigu W okrela kolejno wierzchołków na obwodzie wielokta w kierunku przeciwnym do ruchu wskazówek zegara. p o3 = p 9 p o2 = p 6 p o1 = p 2 p o4 = p 1 p 3 p 7 p o7 = p 10 p 5 p o5 = p 8 p o6 = p 4 9

a) Algorytm naiwny Algorytm naiwny wyznaczania otoczki wypukłej opiera si na nastpujcym spostrzeeniu (*): Punkt p nie jest punktem otoczki wypukłej zbioru S wtedy i tylko wtedy, gdy ley wewntrz pewnego trójkta o wierzchołkach z S, rónych od p, lub naley do odcinka łczcego dwa punkty z S, róne od p. p o3 = p 9 p o2 = p 6 p o1 = p 2 p o4 = p 1 p 3 p 7 p o7 = p 10 p 5 p o5 = p 8 p o6 = p 4 Punkt p 3 nie naley do otoczki wypukłej poniewa ley wewntrz trójkta p 9 p 1 p 4. Punkt p 5 nie naley do otoczki wypukłej poniewa naley do odcinka p 6 - p 8. 10

Algorytm naiwny Krok 1: Sprawdzi, które punkty ze zbioru S nale do otoczki wypukłej stosujc kryterium okrelonym w spostrzeeniu (*). Krok 2: Uporzdkowa znalezione punkty w kolejnoci ich wystpowania na obwodzie otoczki wypukłej. Koszt czasowy algorytmu naiwnego Rozmiar zadania: n = S - liczba punktów zbioru S. Operacja elementarna: - operacja sprawdzania, czy punkt naley do trójkta (odcinka) w Kroku 1, - operacja porównania wykonana w trakcie sortowania w Kroku 2. Koszt czasowy Kroku 1: Dla n punktów trzeba sprawdzi co n najwyej 3 rónych trójktów. Std koszt Kroku 1 jest O(n 4 ). Koszt czasowy Kroku 2: Jeeli zastosujemy optymaln metod sortowania to koszt czasowy Kroku 2 jest O(nlogn). Całkowity koszt czasowy algorytmu naiwnego jest wic rzdu O(n 4 ). Efektywne algorytmy rozwizujce problem otoczki wypukłej, algorytm Grahama i Jarvisa, maj zasadniczo niszy koszt. 11

Sortowanie zbioru punktów w celu wyznaczenia kolejnoci punktów otoczki po obwodzie wielokta WP: Zbiór P { p p,..., } = 1, 2 p n - punktów bdcych wierzchołkami wielokta wypukłego W. WK: Posortowany cig punktów zbioru P według niemalejcej wartoci kta nachylenia ich wektorów wodzcych do osi OX. p3 p 6 p 2 p 1 O X p 5 p 4 12

Algorytm 1. Wyznaczamy centroid wielokta W. Jest to punkt o współrzdnych: ( x( p ) + x( p ) + + x( p )) ( y( p ) + y( p ) + y( p )) 1 2... n 1 2... +, n n Bez straty ogólnoci moemy przyj, e rodek układu współrzdnych znajduje si w centroidzie wielokta W. 2. W celu porównania któw nachylenia wektorów wodzcych sortowanych punktów do osi OX obliczamy wartoci nastpujcej funkcji alfa, okrelonej dla wszystkich punktów płaszczyzny rónych od punktu O. n y( p), d( p) y( p) 2 -, d( p) alfa( p) = y( 2 + d( p) y( 4 - d( p) gdzie d ( p) = x( p) + y( p).,, gdy gdy gdy gdy x x x ( p) > 0 y( p) ( p) 0 y( p) x ( p) < 0 y( p) ( p) 0 y( p) 0 > 0 0 < 0 Mona udowodni, e kt nachylenia wektora wodzcego punktu p i jest mniejszy równy od kta nachylenia wektora wodzcego punktu p j wtedy i tylko wtedy, gdy: ( p ) alfa( ) alfa i p j. Funkcja alfa umoliwia wyznaczenie kolejnoci wierzchołków na obwodzie wielokta wypukłego w czasie O(nlogn). 13

b) Algorytm Grahama Algorytm Grahama opiera si na nastpujcym spostrzeeniu (**): Kady punkt nie bdcy wierzchołkiem otoczki wypukłej musi nalee do wntrza trójkta o wierzchołkach: O i pewne dwa kolejne wierzchołki otoczki (lub ley na jednym z boków takiego trójkta). p 3 p 2 p 6 p 1 O p 4 X s=p 5 p 7 Punkt p 6 nie naley do otoczki poniewa ley we wntrzu trójkta O p 1 p 3. Punkt p 4 nie naley do otoczki poniewa punkt ten ley na boku trójkta O p 7 p 1. 14

Algorytm Krok 1: Wybieramy dowolny punkt O lecy wewntrz otoczki wypukłej, na przykład centroid. Umieszczamy w nim rodek układu współrzdnych i obliczamy współrzdne punktów wejciowych w nowym układzie współrzdnych. Krok 2: Porzdkujemy punkty p 1, p 2,..., p n leksykograficznie wzgldem współrzdnych biegunowych ( α i, r i ), gdzie α i jest ktem nachylenia wektora wodzcego O pi do osi OX, a r i jego długoci. (Aby nie liczy pierwiastków, w sortowaniu 2 porównujemy alfa ( p i ) zamiast α i oraz ri zamiast r i ). Z uporzdkowanych punktów tworzymy dwukierunkow list cykliczn, w której dla kadego punktu p, p->next jest nastpnym (cyklicznie) punktem w wyej zdefiniowanym porzdku, a p->prev poprzednim. Sporód punktów o najmniejszej współrzdnej y ustalamy punkt s z najmniejsz współrzdn x. 15

Krok 3: Przegldamy punkty na licie, usuwajc te, które nie s wierzchołkami otoczki wypukłej. Po zakoczeniu działania algorytmu lista bdzie zawierała tylko wierzchołki otoczki wypukłej w kolejnoci ich wystpowania na obwodzie. List przegldamy, zaczynajc od punktu s i kierujc si w stron przeciwn do ruchu wskazówek zegara ( zgodnie ze wskanikiem next). W celu wyeliminowania zbdnych punktów zawsze sprawdzamy trzy kolejne punkty q, q 1 2 i q 3 z biecej listy. Jeli punkt q2 ley wewntrz trójkta Oq q 1 3 to usuwamy go z otoczki i przechodzimy do sprawdzania punktów q, q, q 0 1 3. W przeciwnym razie kolejn badan trójk punktów s q 2, q3, q4. Przegldanie koczymy z chwil osignicia wierzchołka startowego s. Algorytm realizujcy Krok 3 mona zapisa nastpujco: q=s; while (q->next!= s) if q->next ley wewntrz trójkta O q q->next->next { q->next=q->next->next; q->next->prev=q; if (q!= s) q=q->prev; } else q=q->next; 16

q 3 q 4 q 2 q 1 q 5 = s O q 6 q 7 X Koszt czasowy algorytmu Grahama Na złoono algorytmu Grahama decydujcy wpływ ma Krok 2. Kroki 1 i 2 wykonywane s w czasie liniowym. Krok 2 mona zrealizowany w czasie O(nlogn), stosujc efektywn metod sortowania (np. sortowanie przez scalanie, sortowanie przez połówkowe wstawianie czy sortowanie szybkie). Łatwo zauway, e zamiast sprawdza, czy punkt q->next ley wewntrz trójkta O q q->next->next mona testowa, czy q->next ley po lewej stronie (lub naley do) wektora q next > next. Złoono algorytmu Grahama nie zaley od liczby punktów otoczki wypukłej. Nastpny algorytm rozwizujcy problem otoczki, algorytm Jarvisa, ma złoono O(kn), gdzie k jest liczb punktów otoczki wypukłej w danym n elementowym zbiorze punktów. 17

c) Algorytm Jarvisa Algorytm Jarvisa oparty jest na dwóch spostrzeeniach: 1) Odcinek p-q o kocach ze zbioru S jest bokiem otoczki wypukłej wtedy i tylko wtedy, gdy wszystkie punkty z S nale do tej samej domknitej półpłaszczyzny wyznaczonej przez prost pq, a kady punkt S lecy na tej prostej naley do odcinka p-q. 2) Jeli odcinek p-q jest bokiem otoczki wypukłej, która nie jest zdegenerowana do odcinka lub punktu, to musi istnie bok róny od p-q, zaczynajcy si w q (analogiczny warunek jest te spełniony dla punktu p). p 9 =p p 6 =q p 2 =q p 1 p 3 p 7 = p p 10 p 5 p 8 p 4 18

Algorytm Krok 1: Ustalamy punkt d, który ma najmniejsz współrzdn x sporód wszystkich punktów z najmniejsz współrzdn y. Ustalamy punkt g, który ma najwiksz współrzdn x sporód wszystkich punktów z najwiksz współrzdn y. Obydwa punkty d i g s wierzchołkami otoczki wypukłej. Krok 2: p=d; while (p!= g) { umieszczamy rodek układu współrzdnych w punkcie p ; r = punkt o najwikszej odległoci od p, wród wszystkich punktów o najmniejszym kcie nachylenia wektora wodzcego do osi px ; // wszystkie punkty z S le w jednej półpłaszczynie // wyznaczonej przez prost pr. Odcinek p-r jest // kolejnym bokiem otoczki wypukłej p->next=r; r->prev=p; p=r; } Krok 3: Powtarzamy Krok 2, przyjmujc, e za punkt startowy g, a punkt kocowy d. Rozwamy tylko punkty o ktach nachylenia promieni wodzcych wikszych równych 180 0. 19

g p=d r Złoono czasowa algorytmu Jarvisa Kada iteracja w Krokach 2 i 3 jest wykonywana w czasie O(n). Poniewa liczba iteracji jest równa liczbie wierzchołków otoczki, to koszt całkowity algorytmu Jarvisa wynosi O(kn). Algorytm ten jest szczególnie przydatny wtedy, gdy wiemy, e liczba punktów otoczki wypukłej jest niewielka w porównaniu z rozmiarem zbioru S (tj. ograniczona przez stał niezalen od n). 20