Це питання стосується того, чи існують відомі оборотні таріти Тюрінга, де "оборотна" означає в значенні Аксельсена та Глюка , а "tarpit" - набагато неформальне поняття (і може бути не дуже вдалим вибором слова), але я зроблю все можливе, щоб пояснити, що я маю на увазі під цим.
Що я маю на увазі під "tarpit"
Деякі моделі обчислень розроблені так, щоб бути корисними певним чином. Інші випадково є Тюрінгом повним і насправді не мають особливо корисних властивостей; вони відомі як «Тюрпінг Тюрінга». Приклади включають мову Brainfuck , стільниковий автомат правила 110 і мову Bitwise Cyclic Tag (що мені подобається, тому що це дуже просто реалізувати, а будь-який двійковий рядок є дійсною програмою).
Офіційного визначення поняття "Тюрін Тарпіт" немає, але для цього питання я використовую його для розуміння досить простої системи (з точки зору наявності невеликої кількості "правил"), яка "просто буває" Тюрінгом повною, без її внутрішній стан, що має будь-яке очевидне смислове значення. Найважливіший аспект для моїх цілей - це простота правил, а не відсутність очевидної семантики. В основному ми говоримо про такі речі, про які колись Стівен Вольфрам написав дуже велику книгу , хоча він не вживав слова "tarpit".
Що я маю на увазі під "оборотним"
Мене цікавлять оборотні обчислення. Зокрема, мене цікавлять мови, які є r-Turing завершеними, в розумінні Аксельсена та Глюка , це означає, що вони можуть обчислити кожну обчислювальну ін'єкційну функцію і можуть обчислювати лише інжективні функції. Зараз існує багато моделей обчислень, які є зворотними в цьому сенсі, наприклад , реверсивна універсальна машина Тюрінга Аксельсена або оборотна мова високого рівня Janus . (У літературі є багато інших прикладів; це активний напрямок досліджень.)
Слід зазначити, що визначення Аксельсена та Глюка щодо повноти р-Тюрінга - це інший підхід до оборотних обчислень, ніж звичайний підхід, що стосується Беннета. У підході Беннета система дозволяє виробляти "сміттєві дані", які викидаються в кінці обчислення; за таких умов реверсивна система може бути Тюрінг завершеною. Однак, у підходах Аксельсена та Глюка, системі заборонено виробляти такі "непотрібні дані", що обмежує клас проблем, які вона може обчислити. (Отже, "r-Turing завершений", а не "Turing завершений".)
Примітка: папір Axelsen і Glück стоїть за платною стіною. Це прикро - наскільки мені відомо, наразі немає жодного ресурсу, що не сплачується, на предмет повноти р-тюрінга. Я спробую запустити сторінку Вікіпедії, якщо матиму час, але обіцянок немає.
Що я шукаю
Згадані вище приклади оборотних обчислень є досить "семантично завантаженими". У більшості контекстів це добре, але це означає, що правила, необхідні для оновлення свого стану на кожному етапі часу, є досить складними. Я шукаю "tarpits" оборотних обчислень. Тобто, більш-менш довільні системи з досить простими правилами, які "просто трапляються", є р-тюрінг повних мов. Я повторюю, що не існує офіційного визначення того, що я шукаю, але я знаю це, коли побачу, і вважаю, що це розумно запитати.
Я знаю ряд речей, які майже відповідають законопроекту, але не зовсім. Є кілька оборотних стільникових автоматів, за якими було показано, що Тьюрінг завершений. Мураш Ленґтона (свого роду двовимірна машина Тьюрінга з досить довільною і досить простою функцією переходу оборотного стану) також є Тюрінгом повним, доки його початкові умови дозволяють містити нескінченні повторювані візерунки. Однак у цих системах неважливо визначити відображення зі свого стану на "вихід" таким чином, що жодні непотрібні дані не викидаються. Мене конкретно цікавлять системи, які можна вважати прийняттям вводу, виконанням деякої послідовності (оборотних) перетворень на ньому, а потім (якщо вони припиняються) поверненням деякого результату.
(Я сподіваюся, що на це питання буде легше відповісти, ніж на моє попереднє, про зворотний еквівалент обчислення лямбда.)