A műészti galéria probléma A műészti galéria probléma (art galry problm): A műészti galéria mgfigylés kamrákkal / őrökkl. Hálózattrzés Alapjai 2007 8: Műészti Galéria Probléma Őrzési / Mgilágítási problémák A galéria trét gy síkbli sokszöggl (polygon) modllzük. Fltsszük, ogy z gy gyszrű sokszög, azaz gy önmagát nm mtsző poligonális lánc atárolja és nm tartalmaz lykat. 1 2 A műészti galéria probléma Lgyn P gy gyszrű sokszög és p és q két pont P-bn. Azt mondjk, ogy p és q látják gymást, a P tljs gészbn tartalmazza a pq szakaszt. A műészti galéria probléma: Adott: Egy gyszrű sokszög P. Fladat: Hol és ány pontot (őrt) kll llyzni P-bn, úgy ogy mindn P bli pontot lgalább gy őr lásson. p A műészti galéria probléma Az őrök minimális számának kiszáítása NP-néz. D: Mgmtatjk, ogy n/3 őr lgndő, aol n a csúcsok száma P-bn. Néány stbn n/3 őr szükségs is. (őr: mozgásérzéklő sznzor, kamra, fényforrás, ) : Azon pontok almaza P-bn, mlykt p lát 3 4
Sokszögk áromszöglés Egy P sokszög áromszöglés ( -lés) gy planár flosztása P-nk, mlynk csomópontjai P csúcsai, éli gyns szakaszok a csúcspárok között (az élkt átlóknak is nzik), flülti pdig áromszögk. Sokszögk áromszöglés Lmma 1: Mindn n csúcsú gyszrű sokszög P áromszöglésébn pontosan n-2 áromszög an. Biz.: Indkció n szrint. n=3 stén igaz, P gy áromszög. Lgyn n>3. Fltétl, a lmma állítása igaz mindn m<n stén. Először mgmtatjk, ogy P-nk an gy átlója. Eztán alkalmazzk az indkciós fltétlt a két sokszögr, amir z az átló osztja P-t. Lgyn az a csúcsa P-nk, mlynk koordinátái lxikografiksan minimálisak. Lgyn és w a két -l szomszédos csúcs. - Ha az w szakasz tljsgészbn P-bn an, akkor w gy átló. w 5 6 Sokszögk áromszöglés - Ha w nincs tljsgészn P-bn, akkor w tartalmazza P gy agy több csúcsát. Lgyn zn csúcsok közül az a csúcs, mlynk táolsága w-től maximális. Ekkor a szakasz nm mtszti P gy oldalát sm, mrt gy ilyn oldal gyik égpontja az w blsjébn lnn és w a táolsága w-től nagyobb lnn mint -nk. Ezért gy átló. Mindn átló P-t két sokszögr P 1 -r és P 2 -r osztja. Lgyn m 1 és m 2 a csúcsok száma P 1 -bn és P 2 -bn. Mil m 1 < n és m 2 < n, az indkciós fltétl szrint P 1 és P 2 -ltő, és zzl P is. Mil P 1 -nk és P 2 -nk pontosan két közös csúcsa an, m 1 +m 2 =n+2. P 1 és P 2 -lés az indkciós fltétl szrint m 1-2 és m 2-2 -t tartalmaz. Ezért P -lés n-2-t. 7 Sokszögk áromszöglés műgaléria probléma Lmma 1 implikálja, ogy mindn n csúcsú gyszrű P sokszögbn lgndő n - 2 őr, -nként 1. Ez azonban túl nagyonalú. Ha az őrökt bizonyos jól kiálasztott csúcsokban lyzzük l, akkor ksbb őr is lgndő. A stratégia : Válassznk ki a csúcsok gy (ltőlg kicsi) részalmazát, úgy ogy a -lés mindn -ébn lgalább gy kiálasztott csúcs an. Hlyzzük l az őrökt zkbn a csúcsokban. Ekkor az gész P mgfigylt. 8
Sokszögk áromszöglés műgaléria probléma Szinzzük a -lés csúcsait 3 színnl, úgy ogy a csúcsok, mlyk gy élll össz annak köt, különböző színűk lgynk. Ekkor mindn csúcsai 3 különböző színt kap. Ez 3 színosztályra osztja a csúcsok almazát. Kiálasztjk a lgkisbb színosztályt és az őrökt zkbn a csúcsokban lyzzük l. Mg kll mtatni, ogy a -lés 3 színnl szinztő Sokszögk áromszöglés műgaléria probléma Lmma 2: Tkintsük gy sokszög -lését T-t gy gráfként. Ekkor T 3 színnl szinztő. Biz.: Egy planár gráf G dál-gráfja G* az a gráf, mlynk csomópontjai G-nk a flülti. Két csomópont G*-bn pontosan akkor an összköt gy élll, a a mgfllő flültk G-bn gy él által szomszédosak. Tkintsük T dál-gráfját T*-t (a külső flült kiétlél). Mil mindn átló P-t két sokszögr osztja, T* bármlyik élénk törlés két komponnsr osztaná T*-t. Tát T* gy fa. (Ez nm lnn érénys olyan sokszögr, amlybn lyk an.) Toábbá, T* foka 3, mil mindn -öz T-bn lgfljbb 3 szomszédos an. 9 10 Sokszögk áromszöglés műgaléria probléma T szinzéséz T* bjárását asználjk mélységi krsés (DFS) által. Egy ttszőlgs T* bli csomóponttal kzdünk. T mgfllő -énk a csúcsait 3 különböző színnl szinzzük. Mgőrizzük azt az inariánst, ogy T mindn lért -énk csúcsai lysn annak szinz. Amikor T*-bn bjárnk gy (,) élt, az -nak és -nk mgfllő -knk t -nak és t -nk T-bn an gy közös oldala. Ekkor a közös oldal két égpontja már szinztt. A armadik csúcs szinzéséz t -bn a 3-adik színt asználjk. A DFS tán T-bn gy lys szinzést kapnk 3 színnl. Sokszögk áromszöglés műgaléria probléma Mil a szinzés tán a 3 színosztály közül lgalább gy n/3 csúcsot tartalmaz és mindn -bn pontosan gy csúcs zzl a színnl an szinz, a kötkző tljsül: Tétl 1: Lgyn P gy gyszrű sokszög n csúccsal. Akkor P lgfljbb n/3 őrrl mindig mgfigyltő. Vannak olyan sokszögk, mlykbn n/3 őr szükségs is. 11 12
A áromszöglés kiszámítása Először P-t.n. monoton sokszögkr bontjk. Eztán zkt a monoton sokszögkt -ljük. Akkor mondjk, ogy gy gyszrű sokszög P gy gyns szrint monoton, a mindn -ra ortogonális gynsr P összfüggő, azaz P agy gy pont, agy gy szakasz. P x-monoton, a az x-tngly szrint monoton. P flbontása x-monoton sokszögkr 5 csúcstipst különbözttünk mg: Lgyn gy csúcs és α() blső szög -nél P-bn. Ekkor gy Start-csúcs: mindkét szomszédja jobbra an -től és α()<π, Split-csúcs: mindkét szomszédja jobbra an -től és α()>π, End-csúcs: mindkét szomszédja balra an -től és α()<π, Mrg-csúcs: mindkét szomszédja balra an -től és α()>π, Rglar-csúcs: különbn. Start End Rglar Split Mrg 13 14 P flbontása x-monoton sokszögkr Lmma 3: Egy P sokszög akkor x-monoton, a nm tartalmaz s split-csúcsot s mrg-csúcsot. Biz.: Tgyük fl, ogy P nm x-monoton, akkor létzik gy rtikális gyns, mlyr P több mint 1 összfüggő komponnst tartalmaz. Válasszk -t úgy, ogy a lgmélybbn léő komponns gy szakasz nm gy pont. Lgyn p és q a szakasz két égpontja. Kössük P atárát q-ból balra indla addig, amíg gy r P mtszéspontot nm találnk. Ha p r, akkor útközbn klltt lnni gy split-csúcsnak. Különbn kössük P atárát q-ból jobbra indla addig, amíg Split p gy r P mtszéspontot nm találnk. Ekkor útközbn klltt lnni gy mrg-csúcsnak. P r q P p q r Mrg P flbontása x-monoton sokszögkr plan swp Így tát a split- és a mrg-csúcsokat kll P-bn kzlni. A sokszögknk P flbontása tán nm szabad ilyn csúcsokat tartalmaznik. P flbontásáoz gy plan-swp ljárást asználnk. Plan swp Ötlt: csúsztassnk gy függőlgs gynst (swp-lin) balról jobbra a síkon Egy swp-stats adatstrktúrában tároljk a swp-lin és a szcnárió mtsztét. A swp-stats adatstrktúrát csak bizonyos sményknél (nt point) kll aktalizálni (amikor az gyns és a szcnárió mtszt áltozik). 15 16
P flbontása x-monoton sokszögkr plan swp P flbontása x-monoton sokszögkr plan swp Swp-Stats T: gy bináris krsőfa. Az algoritms ftása alatt T mindig P-nk azon oldalait (élit) tárolja, mlyk -t mtszik, a mtszéspontok y-koordinátáinak mgfllőn rndz. Esménypontok: P csúcsai. Ezkt gy Q árakozási sorban tároljk, aol Q gy Priority- Q. Egy csúcs prioritása a csúcs x-koordinátája (pontosabban: a csúcs koordinátái lxikorafiksan). Q-t rndztt listaként is implmntálatjk, mil mindn smény kzdttől foga ismrt. P Mindn oldaláoz, amlyt a Swp-Stats T tartalmaz, tárolnk gy pointrt: lpr(). Ez P-nk arra a lgjobboldalibb csúcsára mtat, amly balra an -tól és P blsjébn és gy függőlgs szakasszal összköttő. Ha nincs ilyn csúcs, akkor lpr() a bal égpontja -nk. lpr() Ha lér gy i split-csúcsot, akkor mg kll találni P-nk azokat az j és k élit, amlyk a T-bn dirkt i fltt illt dirkt i alatt annak. Ekkor a szakasz i -től lpr( j )-z (és lpr( k )-oz) nm mtszti P gy másik élét és így j tljsn P-bn an. Mitán lért gy i split-csúcsot, i lsz j és k új lpr()-j és a két i -z incidns élé. Elgndő a lpr() mtatót csak azoknál az élknél tárolni, amlyk dirkt az újonnan lért csúcs fölött annak T-bn. i lpr( j ) k 17 18 P flbontása x-monoton sokszögkr plan swp Az sményk fldolgozása: Lgyn az aktális csúcs, amit éppn lér. split-csúcs: Krssük mg P azon és élét, ami dirkt fltt és dirkt alatt an T-bn. Fűzzük b az átlót, amly -t és lpr()-t összköti. Fűzzük b T-b P-nk a -z incidns két élét. Eztán az és a -z incidns alsó oldal lpr() mtatóját állítsk -r. mrg-csúcs: Töröljük a -z incidns két élt T-ből. Krssük mg azt az élt, ami dirkt fölött an T-bn. Lgyn lpr():=. (Később még isszatérünk rr az str) start-csúcs: Fűzzük b a két incidns élt T-b. A flső él lpr() mtatója lgyn. nd-csúcs: Töröljük a két incidns élt T-ből. j i lpr( j ) k P flbontása x-monoton sokszögkr plan swp flső rgláris-csúcs: Csréljük ki T-bn az élt, ami balról incidns -z a jobbról incidns élr. Lgyn lpr():=. alsó rgláris-csúcs: Csréljük ki T-bn az élt, ami balról incidns -z a jobbról incidns élr. Lgyn az az él, ami T-bn dirkt fltt an. Lgyn lpr():=. Split Mrg Start End flsö alsó 19 20
P flbontása x-monoton sokszögkr plan swp A split-csúcsokat tljsn fldolgoztk. Átlókat fűztünk b mindgyiknél. Az új sokszögkbn már nincs split-csúcs. A mrg-csúcsokat kll még tljsn fldolgozni. 1. ltőség: Végrajtnk gy másik plan swp-t átrafl. 2. ltőség: Csak gy plan swp (csak balról jobba). Mindn alkalommal, amikor gy élnél lpr() mgáltozik, tsztljük, ogy a régi lpr()-csúcs gy mrg-csúcs-. Ha ign, akkor fűzzük b az átlót a régi és az új lpr()-csúcs között. Ugyanígy, mindig, amikor gy élt lagy, tsztljük, ogy lpr() gy mrg-csúcs-. Ha ign, fűzzük b az átlót jobb oldali égpontja és lpr() között. Ennk gyanaz a atása mint a átrafl plan swp -nk. P flbontása x-monoton sokszögkr plan swp Hlysség: Az új sokszögkbn nyilánalóan nincs s split- s mrg-csúcs. Azt kll még mgmtatni, ogy nm fűzünk b olyan átlót, amly P alamlyik élét agy gy másik átlót mtsz. Egyszrűség égtt tgyük fl, ogy nincs két gynlő x-koordinátájú csúcs (a kitrjsztés az általános str gyszrű: a lxikografiks sorrnd sgítségél). Lgyn w gy átló, amit akkor fűztünk b, amikor gy splitcsúcsot lértünk. A Q tartomány at-bn -z szomszédos élk és a függőlgs szakaszok között w-n és -n krsztül nm tartalmaz csúcsot Q j a lpr() dfiníciója miatt. Ezért a w átló nm w mtszt s másik átlót s P-nk gy élét. A mrg-csúcsoknál bfűzött átlókra asonló k érk ismétltők. 21 22 P flbontása x-monoton sokszögkr plan swp Ftási idő és tárigény: Mindn smény (csúcs) fldolgozása O(log n) időt igényl. Összsn: O(n log n) idő. Tárigény O(n). Lmma 5: Egy gyszrű sokszög flbontató x-monoton sokszögkr O(n log n) idő alatt O(n) tárigénnyl. Monoton sokszögk áromszöglés Lgyn P gy x-monoton sokszög. Egyszrűség kdéért tgyük fl, ogy P nm tartalmaz gynlő x-koordinátájú csúcsokat. Egy plan swp-t ajtnk égr balról jobbra. Ennk során P-b átlókat fűzünk b, amikor csak ltségs. 23 24
Monoton sokszögk áromszöglés Inariáns: Lgyn i, i 2, az a csúcs P-bn, amlyt a swp lin éppn lért. Lgyn R a nm-áromszöglt tartomány P-bn -tól balra. Lgyn a lgbaloldalibb csúcs R-bn. Ekkor R-t két x-monoton lánc atárolja, a flső lánc és az alsó lánc. Mindkét lánc lgalább gy élt tartalmaz. Ha a lánc i -től -oz több mint gy élt tartalmaz, akkor z a lánc gy.n. rflx-lánc, azaz a lánc mindn blső csúcsánál a blső szög lgalább π. A másik lánc csak gy élt tartalmaz, mlynk bal égpontja és jobb égpontja jobbra an -tól. i Monoton sokszögk áromszöglés i=2: az inariáns = 1 -gyl tljsül. A 2 1 lánc csak gy élt tartalmaz, a másik lánc pdig abból a másik élből áll, amly 1 -z incidns. i>2: Tgyük fl, ogy az inariáns tljsül i-1 -r. Az algoritmsnak a kötkző stkt kll kzlni: 1. st:,..., i-1 gy rflx-láncot alkot és i a másik láncon an. Ekkor fűzzünk b gy átlót i -től a rflx-lánc mindn csúcsáoz -ig (xklzí ). Eztán lgyn := i-1. Most a rflx-lánc gytlngy élt tartalmaz i -t. 1 i i 1 R 25 26 Monoton sokszögk áromszöglés 2. st: i gyanazon a láncon an mint i-1. Ekkor mnjünk a láncon i -től átrafl és fűzzünk b mindn látató csúcsoz gy átlót, amíg l nm érjük az lső csúcsot, ami i -ből már nm látató. (Ltségs, ogy gy átlót s fűzünk b. (2b. Est).) Eztán a i -ből látató csúcsokat töröljük a láncból. Ekkor az új lánc i -től -ig gy rflx-lánc. 2a i 1 i 2b i 1 i Monoton sokszögk áromszöglés Implmntálás: A rflx-lánc csúcsai gy rmbn tárolatók. Egy flag adja mg, ogy a rm a flső agy az alsó láncot tárolja. Tgyük fl, ogy mindn csúcsoz tdjk, ogy az alsó agy a flső láncon an. Elmzés: Ha P csúcsai sorba annak rndz balról jobbra, akkor a -lész O(n) idő szükségs. P csúcsainak balról jobbra rndzt sorrndj O(n) idő alatt kiszámolató a csúcsok óramtatóal llntéts sorrndjéből. A -lés során összsn O(n) pop-, ps-oprációt iránytsztt ( j a láncon pontosan akkor látató i -ből, j+1<i, a i j+1 j < π) ajtnk égr, O(1) idő alatt oprációnként. Az adatstrktúrák tárigény O(n). 27 28
Sokszögk áromszöglés műgaléria probléma Lmma 6: Lgyn P gy x-monoton sokszög n csúccsal. Akkor P gy áromszöglés O(n) idő alatt O(n) tárigénnyl kiszámítató. Tétl 2: Lgyn P gy gyszrű sokszög n csúccsal. Akkor P gy áromszöglés O(n log n) idő alatt O(n) tárigénnyl kiszámítató. Irodalom [1]: Josp O Rork: Art Galry Torms and Algoritms. Oxford Unirsity Prss,1987. [2]: Mark d Brg, Marc an Krld, Mark Ormars, and Otfrid Scwarzkopf: Comptational Gomtry, Algoritms and Applications. Springr-Vrlag, 1997. Kötkzmény: Lgyn P gy gyszrű sokszög n csúccsal. Akkor a n/3 őr llyzés, amlyk P-t mgfigylik, O(n log n) idő alatt O(n) tárigénnyl kiszámítató. 29 30