Як було запропоновано в коментарях до питання, я спробую дати відповідь на це (на жаль, часткову), принаймні настільки, наскільки я сам зрозумів проблему (це означає, що ви цілком можете виявити помилки, і якщо ви знайдете спосіб більш коротко або чітко пояснити один із наведених нижче пунктів, сміливо відповідним чином відредагуйте відповідь):
По-перше, слід зазначити, що насправді нам не потрібно обчислювати універсальний автомат мови, якщо ми хочемо обчислити факторизацію мови.
З статті, згаданої в моєму коментарі ¹, існує відповідність 1-1 між лівими та правими факторами звичайної мови, тобто, враховуючи лівий фактор мови, відповідний правий фактор однозначно визначається і навпаки. Точніше, ми маємо наступне:
Нехай є факторизація . Тоді
тобто будь-який лівий фактор є перетином правильних частників, і будь-який правий фактор - це перетин лівих коефіцієнтів. І навпаки, будь-який перетин лівих приватного є правим фактором , і будь-який перетин правого приватного є лівим фактором .L Y = ⋂ x ∈ X x - 1 L , X = ⋂ y ∈ Y L y - 1 , L L L L(X,Y)L
Y=⋂x∈Xx−1L,X=⋂y∈YLy−1,
LLLL
Зауважте, що для звичайної мови існує лише обмежений набір лівих і правих коефіцієнтів, і, таким чином, або проблема зводиться до обчислення лівого і правого коефіцієнтів мови, а потім до обчислення їх -stasta закриття, тобто мінімальний набір коефіцієнтів, який закритий під перетином. Вони тоді точно праві і ліві чинники фактори, а потім, як правило , легко побачити , які пари є підмножини .L∩L
Приклад
Щоб проілюструвати вищезазначені моменти, розглянемо перший приклад у питанні (про який я також вважаю, що це невірно в роботі):
Нехай . Тепер ліві коефіцієнти - це множини для , тобто ті слова в які можуть бути префіксами , тобто . Коли для різних ? Це так, якщо і лише тоді, коли і можна доповнити словами до L x - 1 L x ∈ Σ ∗ u Σ ∗ x x u ∈ L y - 1 L = x - 1 L x , y x y LL=Σ∗abΣ∗Lx−1Lx∈Σ∗uΣ∗xxu∈Ly−1L=x−1Lx,yxyLз точно такими ж суфіксами. Це означає, щоб сказати більш звичними термінами, вони є неродовими еквівалентами, а суфікси, необхідні для додавання до слів класу Нерода, є саме відповідними лівими частниками.
Для ми бачимо, що наші класи неродової еквівалентності єL
- a b aN1 , набір слів, що не містять як фактор і закінчується , aba
- b a bN2 , набір слів, що закінчуються на і не містять як фактор, і bab
- a b N 3 = LN3 - сукупність слів, що містять як фактор, тобтоabN3=L
Їх можна доповнити за допомогою наступних множин (тобто, це ліві частки слів у відповідних класах):
- S1=x−1L для у складається з усіх слів у (будь-яке слово може бути доповнене словом, що містить як фактор, і таким чином стає словом у ) та , що єxN1LabLbΣ∗S1=L∪bΣ∗
- S2=x−1L для в - сама мова, тобто іxN2S2=L
- S3=x−1L для в , очевидно, . Тобто, ми знайшли три правильних фактори . Оскільки , їх стійке закриття є тривіально , і тоді вони є саме правильними чинниками.xN3Σ∗LS2⊂S1⊂S3∩S1,S2,S3
Отже наш множинні множини мають вигляд .FL(P1,S1),(P2,S2),(P3,S3)
Тепер для лівих факторів використовуємо рівняння початку цієї відповіді:Pi
Pi=⋂x∈SiLx−1
.
Для , це дає , для ми отримуємо і , отримуємо . Ви можете переконатись у цьому, перевіривши (найпопулярніший привід для того, що занадто ліниво заявляти про офіційний доказ) або чітко обчислити правильні коефіцієнти (що є досить аналогічним, хоча і не повністю, обчисленням лівих коефіцієнтів). Таким чином, наші факторизації задаються деP1L∪Σ∗aP2Σ∗P3LFL=u,v,w
- u=(P1,S1)=(Σ∗abΣ∗∪Σ∗a,Σ∗abΣ∗∪bΣ∗)
- v=(P2,S2)=(Σ∗,Σ∗abΣ∗) і
- w=(P3,S3)=(Σ∗abΣ∗,Σ∗)
Підсумок
Підводячи підсумок (як ви просили просту процедуру):
- Для обчислення факторизации мови , спочатку обчислити ліву факторизацию .LL
- Ви можете зробити це мовою статті, побудувавши мінімальну DFA для а потім для кожного стану в (що відповідає класу еквівалентності Нероду лівому коефіцієнту) обчислити майбутнє в , отримуючи таким чином один лівий коефіцієнт мови для кожної держави.ALqAqA
- Колекція лівих коефіцієнтів, отримана таким чином, дає, як правило, підмножину правильних факторів.SR
- Потім закриття , що може бути здійснено на практиці шляхом формування перетину будь-якого підмножини та додавання будь-якого підмножини, отриманого таким чином, до .∩SRSRSR
- Безліч разом з усіма перетинами з попереднього кроку , то безліч правих факторів .SRL
- Для того , щоб отримати ліві фактори, ми можемо обчислити правильну факторизацию .L
- Це множини форми , для . Тепер їх знову лише кінцево багато, і для нас тоді і лише тоді, коли для всіх , , тобто вони можуть бути префіксними до мов слів із точно однаковим набором рядків.Ly−1y∈Σ∗x≠yLy−1=Lx−1u∈Σ∗ux∈L⇔uy∈L
- Для обчислення розглянемо ці стани в такі, що міститься в майбутньому . Об'єднання минулих держав становить один правовий коефіцієнт. Знайдіть усі ці коефіцієнти. q A x qLx−1qAxq
- Ви знаєте, що ви зробили, коли знайшли стільки лівих факторів, скільки у вас правих факторів.
- Знайти такі пари лівого і правого факторів таке , що . Це .X,YF LX⋅Y⊆LFL
- Універсальний Автомат Ломбардії та Сакаровича (в текстах логіки та ігор, т. 2: Логіка та автомати: історія та перспективи , 2007)