В информатике, универсальной машине Тьюринга (UTM ) - это машина Тьюринга, которая имитирует произвольную машину Тьюринга на произвольном входе. Универсальная машина, по сути, достигает этого, читая как описание машины, которая будет моделироваться, так и входные данные для этой машины со своей собственной ленты. Алан Тьюринг представил идею такой машины в 1936–1937 годах. Этот принцип считается источником идеи компьютера с хранимой программой, использованного Джоном фон Нейманом в 1946 году для «Электронного вычислительного прибора», который теперь носит имя фон Неймана: архитектура фон Неймана.
С точки зрения вычислительной сложности многоленточная универсальная машина Тьюринга должна быть только медленнее на логарифмический фактор по сравнению с машины, которые он имитирует.
Каждая машина Тьюринга вычисляет определенный фиксированный частичный вычислимая функция из входных строк по ее алфавиту. В этом смысле он ведет себя как компьютер с фиксированной программой. Однако мы можем закодировать таблицу действий любой машины Тьюринга в строку. Таким образом, мы можем создать машину Тьюринга, которая ожидает на своей ленте строку, описывающую таблицу действий, за которой следует строка, описывающая входную ленту, и вычисляет ленту, которую закодированная машина Тьюринга могла бы вычислить. Тьюринг подробно описал такую конструкцию в своей статье 1936 года:
Дэвис приводит убедительный аргумент в пользу того, что концепция Тьюринга того, что сейчас известно как «компьютер с хранимой программой», о размещении «таблицы действий» - инструкций для машины - в той же «памяти» в качестве исходных данных сильно повлияли на концепцию Джона фон Неймана о первом американском компьютере с дискретными символами (в отличие от аналогового) - EDVAC. Дэвис цитирует об этом журнал Time, что «каждый, кто нажимает на клавиатуру... работает над воплощением машины Тьюринга», и что «Джон фон Нейман [построил] на работе Алана Тури ng »(Davis 2000: 193 со ссылкой на журнал Time от 29 марта 1999 г.).
Дэвис утверждает, что компьютер Тьюринга Automatic Computing Engine (ACE) «предвосхитил» идеи микропрограммирования (микрокод ) и RISC процессоров. (Дэвис 2000: 188). Кнут цитирует работу Тьюринга над компьютером ACE как разработку «аппаратного обеспечения для облегчения связи подпрограмм» (Knuth 1973: 225); Дэвис также ссылается на эту работу как на использование Тьюрингом аппаратного «стека» (Davis 2000: 237, сноска 18).
Поскольку Машина Тьюринга способствовала созданию компьютеров, UTM поощряла развитие только что зарождающихся компьютерных наук. Ранний, если не самый первый, ассемблер был предложен «молодым опытным программистом» для EDVAC (Davis 2000: 192). «Первая серьезная программа фон Неймана... [заключалась] в простой эффективной сортировке данных» (Davis 2000: 184). Кнут отмечает, что возврат подпрограммы, встроенный в саму программу, а не в специальные регистры, принадлежит фон Нейману и Голдстайну. Кнут далее утверждает, что
Дэвис кратко упоминает операционные системы и компиляторы как результат концепции программы как данных (Davis 2000: 185).
Однако у некоторых могут возникнуть проблемы с этой оценкой. В то время (с середины 1940-х до середины 1950-х) относительно небольшая группа исследователей была тесно связана с архитектурой новых «цифровых компьютеров». Хао Ван (1954), молодой исследователь того времени, сделал следующее наблюдение:
Ван надеялся, что его статья« соединит эти два понятия. "Действительно, Мински подтверждает это:" что первая формулировка теории машины Тьюринга в компьютерных моделях появилась у Ванга (1957) "(Мински 1967: 200). Мински продолжает демонстрировать эквивалентность Тьюринга счетной машины.
Что касается сведения компьютеров к простым эквивалентным моделям Тьюринга (и наоборот), то определение Минским Ванга как создателя «первой формулировки» является предметом споров. 1961 года и статью Ванга 1957 года цитируют Шепердсон и Стерджис (1963), они также цитируют и в некоторых деталях резюмируют работы европейских математиков Капенста (1959), Ершова (1959) и Петера (1958). Имена математиков Hermes (1954, 1955, 1961) и Kaphenst (1959) появляются в библиографиях bot h Шепердсон-Стерджис (1963) и Элгот-Робинсон (1961). Два других важных имени - это канадские исследователи Мелзак (1961) и Ламбек (1961). Подробнее см. эквиваленты машины Тьюринга ; ссылки можно найти на регистровой машине.
С таким кодированием таблиц действий в виде строк, машины Тьюринга в принципе могут отвечать на вопросы о поведении других машин Тьюринга.. Однако большинство этих вопросов неразрешимы, что означает, что рассматриваемая функция не может быть вычислена механически. Например, проблема определения того, остановится ли произвольная машина Тьюринга на конкретном входе или на всех входах, известная как проблема остановки, была в целом неразрешима в оригинальной статье Тьюринга. Теорема Райса показывает, что любой нетривиальный вопрос о выходе машины Тьюринга неразрешим.
Универсальная машина Тьюринга может вычислить любую рекурсивную функцию, выбрать любой рекурсивный язык и принять любой рекурсивно перечислимый язык. Согласно тезису Черча – Тьюринга, проблемы, решаемые универсальной машиной Тьюринга, - это именно те проблемы, которые решаются с помощью алгоритма или эффективного метода вычислений для любого разумного определения этих терминов.. По этим причинам универсальная машина Тьюринга служит стандартом для сравнения вычислительных систем, а система, которая может моделировать универсальную машину Тьюринга, называется полной машиной Тьюринга.
Абстрактной версией универсальной машины Тьюринга является универсальная функция, вычислимая функция, которую можно использовать для вычисления любой другой вычислимой функции. Теорема UTM доказывает существование такой функции.
Без потери общности можно предположить, что ввод машины Тьюринга находится в алфавите {0, 1}; любой другой конечный алфавит можно закодировать с помощью {0, 1}. Поведение машины Тьюринга M определяется ее переходной функцией. Эту функцию также можно легко закодировать как строку в алфавите {0, 1}. Размер алфавита M, количество лент, которые он имеет, и размер пространства состояний могут быть выведены из таблицы функции перехода. Выделенные состояния и символы можно идентифицировать по их положению, например первые два состояния по соглашению могут быть состояниями запуска и остановки. Следовательно, любую машину Тьюринга можно закодировать как строку в алфавите {0, 1}. Кроме того, мы отмечаем, что каждая недопустимая кодировка отображается на тривиальную машину Тьюринга, которая немедленно останавливается, и что каждая машина Тьюринга может иметь бесконечное количество кодировок, дополняя кодировку произвольным числом (скажем) единиц в конце, точно так же, как комментарии работать на языке программирования. Неудивительно, что мы можем достичь этого кодирования, учитывая существование числа Гёделя и вычислительную эквивалентность между машинами Тьюринга и μ-рекурсивными функциями. Точно так же наша конструкция ассоциирует с каждой двоичной строкой α машину Тьюринга M α.
, начиная с приведенной выше кодировки, в 1966 г. F. C. Hennie и R. Э. Стернс показал, что для машины Тьюринга M α, которая останавливается на входе x в течение N шагов, тогда существует многоленточная универсальная машина Тьюринга, которая останавливается на входах α, x (заданных на разных ленты) в CN log N, где C - машинно-зависимая константа, которая не зависит от длины входного x, но зависит от размера алфавита M, количества лент и количества состояний. Фактически это моделирование с использованием Donald Обозначение Кнута Big O. Соответствующий результат для пространственной сложности, а не временной сложности состоит в том, что мы можем моделировать таким образом, чтобы использовать не более чем CN ячеек на любом этапе вычислений, моделирование.
Когда Алан Тьюринг придумал идею универсальной машины, он имел в виду простейшую вычислительную модель, достаточно мощную, чтобы вычислить все возможные функции, которые можно вычислить. Клод Шеннон впервые явно поставил вопрос о поиске наименьшей возможной универсальной машины Тьюринга в 1956 году. Он показал, что двух символов достаточно, пока используется достаточное количество состояний (или наоборот), и что это всегда возможно. обменять состояния на символы.
Марвин Мински открыл универсальную машину Тьюринга с 7 состояниями и 4 символами в 1962 году, используя систему с двумя тегами. Другие небольшие универсальные машины Тьюринга были с тех пор найдены другими специалистами путем расширения этого подхода к моделированию системы тегов. Если обозначить через (m, n) класс UTM с m состояниями и n символами, то будут найдены следующие кортежи: (15, 2), (9, 3), (6, 4), (5, 5), (4, 6), (3, 9) и (2, 18). Машина Рогожина (4, 6) использует всего 22 инструкции, и не известно ни одного стандартного UTM с меньшей описательной сложностью.
Однако обобщение стандартной модели машины Тьюринга допускает даже меньшие UTM. Одно из таких обобщений состоит в том, чтобы разрешить бесконечно повторяющееся слово на одной или обеих сторонах входа машины Тьюринга, таким образом расширяя определение универсальности и известное как «полуслабая» или «слабая» универсальность соответственно. Небольшие слабо универсальные машины Тьюринга, моделирующие клеточный автомат Правило 110, были даны для пар (6, 2), (3, 3) и (2, 4) символ состояния. Доказательство универсальности двухуровневой трехсимвольной машины Тьюринга Вольфрама расширяет понятие слабой универсальности, допуская определенные непериодические начальные конфигурации. Другие варианты стандартной модели машины Тьюринга, которые дают небольшие UTM, включают машины с несколькими лентами или лентами с несколькими измерениями, а также машины, связанные с конечным автоматом.
Если вы разрешите несколько головок на машине Тьюринга, тогда у вас может быть машина Тьюринга вообще без внутренних состояний. «Состояния» кодируются как часть ленты. Например, рассмотрим ленту с 6 цветами: 0, 1, 2, 0A, 1A, 2A. Рассмотрим ленту, например 0,0,1,2,2A, 0,2,1, где трехголовая машина Тьюринга расположена над тройкой (2,2A, 0). Затем правила преобразуют любую тройку в другую тройку и перемещают тройку влево или вправо. Например, правила могут преобразовывать (2,2A, 0) в (2,1,0) и перемещать голову влево. Таким образом, в этом примере машина действует как трехцветная машина Тьюринга с внутренними состояниями A и B (обозначенными без буквы). Случай с двухголовой машиной Тьюринга очень похож. Таким образом, двухголовая машина Тьюринга может быть универсальной с 6 цветами. Неизвестно, какое наименьшее количество цветов необходимо для многоголовой машины Тьюринга и возможна ли двухцветная универсальная машина Тьюринга с несколькими головками. Это также означает, что правила перезаписи завершены по Тьюрингу, поскольку тройные правила эквивалентны правилам перезаписи. Увеличивая ленту до двух измерений с помощью головки, отбирающей букву и ее 8 соседей, требуется только 2 цвета, например, цвет может быть закодирован в вертикальном тройном шаблоне, таком как 110.
Следующий пример взят из работы Тьюринга (1936). Для получения дополнительной информации об этом примере см. Страницу Примеры машины Тьюринга.
Тьюринг использовал семь символов {A, C, D, R, L, N,; } для кодирования каждого кортежа из пяти; как описано в статье машина Тьюринга, его 5-кортежи имеют только типы N1, N2 и N3. Номер каждой «m-конфигурации» (инструкция, состояние) представлен буквой «D», за которой следует унарная строка из A, например «q3» = DAAA. Аналогичным образом он кодирует пустые символы как «D», символ «0» как «DC», символ «1» как DCC и т. Д. Символы «R», «L» и «N» остаются как является.
После кодирования каждый кортеж из 5 элементов затем «собирается» в строку в порядке, показанном в следующей таблице:
Текущая m-конфигурация | Символ ленты | Операция печати | Движение ленты | Окончательная m-конфигурация | Текущий код m-конфигурации | Код символа ленты | Код операции печати | Код движения ленты | Окончательный код m-конфигурации | 5-кортежный ассемблированный код | |
---|---|---|---|---|---|---|---|---|---|---|---|
q1 | пустой | P0 | R | q2 | DA | D | DC | R | DAA | DADDCRDAA | |
q2 | пусто | E | R | q3 | DAA | D | D | R | DAAA | DAADDRDAAA | |
q3 | blank | P1 | R | q4 | DAAA | D | DCC | R | DAAAA | DAAADDCCRDAAAA | |
q4 | пусто | E | R | q1 | DAAAA | D | D | R | DA | DAAAADDRDA |
Наконец, коды для всех четырех кортежей из пяти объединяются в код, начинающийся с ";" и разделены ";" то есть:
Этот код он поместил в альтернативные квадраты - «F-квадраты» - оставив «Электронные квадраты» (подлежащие стиранию) пустые. Окончательная сборка кода на ленте для U-машины состоит из размещения двух специальных символов («e») один за другим, затем кода, разделенного на чередующиеся квадраты, и, наконец, символа двойного двоеточия «:: "(пробелы показаны здесь с". "Для ясности):
Таблица действий U-машины (таблица переходов между состояниями) отвечает за декодирование символов. Таблица действий Тьюринга отслеживает свое место с помощью маркеров «u», «v», «x», «y», «z», помещая их в «E-квадраты» справа от «отмеченного символа» - например, чтобы отметить текущую инструкцию, z помещается справа от ";" x сохраняет место по отношению к текущей "m-конфигурации" DAA. Таблица действий U-машины будет перемещать эти символы (стирая их и помещая в разные места) по мере выполнения вычислений:
Действие Тьюринга- стол для его U-машины очень сложен.
Ряд других комментаторов (в частности, Penrose 1989 ) предоставляют примеры способов кодирования инструкций для универсальной машины. Как и Пенроуз, большинство комментаторов используют только двоичные символы, то есть только символы {0, 1} или {blank, mark | }. Пенроуз идет дальше и записывает весь свой код U-машины (Penrose 1989: 71–73). Он утверждает, что это действительно U-машинный код, огромное число, занимающее почти 2 полные страницы, состоящие из единиц и нулей. Для читателей, интересующихся более простыми кодировками для машины Пост-Тьюринга, может быть полезно обсуждение Дэвиса у Стина (Steen 1980: 251ff).
Асперти и Риччиотти описали многоленточный UTM, определенный путем составления элементарных машин с очень простой семантикой, вместо того, чтобы явно указывать полную таблицу действий. Этот подход был достаточно модульным, чтобы позволить им формально доказать правильность машины в помощнике по доказательству Matita.
Различные языки более высокого уровня предназначены для компиляции в машину Тьюринга. Примеры включают в себя дескриптор машины Тьюринга.
Общие ссылки
раздел 1.4, «Машины как струны и универсальная машина Тьюринга» и 1.7, «Доказательство теоремы 1.9»
Исходная статья
Основные документы
Реализация
Официальная проверка
Другие ссылки
| format =
требует | url =
() (Первое изд.), Addison-Wesley Publishing Company Первый из трех текстов Кнута.с исправлениями к UTM Тьюринга, сделанными Эмилем Постом, см. Сноску 11 стр.: 299CS1 maint: дополнительный текст: список авторов (ссылка )
Smith, Alvy Ray. «Универсальная машина Тьюринга для визитных карточек» (PDF). Проверено 2 января 2020 г.