Відповідь безсоромно скопіював із себе :
Багатоступенева машина Тьюрінга здебільшого така ж, як і односмугова машина, за винятком того, що у нас є розширена функція переходу де - кількість стрічок. Тож у кожному стані функція переходу читає вміст кожної стрічки, переходить у новий стан, (можливо) записує щось на кожну стрічку і переміщує кожну голову - так само, як звичайний ТМ, за винятком того, що зараз у нас є більше речей для читання, запису і рухатися. kQ×Γk→Q×Γ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:Tape 2:Tape 3:1∧0101⊔⊔⊔…⊔∧⊔⊔⊔⊔⊔…⊔∧⊔⊔⊔⊔⊔…
∧
Для побудови комбінованої односмугової машини нам потрібно додати нові символи до алфавіту стрічки:
- Нам потрібен символ, який буде позначати початок і кінець змодельованих стрічок
- Для кожного символу в нам також потрібна версія, яка вказує, що змодельована голівка стрічки знаходиться у цьому символі на імітованій стрічці.Γ
Отже, для машини наш новий алфавіт стрічки - . Початковий стан стрічки:
Зверніть увагу на різницю між головкою машини ( ) та імітованими головками трьох імітованих стрічок (підкреслені символи). Звичайно, стрічка поширюється нескінченно праворуч, як зазвичай. Я також м'яко обдурив, перемістивши стрічку головою до першого символу на першій струні; суворо він повинен починатись із самої лівої комірки, але це дрібниця.Γ′={0,1,⊔,0–,1–,⊔––,#}
#1–∧0101#⊔––#⊔––#⊔⊔⊔…
∧
Отже, у нас є три відмічені розділи (між знаками ), які відповідатимуть 3 стрічкам оригінальної машини.#
Тепер давайте складемо дію для машини. Скажімо, що оригінальна машина читає з першої стрічки, якщо вона бачить , вона пише на другій стрічці, якщо вона бачить вона пише на третій стрічці. При кожному читанні чи записі голова рухається вправо.1101
Отже, після першого "кроку" (можливо, вимагаючи декількох станів і переходів у фактичній машині), стрічки повинні мати позначку на другій стрічці, а перша і друга головки будуть переміщені право на один крок:1
Tape 1:Tape 2:Tape 3:10∧101⊔⊔⊔…1⊔∧⊔⊔⊔⊔…⊔∧⊔⊔⊔⊔⊔…
Під час другого обходу перша стрічка читає , тому записуємо на третю стрічку:0
Tape 1:Tape 2:Tape 3:101∧01⊔⊔⊔…1⊔∧⊔⊔⊔⊔…1⊔∧⊔⊔⊔⊔…
Машина на одній стрічці імітує це переміщення підкреслення (за допомогою альтернативної версії символів у та запису на відповідну імітовану стрічку. Отже, після першого кроку комбінована стрічка виглядає так:Γ′
#10–∧101#1⊔––#⊔––#⊔⊔⊔…
Після другого кроку:
#101–∧01#1⊔––#1⊔––#⊔⊔⊔…
Звичайно, це перегляд процесу на високому рівні - я не намагався пояснити, як сконструювати стани, або як кожна змодельована стрічка збільшується довше (для цього вам потрібен невеликий розпорядок, який перевіряє, чи ви натрапили на кінець змодельованої стрічки, потім переміщує все вправо на один крок уздовж і видавлює нову порожню - тобто вона додає лише змодельовані комірки стрічки, коли вони знадобляться).