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


13

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

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

  • XYL
  • XY ,

де | .x X , y Y }XY={xyxX,yY}

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

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

Приклад:

Нехай 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)XY=LaabbbabX,YL
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=xXx1L,X=yYLy1,
LLLL

Зауважте, що для звичайної мови існує лише обмежений набір лівих і правих коефіцієнтів, і, таким чином, або проблема зводиться до обчислення лівого і правого коефіцієнтів мови, а потім до обчислення їх -stasta закриття, тобто мінімальний набір коефіцієнтів, який закритий під перетином. Вони тоді точно праві і ліві чинники фактори, а потім, як правило , легко побачити , які пари є підмножини .LL

Приклад

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

Нехай . Тепер ліві коефіцієнти - це множини для , тобто ті слова в які можуть бути префіксами , тобто . Коли для різних ? Це так, якщо і лише тоді, коли і можна доповнити словами до L x - 1 L x Σ u Σ x x u L y - 1 L = x - 1 L x , y x y LL=ΣabΣLx1LxΣuΣxxuLy1L=x1Lx,yxyLз точно такими ж суфіксами. Це означає, щоб сказати більш звичними термінами, вони є неродовими еквівалентами, а суфікси, необхідні для додавання до слів класу Нерода, є саме відповідними лівими частниками.

Для ми бачимо, що наші класи неродової еквівалентності єL

  • a b aN1 , набір слів, що не містять як фактор і закінчується , aba
  • b a bN2 , набір слів, що закінчуються на і не містять як фактор, і bab
  • a b N 3 = LN3 - сукупність слів, що містять як фактор, тобтоabN3=L

Їх можна доповнити за допомогою наступних множин (тобто, це ліві частки слів у відповідних класах):

  • S1=x1L для у складається з усіх слів у (будь-яке слово може бути доповнене словом, що містить як фактор, і таким чином стає словом у ) та , що єxN1LabLbΣS1=LbΣ
  • S2=x1L для в - сама мова, тобто іxN2S2=L
  • S3=x1L для в , очевидно, . Тобто, ми знайшли три правильних фактори . Оскільки , їх стійке закриття є тривіально , і тоді вони є саме правильними чинниками.xN3ΣLS2S1S3S1,S2,S3

Отже наш множинні множини мають вигляд .FL(P1,S1),(P2,S2),(P3,S3)

Тепер для лівих факторів використовуємо рівняння початку цієї відповіді:Pi

Pi=xSiLx1
.

Для , це дає , для ми отримуємо і , отримуємо . Ви можете переконатись у цьому, перевіривши (найпопулярніший привід для того, що занадто ліниво заявляти про офіційний доказ) або чітко обчислити правильні коефіцієнти (що є досить аналогічним, хоча і не повністю, обчисленням лівих коефіцієнтів). Таким чином, наші факторизації задаються де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
  • Це множини форми , для . Тепер їх знову лише кінцево багато, і для нас тоді і лише тоді, коли для всіх , , тобто вони можуть бути префіксними до мов слів із точно однаковим набором рядків.Ly1yΣxyLy1=Lx1uΣuxLuyL
  • Для обчислення розглянемо ці стани в такі, що міститься в майбутньому . Об'єднання минулих держав становить один правовий коефіцієнт. Знайдіть усі ці коефіцієнти. q A x qLx1qAxq
  • Ви знаєте, що ви зробили, коли знайшли стільки лівих факторів, скільки у вас правих факторів.
  • Знайти такі пари лівого і правого факторів таке , що . Це .X,YF LXYLFL

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

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