Def. Wypukªa otoczka(sko«czonego) zbioru punktów Q to najmniejszy wielok¡t wypukªy W taki, »e ka»dy punkt z Q le»y albo na brzegu W , albo w jego wn¦trzu.
Oznaczenie: CH(Q).
Uwaga. Ka»dy wierzchoªek otoczki CH(Q) jest punktem z Q. Problem. Dla danego zbioru punktów Q, znale¹¢ jego wypukª¡ otoczk¦ CH(Q).
Dokªadniej: Wybra¢ te punkty z Q, które s¡ wierzchoªkami CH(Q).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Def. Wypukªa otoczka(sko«czonego) zbioru punktów Q to najmniejszy wielok¡t wypukªy W taki, »e ka»dy punkt z Q le»y albo na brzegu W , albo w jego wn¦trzu.
Oznaczenie: CH(Q).
Uwaga. Ka»dy wierzchoªek otoczki CH(Q) jest punktem z Q.
Problem. Dla danego zbioru punktów Q, znale¹¢ jego wypukª¡ otoczk¦ CH(Q).
Dokªadniej: Wybra¢ te punkty z Q, które s¡ wierzchoªkami CH(Q).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Def. Wypukªa otoczka(sko«czonego) zbioru punktów Q to najmniejszy wielok¡t wypukªy W taki, »e ka»dy punkt z Q le»y albo na brzegu W , albo w jego wn¦trzu.
Oznaczenie: CH(Q).
Uwaga. Ka»dy wierzchoªek otoczki CH(Q) jest punktem z Q. Problem. Dla danego zbioru punktów Q, znale¹¢ jego wypukª¡ otoczk¦ CH(Q).
Dokªadniej: Wybra¢ te punkty z Q, które s¡ wierzchoªkami CH(Q).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Def. Wypukªa otoczka(sko«czonego) zbioru punktów Q to najmniejszy wielok¡t wypukªy W taki, »e ka»dy punkt z Q le»y albo na brzegu W , albo w jego wn¦trzu.
Oznaczenie: CH(Q).
Uwaga. Ka»dy wierzchoªek otoczki CH(Q) jest punktem z Q. Problem. Dla danego zbioru punktów Q, znale¹¢ jego wypukª¡ otoczk¦ CH(Q).
Dokªadniej: Wybra¢ te punkty z Q, które s¡ wierzchoªkami CH(Q).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Wiele algorytmów geometrii obliczeniowej zaczyna si¦ od znalezienia wypukªej otoczki pewnego zbioru punktów.
Przykªad. Dwuwymiarowy problem pary najbardziej odlegªych punktów ze zbioru Q:
naiwnie: wyznaczy¢ odlegªo±ci pomi¦dzy wszystkimi parami wierzchoªków i znale¹¢ maksimum (zªo»ono±¢ O(n2), n = |Q|), ale mo»na wykaza¢, »e dwa punkty, pomi¦dzy którymi odlegªo±¢ jest maksymalna, musz¡ by¢ wierzchoªkami CH(Q),
wyznaczenie najbardziej odlegªych wierzchoªków
n-wierzchoªkowego wielok¡ta wypukªego mo»na zrealizowa¢ w czasie O(n),
wyznaczenie otoczki wypukªej CH(Q) (jak si¦ zaraz przekonamy) czas O(n · logn).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Wiele algorytmów geometrii obliczeniowej zaczyna si¦ od znalezienia wypukªej otoczki pewnego zbioru punktów.
Przykªad. Dwuwymiarowy problem pary najbardziej odlegªych punktów ze zbioru Q:
naiwnie: wyznaczy¢ odlegªo±ci pomi¦dzy wszystkimi parami wierzchoªków i znale¹¢ maksimum (zªo»ono±¢ O(n2), n = |Q|), ale mo»na wykaza¢, »e dwa punkty, pomi¦dzy którymi odlegªo±¢ jest maksymalna, musz¡ by¢ wierzchoªkami CH(Q),
wyznaczenie najbardziej odlegªych wierzchoªków
n-wierzchoªkowego wielok¡ta wypukªego mo»na zrealizowa¢ w czasie O(n),
wyznaczenie otoczki wypukªej CH(Q) (jak si¦ zaraz przekonamy) czas O(n · logn).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Wiele algorytmów geometrii obliczeniowej zaczyna si¦ od znalezienia wypukªej otoczki pewnego zbioru punktów.
Przykªad. Dwuwymiarowy problem pary najbardziej odlegªych punktów ze zbioru Q:
naiwnie: wyznaczy¢ odlegªo±ci pomi¦dzy wszystkimi parami wierzchoªków i znale¹¢ maksimum (zªo»ono±¢ O(n2), n = |Q|),
ale mo»na wykaza¢, »e dwa punkty, pomi¦dzy którymi odlegªo±¢ jest maksymalna, musz¡ by¢ wierzchoªkami CH(Q),
wyznaczenie najbardziej odlegªych wierzchoªków
n-wierzchoªkowego wielok¡ta wypukªego mo»na zrealizowa¢ w czasie O(n),
wyznaczenie otoczki wypukªej CH(Q) (jak si¦ zaraz przekonamy) czas O(n · logn).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Wiele algorytmów geometrii obliczeniowej zaczyna si¦ od znalezienia wypukªej otoczki pewnego zbioru punktów.
Przykªad. Dwuwymiarowy problem pary najbardziej odlegªych punktów ze zbioru Q:
naiwnie: wyznaczy¢ odlegªo±ci pomi¦dzy wszystkimi parami wierzchoªków i znale¹¢ maksimum (zªo»ono±¢ O(n2), n = |Q|), ale mo»na wykaza¢, »e dwa punkty, pomi¦dzy którymi odlegªo±¢ jest maksymalna, musz¡ by¢ wierzchoªkami CH(Q),
wyznaczenie najbardziej odlegªych wierzchoªków
n-wierzchoªkowego wielok¡ta wypukªego mo»na zrealizowa¢ w czasie O(n),
wyznaczenie otoczki wypukªej CH(Q) (jak si¦ zaraz przekonamy) czas O(n · logn).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Wiele algorytmów geometrii obliczeniowej zaczyna si¦ od znalezienia wypukªej otoczki pewnego zbioru punktów.
Przykªad. Dwuwymiarowy problem pary najbardziej odlegªych punktów ze zbioru Q:
naiwnie: wyznaczy¢ odlegªo±ci pomi¦dzy wszystkimi parami wierzchoªków i znale¹¢ maksimum (zªo»ono±¢ O(n2), n = |Q|), ale mo»na wykaza¢, »e dwa punkty, pomi¦dzy którymi odlegªo±¢ jest maksymalna, musz¡ by¢ wierzchoªkami CH(Q),
wyznaczenie najbardziej odlegªych wierzchoªków
n-wierzchoªkowego wielok¡ta wypukªego mo»na zrealizowa¢ w czasie O(n),
wyznaczenie otoczki wypukªej CH(Q) (jak si¦ zaraz przekonamy) czas O(n · logn).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Wiele algorytmów geometrii obliczeniowej zaczyna si¦ od znalezienia wypukªej otoczki pewnego zbioru punktów.
Przykªad. Dwuwymiarowy problem pary najbardziej odlegªych punktów ze zbioru Q:
naiwnie: wyznaczy¢ odlegªo±ci pomi¦dzy wszystkimi parami wierzchoªków i znale¹¢ maksimum (zªo»ono±¢ O(n2), n = |Q|), ale mo»na wykaza¢, »e dwa punkty, pomi¦dzy którymi odlegªo±¢ jest maksymalna, musz¡ by¢ wierzchoªkami CH(Q),
wyznaczenie najbardziej odlegªych wierzchoªków
n-wierzchoªkowego wielok¡ta wypukªego mo»na zrealizowa¢ w czasie O(n),
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Idea: zamiatanie obrotowe przetwarzanie wierzchoªków w kolejno±ci przeciwnej do ruchu wskazówek zegara (= rosn¡cych amplitud wzgl¦dem wybranego punktu); decydowanie, które punkty zachowa¢ jako wierzchoªki CH(Q), a które wyrzuci¢.
Podstawowa obserwacja: poruszaj¡c si¦ po wypukªej otoczce w kierunku przeciwnym do ruchu wskazówek zegara, skr¦camy zawsze w lewo.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Idea: zamiatanie obrotowe przetwarzanie wierzchoªków w kolejno±ci przeciwnej do ruchu wskazówek zegara (= rosn¡cych amplitud wzgl¦dem wybranego punktu); decydowanie, które punkty zachowa¢ jako wierzchoªki CH(Q), a które wyrzuci¢.
Podstawowa obserwacja: poruszaj¡c si¦ po wypukªej otoczce w kierunku przeciwnym do ruchu wskazówek zegara, skr¦camy zawsze w lewo.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
W konstrukcji algorytmu wykorzystamy stos S.
Ka»dy punkt z wej±ciowego zbioru Q jest co najwy»ej raz wkªadany na stos S.
Punkty nie b¦d¡ce wierzchoªkami CH(Q) s¡ w pewnym momencie usuwane ze stosu (gdy brak skr¦tu w lewo). Po zako«czeniu algorytmu stos S zawiera wyª¡cznie wierzchoªki CH(Q), w przeciwnej do ruchu wskazówek zegara kolejno±ci ich wyst¦powania na brzegu (patrz¡c od dna do wierzchoªka stosu).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
W konstrukcji algorytmu wykorzystamy stos S.
Ka»dy punkt z wej±ciowego zbioru Q jest co najwy»ej raz wkªadany na stos S.
Punkty nie b¦d¡ce wierzchoªkami CH(Q) s¡ w pewnym momencie usuwane ze stosu (gdy brak skr¦tu w lewo). Po zako«czeniu algorytmu stos S zawiera wyª¡cznie wierzchoªki CH(Q), w przeciwnej do ruchu wskazówek zegara kolejno±ci ich wyst¦powania na brzegu (patrz¡c od dna do wierzchoªka stosu).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
W konstrukcji algorytmu wykorzystamy stos S.
Ka»dy punkt z wej±ciowego zbioru Q jest co najwy»ej raz wkªadany na stos S.
Punkty nie b¦d¡ce wierzchoªkami CH(Q) s¡ w pewnym momencie usuwane ze stosu (gdy brak skr¦tu w lewo).
Po zako«czeniu algorytmu stos S zawiera wyª¡cznie wierzchoªki CH(Q), w przeciwnej do ruchu wskazówek zegara kolejno±ci ich wyst¦powania na brzegu (patrz¡c od dna do wierzchoªka stosu).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
W konstrukcji algorytmu wykorzystamy stos S.
Ka»dy punkt z wej±ciowego zbioru Q jest co najwy»ej raz wkªadany na stos S.
Punkty nie b¦d¡ce wierzchoªkami CH(Q) s¡ w pewnym momencie usuwane ze stosu (gdy brak skr¦tu w lewo). Po zako«czeniu algorytmu stos S zawiera wyª¡cznie wierzchoªki CH(Q), w przeciwnej do ruchu wskazówek zegara kolejno±ci ich wyst¦powania na brzegu (patrz¡c od dna do wierzchoªka stosu).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Operacje na stosie:
Push(S, P) dodanie punktu P na wierzchoªek stosu S, Pop(S) zdj¦cie punktu z wierzchoªka stosu S,
Top(S) zwrócenie wierzchoªka stosu S (bez usuwania), NextToTop(S) zwrócenie punktu poªo»onego o jedno miejsce poni»ej wierzchoªka stosu S (bez usuwania).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Operacje na stosie:
Push(S, P) dodanie punktu P na wierzchoªek stosu S,
Pop(S) zdj¦cie punktu z wierzchoªka stosu S,
Top(S) zwrócenie wierzchoªka stosu S (bez usuwania), NextToTop(S) zwrócenie punktu poªo»onego o jedno miejsce poni»ej wierzchoªka stosu S (bez usuwania).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Operacje na stosie:
Push(S, P) dodanie punktu P na wierzchoªek stosu S, Pop(S) zdj¦cie punktu z wierzchoªka stosu S,
Top(S) zwrócenie wierzchoªka stosu S (bez usuwania), NextToTop(S) zwrócenie punktu poªo»onego o jedno miejsce poni»ej wierzchoªka stosu S (bez usuwania).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Operacje na stosie:
Push(S, P) dodanie punktu P na wierzchoªek stosu S, Pop(S) zdj¦cie punktu z wierzchoªka stosu S,
Top(S) zwrócenie wierzchoªka stosu S (bez usuwania),
NextToTop(S) zwrócenie punktu poªo»onego o jedno miejsce poni»ej wierzchoªka stosu S (bez usuwania).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Operacje na stosie:
Push(S, P) dodanie punktu P na wierzchoªek stosu S, Pop(S) zdj¦cie punktu z wierzchoªka stosu S,
Top(S) zwrócenie wierzchoªka stosu S (bez usuwania), NextToTop(S) zwrócenie punktu poªo»onego o jedno miejsce poni»ej wierzchoªka stosu S (bez usuwania).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Algorytm Grahama znajdowania CH(Q) dla zbioru punktów Q.
GrahamScan(Q) 1 begin
2 Niech P0b¦dzie punktem w Q o minimalnej wspóªrz¦dnej y, lub, w przypadku remisu, pierwszym takim punktem z lewej;
3 Niech <P1,P2,...,Pm> b¦d¡ pozostaªymi punktami Q, posortowanymi ze wzgl¦du na amplitud¦ w biegunowym ukªadzie o pocz¡tku P0
(w kierunku przeciw. do r. wsk. zegara);
je±li kilka punktów ma tak¡ sam¡ amplitud¦, usu« wszystkie oprócz najdalszego od P0;
4 utwórz stos pusty S;
5 Push(S, P0); Push(S, P1); Push(S, P2);
6 fori := 3tomdo
7 begin
8 while droga przez punkty NextToTop(S), Top(S) i Pi
nie oznacza skr¦tu w lewodo
9 Pop(S);
10 Push(S, Pi)
11 end;
12 return S;
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Algorytm Grahama znajdowania CH(Q) dla zbioru punktów Q.
GrahamScan(Q) 1 begin
2 Niech P0b¦dzie punktem w Q o minimalnej wspóªrz¦dnej y, lub, w przypadku remisu, pierwszym takim punktem z lewej;
3 Niech <P1,P2,...,Pm> b¦d¡ pozostaªymi punktami Q, posortowanymi ze wzgl¦du na amplitud¦ w biegunowym ukªadzie o pocz¡tku P0
(w kierunku przeciw. do r. wsk. zegara);
je±li kilka punktów ma tak¡ sam¡ amplitud¦, usu« wszystkie oprócz najdalszego od P0;
4 utwórz stos pusty S;
5 Push(S, P0); Push(S, P1); Push(S, P2);
6 fori := 3tomdo
7 begin
8 while droga przez punkty NextToTop(S), Top(S) i Pi
nie oznacza skr¦tu w lewodo
9 Pop(S);
10 Push(S, Pi)
11 end;
12 return S;
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Algorytm Grahama znajdowania CH(Q) dla zbioru punktów Q.
GrahamScan(Q) 1 begin
2 Niech P0b¦dzie punktem w Q o minimalnej wspóªrz¦dnej y, lub, w przypadku remisu, pierwszym takim punktem z lewej;
3 Niech <P1,P2,...,Pm> b¦d¡ pozostaªymi punktami Q, posortowanymi ze wzgl¦du na amplitud¦ w biegunowym ukªadzie o pocz¡tku P0
(w kierunku przeciw. do r. wsk. zegara); je±li kilka punktów ma tak¡ sam¡ amplitud¦, usu« wszystkie oprócz najdalszego od P0;
4 utwórz stos pusty S;
5 Push(S, P0); Push(S, P1); Push(S, P2);
6 fori := 3tomdo
7 begin
8 while droga przez punkty NextToTop(S), Top(S) i Pi
nie oznacza skr¦tu w lewodo
9 Pop(S);
10 Push(S, Pi)
11 end;
12 return S;
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Algorytm Grahama znajdowania CH(Q) dla zbioru punktów Q.
GrahamScan(Q) 1 begin
2 Niech P0b¦dzie punktem w Q o minimalnej wspóªrz¦dnej y, lub, w przypadku remisu, pierwszym takim punktem z lewej;
3 Niech <P1,P2,...,Pm> b¦d¡ pozostaªymi punktami Q, posortowanymi ze wzgl¦du na amplitud¦ w biegunowym ukªadzie o pocz¡tku P0
(w kierunku przeciw. do r. wsk. zegara); je±li kilka punktów ma tak¡ sam¡ amplitud¦, usu« wszystkie oprócz najdalszego od P0;
4 utwórz stos pusty S;
5 Push(S, P0); Push(S, P1); Push(S, P2);
6 fori := 3tomdo
7 begin
8 while droga przez punkty NextToTop(S), Top(S) i Pi
nie oznacza skr¦tu w lewodo
9 Pop(S);
10 Push(S, Pi)
11 end;
12 return S;
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Algorytm Grahama znajdowania CH(Q) dla zbioru punktów Q.
GrahamScan(Q) 1 begin
2 Niech P0b¦dzie punktem w Q o minimalnej wspóªrz¦dnej y, lub, w przypadku remisu, pierwszym takim punktem z lewej;
3 Niech <P1,P2,...,Pm> b¦d¡ pozostaªymi punktami Q, posortowanymi ze wzgl¦du na amplitud¦ w biegunowym ukªadzie o pocz¡tku P0
(w kierunku przeciw. do r. wsk. zegara); je±li kilka punktów ma tak¡ sam¡ amplitud¦, usu« wszystkie oprócz najdalszego od P0;
4 utwórz stos pusty S;
5 Push(S, P0); Push(S, P1); Push(S, P2);
6 fori := 3tomdo
7 begin
8 while droga przez punkty NextToTop(S), Top(S) i Pi
nie oznacza skr¦tu w lewodo
9 Pop(S);
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Zªo»ono±¢ algorytmu Grahama: O(n · logn), gdzie n = |Q|.
Twierdzenie
Po wykonaniu procedury GrahamScan dla zbioru punktów Q, gdzie Q ≥ 3, punkt P z Q pozostaje na stosie S ⇔ P jest wierzchoªkiem CH(Q).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Znajdowanie wypukªej otoczki
Zªo»ono±¢ algorytmu Grahama: O(n · logn), gdzie n = |Q|. Twierdzenie
Po wykonaniu procedury GrahamScan dla zbioru punktów Q, gdzie Q ≥ 3, punkt P z Q pozostaje na stosie S ⇔ P jest wierzchoªkiem CH(Q).