Пошук максимальної факторизації звичайних мов


13

Нехай мова буде регулярною.L⊆Σ∗

Факторизація - це максимальна пара наборів слів із ( X , Y )L(X,Y)

  • X⋅Y⊆L
  • X≠∅≠Y ,

де | .x ∈ X , y ∈ Y }X⋅Y={xyx∈X,y∈Y}

(X,Y) є максимальним, якщо для кожної пари з або або Y \ не \ subseteq Y ' .(X′,Y′)≠(X,Y)X′⋅Y′⊆LX⊈X′Y⊈Y′

Чи є проста процедура, щоб дізнатися, які пари максимальні?

Приклад:

Нехай L=Σ∗abΣ∗ . Множина F={u,v,w} обчислюється:

  • u=(Σ∗,Σ∗abΣ∗)

  • v=(Σ∗aΣ∗,Σ∗bΣ∗)

  • w=(Σ∗abΣ∗,Σ∗)

де Σ={a,b} .

Ще один приклад:

Σ={a,b} і L=Σ∗aΣ Набір факторів факторизації Sigma F={q,r,s,t} з

  • q=(Σ∗,L)

  • r=(Σ∗a,Σ+L)

  • s=(Σ∗aa,ϵ+Σ+L)

  • t=(L,ϵ+L)


4
Я рекомендую прочитати наступний документ (особливо підрозділ 4.1) Жака Сакаровича: perso.telecom-paristech.fr/~jsaka/PUB/Files/TUA.pdf
— Корнелій Марка

1
Цікаво, чи не хочете ви бути більш конкретними щодо проблеми, тобто останнього речення вашого питання? Чи дано нам і ми хочемо перевірити, чи максимальний? Чи наше завдання перерахувати всі які є максимальними? Якщо останнє, чи зрозуміло, що цей перелік має кінцевий чи поліноміальний розмір? Напевно, не має сенсу просити алгоритм перерахувати всі можливості, якщо їх експоненціально багато. Крім того, ви хочете вказати, як представлена ​​мова , коли вона представлена ​​нам, і як представлені ? (наприклад, DFA, NFA, regexp)( X , Y ) ( X , Y ) L X , YX,Y(X,Y)(X,Y)LX,Y
— DW

2
Я не розумію ваших прикладів. Чи мають бути всі максимальні пари? не здається дійсним ...u,v,wv
— Рафаель

1
Приклад взято з згаданої статті. повинні бути максимальними парами. Я також не розумію, як обчислюється, оскільки, здається, це не обов'язково в . Я викладу ще один приклад. u,v,wvL
— Лаура

1
@Raphael, мені здається, що дійсний. Нехай , , - це факторизація, оскільки (врахуйте будь-який рядок, який містить , то будь-яка послідовність «s і / або » с, потім в кінцевому рахунку : цей рядок повинна мати деяку точку , де перші з'являється, так що точка , де вона містить ). У мене немає доказів, що це максимально, але я не можу знайти більші множини які є факторизацією . X = Σ ∗ a Σ ∗ Y = Σ ∗ b Σ ∗ ( X , Y ) X ⋅ Y = L a a b b b a b X ′ , Y ′ LvX=Σ∗aΣ∗Y=Σ∗bΣ∗(X,Y)X⋅Y=LaabbbabX′,Y′L
— DW

Відповіді:


8

Як було запропоновано в коментарях до питання, я спробую дати відповідь на це (на жаль, часткову), принаймні настільки, наскільки я сам зрозумів проблему (це означає, що ви цілком можете виявити помилки, і якщо ви знайдете спосіб більш коротко або чітко пояснити один із наведених нижче пунктів, сміливо відповідним чином відредагуйте відповідь):

По-перше, слід зазначити, що насправді нам не потрібно обчислювати універсальний автомат мови, якщо ми хочемо обчислити факторизацію мови.

З статті, згаданої в моєму коментарі ¹, існує відповідність 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

  1. Універсальний Автомат Ломбардії та Сакаровича (в текстах логіки та ігор, т. 2: Логіка та автомати: історія та перспективи , 2007)

3
Приємно! Зауважимо, що визначається для звичайних мов і що ці чинники , кінцевому підсумку є регулярними через властивості закриття. Отже, ми можемо не тільки ефективно обчислити останню пулю в підсумку, але також можемо відфільтрувати максимальні пари. X YA⊆BXY
— Рафаель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.