Чи може розраховувати FSA?


11

Це може бути дурним питанням. Здається зрозумілим, що FSA, оскільки він є кінцевим, може рахувати лише кількість символів у вхідному рядку до числа, обмеженого кількістю його станів. Але тепер припустимо, що ми оснащуємо FSA можливостями виведення (наприклад, друку). Тоді було б дуже легко побудувати машину, здатну друкувати по одному символу для кожного символу, який він читає. Чи вважатиметься це рахунком? Якщо ні, то чому б і ні?

Якщо говорити замість FSTs: я вважаю, що неможливо побудувати FST, здатний зіставити рядок довільної довжини у двійкове представлення (тобто число в системі числення базових-2) його довжини. Але, звичайно, тривіально побудувати FST, здатний зіставити рядок довільної довжини до рядка з нулями (або одиницями) однакової довжини. Але це може вважатись підрахунком, чи не може це зробити, оскільки FST робить побудову подання про довжину його вкладу. Дещо дивне уявлення, але все-таки подання, чи не так?


1
Тож ти справді задаєш питання "що рахує?" Мені це не схоже на інформатику. Було б інформатикою, якби ваше запитання було "для цього визначення рахунку, може FSA порахувати?".
Сашо Ніколов

Відповіді:


8

Це питання дещо розпливчастий, тому ось невиразна відповідь: Переведення одинарного на одинарне не рахується точно, оскільки машина насправді не «знає», який розмір входу був «врешті-решт».

Ви розумієте це, звичайно, саме тому ви ставите під сумнів факт, що він справді рахується.

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

Так що, можливо більш точне поняття дивитися, а НЕ підраховувати, це порівняння . Тобто, задавши два числа (в одинарних) та , визначте, чи .1 m n = m1н1мн=м

Здатність робити це порівняння - це те, що породжує відому нерегулярну мову . І нездатність NFA рахувати - це те, що робить цю мову нерегулярною.{анбн:н0}

Цікаво, що ця мова є CFL. І справді, відповідна модель автоматів - КПК, має можливість робити обмежене порівняння.

Коли ви говорите про порівняння, перетворювачі більше не дають вам додаткової сили, тому питання вирішується в цьому сенсі.

Додаткове зауваження: абсолютно неформально можливість порівняння двох чисел часто може використовуватися для імітації 2-лічильної машини Minsky Machine , які еквівалентні TM.


4

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

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

У вашому прикладі fsa перевіряє, чи має рядок однакове число 'і ' s шляхом підрахунку цих чисел до двох різних вихідних стрічок. Інший пристрій повинен робити остаточне порівняння, якщо у вас немає хитрості обробляти букви і попарно і обрізати одну проти іншої. Як на площі.b a bабаб

Тепер більш формальна модель для порівняння. Відповідно до теореми Хомського-Шютценбергера, кожна безконтекстна мова є зворотною перетворенням кінцевого стану мови Діка на дві пари дужок (не зазначено так у вікіпедії, але ви повинні мені повірити). Тепер перетворювач кінцевого стану може "прийняти" свою безконтекстну мову наступним чином (для кожної мови свій перетворювач). На вході перетворює рядок у (здогадується) серію спливів і натискань pda для , а потім перевіряє, чи є результат поведінки при натисканні, тобто результат є рядок уT D 2 L = T - 1 ( D 2 ) T L T L D 2 w T - 1 ( D 2 ) T ( w ) D 2LТD2L=Т-1(D2)ТLТLD2 . (Технічні деталі опущені, але це, як стверджує теорема Ч-Ш: у iff )шТ-1(D2)Т(ш)D2

Моя думка тут полягає в тому, що деякий «обчислення» робиться перетворювачем, але велика потужність прихована в тесті з . Аналогічно вашому прикладу, де дві літери відсортовані на двох стрічках. D2


Я можу побудувати DFA, що налічує від до (Для фіксованого ) або навіть у . Це більше, ніж керує будь-який людський чи реальний комп'ютер. Як би ви назвали підрахунок? 2 п ! n N02н!нN
Рафаель

@Raphael. Звичайно. І легко більша кількість від цього. Перестаньте навчати, що безконтекстні мови є більш потужними, ніж звичайні мови: вони однакові (принаймні для рядків довжиною не більше ). Просто жартую. Посилаючись на справжні комп'ютерні мови, як це робить щось обмеженим, чи не так? Кінцеві державні автомати не рахуються! Вони просто розрізняють кінцеву кількість станів, хоча це число може бути дуже великим. 2н!
Гендрік Ян

Але, як правило, представлені FSA, їм лише "дозволяється" говорити або "так" (прийнято), або "ні" (не прийнято). Враховуючи це, ніхто не міг побудувати FSA, який підраховує. Якщо ми дозволимо йому повідомити (наприклад, надрукувати) стан (число), в якому він знаходиться, коли він закінчується, він може рахувати, але лише до межі, заданої кількістю штатів. Але якщо ми дозволяємо йому друкувати, то тривіально побудувати єдиний стан FSA, який друкує (скаже) 1 кожен раз, коли він читає символ із вхідного рядка, повідомляючи таким чином про кількість в підрахунку. Що поганого в цій ідеї?
Torbjörn

І якщо ми забудемо про звітування / друк і думаємо натомість про внутрішні представлення, FSA може рахувати символи в рядку, але не в довільному довгому. Єдиний стан FSA тоді, звичайно, взагалі не може розраховувати.
Torbjörn

к

1

@Shaull: Дякую за вашу відповідь! Я новачок у StackExchange і не знаю, як прокоментувати відповідь, тому я вирішую написати відповідь замість цього, сподіваючись, що мені пробачать.

Гм, мені здається, що шепард рахує своїх овець, написавши позначку на листку паперу для кожної вівці, яку він бачить, або в'язень, який відлічує дні, які він перебував у в'язниці, записуючи позначки на стіні, рахують. Чому б n позначок на листочці паперу або на стіні не вважалося представленням числа n? Хіба це не те, що називається загальним представленням? AFAICS нічим не поступається (скажімо) бінарному представленню, за винятком того, що він використовує більше місця.

Я гадаю, що для вас тоді "знати" означає, що воно має врешті-решт внутрішнє представлення рахунку. Тоді, звичайно, очевидно, що FSA FST не може обчислити довжину довільної рядки. Але якщо ми не потребуємо знань у цьому сенсі, а вимагаємо лише, щоб FSA або FST мали змогу повідомити результат зовнішньому спостерігачеві, тоді мені здається, що подання підрахунку у форматі підрахунку повинно бути нормальним.

Крім того, якщо FSA оснащений як поступовим входом, так і вихідним сигналом, він, в принципі, повинен мати можливість використовувати своє зовнішнє середовище як пам'ять для читання / запису і, таким чином, бути таким же потужним, як і машина Тьюрінга. Правильно?

Дякуємо, що завели справу порівняння. Тепер, мабуть, випливає, що якщо ми скасуємо вимогу внутрішнього представництва, і нам потрібно лише, щоб машина могла представити результат зовнішньому спостерігачеві, тоді ми могли б легко створити FSM, який міг би створити певний вид графічне представлення результату. Припустимо, FSM, коли читає "aaaaaabbbbbb", написав

000000
000000

потім, оскільки бруски однакової довжини, FSM прийняв рядок "aaaaaabbbbbb". Два бруски однакової довжини означає «так», різної довжини означає «ні».

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


ЖSАWОС{ан|н є простим }

Я думаю, що різниця між прикладами, які ви наводите, та FST-виведеннями полягає в тому, що вівчар може читати рядки після їх написання, тоді як FSM не може. Те саме стосується порівняння.
Shaull

Ви можете коментувати, натиснувши посилання "Додати коментар" під будь-якою публікацією.
Рафаель

Будь-який FSA, побудований для підрахунку отари, може рахувати цю зграю. Жоден побудований FSA не може нарахувати жодну зграю. Основне питання полягає в тому, чи вівчар знає, як порахувати достатньо далеко, щоб принаймні порахувати власну зграю, чи може використовувати весь спектр природних чисел. На мій досвід, ми, люди, повинні явно зробити перехід між двома можливостями в якийсь момент нашої математичної освіти.
reinierpost

1

FSM можуть "рахувати" в обмеженому діапазоні / кількості кроків, що позначаються переходами стану. проте вони не можуть рахувати кінцеву кількість кроків.

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


Більш детально: перетворювач може збільшувати роботу в "lsb" до "msb" порядку, тобто "найменший біт sig" до "most sig bit", використовуючи логіку, подібну до EE повного суматора .
vzn

фій-перетворювачі кінцевого стану, здається, не були вивчені багато. Є ще одне цікаве додаток до гіпотези колац у створенні машини, яка обчислює ітерації. будь хто зацікавлений у подальшій теорії / дискусії PLZ, зв'яжіться зі мною у чаті чи на своєму блозі .
vzn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.