Problém synchronizace střelců je problémem z oblasti informatiky a teorie celulárních automatů .
Poprvé navrhl John Myhill v roce 1957 a publikoval (s řešením) v roce 1962 Edward Moore [2] . Název je spojen s chováním vojáků při popravě nebo salvu z pušky – všichni vojáci střílejí současně na signál.
Je to formulováno následovně: je možné naprogramovat jednorozměrný celulární automat konečné délky tak, aby z výchozího stavu G●●…●●● všechny buňky současně přešly do stavu FFF…FFF, bez ohledu na délka řetězce, pokud je přechodové pravidlo ●●●→● povinné, a jeho protějšky pro konce řetězce ⌀●●→●, ●●⌀→●? Srozumitelně [3] :
Protože se signál šíří po lince rychlostí 1 pozice za hodinu (v teorii celulárních automatů se tomu říká „rychlost světla“), je zřejmé, že čas synchronizace se bude prodlužovat s rostoucí .
Existuje řešení problému synchronizace šipek v pěti stavech - pro jakýkoli , ne nutně optimální v čase?
První řešení tohoto problému našli John McCarthy a Marvin Minsky a publikovali jej v Sequential Machines Edward Moore.
Řešení vyžadující minimální čas našel v roce 1962 profesor Eiichi Goto z MIT [4] . Využívá několik tisíc stavů a vyžaduje přesně jednotky času pro roboty. Je snadné dokázat (viz níže), že neexistují žádná časově výhodnější řešení.
Optimální řešení, využívající pouze šest stavů (včetně finálního „výstřelu“), našel Jacques Mazoyer v roce 1987 [5] . Dříve Robert Balzer dokázal počítačovým výčtem, že neexistují žádná řešení se čtyřmi stavy buněk [6] . Peter Sanders později zjistil, že Balzerův vyhledávací postup byl neúplný, ale po opravě postupu dostal stejný výsledek. V roce 2010 byly evolučním výčtem získány stovky různých řešení se šesti stavy [7] . Stále není známo, zda existuje řešení s pěti stavy buněk.
Snaží se také překonat rekord v počtu zapojených přechodových pravidel (včetně povinného, ale nevyužitého pravidla pro velitele ⌀●●→● [7] . V Mazoyerově řešení je 119 pravidel. Existuje nečasově optimální řešení se šesti stavy a 78 pravidly a optimální je od 80.
Najděte neúplná řešení se čtyřmi stavy – například synchronizace řady robotů [1] .
Nejjednodušší řešení problému popisuje dvě vlny stavů šířící se podél řady robotů, z nichž jeden se pohybuje třikrát rychleji než druhý. Rychlá vlna se odráží od vzdáleného okraje řady a setkává se s pomalou vlnou uprostřed. Poté se dvě vlny rozdělí na čtyři a pohybují se různými směry od středu. Proces pokračuje s každým zdvojnásobením počtu vln, dokud se délka segmentů řady nerovná 1. V tomto okamžiku všichni roboti střílejí. Toto rozhodnutí vyžaduje jednotky času pro vojáky.
Poměrně jednoduché 16stavové řešení popsané Abrahamem Waksmanem v roce 1966 [8] je popsáno zde . Velitel vysílá signály s frekvencemi sousednímu robotu . Signál se odrazí od pravého konce řady a narazí na signál (pro ) v buňce . Když se odrazí, vytvoří také nového velitele na pravém konci.
Signály jsou generovány pomocí pomocných signálů šířících se doleva. Každý druhý okamžik normální signál generuje pomocný signál šířící se doleva. se pohybuje nezávisle rychlostí 1, zatímco pomalejší signály se pohybují pouze tehdy, když přijímají pomocné signály.
Pokud mezi velitelem (iniciátorem střelby) a nejbližším koncem robotů, synchronizace vyžaduje alespoň kroky [9] . Zvláštní případ: pokud je velitel na hraně, tak kroky. |
Důkaz. Řekněme, že existují tři programy, které řeší problém synchronizace, a pro některé , a budou moci střílet pro . Věříme, že velitel je blíže levému konci.
Jakýkoli signál putuje od robota k robotu rychleji, než je takzvaná "rychlost světla" - 1 pozice za časový krok. Akce prvního robota v tuto chvíli závisí na prvních dvou robotech v tuto chvíli , na prvních třech v tuto chvíli , …, na všech robotech v tuto chvíli . V tuto chvíli je poslední robot stále ve svém výchozím stavu (signál přichází v tuto chvíli ).
To znamená, že pokud přidáme další roboty na pravý konec , v tuto chvíli bude stav prvních robotů stejný, pro prvního robota se nic nezmění a bude střílet ve stejném kroku . Poslední krok na schodu zůstane v původním stavu - signál ho nestihne dosáhnout. Tato trojice programů tedy není řešením. Rozpor.
Další dolní mez, kroky, se dokazuje stejným způsobem , ale počet není menší.
Poznámka. Další požadavky na a , pokud nejsou shora omezeny, mohou přinést zisk v počtu stavů, ale ne v čase, a skutečně existuje zobecnění Waksmanova 17stavového řešení, které funguje pro všechny a pro kroky [10] .
Bylo navrženo a studováno několik obecnějších formulací problému, včetně libovolně uspořádaných řad, uzavřených kruhů, čtverců, krychlí, Cayleyových grafů a obecných grafů.
Pokud se v synchronizačním čase nepodaří získat poznatek, že velitel je na hraně lineární formace, pak ve dvourozměrné formaci z poznání, že je čtvercový, dojde k zisku [11] .
Bylo možné najít existenci řešení pro lineární systém, pokud každý robot musí dát signál hodin před výstřelem, robot zná maximum a své a je podle toho naprogramován [12] . Nejjednodušším řešením je dát robotům další stavy a stejný počet cyklů k synchronizaci, ale můžete se obejít bez tohoto zpoždění, pokud je formace dostatečně dlouhá. Složitost každého jednotlivého programu (ve skutečnosti si pamatuje stav robota z klasické úlohy).
Forma akce | Minimální čas |
---|---|
Linka mezi velitelem a blízkým okrajem robotů | [9] |
Prsten | [9] |
Prsten s jednosměrným šířením informace | [9] |
Kare s velitelem na rohu | [jedenáct] |
Čtvereček s velitelem na rohu | [jedenáct] |
Kostka s velitelem nahoře | [jedenáct] |
Conwayova hra o život a další buněčné automaty | |||||
---|---|---|---|---|---|
Konfigurační třídy |
| ||||
Konfigurace |
| ||||
Podmínky | |||||
Jiná kosmická loď na dvourozměrné mřížce |
| ||||
Jednorozměrná kosmická loď | |||||
Software a algoritmy |
| ||||
výzkumníci KA |