Як зіставити стрічки «к-стрічки» машини Тьюрінга в єдину стрічку «1-стрічкової» машини Тюрінга


11

Я читаю Сіпсера, і мені важко зрозуміти, який процес такий, що якщо ви дасте мені машини Тюрінга з к-стрічками, я можу виплюнути еквівалентну машину Тюрінга лише однією стрічкою. Приклад був би непоганим. Насправді, я справді шукаю приклад, який показує, як перейти від ТМ, що має стрічки, до тієї, яка має 1 стрічку. Я поки що не зміг його знайти. Я також не шукаю ніяких доказів.k


Що ви маєте на увазі під "рівноцінною машиною"? Що таке вхід і що таке вихід? (Можливо, ви мали на увазі одну машину Тюрінга з стрічками?)k
Ювал Філімус,

Так. Одна токарна машина з k стрічками.
користувач678392

Відповіді:


17

Відповідь безсоромно скопіював із себе :

Багатоступенева машина Тьюрінга здебільшого така ж, як і односмугова машина, за винятком того, що у нас є розширена функція переходу де - кількість стрічок. Тож у кожному стані функція переходу читає вміст кожної стрічки, переходить у новий стан, (можливо) записує щось на кожну стрічку і переміщує кожну голову - так само, як звичайний ТМ, за винятком того, що зараз у нас є більше речей для читання, запису і рухатися. kQ×ΓkQ×Γk×{L,R}kk

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

Доказом цього є дещо задіяний і легко доступний за допомогою простого пошуку в Інтернеті, тому я просто замалюю ключове відображення стрічок на одну стрічку.k

Основна ідея досить відверта; ми просто додаємо кілька нових символів і відслідковуємо кожну стрічку і головуємо одна за одною. На кожному кроці обчислення ми можемо лише відвідати обмежену кількість будь-яких стрічок, тому нам потрібно лише зберігати цю інформацію про кожну стрічку. Таким чином, для кожної ми додаємо новий символ до який вказуватиме, де голова (для кожної стрічки) знаходиться в будь-якій точці обчислення. Також ми вводимо символ розділення до який вказуватиме початок та кінець "віртуальних" стрічок. Дано введенняgamma _ Γ # Γ ω = ω 1 ... ω п # ω 1 _ ... omega ; п # _ # _ # ... # _ # K  секції, одна на одній стрічці...γΓγ_Γ#Γω=ω1ωn(ми можемо припустити, що навіть на мульти-стрічковому апараті весь вхід знаходиться на першій стрічці - підтверджуючи, чому це хороша вправа) на мульти-стрічковому апараті наша машина матиме введення

#ω1_ωn#_#_##_#k sections, one per tape

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

(Надіюсь) простий приклад:

Скажімо, у нас є 3-стрічковий ТМ, де алфавіт введення просто , алфавіт стрічки - а вхід - . Початковий стан стрічки машини виглядає так: " " означає, де на кожній стрічці знаходиться головка читання / запису.Σ={0,1}Γ={0,1,}ω=10101

Tape 1:10101Tape 2:Tape 3:

Для побудови комбінованої односмугової машини нам потрібно додати нові символи до алфавіту стрічки:

  1. Нам потрібен символ, який буде позначати початок і кінець змодельованих стрічок
  2. Для кожного символу в нам також потрібна версія, яка вказує, що змодельована голівка стрічки знаходиться у цьому символі на імітованій стрічці.Γ

Отже, для машини наш новий алфавіт стрічки - . Початковий стан стрічки: Зверніть увагу на різницю між головкою машини ( ) та імітованими головками трьох імітованих стрічок (підкреслені символи). Звичайно, стрічка поширюється нескінченно праворуч, як зазвичай. Я також м'яко обдурив, перемістивши стрічку головою до першого символу на першій струні; суворо він повинен починатись із самої лівої комірки, але це дрібниця.Γ={0,1,,0_,1_,_,#}

#1_0101#_#_#

Отже, у нас є три відмічені розділи (між знаками ), які відповідатимуть 3 стрічкам оригінальної машини.#

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

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

Tape 1:10101Tape 2:1Tape 3:

Під час другого обходу перша стрічка читає , тому записуємо на третю стрічку:0

Tape 1:10101Tape 2:1Tape 3:1

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

#10_101#1_#_#

Після другого кроку:

#101_01#1_#1_#

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


2
Крім того, використовуйте окремі « доріжки », щоб записати окремі стрічки поруч один з одним в одному просторі. Однак це передбачає введення нового алфавіту.
Гендрік Ян

2
@ user678392 Повторне будівництво та написання тут все займе хоча б пару годин. Якщо ви навіть не збираєтесь пояснювати, яку саме частину ви не розумієте, навіщо хтось так багато працювати від вашого імені? А що, якщо хтось робить? Ви просто скажете: "Я цього не розумію. Хтось ще робить це".
Девід Річербі

1
@ user678392 Дякую І, лише для уточнення, чи є у вас англійська мова, з якою у вас виникли труднощі (тобто, перефразування, ймовірно, допоможе) чи вам потрібні більш детальні пояснення?
Девід Річербі

1
@ user678392, я додав приклад перегляду високого рівня перших кроків перетворення та практичного виведення на стрічку (и). Я уникав обговорювати, як побудувати новий набір станів, оскільки це дуже складно, і ви не отримаєте кращого пояснення, ніж те, що є у Сіпсера чи подібного - це за своєю суттю прискіпливо та математично.
Люк Матхісон

1
@RomaKarageorgievich Здається, за останні 5 років ряд більш чітких доказів зник (не вірте Інтернету: D). Ясніше я знайшов тут (попередження, .doc файл!). Доказ у «Вступі до мов та теорії обчислень» Мартіна є досить хорошим, якщо у вас є доступ до цієї книги (стор. 244 у 4-му редакції). Доказ у "Вступі до теорії обчислення" Сіпсера достатній (стор. 177 у 3-му виданні).
Люк Матьєсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.