Geometria obliczeniowa Wykład 11 Algorytmy randomizowane 1.Programowanie liniowe w R 2. 2.Minimalne koło opisane na zbiorze punktów. Widzialność 1.Problem galerii. 2.Ochrona wypukłych podzbiorów zbiorów punktów. 3.Grafy łukowe. 4.Ciągi Davenporta-Schinzela 5.Graf widzialności.
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 może 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 danych. Wartość oczekiwana takiej zmiennej nazywana jest oczekiwanym czasem działania.
Przykład. Pole koła o promieniu 1 (wartość ). 4 21/27 = 3,111 4 221/289 = 3,059
Programowanie liniowe w R 2. Problem. Dana jest liniowa funkcja celu c (postaci ax+by) oraz n warunków brzegowych (zbiór H nierówności liniowych a i x + b i y + c i 0, dla i = 1,2,..., n) opisujących obszar dopuszczalny D, w którym poszukujemy punktu maksymalizującego (minimalizującego) wartość funkcji c.
Algorytm if 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 h 1, h 2 ograni- czające wzrost wartości funkcji c, punkt przecięcia ich brzegów x:= (h 1 ) (h 2 ) i D:= h 1 h 2 else return(„Brak rozwiązania”); for h H-{h 1,h 2 } 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)); Funkcja celu: max 3x+2y Warunki brzegowe: y - 0,5x - 3 0 y - 5 0 y + 2x - 17 0 -y + 0,5x - 3 0 -y + x - 7 0 y + x - 10 0
Twierdzenie Problem programowania liniowego w R 2 dla n warunków brzegowych można rozwiązać w czasie oczekiwanym O(n) z wykorzystaniem O(n) pamięci. Dowód. Niech v i będzie punktem, w którym funkcja c przyjmuje maksimum (minimum) w obszarze wyznaczanym przez i półpłaszczyzn, a h i i-tą półpłaszczyzną. Zdefiniujmy zmienną losową X i przyjmującą wartość 1, gdy v i-1 h i oraz 0 w przeciwnym przypadku. Ponieważ znalezienie nowego maksimum (rozwiązanie problemu jednowymia- rowego 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)X i ) = n i=3 O(i)E(X i ). Wartość E(X i ) szacujemy stosując tzw. analizę powrotną. W tym celu badamy, jak zmienia 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 odejmiemy co najwyżej dwie spośród półpłaszczyzn wyzna- czają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 dowol- nej półpłaszczyzny nie wpływa na wartość funkcji celu. Zatem E(X i ) 2/i-2. Stąd n i=3 O(i)E(X i ) = n i=3 O(1) = O(n).
Minimalne koło opisane na zbiorze punktów. Problem. Dla danego zbioru punktów na płaszczyźnie P znajdź minimalne koło zawierające wszystkie punkty z P. Weźmy losową permutację punktów z P. Niech P i := {p 1,..., p i } a D i będzie minimal- nym kołem zawierającym P i. Lemat. Dla 2 < i < n mamy: - jeśli p i D i-1, to D i = D i-1, - jeśli p i D i-1, to p i leży na brzegu D i.
Załóżmy, że dane są dwa punkty z P leżące na brzegu minimalnego koła. MinDisc2P(P, q 1, q 2 ) D 0 := najmniejsze koło z q 1, q 2 na brzegu; for k:=1 to n do if p k D k-1 then D k := D k-1 else D k := koło z q 1, q 2, p k na brzegu; return D n ;
Załóżmy teraz, że znamy jeden punkt z P leżący na brzegu minimalnego koła. MinDisc1P(P, q) Oblicz losową permutację p 1,..., p n punk- tów z P; D 1 := najmniejsze koło z p 1, q na brzegu; for j:=2 to n do if p j D j-1 then D j := D j-1 else D j := MinDisc2P({p 1,..., p j-1 }, p j, q); return D n ;
Ostatecznie nasz program wygląda nastę- pująco. MinDisc(P) Oblicz losową permutację p 1,..., p n punk- tów z P; D 2 := najmniejsze koło zawierające {p 1, p 2 }; for i:=3 to n do if p i D i-1 then D i := D i-1 else D i := MinDisc1P({p 1,..., p i-1 }, p i ); return D n ;
Lemat. Niech P będzie zbiorem punktów w R 2, a R, być może pustym, zbiorem punktów w R 2, dla których P R = oraz p P. Wtedy zachodzą następujące warunki: - Jeśli istnieje koło, które zawiera P i ma wszystkie punkty z R na swoim brzegu, to najmniejsze takie koło jest wyznaczone jednoznacznie (oznaczmy je przez md(P,R)). - Jeśli p md(P-{p},R), to md(P,R) = md(P-{p},R). - Jeśli p md(P-{p},R), to md(P,R) = md(P-{p},R {p}). Wniosek. MinDisc poprawnie oblicza minimalne koło zawierające zbiór punktów. Twierdzenie. Minimalne koło zawierające zbiór n punktów na płaszczyźnie można obliczyć w oczekiwanym czasie O(n), używając w pesymistycznym przypadku pamięć rozmiaru O(n).
Dowód. Oszacowanie rozmiaru pamięci wynika z faktu, że wszystkie trzy algorytmy MinDisc, MinDisc1P i MinDisc2P potrzebują O(n) pamięci. Czas działania MinDisc2P wynosi O(n). MinDisc1P działa w czasie liniowym dopóki nie zachodzi konieczność wywołania MinDisc2P. Prawdopodobieństwo takiego zdarzenia liczymy wykorzystując analizę wsteczną. Ustalmy zbiór {p 1,..., p i }. Niech D i będzie minimalnym kołem zawierającym {p 1,..., p i }, które ma q na swoim brzegu. Załóżmy, że usuwamy jeden z punktów z {p 1,..., p i }. Koło D i ulega zmianie, gdy usuwamy jeden z trzech (lub dwóch) punktów na brzegu (gdy punktów jest więcej, usunięcie niektórych z nich nic nie zmienia). Jednym z tych punktów jest q, więc usunięcie co najwyżej dwóch punktów powoduje zmniejszenie koła. Prawdopodobieństwo, że p i jest jednym z tych punktów wynosi 2/i. Zatem możemy oszacować oczekiwany czas działania MinDisc1P przez O(n) + n i=2 O(i) 2/i = O(n). Stosując identyczne rozumowanie dla MinDisc stwierdzamy, że oczekiwany czas działania tego algorytmu wynosi O(n).
Problem galerii. Dany jest wielokąt prosty wyobrażający galerię sztuki. Znajdź minimalną liczbę strażników (tzn. punktów należących do wielo- kąta) takich, że każdy punkt wielokąta będzie widzialny dla co najmniej jednego strażnika. Definicja. Czasem interesuje nas tylko przypadek, gdy strzeżone są jedynie krawędzie wielokąta. Czy istnieje wielokąt i takie ustawienie strażników, w którym cały jego brzeg jest strzeżony a wnętrze nie ? Punkt x należący do wielokąta F jest widzialny z punktu v F, gdy odcinek należy do F.
Twierdzenie. Decyzyjny problem galerii w R 2 jest NP-zupełny. Dowód. Chcemy znaleźć odpowiedź na pytanie, czy k strażników wystarcza do ochrony galerii. Aby udowodnić, że problem galerii należy do klasy NP wystarczy zgadnąć pozycje strażników, a następnie w czasie wielomianowym sprawdzić, czy cały wielokąt jest przez nich strzeżony. W celu pokazania NP-trudności tego problemu, przeprowadzimy redukcję z problemu 3-CNF-SAT. 3-CNF-SAT P GALERIA W tym celu, dla danej 3-CNF-formuły logicznej skonstruujemy galerię, która może być strzeżona przez k strażników wtedy i tylko wtedy, gdy formuła jest spełniona. Literałom, klauzulom i zmiennym występującym w formule przypisujemy następujące fragmenty brzegu galerii.
Fragment brzegu galerii odpowiada- jący pojedynczemu literałowi. Fragment brzegu galerii odpowiada- jący pojedynczej klauzuli. Pozycja n odpowiada wartości lite- rału false, a pozycja t wartości true. Aby punkt z był strzeżony co najmniej jeden literał w klauzuli musi mieć wartość true. Fragment brzegu galerii odpowiada- jący zmiennej. Aby punkt u był strzeżony, strażnik musi znajdować się w punkcie F lub T (wartościowanie zmiennej). n t z n t F T u
Dodatkowe występy na brzegu we fragmentach brzegu galerii odpowiada- jących zmiennym są tak umieszczone, aby były strzeżone przez strażnika odpowiadającego zmiennej lub straż- nika odpowiadającego wartości literału zawierającego tą zmienną lub jej ne- gację. Każdemu literałowi odpowiadają dwa występy, po jednym w każdej odnodze brzegu galerii odpowiadającej warto- ściowaniu zmiennej. Wszystkie wy- stępy w odnodze mogą być strzeżone przez strażnika umieszczonego w punkcie odpowiadającym wartościo- waniu zmiennej. xixi l j3 = x i xkxk l m2 = x k T t n F t F n T
Wklejając odpowiedniki klauzul i zmiennych w brzeg prostokąta dostajemy dla formuły o k klauzulach i m zmiennych wielokąt o 34k+10m+4 wierzchołkach. Strażnik w punkcie x obserwuje prostokąt i widzi wnętrza występów odpowiadających zmiennym. Ponieważ każda klauzula musi być spełniona, więc istnieje przynajmniej jeden strażnik w punkcie zaznaczonym jako t. Występy odpowiadające literałom są strzeżone, bo przy każdym z nich w jednym z wierzchołków f lub t stoi strażnik. Wierzchołki u są strzeżone przez strażników stojących w odpowiednich wierzchołkach F lub T (w jednym z nich zawsze stoi strażnik, w zależności od wartości zmiennej). Pozostałe występy w elementach odpowiadających zmiennym, są chronione przez strażników w punkcie odpowiadającym wartości zmiennej lub w punktach określających wartości literałów zawierających tą zmienną. Zatem wielokąt można ochronić z pomocą 3k+m+1 strażników wtedy i tylko wtedy, gdy dana formuła o k klauzulach i m zmiennych jest spełniona.
Układ strażników dla formuły (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) ( x 1 x 2 x 3 ). x1x1 x2x2 x3x3 k1k1 k2k2 k3k3 x
Lemat. Liczba strażników w galerii o n wierzchołkach jest nie mniejsza od 1 i nie większa niż n. Dowód. Jest oczywiste, że musi być co najmniej jeden strażnik. Gdy umieścimy strażników w wierzchołkach wielokąta to będą widzieć całą galerię. Czy strażnicy umieszczeni w wierzchołkach bryły trójwymiarowej zawsze chronią całe wnętrze bryły ?
Twierdzenie. Do pilnowania galerii potrzeba i wy- starcza n/3 strażników. Dowód. Przykład „grzebienia” (z wąskimi połą- czeniami między zębami) pokazuje, że taka liczba strażników jest konieczna. Z triangulacji wielokąta wynika, że mo- żemy pokolorować jego wierzchołki trzema kolorami tak, aby żadne dwa wierzchołki o tym samym kolorze nie sąsiadowały ze sobą. Na mocy zasady Dirichleta minimalny zbiór wierzchołków o tym samym kolorze ma moc nie większą niż n/3 . Stawiając strażnika w każdym z tych punktów wykazujemy, że liczba ta jest również liczbą wystarczającą. :11:10: 9
Ochrona wypukłych podzbiorów zbiorów punktów. Definicja. Niech P będzie zbiorem punktów na pła- szczyźnie. Zbiór S nazywamy zbiorem k- wypukłych strażników, gdy każdy wy- pukły k-kąt o wierzchołkach z P zawiera w swoim wnętrzu strażnika z S. Problem. Niech k 3 będzie liczbą całkowitą. Dany jest zbiór P n punktów na płaszczyźnie w położeniu ogólnym. Jaki jest minimalny rozmiar zbioru k-wypukłych strażników dla zbioru P ?
Definicja. Niech k 3 będzie liczbą całkowitą. Przez G k (n) oznaczmy najmniejszą liczbę s taką, że każdy zbiór n punktów na płaszczyźnie P ma zbiór k-wypukłych strażników rozmiaru s. Lemat. G n (n) G n-1 (n) .... G 3 (n). Twierdzenie. Jeśli punkty ze zbioru P tworzą wielokąt wypukły, to G 3 (n) = n-2. Dowód. Zauważmy, że dla dowolnego k 3 nie może być mniej strażników niż (n-2)/(k-2) . Z drugiej strony, niech i-ty strażnik s i (1 < i < n) należy do przecięcia P 1 P i P n P i-1 P i P i+1. Wtedy dowolny trójkąt P j P i P k (j < i < k) zawiera strażnika s i
Grafy łukowe. Definicja. Dla danego zbioru łuków na okręgu de- finiujemy graf łukowy, którego wierz- chołki etykietowane są etykietami łuków, a krawędź między dwoma wierzchołkami istnieje wtedy i tylko wtedy, gdy prze- cięcie łuków jest niepuste. Definicja. Minimalnym pokryciem klikami nazywa- my pokrycie wszystkich wierzchołków grafu minimalną liczbą jego podgrafów, z których każdy jest kliką
Znajdywanie minimalnego pokrycia klikami. Definicja. Dla uporządkowanego zgodnie z ruchem wskazówek zegara ciągu łuków na okręgu definiujemy funkcję NEXT. Wartością funkcji NEXT dla łuku i jest łuk j taki, że - początek j leży po końcu i, - odległość kątowa końców i oraz j jest najmniejsza spośród wszystkich łuków mających początek po końcu i. Funkcja NEXT odpowiada grafowi skiero- wanemu, w którym każda spójna składowa ma dokładnie jeden cykl
Niech F będzie spójną składową grafu funkcji NEXT. Fakt. Jeśli F nie jest kliką, to ciąg kolejnych koń- ców łuków odpowiadających wierzchoł- kom grafu funkcji NEXT leżącym na cyk- lu, liczony aż do pierwszego zapętlenia, na okręgu określa punkty wyznaczające mini- malne pokrycie klikami. Kliki tworzą łuki zawierające wyznaczone końce. Twierdzenie. Znalezienie minimalnego pokrycia klikami dla n uporządkowanych łuków na okręgu wymaga czasu O(n). Dowód. Wyznaczenie funkcji NEXT oraz znale- zienie cyklu w grafie funkcji NEXT wymaga czasu O(n)
W ten sposób możemy rozwiązać problem strzelca tzn.obliczyć jaka jest najmniejsza liczba strzałów, które musi oddać punk- towy strzelec, aby trafić wszystkie kaczki (odcinki) wokół niego (przy założeniu, że kula przebija kaczkę na wylot). Grafy łukowe można też wykorzystać w uproszczonym problemie rozgłaszania: dany jest nadajnik oraz odbiorcy poza obszarem nadawania (koła). Należy znaleźć minimalną liczbę przekaźników o danej mocy umożliwiającą odbiór wszystkim odbiorcom (o ile to możliwe). W tym przypadku każdemu odbiorcy przyporządkowujemy łuk odpowiadający położeniu przekaźników na brzegu koła pokrywających swoim zasięgiem danego odbiorcę. Aby rozwiązać problem wystar- czy znaleźć minimalne pokrycie klikami dla tak określonego zbioru łuków.
Ciągi Davenporta-Schinzela. Uogólnijmy nasze rozważania. Definicja. Rozpatrzmy rodzinę I = {f n } funkcji kawałkami ciągłych określonych na R. Krzywą ue(x) = max{f n (x)} nazywamy obwiednią górną, a krzywą le(x) = min{f n (x)} nazywamy obwiednią dolną dla danej rodziny funkcji. Obwiednie możemy znaleźć np. łącząc metodę „dziel i rządź” oraz zamia- tanie. W ten sposób znajdujemy obwiednie dla małych podzbiorów rodziny funkcji I. Obwiednie te są funkcjami kawałami ciągłymi, których kolejne części tworzą fragmenty funkcji z I. Przedziały występowania poszcze- gólnych funkcji wyznaczają podział dziedziny określoności obwiedni. Następnie stosując zamiatanie z każdej pary obwiedni tworzymy jedną.
Definicja. Niech U=(u 1, u 2,..., u m ) będzie ciągiem o następujących własnościach: u i {1, 2,..., n} dla każdego i, u i u i+1 dla każdego i < m, Nie istnieje podciąg indeksów (i j ) długości s+2 taki, że 1 i 1 < i 2 <... < i s+2 m, a = u x, gdzie x {i 1, i 3, i 5,....}, b = u y, gdzie y {i 2, i 4, i 6,....}, 1 a b n. (tzn. w ciągu U nie ma podciągu o długości s+2 składającego się z przemiennie wystę- pujących dwóch wartości). Ciąg U posiadający powyższe własności na- zywamy (n,s) ciągiem Davenporta-Schinzela i oznaczamy przez DS(n,s). Maksymalną dłu- gość ciągu DS(n,s) oznaczamy przez s (n) s = 3 aba b
W powyższej definicji elementy ciągu U możemy interpretować jako ko- lejne fragmenty obwiedni tworzonej przez zbiór n funkcji. Jeśli dowolne dwie funkcje przecinają się ze sobą nie więcej niż s razy, to rozmiar takiej obwiedni jest ograniczony przez s (n). Fakt. Zachodzą następujące równości: 1 (n) = n, 2 (n) = O(n), 3 (n) = O(n (n)), 4 (n) = O(n2 (n) ). Ogólnie: s (n) = O(n (n) x ), gdzie x = O( (n) s-3 ) i s > 3, 2s+1 (n) = (n (n)), gdzie (n) jest odwrotnością funkcji Ackermanna. Lemat. Stosując metodę „dziel i rządź” możemy obliczyć DS(n,s) w czasie O( s (n) log n).
Graf widzialności. Dany jest zbiór S zawierający n nieprze- cinających się odcinków na płaszczyźnie. Definicja. Graf widzialności W = (V, E) dla zbioru S definiujemy następująco: V jest zbiorem końców odcinków z S, nato- miast do E należą wszystkie krawędzie o końcach z V, które nie mają punktów wspólnych z wnętrzem innych odcinków z S niż te, do których należą ich końce. W szczególności możemy rozpatrywać graf widzialności dla zbioru odcinków będących krawędziami wielokąta. Niech seg(p) oznacza odcinek o końcu w p, a P zbiór końców odcinków z S.
Lemat. Graf widzialności może mieć rozmiar kwadratowy, więc algorytm znajdujący ten graf wymaga w pesymistycznym przypadku czasu (n 2 ), gdzie n jest liczbą odcinków w zbiorze S. Skonstruujemy algorytm działający w czasie O(n 2 ). Definicja. Niech r(p, ) oznacza półprostą zaczepioną w p i tworzącą z osią x-ów kąt . Dla każdego punktu p V definiujemy funkcję widzialności: vis(p,*): [0, ) S w następujący sposób: - vis(p, ) = , gdy r(p, ) zawiera seg(p) lub nie przecina żadnego odcinka z S, - vis(p, ) = s, gdy s jest odcinkiem z S-{seg(p)}, którego punkt przecięcia z r(p, ) leży najbliżej p. Z pomocą funkcji vis( ) łatwo możemy stworzyć graf widzialności.
Niech 0 < 1 < 2 < 3 < . r(p, 2 ) przechodzi przez q oraz w kącie między r(p, 1 ) i r(p, 3 ) nie ma innych końców odcinków z S niż q. Mamy 4 przypadki: 1.vis(p, 1 ) seg(q), p jest bliżej q niż przecięcie r(p, 2 ) i vis(p, 1 ). Wtedy vis(p, 2 ) := seg(q) i kra- wędź (p,q) należy do W. 2.vis(p, 1 ) = seg(q). Wtedy vis(p, 3 ) := vis(q, 2 ) i krawędź (p,q) należy do W. 3.seg(p) = seg(q) nie powoduje żadnych zmian grafu W. 4.vis(p, 1 ) seg(q) i p jest bliżej przecięcia r(p, 2 ) i vis(p, 1 ) niż q. Nie wpływa to na postać grafu W. p q p q p q p q
Algorytm znajdywania grafu widzialności. Załóżmy, że w P nie ma trzech punktów współliniowych. for każdy p P do oblicz vis(p,0); stwórz układ dla prostych dualnych do P; sortuj topologicznie wierzchołki układu przyjmując, że v w, gdy v jest lewym a w prawym końcem wspólnej krawędzi (otrzymujemy ciąg v 1,..., v m ); for i = 1 to m do wykorzystując poznane własności funk- cji vis( ) stwórz graf W dodając lub nie krawędź (p,q) dla v i = D(p) D(q); E := E S; return (P,E); c b a f e d D(c) D(b)D(a) D(f) D(e) D(d)
Twierdzenie. Algorytm znajduje graf widzialności w czasie O(n 2 ). Dowód. Analizowane są wszystkie pary wierzchołków z P. Na mocy wcześniejszych rozważań dotyczących funkcji vis( ) każda krawędź z E-S jest znajdywana. Początkowe wartości funkcji vis( ) można obliczyć w czasie O(n 2 ). Tworzenie układu prostych, sortowanie topologiczne wierzchołków oraz ana- liza kolejnych wierzchołków wymagają czasu O(n 2 ), proporcjonalnego do rozmiaru danych. W przypadku wystąpienia w P co najmniej trzech punktów współliniowych, analizując dany wierzchołek układu badamy zależności między punktami odpowiadającymi kolejnym (względem współczynnika kierunkowego w po- rządku malejącym) prostym przecinającym się w danym punkcie.
Dziękuję za uwagę.
Ćwiczenia. 1. Znajdź wielokąt i takie ustawienie strażników, że widzą oni każdy punkt brzegu, ale nie każdy punkt wnętrza wielokąta. 2. Znajdź wielościan, w którym ustawienie strażników we wszystkich wierzchołkach nie zapewnia kontroli nad każdym punktem wielościanu. 3. Wielokątem prostokątnym nazywamy wielokąt, którego krawędzie są poziome i pionowe. Podaj przykład pokazujący, że do ochrony wielokąta o n wierzchołkach czasem potrzebne są n/4 kamery. 4. Przypuśćmy, że dany jest wielokąt prosty o n wierzchołkach wraz ze zbio- rem przekątnych, które dzielą P na wypukłe czworokąty. Jak wiele kamer wy- starcza do ochrony P ? Dlaczego nie przeczy to twierdzeniu o galerii sztuki ? 5. Jak wyznaczyć funkcję NEXT w czasie O(n) ?
6. Wykaż, że graf funkcji NEXT wskazuje minimalne pokrycie klikami. 7. Jak udowodnić twierdzenie o strefie z pomocą ciągów Davenporta- Schincela ? 8. Oszacuj 2 (n). 9. Jakie są oszacowania na rozmiar obwiedni zbioru: - parabol, - hiperbol, - kół o jednakowym promieniu, - kół o różnym promieniu, - odcinków o rzutach takiej samej długości, - odcinków o różnych długościach rzutów.
10. Dane są 3 (4) reflektory rzucające snop światła o rozwartości 120 (90 ) każdy. Udowodnij, że reflektory te można ustawić w dowolnych 3 (4) danych punktach płaszczyzny tak, aby cała płaszczyzna była oświetlona. Zadanie to zachodzi dla dowolnego naturalnego n.