Перший трюк тут - розглянути таблицю множення як таблицю переходу автомата АКожен штат представляє лист у таблиці множення, але не переживаючи про прийняття. Тож букви ліворуч і в тілі таблиці насправді стани - точніше було б їх записати якqа,qб,qcале я не хочу. Літери вгорі є введеннями.
Потім побудуйте автомат АТ ("Т"для транспозиції) для зворотного множення шляхом транспонуванняА:
АТабcаааcбcабcбcа
Тому A ( a b c ) приймає вас до штату c, і так само АТ( c b a ) переходить у стан а з АТ, як ви зазначаєте.
Однак, АТприпускає, що ви рухаєтеся праворуч наліво, а ми все ще хочемо йти зліва направо. Отже, другий трюк - це повернути автомат (а не множення, яке би нас просто повернуло, якби ми почали), перевернувши всі стрілки, що призводить до недетермінованого автоматаАТR наведена таблицею переходу нижче, із підмножинами, позначеними сполученими літерами, щоб курка не дряпалася, так ac є насправді {a,c}. (сподіваюся, у мене все в порядку - здається, працює).
ATRabcabbcacabc∅aab∅cabcabcabc∅bbcabcacababc∅ccabacabcbcabc∅
Ви можете інтерпретувати це як недетермінований автомат із лише трьома рядками над рядком або детермінований варіант із усіма 8 рядками.
Нарешті, машиною для вирішення проблеми є крос-продуктовий автомат оригіналу A і ATR, це є A×ATR виконувати поведінку перехрестя двох автоматів (нам це не потрібно AT більше). A×ATR має стани, подібні до пар ⟨a,ac⟩. Функція переходу працюєA і ATRнезалежно. Стан єдиного запуску⟨1,1⟩ переходить у ⟨a,a⟩ під введенням a, в ⟨b,b⟩ під введенням bтощо.
Стани, що приймають, у недетермінованій версії є ⟨a,a⟩ і т. д. У детермінованому варіанті приймаючими станами є пари, в яких є перший компонент ∈ другого набору компонентів, таких як ⟨a,a⟩ або ⟨b,bc⟩.
A×ATR доповнені та визначені, як показано 25=3⋅8+1держави, тож пробачте мене, якщо я не випишу його докладно. Але недетермінований варіант має лише10=3⋅3+1 держав.