Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra matematiky HLEDÁNÍ NEJKRATŠÍCH CEST NA TROJÚHELNÍKOVÝCH SÍTÍCH Semestrální práce z předmětu Matematické modelování Martina Smitková, A67 smitkova@students.zcu.cz Matematické inženýrství. února 7
Úvod motivace hledání nejkratší cesty Hledání nejkratších cest je intenzivně diskutovanou otázkou zejména při řešení navigačních úloh at už máme na mysli historickou mořeplavbu či moderní navigaci pomocí globálního polohového systému GPS. Odjakživa bylo potřeba dostat se z výchozího do cílového místa co nejrychleji a s co nejmenšími náklady na cestu a tyto důvody podněcovaly a stále podněcují zájem o problematiku nejkratších cest. V geodézii se tento problém řeší již velice dlouho a je známý pod názvem druhá základní geodetická úloha ze zadaných souřadnic koncových bodů je úkolem vypočítat délku geodetické křivky mezi těmito dvěma body a azimuty křivky v koncových bodech. Na klasických referenčních plochách je tato úloha jednoduše řešitelná v rovině převodem kartézských souřadnic na polární, na kulové ploše pomocí aparátu sférické trigonometrie a na rotačním elipsoidu numerickým řešením soustavy obyčejných diferenciálních rovnic. TIN model zemského povrchu Abychom mohli nejkratší cesty hledat co nejpřesněji, použijeme lokální vektorový model zemského povrchu nepravidelnou trojúhelníkovou sít neboli TIN (z anglického Triangular Irregular Network). TIN reprezentuje povrch jako soubor trojúhelníků, z nichž každý je definován třemi vrcholy body o známých prostorových souřadnicích. Každá hrana v TIN (s výjimkou obvodu TIN) je sdílena právě dvěma sousedními trojúhelníky. Výhodou to- hoto modelu je věrný a přesný popis tvarů zemského povrchu a optimalizace uložení dat, jeho nevýhodou je složitost datové struktury a tím i algoritmů s ní pracujících.
Obrázek : Příklad TIN. 3 Hledání nejkratší cesty na TIN Vstupem úlohy hledání nejkratší cesty na TIN je TIN a dva různé body na TIN výchozí bod a cílový bod, výstupem je nejkratší cesta po TIN mezi těmito dvěma body. Nepovinným vstupem může být váhová funkce F, která pro každý vrchol TIN definuje možnou rychlost pohybu v tomto vrcholu (například v závislosti na prostupnosti terénu). Výstupem pak je nejkratší vážená cesta, která minimalizuje celkový čas cesty mezi danými dvěma body. Ve své práci problém hledání nejkratší cesty na TIN řeším ve dvou krocích:. Výpočet časové funkce T, která pro každý vrchol TIN udává minimální čas cesty do výchozího bodu.. Vlastní výpočet nejkratší cesty návrat z cílového do výchozího bodu podél záporně vzatého gradientu funkce T gradient udává směr největší změny funkce T a tedy i lokální směr nejkratší cesty. 3. Výpočet časové funkce T 3.. Formulace úlohy Uvažujme rovinu xy. Časová funkce T (x, y) pro každý bod (x, y) udává nejkratší čas, ve kterém je možné se dostat z výchozího bodu do tohoto bodu. Odvodíme nyní rovnici pro funkci T. Použijeme-li známý vztah, že vzdálenost = rychlost čas, pak v jednorozměrném případě dostáváme
F dt =. () dx Ve více dimenzích platí, že T je ortogonální k hladinám funkce T a podobně jako v předchozím případě je jeho velikost nepřímo úměrná rychlosti, tedy T F =, T = v A, () kde A je výchozí bod. Rovnici T F = se říká eikonalová rovnice. Budeme ji numericky řešit na TIN. 3.. Schéma pro jednoduchou trojúhelníkovou sít Uvažujme jednoduchou trojúhelníkou sít jako na obrázku. D A X B C Obrázek : Jednoduchá trojúhelníková sít. Zaměřme se na trojúhelník tvořený body X, A a C s hodnotami T X, T A a T C a předpokládejme, že hodnoty T A a T C jsou známé a že hodnotu T X chceme určit. Představme si, že hodnoty T v těchto třech bodech definují jakousi rovinu, kartézský souřadnicový systém má počátek v bodě X a platí AX = CX = h. Rovnice roviny vyjádřené jako funkce dvou proměnných pak je ( TX T A h ) x + ( TX T C h ) y + T X = T (x, y). (3) 3
Gradient této funkce je ( TX T A T =, T ) X T C. (4) h h Řešíme eikonalovou diferenciální rovnici T F =, musí tedy platit ( ) ( ) TX T A TX T C + = h h F. (5) Lze říci, že hledanou hodnotou T X T A, T C zdviháme rovinu tak, aby velikost gradientu byla rovna /F. 3..3 Schéma pro ostroúhlou TIN Ostroúhlou TIN rozumějme TIN, jejíž trojúhelníky nejsou tupoúhlé. Uvažujme trojúhelníkovou sít jako na obrázku 3. X Obrázek 3: Skupina trojúhelníků okolo společného centrálního bodu X. V obecnějším případě ostroúhlé TIN může velké množství trojúhelníků sdílet centrální bod (viz bod X na obrázku 3). Pomocí následujícího postupu, inspirovaného jednoduchou trojúhelníkovou sítí z předchozí části, se pokoušíme vypočítat vhodnou hodnotu T pro centrální bod z každého trojúhelníku, který má vrchol v tomto centrálním bodě. Může ovšem dojít k situaci, že z různých trojúhelníků obdržíme více různých přípustných hodnot T a musíme tedy jednu z nich vybrat v tomto případě volíme minimum z možných hodnot T. 4
Uvažujme netupoúhlý trojúhelník ABC (viz obrázek 4), ve kterém chceme určit T (C). Předpokládejme, že T (B) > T (A) a u = T (B) T(A). Pro T (C) platí T (C) = T (A) + t. E u I B a Ö t B H C è h b G D A C h G D A Obrázek 4: Odvození vztahu pro výpočet funkce T na trojúhelníku. Obrázek vlevo rovinný pohled na trojúhelník ABC, označení některých bodů, úseček a úhlů. Obrázek vpravo prostorový pohled na trojúhelník ABC, označení dalších bodů a úseček. Platí t = CE = T (C) T (A) a u = BI = T (B) T (A). Body A, E a I definují myšlenou rovinu funkce T nad trojúhelníkem ABC. Pro myšlenou rovinu funkce T nad trojúhelníkem ABC platí T = t u h, (6) kde h je výška v trojúhelníku BCD. Hledáme tedy t = EC, které splňuje eikonalovou rovnici t u = h F. (7) Označme a = BC a b = AC. Z podobnosti trojúhelníků AEC a AHD plyne 5
t b = DH AD, (8) takže Z kosinové věty plyne CD = b AD = b bu t b(t u) =. (9) t BD = a + CD a CD cos θ () a ze sinové věty Potom z pravoúhlého trojúhelníka CBG dostáváme h = a sin φ = a CD BD sin θ = sin φ = CD sin θ. () BD a CD sin θ a + CD a CD cos θ. () Po dosazení za h z rovnice (7) a za CD z rovnice (9) a jednoduchých úpravách máme kvadratickou rovnici pro t: F (a + b ab cos θ) t + +buf (a cos θ b) t+ +b (u F a sin θ) =. (3) Řešení t musí splňovat nerovnost t > u a dále požadujeme, aby záporně vzatý vektor gradientu směřoval dovnitř trojúhelníku, což zajistíme pomocí této nerovnice: a cos θ < b(t u) t Dostáváme tedy následující způsob výpočtu: < a cos θ. (4) Pokud u < t a zároveň a cos θ < b(t u) t < a cos θ, 6
pak T (C) = min {T (C), T (A) + t}; { jinak T (C) = min T (C), T (A) + b F, T (B) + a }. F Pořadí, v jakém budeme v jednotlivých bodech trojúhelníkové sítě počítat hodnotu funkce T je určeno principem metody Fast Marching, detailně rozebrané v [3]. 3..4 Rozšíření pro obecnou TIN V [3] je velmi stručně naznačeno, jak rozšířit metodu tak, aby bylo možné ji použít i pro obecně tupoúhlou TIN. Nejjednodušší způsob je přetvořit tupoúhlou TIN na ostroúhlou a tímto převést problém na již vyřešený případ ostroúhlé TIN. Jinou možností je pomocí rozvinování sousedních trojúhelníků do jedné roviny přidávat jakési virtuální hrany, které tupé úhly v trojúhelnících rozdělí na dva ostré. Problematikou tupoúhlé TIN jsem se ale nezabývala. 3. Vlastní výpočet nejkratší cesty V úvodu této kapitoly bylo uvedeno, že výpočet nejkratší cesty vlastně znamená návrat z cílového do výchozího bodu podél záporně vzatého gradientu časové funkce T gradient udává směr největší změny funkce T a tedy i lokální směr nejkratší cesty. Matematicky řečeno řešíme soustavu obyčejných diferenciálních rovnic dx(s) = T, (5) ds kde X(s) popisuje nejkratší cestu z cílového do výchozího bodu. 3.3 Aproximace gradientu funkce T K řešení diferenciální rovnice použijeme schéma druhého řádu s případným přepínáním na schéma prvního řádu. 7
3.3. Schéma prvního řádu Funkci T pro jednotlivé trojúhelníky nahrazujeme rovinou o rovnici Ax + By + C = T, (6) kde koeficienty A, B a C určíme ze souřadnic vrcholů daného trojúhelníka (viz obrázek 5) a z hodnot funkce T v těchto vrcholech jako řešení soustavy rovnic Pro gradient pak platí Ax + By + C = T Ax + By + C = T (7) Ax 3 + By 3 + C = T 3 T (A, B) (8) V 3 V V Obrázek 5: Trojúhelník pro výpočet T. 3.3. Schéma druhého řádu Nyní funkci T pro jednotlivé trojúhelníky nahrazujeme plochou druhého stupně o rovnici Ax + By + Cxy + Dx + Ey + F = T, (9) kde koeficienty A, B, C, D, E a F určíme ze souřadnic vrcholů daného trojúhelníka a tří okolních trojúhelníků (viz obrázek 6) a z hodnot funkce T v těchto vrcholech jako řešení soustavy rovnic 8
Ax i + By i + Cx i y i + Dx i + Ey i + F = T i i =,..., 6 () Pro gradient pak platí T (Ax + Cy + D, By + Cx + E) () V 3 V 5 V 6 V V V 4 Obrázek 6: Čtveřice trojúhelníků pro výpočet T. Nesmí ovšem dojít k situaci jako na obrázku 7. Plocha by byla určena jen pěti body a soustava rovnic by měla nekonečně mnoho řešení. V této situaci je nutné vyvolat výpočet prostřednictvím schématu prvního řádu. V 3 V 5 V V V 4 Obrázek 7: Situace, kdy není možné použít schéma druhého řádu. 3.4 Výpočet jednotlivých bodů nejkratší cesty Nejkratší cestu do výchozího bodu pak získáme následujícím způsobem:. Zvolíme trojúhelník v TIN. Jeho těžiště bude bodem G prvním bodem nejkratší cesty. Pro tento trojúhelník vypočteme aproximaci 9
gradientu funkce T. Bod G a záporně vzatý vektor gradientu určují přímku, určíme tedy průsečík této přímky s některou ze stran výchozího trojúhelníka. Nalezený průsečík je bodem G druhým bodem nejkratší cesty. G T G Obrázek 8: Počátek výpočtu jednotlivých bodů nejkratší cesty.. Máme určený bod G i i-tý bod nejkratší cesty a hledáme bod G i+. Bod G i leží na hraně, která je společná dvěma trojúhelníkům přes jeden trojúhelník jsme již nejkratší cestou přešli a nyní chceme přejít přes druhý. Podobně jako v předchozím případě určíme aproximaci gradientu funkce T pro trojúhelník, přes který chceme nyní přejít, a pomocí bodu G i a záporně vzatého vektoru gradientu vyjádříme přímku a vypočteme její průsečík s některou ze zbylých dvou hran trojúhelníka. Nalezený průsečík je bodem G i+ dalším bodem nejkratší cesty. G i G i T G i+ G i Obrázek 9: Průběh výpočtu jednotlivých bodů nejkratší cesty. 3. Jsme-li již dostatečně blízko bodu, do kterého máme za úkol se dostat, pak tento bod přidáme jako poslední bod do hledané nejkratší cesty a ukončíme výpočet.
4 Implementace a výsledky Pro testovací účely byla použita jednoduchá rovinná TIN složená z rovnostranných trojúhelníků viz obrázek..5.5.5.5.5.5.5.5 Obrázek : Jednoduchá rovinná TIN. 4. Výpočet bez váhové funkce F Budeme-li jako výchozí bod uvažovat vrchol uprostřed této TIN a budeme-li předpokládat, že váhová funkce F =, pak by hodnota časové funkce T v každém vrcholu TIN měla být rovna vzdálenosti tohoto vrcholu od výchozího bodu. Vizualizace přesného řešení je na obrázku. Vizualizace řešení eikonalové rovnice metodou Fast Marching bez uvažování váhové funkce F je na obrázku. Odchylky těchto dvou řešení jsou znázorněny na obrázku 3. Je vidět, že odchylky jsou závislé na poloze bodů v TIN.
.6.4.5..5.5.5.5.5.5.8.6.5.4. Obrázek : Přesné řešení rovnice T = na jednoduché TIN..6.4.5..5.5.5.5.5.5.8.6.5.4. Obrázek : Výsledek numerického výpočtu funkce T na TIN.
.3.5.5..5.5.5.5.5.5.5.5..5 Obrázek 3: Odchylky mezi přesným a přibližným řešením. 4. Výpočet s váhovou funkcí F Nyní budeme uvažovat netriviální váhovou funkce F. Funkce F je znázorněná na obrázku 4. Výsledná funkce T je na obrázku 5. 4.3 Prostorová TIN Nemusíme se samozřejmě omezovat jen na rovinnou TIN, algoritmus pro výpočet časové funkce T je určen pro prostorovou TIN. Ukázka výpočtu funkce T na prostorové TIN je na obrázcích 6 až 9. 3
.5.4.5.3...5.5.5.5.5.5.9.5.8.7.6 Obrázek 4: Váhová funkce F na TIN..6.4.5..5.5.5.5.5.5.8.6.5.4. Obrázek 5: Výpočet časové funkce T na TIN s úvahou váhové funkce F. 4
.8.6.5.4..5.5.5.5.5.5.8.6.5.4. Obrázek 6: Výpočet časové funkce T na prostorové TIN. 4 4 8 6 4 4 4 4 4 4 Obrázek 7: Výpočet časové funkce T na triangulované kulové ploše. 5
6 4 5 4 3 4 4 4 4 4 Obrázek 8: Váhová funkce F na triangulované kulové ploše. Obrázek 9: Výpočet časové funkce T na TIN s úvahou váhové funkce F. 6
4.4 Výpočet nejkratší cesty na TIN Chybí už jen poslední krok pomocí vypočtené funkce T začít konstruovat nejkratší cesty na TIN podle algoritmu popsaného v části 3.. Výsledky jsou vizualizovány na následujících obrázcích. Obrázek : Nejkratší cesty na rovinné TIN. 7
Obrázek : Nejkratší vážené cesty na rovinné TIN. Obrázek : Nejkratší cesty na prostorové TIN. 8
Obrázek 3: Nejkratší cesty na triangulované kulové ploše. Obrázek 4: Nejkratší vážené cesty na triangulované kulové ploše. 9
5 Závěr využitelnost získaných výsledků V této práci byl navržen a implementován postup, jak najít nejkratší spojnici mezi danými dvěma body na trojúhelníkové síti. Využití tohoto postupu je možné nalézt například v oblasti turistických GPS přístrojů. Klasický GPS přístroj hledá nejkratší cestu mezi dvěma body v průmětu na referenční elipsoid, takže při výpočtu cesty nebere ohled na terénní reliéf ani na rozmístění vodstva, vegetace a podobně. Pokud bychom GPS přístroji dodali informaci o reliéfu ve formě trojúhelníkové sítě a informaci o průchodnosti terénu ve formě váhové funkce, bylo by možné využitím zde popsaného postupu hledat nejkratší cestu mezi danými dvěma body přesněji než dosud. Literatura [] KIMMEL, Ron SETHIAN, James. Computing Geodesic Paths on Manifolds. Proceedings of National Academy of Sciences, USA, 95(5): 843-8435, 998. [] SETHIAN, James. Fast Marching Methods. SIAM Review. Vol. 4, No., pp. 99 35. Society for Industrial and Applied Mathematics. Philadelphia, 999. [3] SETHIAN, James. Level Set Methods and Fast Marching Methods. Evolving Interfaces in Computational Geometry, Fluid Mechanics, Computer Vision and Materials Science. nd edition. Cambridge University Press. Cambridge, 999. ISBN -5-644-3.