Prírodou inšpirované algoritmyštudijné materiály pre projekt mobilnej triedy umelej inteligencie |
||
Programovanie samoreprodukujúcich sa slučiekTáto kapitola je prakticky prekladom 4.kapitoly článku Reggia, Lohn, Chou, 1998 Spôsob programovania samoreplikátorov sa dá nájsť už vo von Neumannových pôvodných univerzálnych počítačoch - konštruktéroch (Neumann, 1966). Množina inštrukcií (signálov) alebo popisov na páske reprodukujúcej sa štruktúry, ktoré popisujú jej vlastnú štruktúru sa môže nazvať programom stroja. Podobne postupnosť inštrukcií ktoré obiehajú po samoreprodukujúcej sa slučke tvorí program, ktorý riadi jej reprodukciu. Takéto programy sa v minulosti týkali len reprodukcie slučky. Počas nedávnych rokov však myšlienka programovania samoreprodukujúcich sa slučiek sa upiera tým smerom, aby robili aj niečo iné ako rozmnožovanie a teda získava stále väčšiu pozornosť. Základnou myšlienkou je, že postupnosti signálov riadiacich reprodukciu štruktúry môžu byť nejakým spôsobom rozšírené, aby riešili určitú triedu úloh, zatiaľ čo sa objaví reprodukcia. Motiváciou pre takéto programované replikátory je, že poskytujú nové, výrazne súbežné výpočtové prostredie, ktoré môže viesť od zdĺhavých ku silným, veľmi rýchlym výpočtovým metódam.
Jeden prístup ku programovaniu samoreprodukujúcich sa slučiek na riešenie úloh je rozšírenie postupnosti signálov obiehajúcich po slučke, pridanie ďalších signálov predstavujúcich program, ktorý nesie nejakú úlohu. Tento aplikačný program sa skopíruje zároveň s programom reprodukcie pričom sa nemení z generácie na generáciu počas reprodukovania slučky a spúšťa sa každou slučkou raz medzi jednotlivými reprodukciami. Uskutočniteľnosť tohoto prístupu bola nedávno predvedená naprogramovaním čiastočne zapuzdrených slučiek na zostrojenie istej vzorky vo vnútri každej novej slučky (Tempesti, 1995). Pri použití slučky so štyrmi ramenami s
Praktický problém s vyššie uvedeným prístupom k programovaniu slučiek je obmedzené množstvo voľného priestoru, ktorý je v slučke použiteľný pre údaje aplikačného programu. Tento problém sa dá vyriešiť pridaním "pások" ku slučkám (Perrier et al., 1996). Tieto sú podobné páskam použitým v skorších počítačovo - konštruktérových replikátoroch (Codd, 1968; Neumann, 1966). Ak použijeme dve pásky, jedna sa môže použiť na uloženie postupnosti signálov predstavujúcej aplikačný program, zatiaľ čo druhá na uloženie údajov úlohy. Použitie tohto prístupu pri päťbunkovom okolí ukázalo, že je možné naprogramovať samoreprodukujúcu sa slučku na kontrolovanie zátvoriek (Perrier et al., 1996). Výraz so zátvorkami je zapísaný na údajovej páske a program kontroluje, či sú zátvorky tvarované alebo súmerné, výpočet zhodujúci sa s rozpoznávaním podľa neregulárneho jazyka. Tento proces používa bunky so Vyššie popísané programovateľné samorozmnožujúce sa slučky presne zapisujú množinu inštrukcií, ktoré riadia riešenie úlohy na slučke alebo na pripojenej páske. Tento aplikačný program je bez zmeny kopírovaný z rodiča do dieťaťa, takže každá generácia slučiek spúšťa presne ten istý program s presne tými istými údajmi. Nedávno sme skúšali iný prístup v ktorom možné riešenia sú pripojené k postupnosti inštrukcií pre reprodukciu, ktorá obieha v slučke (Chou & Reggia, 1998). Na rozdiel od minulých prístupov nie je počiatočné riešenie úlohy skopírované presne z rodiča do dieťaťa, ale sa z generácie na generáciu mení. Každá detská slučka dostáva iné čiastočné riešenie úlohy. Ak slučka nájde správne úplné riešenie úlohy, prestane sa rozmnožovať a ponechá si to riešenie ako svoju obiehajúcu vzorku. Na druhej strane ak toto riešenie nie je použiteľné, slučka "zomrie" (zmizne) bez potomkov. Takže na proces vytvárania kolónie slučiek sa môžeme pozerať ako na súbežné prehľadávanie stavového priestoru a priestoru riešení úloh. Na konci tohto procesu, keď sa reprodukcia zastaví, bunkový priestor obsahuje jednu alebo viac nereprodukujúcich sa slučiek, každú s obiehajúcou postupnosťou signálov, ktoré obsahujú správne riešenie úlohy (za predpokladu, že také riešenie jestvuje).
Nedávno sme použili tento prístup tvorby možných riešení a vyraďovania tých nepoužiteľných na riešenie úloh uspokojiteľnosti (SAT úlohy - satisfiability problem), klasického príkladu NP úplnej úlohy (NP-complete problem) (Hopcroft & Ullman, 1979). K danému booleovskému predikátu ako
Nasledujúci obrázok znázorňuje proces vytvárania a výberu pre samorozmnožujúcu sa slučku, ktorá nesie tri dvojkové bity predstavujúce tri premenné
![]()
Bez vykonávania výberu by sa v troch generáciách objavilo všetkých osem možných hodnôt booleovských premenných použitých v
Pre odstránenie slučiek, ktoré nevyhovujú predikátu úlohy, každá bunka v priestore bude slúžiť ako monitor. Každý monitor testuje jednu z klauzúl predikátu. Ak sa podmienka, ktorú bunka pozoruje v úlohe monitora nájde, zničí slučky ktorá ňou prechádza. Pre určitý predikát
Niektoré kroky procesu vytvárania a výberu tej istej slučky |
||
Kontakt: Marek Bundzel |