• Nie Znaleziono Wyników

Znajdowanie wypukªej otoczki

W dokumencie Część 4 (Stron 173-200)

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).

W dokumencie Część 4 (Stron 173-200)

Powiązane dokumenty