Inverzní problémy celulárních automatů a jejich aplikace

Motivace:

Představme si termity budující hnízdo. Termití hnízdo má velmi složitou strukturu (např. různé typy komor pro různé účely, síť chodeb, která je propojuje, ochraný val kolem komory, kde přebývá královna, různé části se skládají z různých materiálů, atd..) přitom neexistuje žádná centrální autorita, která by jednotlivé termity řídila při stavbě. Navíc život termita je mnohem kratší než doba potřebná pro postavení hnízda, takže žádný z dělníků, kteří stavbu zahajovali, se nedožije výsledku své práce. Komunikace mezi termity je při tom poměrně omezená a má krátký dosah. Otázka zní: Kde je uložen "plán" výsledné stavby a jak dokážou termiti efektivně koordinovat svou práci?

Inverzní problém CA

Celulární automat sestává ze sítě buněk, každá buňka se nachází v nějakém stavu. Existuje pravidlo, podle kterého buňky mění svůj stav v závislosti na stavu okolních buněk. Proto můžeme snadno spočítat následující konfiguraci pokud známe současnou konfiguraci a aktualizační pravidlo. Inverzní problém v základní podobě je následující: je dána počáteční konfigurace X a požadovaná konfigurace Y. Úkolem je nelézt aktualizační pravidlo, které stav X převede na stav Y (ne nutně v jednom kroku).

Vzhledem k motivačnímu příkladu - konfigurace X odpovídá situaci na začátku stavby hnízda, Y pak hotovému hnízdu. Aktualizační pravidlo odpovídá informaci, kterou má v sobě zakódovanou každý termit a podle které řídí své akce.

Problém můžeme popsat i v řeči programů - X je vstup nebo množina vstupů programu, Y pak výstup nebo množina výstupů programu. Cílem je najít program, který převádí dané vstupy na dané výstupy.

Zaměření práce

Práce by měla přispět do oblasti řešení inverzního problému. Buď je možné navrhnout co nejefektivnější "úplný" algoritmus (založený na prohledávání prostoru všech možných aktualizačních funkcí), nebo neúplný optimalizační algoritmus, který by hledal takovou aktualizační funkci, která X převádí na stav "co nejpodobnější" stavu Y (např. pomocí technik genetického programování). Práce se zaměří na nějakou specifickou třídu celulárních automatů.

Možné aplikace

Řešení takového problému je velice žádoucí, protože decentralizované řízení procesů je v praxi velmi efektivní (jednotky jsou autonomní, není třeba centrální řízení) a robustní (můžeme bez obav přidávat nebo odebírat výkonné jednotky, nevadí když se některá z nich porouchá a podobně). Navíc každá z výkonných jednotek může být velmi jednoduchá (její konstrukce snadná a levná) a také její práce není nijak sofistikovaná (má jednoduchý řídící program). Výsledná složitá struktura (nebo obecně plnění složitého úkolu) vzniká jako emergentní jev.

Tento přístup, který příroda využívá už tisíce let, se snaží vědci napodobit, např. MIT ve spolupráci s NASA (viz SPHERES) nebo projekty skupiny Biomachines Lab (např. Aquatic Drones). Možné aplikace se nabízejí také v oblasti nanotechnologií.