Скільки DFA приймають дві задані рядки?


28

Зафіксуйте ціле число та алфавіт \ Sigma = \ {0,1 \} . Визначте DFA (n) як сукупність усіх автоматів з кінцевим станом у n станах із початковим станом 1. Ми розглядаємо всі DFA (не тільки підключені, мінімальні чи не вироджені); таким чином, | DFA (n) | = n ^ {2n} 2 ^ n .nΣ={0,1}DFA(n)n|DFA(n)|=n2n2n

Тепер розглянемо два рядки x,yΣ і визначимо K(x,y) число елементів DFA(n) які приймають і x і y .

Запитання: Яка складність обчислення K(x,y) ?

Це питання має наслідки для машинного навчання .

Редагувати: Тепер, коли в цьому питанні є щедрість, я припускаю, що у формулюванні трохи більше точності. Для n1 , нехай DFA(n) є сукупністю n2n2n автоматів, як визначено вище. Для x,y{0,1} визначте, що Kn(x,y) є числом автоматів у DFA(n) які приймають і x і y . Питання: чи можна обчислити Kn(x,y) у poly(n,|x|,|y|) ?


2
Якщо ви зафіксуєте DFA, не фіксуючи остаточних станів, то або він відображає x і y в той самий стан, і в цьому випадку єдиним обмеженням є те, що стан повинен бути остаточним, або він відображає їх у два різних стани, у цьому випадку Єдине обмеження полягає в тому, що вони обоє мають бути остаточними. Таким чином, я б переформулював вашу проблему як "скільки DFA відображає х і у різних станах?".
a3nm

3
Ар'є, ти можеш пояснити рахунок n2n2n ? Я не можу отримати 2n фактор. Додано: На жаль, я забув вказати кінцеві стани. Так чи інакше, заради інших, ось як йде підрахунок. Для кожного стану вкажіть, куди слід входити на входи 0 і 1 ; що становить n2n . Вкажіть набір кінцевих станів; це 2n .
Srivatsan Narayanan

2
Дійсно, мені байдуже, що трапляється з рядками, крім x та y . Гадаю, для започаткування баунті потрібна певна кількість балів?
Aryeh

4
Найменший автомат, який приймає і має єдиний стан, тому я не думаю, що це страшенно інформативно ...уxy
Aryeh

3
Ось ідея: нам потрібно лише знати кількість -державних DFA, які опиняються в однаковому стані на і . Нехай це число буде і - загальна кількість DFA, тобто . Тоді відповідь , це дає межі. Для обчислення інша ідея полягає в тому, що ми можемо забути про спільний початковий відрізок і а також припустити, що wlog і . Ми порахуємо лише кількість двійкових DAG з станами та висотою не більшеx y m M M = n 2 n 2 n 1nxymMM=n2n2n12m+14(Mm)mxyx=0ab=1blmax{a,b}що і закінчуються там же, і з цього легко обчислити . 0a1bm
Kaveh

Відповіді:


1

Тож питання досить коротке, але дуже цікаве. Я припускаю, що вхід унарний, а і двійковий (або ми маємо проблеми, як вказує відповідь Кая).nxy

Перш за все, якщо вам цікаво приблизно знати , то ви можете просто створити кілька випадкових DFA, і це дасть вам хороший наближення. (Цікаво, чи має цей клас складності назву.)K(x,y)

Тоді знання точно видається важкою проблемою. Як вказували в коментарях a3_nm та Kaveh, питання рівнозначне визначенню кількості автоматів, для яких і переходять в один і той же стан. Я позначу ймовірність того, що вони перейдуть у той самий стан на .K(x,y)xyp

Оновлення: Деякі речі, які я написав тут, були неправдивими, тепер я їх виправив.

Неважко помітити, що . Ми маємо рівність, якщо дорівнює 0 і все нульове, крім останнього біта, який є 1. Чи є інші випадки? Не знаю. Якщо, наприклад, порожній рядок, а , то .p1/nxyxy=00p=n+1(n1)n

Щоб спростити проблему, я навіть почав думати про те, що станеться, якщо і є одинаковими. Якщо обоє принаймні і їх різниця ділиться на, тоді . Чи є проста формула для одинарної версії?xynn!p=1


Я уточнив проблему - бажаний алгоритм (або зменшення від деякої відомої важкої проблеми). Наближення вибірки використано в роботі, де введено це ядро: portal.acm.org/citation.cfm?id=1577108poly(n,|x|,|y|)
Aryeh

2
Що стосується одинарної версії: є лише поліноміально багато державних одинарних автоматів, тож я б зробив ставку, що для цього випадку існує багаточасова алгоритм обчислення . nKn(x,y)
Aryeh

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

Використовуване вами зменшення є помилковим: x і y можуть бути прийняті одними і тими ж автоматами і закінчуватися в абсолютно різних станах, насправді вони можуть ділити лише початковий стан на своїх шляхах, що справедливо для всіх рядків.
amnn

@amnn: Минуло три роки, як я написав це, але чи не третій пункт моєї відповіді пояснює, чому я маю справу лише з тим, що закінчуюсь у тому ж самому стані?
domotorp

0

Можливо, мені дуже не вистачає точки, але ви заявили, що є фіксованим, тому всі DFA такого розміру можна вважати попередньо обчисленими та зберігати у легкомодельованому форматі. Обчисліть таким чином:nK

На вході , деxyx,yΣ

  1. зберігати іxy
  2. ініціалізувати лічильник доc0
  3. для кожного з ваших DFAn2n2n
  4. а. моделюйте його на обох словах (цей крок )O(|xy|)

    б. приріст якщо обидва запуски моделювання приймаютьc

  5. вихідc

Загалом обчислення мають лінійну складність. Відповідь є зовсім іншою для .K(n,x,y)


3
Ясна спроба всіх машин спрацює. Ар'є хоче знати, чи існує, можливо, алгоритм багаточленного часу чи інший результат твердості.
Лев Рейзін

Строго кажучи, це поліноміальний час на вході, якщо n не є частиною вводу, саме так говорив Кай. Але питання явно інше.
domotorp

4
О Я бачу. Я не думаю , що це те , що він мав в виду «виправити .» Я думаю, що природна інтерпретація проблеми - це те, що не спрацює. n
Лев Рейзін

1
Правильно, дякую, що вказав на лазівку, Кай. Це було виправлено :)
Aryeh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.