Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

otvety_k_ekzamenu

.docx
Скачиваний:
10
Добавлен:
28.03.2015
Размер:
101.97 Кб
Скачать

25. Задача об одномерной оптимальной упаковке, или задача о рюкзаке, формулируется так: пусть имеется рюкзак заданной грузоподъемности; также имеется некоторое множество предметов различного веса и различной стоимости (ценности); требуется упаковать рюкзак так, чтобы он закрывался и сумма стоимостей упакованных предметов была бы максимальной. Существует множество разновидностей этойзадачи, широко используемых в практике: оптимальное заполнение контейнеров; загрузка грузовиков с ограничением по весу; создание резервных копий на съёмных носителях; выбор оптимального управления в различных экономико-финансовых операциях. Сложность задачи. Далее, чтобы определить сложность задачи о рюкзаке, рассмотрим существующие классы сложности алгоритмов и задач. Алгоритм называется полиномиальным, если время его работы оценивается некоторым полиномом от размерности задачи n

(n- размерность входных данных: О(n), O(n2), O(n3)...) Полиномиальные алгоритмы считаются «хорошими», практически эффективными. Задачи, решаемые алгоритмами полиномиальной вычислительной сложности, относятся к классу Р- полиномиальных алгоритмов.

Есть задачи, которые по своей природе имеют экспоненциальную сложность порядка не менее an, где a – константа или полином от n. Это задачи, в которых требуется построить все подмножества данного множества, все перестановки данного множества, все клики (полные подграфы) данного графа и т.д. Число ответов в этих задачах уже само по себе экспоненциально, поэтому только их печать (перечисление) потребует экспоненциального числа шагов. Алгоритм называется экспоненциальным, если его выполнение требует количество операций, увеличивающихся с ростом n экспоненциально. Такие алгоритмы высокозатратные, поэтому их считают плохими. Задачи, в которых только перечисление ответов требует экспоненциального числа шагов, относятся к классу Е экспоненциальных алгоритмов. Под сложностью задачи принято понимать минимальную из сложностей алгоритмов, решающих эту задачу. При разработке алгоритмов можно наблюдать, что для некоторых задач удается построить алгоритмы полиномиальной сложности. Такие задачи называют полиномиально разрешимыми. Полиномиально разрешимые задачи можно успешно решать на компьютере даже в тех случаях, когда они имеют большую размерность. Для других задач не удается найти полиномиальный алгоритм, поэтому они называются трудноразрешимыми.Трудноразрешаемая задача характеризуется, как правило, конечным по мощности экспоненциаль –

ным множеством вариантов, среди которых нужно найти решение, и поэтому она может быть решена алгоритмом полного перебора. Такой, например, является задача о рюкзаке. Ясно, что решение данной задачи надо искать среди 2n двоичных векторов длины n, где n — число предметов. Очевидно, что переборный алгоритм имеет экспоненциальную сложность и может

хорошо работать только для небольших размеров задачи. С ростом размера задачи число вариантов быстро растет, и задача становится практически неразрешимой методом перебора. Классическая теория алгоритмов разделяет задачи по сложности. При этом классифицируются лишь распознавательные задачи — задачи, имеющие распознавательную форму. В распознавательной форме суть задачи сводится к нахождению некоторого свойства, а ее решение — один из двух ответов: «да» или «нет». Множество всех распознавательных задач, для которых существует полиномиальный разрешающий алгоритм, образует класс P. При этом распознавательные трудноразрешимые задачи не принадлежат классу P. Распознавательные задачи, которые можно решить за полиномиальное время на недетерминированной машине Тьюринга, входят в класс NP(недетерминированных полиномиальных алгоритмов): это задачи, не попавшие ни в

класс Р, ни в класс Е. В их условиях не содержатся экспоненциальные множества,

для них не разработан полиномиальный

алгоритм, для них не доказано, что такого алгоритма не существует. Задачи из класса NP, решаемые за полиномиальное время, называются легкорешаемыми. Задачи из класса NP, для решения которых неизвестны полиномиальные алгоритмы, называются труднорешаемыми. Для некоторых

задач из этого класса обнаружено удивительное свойство. Оказалось, что некоторые из них универсальны в том смысле, что построение полиномиального алгоритма для любой такой задачи влечет за собой возможность построения такого же алгоритма для всех остальных задач

класса NP. Такие задачи называются NP-полными. К настоящему времени установлена NP-полнота большого числа задач, в том числе и задачи о рюкзаке. Для большинства труднорешаемых задач (так называемых NP–полных задач) была доказана эквивалентность – если для одной из них удастся найти полиномиальный алгоритм, автоматически будут решены все остальные. Примеры NP-полных задач: решение систем уравнений в целых числах. Определение гамильтонова цикла. Составление расписаний и раскрасок.Существование множества значений логических переменных, которые позволяют сделать значение произвольного заданного логического выражения истинным.

21. Алгоритм - точное предписание исполнителю совеpшить определенную последовательность действий для достижения поставленной цели за конечное число шагов. Алгоритм может быть предназначен для выполнения его человеком или автоматическим устройством. Обычно формулируют несколько общих свойств алгоритмов, позволяющих отличать алгоритмы от других инструкций. Такими свойствами являются: Дискретность (прерывность, раздельность) – каждое действие, предусмотренное алгоритмом, исполняется только после того, как закончилось исполнение предыдущего. Определенность – каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Результативность (конечность) – алгоритм должен приводить к решению задачи за конечное число шагов. Массовость – алгоритм решения задачи разрабатывается в общем виде, то есть, он должен быть применим для некоторого класса задач, различающихся только исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма. Механические алгоритмы, или иначе детерминированные, жесткие (например, алгоритм работы машины, двигателя и т.п.); Гибкие алгоритмы, например стохастические, т.е. вероятностные и эвристические. Механический алгоритм задает определенные действия, обозначая их в единственной и достоверной последовательности, обеспечивая тем самым однозначный требуемый или искомый результат, если выполняются те условия процесса, задачи, для которых разработан алгоритм. Вероятностный (стохастический) алгоритм дает программу решения задачи несколькими путями или способами, приводящими к вероятному достижению результата. Эвристический алгоритм это такой алгоритм, в котором достижение конечного результата программы действий однозначно не предопределено. К эвристическим алгоритмам относят, например, инструкции и предписания. В этих алгоритмах используются универсальные логические процедуры и способы принятия решений, основанные на аналогиях, ассоциациях и прошлом опыте решения схожих задач. Линейный алгоритм – набор команд (указаний), выполняемых последовательно во времени друг за другом. Разветвляющийся алгоритм – алгоритм, содержащий хотя бы одно условие, в результате проверки которого ЭВМ обеспечивает переход на один из двух возможных шагов. Циклический алгоритм – алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов. Вспомогательный (подчиненный) алгоритм (процедура) – алгоритм, ранее разработанный и целиком используемый при алгоритмизации конкретной задачи. В некоторых случаях при наличии одинаковых последовательностей указаний (команд) для различных данных с целью сокращения записи также выделяют вспомогательный алгоритм. Широко используется структурное представление алгоритма. Структурная (блок-, граф-) схема алгоритма – графическое изображение алгоритма в виде схемы связанных между собой с помощью стрелок (линий перехода) блоков – графических символов, каждый из которых соответствует одному шагу алгоритма. Внутри блока дается описание соответствующего действия.

Графическое изображение алгоритма широко используется перед программированием задачи вследствие его наглядности, т.к. зрительное восприятие обычно облегчает процесс написания программы, ее корректировки при возможных ошибках, осмысливание процесса обработки информации. Также, существует словесная (запись на естественном языке); Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Программная (тексты на языках программирования).

Если программа составлена из команд, непосредственно исполняющихся компьютером; простейших арифметических операции операций сравнения чисел; операторов безусловного и условных переходов; операторов вызова подпрограмм, то такой подход в программировании, направленный на исполнение конкретных операций называют операциональным. Структурный подход. В основе технологических принципов структурного программирования лежит утверждение о том, что логическая структура программы может быть выражена комбинацией трех базовых структур: следования, ветвления и цикла. Одним важнейшим компонентом структурного подхода к разработке алгоритмов является модульность. Модуль - это последовательность логически связанных операций, оформленных как отдельная часть программы. Объект— основное понятие объектного программирования — в первом приближении похож на процедуру. Однако процедура (подпрограмма) «оживает» лишь внутри той программы, к которой она относится, а объект может вести себя вполне независимо. Он может относиться к иной предметной области нежели основная программа, быть исполненным в ином стиле. Объекты достаточно причудливо связываются друг с другом, могут перенимать свойства друг у друга («наследование»). В объектно-ориентированном подходе исходная задача представляется как совокупность взаимодействующих объектов. Наиболее популярные реализации объектного программирования созданы на основе языков Паскаль, Бейсик. Декларативный подход в разработке компьютерных программ: При его применении программист описывает свойства исходных данных, их взаимосвязи, свойства, которыми должен обладать результат, а не алгоритм получения результата. Разумеется, для получения результата этот алгоритм все равно нужен, но он должен порождаться автоматически той системой, которая поддерживает декларативно-ориентированный язык программирования. С активным распространением системы Windows и появлением визуальных RAD-сред широкую популярность приобрел событийный подход к созданию программ — событийно-ориентированное программирование.

Идеология системы Windows основана на событиях. Щелкнул человек на кнопке, выбрал пункт меню, нажал на клавишу или кнопку мыши — в Windows генерируется подходящее сообщение, которое отсылается окну соответствующей программы. Главная часть представляет собой один бесконечный цикл, который опрашивает Windows, следя за тем, не появилось ли новое сообщение. При его обнаружении вызывается подпрограмма, ответственная за обработку соответствующего события (обрабатываются не все события, их сотни, а только нужные), и подобный цикл опроса продолжается, пока не будет получено сообщение «Завершить работу».

24.Вычислительная сложность алгоритма — это

функция, определяющая зависи-

мость объёма работы, выполняемой некоторым алгоритмом, от размера входных данных. 

Объём работы обычно измеряется абстрактными понятиями времени и пространства, называемыми вычислительными ресурсами. Время определяется количеством элементарных шагов, необходимых для решения проблемы, тогда как пространство определяется объёмом памяти или места на носителе данных. Теория сложности вычислений возникла из потребности сравнивать быстродействие алгоритмов, чётко описывать их поведение (время исполнения и объём необходимой памяти) в зависимости от размера входа и выхода.Количество элементарных операций, затраченных алгоритмом для решения конкретного экземпляра задачи, зависит не только от размера входных данных, но и от самих данных. Например, количество операций алгоритма сортировки вставками значительно меньше в случае, если входные данные уже отсортированы. Чтобы избежать подобных трудностей, рассматривают понятие временной сложности алгоритма в худшем случае. Временная сложность алгоритма (в худшем случае) — это функция размера входных и выходных данных, равная максимальному количеству элементарных операций, проделываемых алгоритмом для решения экземпляра задачи указанного размера. В задачах, где размер выхода не превосходит или пропорционален размеру входа, можно рассматривать временную сложность как функцию размера только входных данных. Аналогично понятию временной сложности в худшем случае определяется понятие временная сложность алгоритма в наилучшем случае. Также рассматривают понятие среднее время работы алгоритма, то есть математическое ожидание времени работы алгоритма. Иногда говорят просто: «Временная сложность алгоритма» или «Время работы алгоритма», имея в виду временную сложность алгоритма в худшем, наилучшем или среднем случае (в зависимости от контекста).По аналогии с временной сложностью, определяют пространственную сложность алгоритма, только здесь говорят не о количестве элементарных операций, а об объёме используемой памяти.Асимптотическая сложность Несмотря на то, что функция временной сложности алгоритма в некоторых случаях может быть определена точно, в большинстве случаев искать точное её значение бессмысленно. Дело в том, что во-первых, точное значение временной сложности зависит от определения элементарных операций (например, сложность можно измерять количестве арифметических операций, битовых операций или операций на машине Тьюринга), а во-вторых, при увеличении размера входных данных вклад постоянных множителей и слагаемых низших порядков, фигурирующих в выражении для точного времени работы, становится крайне незначительным.Рассмотрение входных данных большого размера и оценка порядка роста времени работы алгоритма приводят к понятию асимптотической сложности алгоритма. При этом алгоритм с меньшей асимптотической сложностью является более эффективным для всех входных данных, за исключением лишь, возможно, данных малого размера.

Практически время выполнения алгоритма зависит не только от объема множества данных, но также и от их значений. Например, время выполнения некоторых алгоритмов сортировки существенно сокращается, если первоначально входные данные частично упорядочены (тогда как другие алгоритмы остаются нечувствительными к этому обстоятельству). Чтобы учитывать этот факт, полностью сохраняя при этом возможность анализировать алгоритмы независимо от их данных, различают максимальную сложность и среднюю сложность алгоритма. Максимальная сложность соответствует случаю, когда выбранные входные данные порождают наиболее долгое выполнение алгоритма. Именно о максимальной сложности шла речь в рассмотренном выше примере, т.к. при простом n оба алгоритма (и А, и Б) требуют наибольшего времени для своего выполнения. Средняя сложность соответствует случаю, когда алгоритм применяется к произвольным данным. Если же операция выполняется за фиксированное время, не зависящее от входных параметров, то считают, что она имеет сложность порядка единицы (O(1)).

20. (АУ) - одно из основных устройств электронной цифровой вычислительной машины, в котором непосредственно выполняются арифметические и логические операции над числами. Выполнение любой арифметической или логической операции в АУ сводится по существу к последовательному выполнению ряда элементарных операций или микроопераций. К арифметическим операциям относятся сложение, вычитание, умножение, деление и извлечение корня, а также возведение в степень, определение логарифмов, тригонометрических функций и т.п. часто выполняются по стандартным подпрограммам. АУ в составе ЭВМ связано с запоминающим устройством (ЗУ) и центральным устройством управления. Из ЗУ поступают исходные числа, по команде центрального устройства управления («сложить», «вычесть», «умножить» и т.д.) АУ производит соответствующие операции, результаты операций передаются снова в ЗУ, а сигналы окончания операции, признаки переполнения разрядной сетки и др., при необходимости,—в центр. устройство управления. АУ обычно состоит из нескольких Регистров для кратковременного хранения чисел, Сумматоров, логических цепей для выполнения элементарных операций над числами и местного устройства управления, воспринимающего команду на выполнение операции от центр. устройства управления машины и отрабатывающего необходимую последовательность частных команд. В зависимости от применяемого способа суммирования чисел различают АУ последовательного, параллельного и последовательно-параллельного действия. Регистры параллельного АУ строятся из Триггеров или аналогичных элементов и обеспечивают одновременный доступ ко всем разрядам числа. В АУ последовательного действия в качестве регистров используются также линии задержки, которые, если необходимо, замыкаются в кольцо через усилители и логические цепи рециркуляции. В элементах и схемах АУ используются электронные лампы (в ранних образцах), Транзисторы, полупроводниковые диодыферриттранзисторные ячейки и ферритдиодные ячейки. В АУ с микропрограммным управлением в составе местного устройства управления применяют также ферритовые матрицы для хранения микропрограмм операций.

Логическим элементом называется электрическая схема, выполняющая какую-либо логическую операцию (операции) над входными данными, заданными в виде уровней напряжения, и возвращающая результат операции в виде выходного уровня напряжения. высокий уровень напряжения (напряжение логической 1) символизирует истинное значение операнда, а низкий (напряжение логического 0) - ложное. К числу логических операций, выполняемых логическими элементами относятся конъюнкция (логическое умножение, И), дизъюнкция (логическое сложение, ИЛИ), отрицание (НЕ) и сложение по модулю 2 (исключающее ИЛИ). Элемент И: выполняет операцию логического умножения (конъюнкция) над своими входными данными и имеет от 2 до 8 входов и один выход (как правило, выпускаются элементы с двумя, тремя, четырьмя и восемью входами). ИЛИ:выполняет операцию логического сложения (дизъюнкция) над своими входными данными. НЕ: выполняет операцию логического отрицания над своими входными данными и имеет один вход и один выход. Элемент сложения по модулю2: выполняет логическую операцию сложения по модулю 2 и, как правило, имеет 2 входа и один выход. Логические элементы могут использоваться как самостоятельные части схемы, так и входить в состав более сложной цифровой комбинационной схемы или схемы с памятью. Полусумматор — логическая схема, имеющая два входа и два выхода (двухразрядный сумматор, бинарный сумматор). Сумматор — устройство, преобразующее информационные сигналы (аналоговые или цифровые) в сигнал, эквивалентный сумме этих сигналов

Из ЗУ

23. Для глубокого, строгого изучения свойств алгоритма и его организации необходима формализация, хотя бы для того, чтобы иметь возможность делать доказательные утверждения о свойствах алгоритма. Один из возможных путей формализации состоит в том, чтобы подобрать понятия, уже известные в математике, и для которых уже разработан формализм. Одним из таких понятий-претендентов является функция. Действительно, на первый взгляд между функцией и алгоритмом есть много общего. У функции есть область определения, у алгоритма есть область применимости; у функции есть область допустимых значений, у алгоритма есть определенное множество результатов. Самое важное различие между этими понятиями состоит в том, что алгоритм определяет некоторый процесс, который мы называем вычислительным. Понятие функции не предполагает и не определяет никакого процесса. Функция представляется в виде “черного ящика”, на вход которого подали аргументы и на выходе получили результат. Как этот результат был получен - умалчивается. Понятие алгоритма наоборот прежде всего сфокусировано на процессе вычисления результата. Алгоритм определяет именно то, как по аргументам вычислить результат. Итак, понятие функции, как оно есть в математике, нам не подходит, нужно строить формализацию, специально для алгоритма. Всякое уточнение понятия алгоритма характеризуется следующими семью параметрами: Совокупность возможных исходных данных (алфавит исходных данных). Совокупность возможных результатов (алфавит результатов) Совокупность возможных промежуточных результатов (алфавит промежуточных результатов). Множество действий. Правило начала. Правило окончания. Правило определения расположения результата. Здесь в качестве примеров уточнения понятия алгоритма мы рассматриваем Машину Тьюринга и Нормальные алгоритмы Маркова - (НАМ, также марковский алгоритм) — один из стандартных способов формального определения понятия алгоритма. Для определения НАМ вводится произвольный алфавит - конечное непустое множество символов, при помощи которых описывается алгоритм и данные. В алфавит также включается пустой символ, который мы будем обозначать греческой буквой . Под словом понимается любая последовательность непустых символов алфавита либо пустой символ, который обозначает пустое слово. Всякий НАМ определяется конечным упорядоченным множеством пар слов алфавита, называемых подстановками . В паре слов подстановки левое (первое) слово непустое, а правое (второе) слово может быть пустым символом. Для наглядности левое и правое слово разделяются стрелкой. Например, , , , .

В качестве данных алгоритма берется любая непустая строка символов. Работа НАМ состоит из последовательности совершенно однотипных шагов. Шаг работы алгоритма может быть описан следующим образом: В упорядоченной последовательности подстановок ищем самую первую подстановку, левое слово которой входит в строку данных. В строке данных ищем самое первое (левое) вхождение левого слова найденной подстановки. Это вхождение в строке данных заменяем на правое слово найденной подстановки (преобразование данных). Шаг работы алгоритма повторяется до тех пор, пока либо не возникнет ситуация, когда шаг не сможет быть выполнен из-за того, что ни одна подстановка не подходит ( левое слово любой подстановки уже не входит в строку данных ) - правило остановки ; либо не будет установлено, что процесс подстановок не может остановиться. В первом случае строка данных, получившаяся при остановке алгоритма, является выходной (результатом) и алгоритм применим к входным данным, а во втором случае алгоритм не применим к входным данным. Всякий нормальный алгоритм Маркова определяет функцию, которую мы назовем нормальной (или вычислимой по Маркову), которая может быть частичной и которая в области определения входному слову ставит в соответствие выходное слово.

19. Компьютерная графика — это специальная область информатики, изучающая методы и способы создания и обработки изображений на экране компьютера с помощью специальных программ. Графическую информацию можно представлять в двух формах: аналоговой или дискретной. При кодировании изображения происходит его пространственная дискретизация. Ее можно сравнить с построением изображения из большого количества маленьких цветных фрагментов (метод мозаики). Все изображение разбивается на отдельные точки, каждому элементу ставится в соответствие код его цвета. При этом качество кодирования будет зависеть от следующих параметров: размера точки и количества используемых цветов. Создание и хранение графических объектов возможно в нескольких видах - в виде векторного, фрактального или растрового изображения. Растровая графика: Пиксель – наименьший элемент изображения на экране компьютера. Растровый рисунок похож на мозаику, в которой каждый элемент (пиксель) закрашен определенным цветом. Этот цвет закрепляется за определенным местом экрана. Перемещение фрагмента изображения "снимает" краску с электронного холста и разрушает рисунок. Самыми близкими аналогами растровой графики является живопись, фотография. В векторной графике изображение состоит из простых элементов, называемых примитивами: линий, окружностей, прямоугольников, закрашенных областей. Границы областей задаются кривыми. Файл, отображающий векторное изображение, содержит начальные координаты и параметры примитивов – векторные команды. Самым близким аналогом векторной графики является графическое представление математических функций. Например, для описания отрезка прямой достаточно указать координаты его концов, а окружность можно описать, задав координаты центра и радиус. Приложения для создания векторной графики широко используются в области дизайна, технического рисования, оформительских работ. Элементы векторной графики имеются также в текстовых процессорах. Математической основой фрактальной графики является фрактальная геометрия. Здесь в основу метода построения изображений положен принцип наследования от, так называемых, «родителей» геометрических свойств объектов-наследников». Фракталом называется структура, состоящая из частей, которые в каком-то смысле подобны целому. Одним из основных свойств фракталов является самоподобие.. Мелкие элементы фрактального объекта повторяют свойства всего объекта. Создатель фракталов — это художник, скульптор, фотограф, изобретатель и ученый в одном лице. Вы сами задаете форму рисунка математической формулой, исследуете сходимость процесса, варьируя его параметры, выбираете вид изображения и палитру цветов, то есть творите рисунок «с нуля».RGB-модель. Данная модель является "естественным языком" цвета для электронных устройств ввода изображения (мониторы, сканеры, цифровые камеры), в которых воспроизведение цвета основано на излучении или пропускании света, а не на его отражении От подложки при создании изображения. При этом способе кодирования любой цвет представляется в виде комбинации трех цветов: красного (Red), зеленого (Green) и синего (Blue), взятых с разной интенсивностью. Интенсивность каждого из трех цветов -- это один байт (т. е. число в диапазоне от 0 до 255), который хорошо представляется двумя 16-ричными цифрами (числом от 00 до FF). Таким образом, цвет удобно записывать тремя парами 16-ричных цифр, как это принято, например, в HTML-документах. CMYK соответствует рисованию красками на бумажном листе и используется для подготовки печатных документов. В данной модели цвета при смешивании двух или более основных красок дополнительные цвета получаются посредством поглощения одних световых волн спектра белого цвета и отражения других. Так, голубая краска поглощает красный цвет и отражает зеленый и синий, а желтая поглощает синий цвет и отражает красный и зеленый. Цветовыми составляющими этой модели являются цвета: голубой , лиловый, желтый и черный. Эти цвета получаются в результате вычитания основных цветов модели RGB из белого цвета. Черный цвет задается отдельно. В цветных принтерах также применяется данная модель. Цветовые модели RGB и CMYK являются дополнительными друг к другу. Lab, была специально разработана для получения предсказуемых цветов, т.е. она является аппаратно- независимой и соответствующей особенностям восприятия цвета глазом человека. Lab является трёхканальной моделью. Цвет в ней определяется светлотой (яркостью) и двумя хроматическими компонентами: параметром a, изменяющимся в диапазоне от зелёного до красного и параметром b, изменяющимся в диапазоне от синего до жёлтого. YUV:Существует несколько тесно связанных цветовых моделей, которые объединяет то, что в них используется явное разделение информации о яркости и цвете. Компонента Y соответствует одноименной компоненте в модели CIE XYZ и отвечает за яркость. Такие модели находят широкое применение в телевизионных стандартах, так как исторически необходима была совместимость с черно-белыми телевизорами, которые принимали только сигнал, соответствующий Y. U и V отвечают за цветовую информацию и определяются через преобразование RGB.

22. НАЧАЛО В 23 БИЛЕТЕ!).

Маши́на Тью́ринга (МТ) — абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингом в 1936 году для формализации понятия алгоритма.

МТ является расширением конечного автомата и, согласно тезису Чёрча — Тьюринга*, способна имитировать все другие исполнители (с помощью задания правил перехода), каким-либо образом реализующие процесс пошагового вычисления, в котором каждый шаг вычисления достаточно элементарен. * В терминах вычислимости по Тьюрингу, тезис гласит, что для любой интуитивно вычислимой функции существует вычисляющая её значения машина Тьюринга. В виду того, что классы частично вычислимых по Тьюрингу и частично рекурсивных функций совпадают, утверждение объединяют в единый тезис Чёрча — Тьюринга. Тезис Чёрча — Тьюринга невозможно строго доказать или опровергнуть, поскольку он устанавливает эквивалентность между строго формализованным понятием частично вычислимой функции и неформальным понятием вычислимости.

В состав МТ входит бесконечная в обе стороны лента,разделённая на ячейки, и управляющее устройство, способное находиться в одном из множества состояний. Число возможных состояний управляющего устройства конечно и точно задано.

Управляющее устройство может перемещаться влево и вправо по ленте, читать и записывать в ячейки символы некоторого конечного алфавита. Выделяется особый пустой символ, заполняющий все клетки ленты, кроме тех из них (конечного числа), на которых записаны входные данные. Управляющее устройство работает согласно правилам перехода, которые представляют алгоритм, реализуемый данной машиной Тьюринга. Каждое правило перехода предписывает машине, в зависимости от текущего состояния и наблюдаемого в текущей клетке символа, записать в эту клетку новый символ, перейти в новое состояние и переместиться на одну клетку влево или вправо. Некоторые состояния машины Тьюринга могут быть помечены как терминальные, и переход в любое из них означает конец работы, остановку алгоритма.

МТ называется детерминированной, если каждой комбинации состояния и ленточного символа в таблице соответствует не более одного правила. Если существует пара «ленточный символ — состояние», для которой существует 2 и более команд, такая МТ называется недетерминированной. Конкретная МТ задаётся перечислением элементов множества букв алфавита A, множества состояний Q и набором правил, по которым работает машина. Они имеют вид: qiaj→qi1aj1dk (если головка находится в состоянии qi, а в обозреваемой ячейке записана буква aj, то головка переходит в состояние qi1, в ячейку вместо aj записывается aj1, головка делает движение dk, которое имеет три варианта: на ячейку влево (L), на ячейку вправо (R), остаться на месте (N)). Для каждой возможной конфигурации <qi, aj> имеется ровно одно правило (для недетерминированной машины Тьюринга может быть большее количество правил). Правил нет только для заключительного состояния, попав в которое машина останавливается. Кроме того, необходимо указать конечное и начальное состояния, начальную конфигурацию на ленте и расположение головки машины. Пример работы:

Машина Поста (МП) — абстрактная вычислительная машина, предложенная Эмилем Леоном Постом. Обе машины «эквивалентны» и были созданы для уточнения понятия «алгоритм» (но эта – проще).

Машина Поста состоит из каретки (или считывающей и записывающей головки) и разбитой на секции бесконечной в обе стороны ленты. Каждая секция ленты может быть либо пустой — 0, либо помеченной меткой 1. За один шаг каретка может сдвинуться на одну позицию влево или вправо, считать, поставить или стереть символ в том месте, где она стоит. Работа машины Поста определяется программой, состоящей из конечного числа строк. Для работы машины нужно задать программу и ее начальное состояние (т. е. состояние ленты и позицию каретки). Кареткой управляет программа, состоящая из строк команд. Каждая команда имеет следующий синтаксис: i, k, j.

где i - номер команды, K – действие каретки, j - номер следующей команды (отсылка).

Всего для машины Поста существует шесть типов команд:

V j - поставить метку, перейти к j-й строке программы.

X j - стереть метку, перейти к j-й строке программы.

<- j - сдвинуться влево, перейти к j-й строке программы.

-> j - сдвинуться вправо, перейти к j-й строке программы.

? j1; j2 - если в ячейке нет метки, то перейти к j1-й строке программы, иначе перейти к j2-й строке программы.

! – конец программы (стоп).

У команды «стоп» отсылки нет. После запуска возможны варианты: работа может закончиться невыполнимой командой (стирание несуществующей метки или запись в помеченное поле);

работа может закончиться командой Stop;

работа никогда не закончится.

Пример:вычитание натуральных чисел P — Q.

удем представлять натуральное (целое неотрицательное) число P набором из P+1 единиц и разделять числа нулём. Исходное положение каретки помечено символом «v» Сложение двух чисел тривиально — достаточно поставить 1 между ними и стереть крайний правый символ у Q. Программа вычитания состоит из последовательного затирания крайних левых меток у Q и правых у P: 1. 0 - стираем левый символ у Q

2.

3. ? 4, 5

4. Stop - стоп если затерли Q=0

5.

6. ? 5, 7 - цикл поиска P

7. 0 - стираем правый символ у P

8. →

9. ? 8, 1 - ищем Q

Отметим, что номер команды перехода не указывается, если переход происходит на следующую по порядку строку (для наглядности текста). В 6-ой строке возможно зацикливание, если Q > P .

18.