Существование универсальных вычислителей. Алгоритмические проблемы и взаимосвязь алгоритмических систем.
Существование универсальных вычислителей.
Теперь задумаемся вот о чём. Каждый раз, когда мы строили программу для новой Машины Тьюринга, даже если мы при этом использовали программы для других машин, не явно предполагалось, что как-то, где-то, кем-то строилась каретка, обладающая заданным набором состояний, способная распознавать и записывать символы из заданного алфавита и т.п. Построение такой каретки - сама по себе задача не из простых. Для каждого нового алгоритма мы вынуждены строить новый исполнитель. Это выглядит примерно так, как если бы для каждой новой программы нам надо было строить новый компьютер.
А нельзя ли построить такой исполнитель, который был бы способен выполнить любой алгоритм, заданный в виде программы для Машины Тьюринга? Положительный ответ на этот вопрос являлся бы математическим обоснованием существования универсального вычислителя, т.е. способного выполнить любой должным образом записанный алгоритм, вычислить любую вычислимую функцию.
Итак, пусть нам надо построить Универсальную Машину Тьюринга, назовём её УМТ, для которой:
исходными данными являются программа другой машины, назовём её МТ, с исходными данными Д последней;
результат применения УМТ к этим исходным данным должен быть таким же, как применение МТ к её исходным данным, то есть
УМТ(МТ,Д)=МТ(Д).
Из-за чисто технической громоздкости мы не будем давать полного доказательства существования УМТ, а дадим лишь обоснование её существования. В этом обосновании мы покажем основную идею доказательства.
Представим себя в качестве такой УМТ и опишем в интуитивной форме алгоритм своей работы. Состояние воображаемой каретки будем записывать под обозреваемой ячейкой ленты. Программу имитируемой МТ считаем пока заданной в виде таблицы.
Интерпретирующий алгоритм для УМТ:
Обозревай ячейку, под которой написана буква (состояние);
Отыщи в таблице строку, обозначенную этой буквой;
В найденной строке обозревай тройку символов, которая стоит на пересечении со столбцом, обозначенным буквой, вписанной в обозреваемую ячейку;
Замени букву в обозреваемой ячейке на первую букву тройки;
Если второй буквой тройки является “!”, то стоп;
Если в обозреваемой ячейке третья буква “Н”, то сотри букву под обозреваемой ячейкой и запиши туда вторую букву тройки (смена состояния);
Если в обозреваемой тройке третья буква “Л”, то сотри букву под обозреваемой ячейкой, сдвинься влево и запиши под этой ячейкой вторую букву тройки;
Если в обозреваемой тройке третья буква “П”, то сотри букву под обозреваемой ячейкой, сдвинься вправо и запиши под этой ячейкой вторую букву тройки;
Перейди к шагу 1.
Для того, чтобы преобразовать это описание в программу Машины Тьюринга, надо решить две основные проблемы:
Как задавать программу и конфигурацию имитируемой МТ на ленте?
Так как произвольная МТ может иметь произвольный алфавит, то какой алфавит должен быть у УМТ?
Первая проблема разбивается на две:
как задать программу на ленте?
как задать конфигурацию, чтобы отмечать текущее положение каретки имитируемой МТ (решение в виде символа под текущей ячейкой не годится).
Программу МТ будем записывать пятерками
aqbp*, где a,bÎD; p,qÎQ; *Î{Л, П, Н},
здесь a- символ , соответствующий строке таблицы;
q - столбцу таблицы.
На рисунке 4.1. показана линейная запись функциональной схемы для U1 (n).
0qo 1qs Л | 1qo 2qs Л | 2qo 3qs Л | ……… | 7qo 8qs Л | 8qo 9qs Л | 9qo 0qo Л | Lqo !Л® |
®0qs 0qs Л | 1qs 1qs Л | 2qs 2qs Л | ……… | 7qs 7qs Л | 8qs 8qs Л | 9qs 9qs Л | Lqs L!Н |
Рис. 4.1. Линейная запись функциональной схемы МТ, вычисляющей U1 (n).
Такое представление программы обеспечивает взаимнооднозначное соответствие с табличной формой записи, а стало быть ничего из таблицы при этом не теряется и ничего не добавляется.
Как задать на ленте конфигурацию имитируемой машины? Напомним, что под конфигурацией Машины Тьюринга мы понимаем слово на ленте и положение каретки по отношению к слову. Здесь основная трудность: где записывать символ текущего состояния каретки.
Будем записывать символы исходного слова на ленте через ячейку. В образовавшиеся пустые ячейки ленты будем записывать справа от обозреваемого символа текущее состояние каретки.
Теперь рассмотрим проблему алфавита. Напомним, эта проблема состоит в том, что УМТ должна иметь определенный алфавит, который не может изменяться. В то же время мы не можем знать заранее, с какими алфавитами будут работать МТ, которые будет интерпретировать наша УМТ. Решение этой проблемы - кодирование символов из алфавита МТ символами алфавита УМТ. При этом важно позаботиться о том, чтобы:
один и то
Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.