<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=94.25.229.30&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=94.25.229.30&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/94.25.229.30"/>
		<updated>2026-04-23T09:48:46Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0&amp;diff=27285</id>
		<title>Машина Тьюринга</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0&amp;diff=27285"/>
				<updated>2012-12-06T13:23:39Z</updated>
		
		<summary type="html">&lt;p&gt;94.25.229.30: добавлен пример&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
'''Машина Тьюринга''' (''Turing machine'') — абстрактный вычислитель, предложенный британским математиком Аланом Тьюрингом в 1936 году для формализации понятия алгоритма.&lt;br /&gt;
&lt;br /&gt;
Неформально машина Тьюринга определяется как устройство, состоящее из двух частей:&lt;br /&gt;
* бесконечной одномерной ленты, разделённой на ячейки,&lt;br /&gt;
* головкой, которая представляет из себя детерминированный конечный автомат.&lt;br /&gt;
&lt;br /&gt;
При запуске машины Тьюринга на ленте написано входное слово, причём на первом символе этого слова находится головка, а слева и справа от него записаны пустые символы. Каждый шаг головка может перезаписать символ под лентой и сместиться на одну ячейку, если автомат приходит в допускающее или отвергающее состояние, то работа машины Тьюринга завершается.&lt;br /&gt;
&lt;br /&gt;
== Определение ==&lt;br /&gt;
=== Определение машины ===&lt;br /&gt;
Формально машина Тьюринга определяется как кортеж из восьми элементов &amp;lt;tex&amp;gt;\langle \Sigma, \Pi, B, Q, Y, N, S, \delta \rangle&amp;lt;/tex&amp;gt;, где&lt;br /&gt;
* &amp;lt;tex&amp;gt;\Sigma&amp;lt;/tex&amp;gt; — алфавит, из букв которого могут состоять входные слова&lt;br /&gt;
* &amp;lt;tex&amp;gt;\Pi \supseteq \Sigma&amp;lt;/tex&amp;gt; — символы, которые могут быть записаны на ленту в процессе работы машины&lt;br /&gt;
* &amp;lt;tex&amp;gt;B \in \Pi \setminus \Sigma&amp;lt;/tex&amp;gt; ­— пробельный символ (от слова ''blank'')&lt;br /&gt;
* &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt; — множество состояний управляющего автомата&lt;br /&gt;
* &amp;lt;tex&amp;gt;Y \in Q&amp;lt;/tex&amp;gt; — допускающее состояние автомата&lt;br /&gt;
* &amp;lt;tex&amp;gt;N \in Q&amp;lt;/tex&amp;gt; — отвергающее состояние автомата&lt;br /&gt;
* &amp;lt;tex&amp;gt;S \in Q&amp;lt;/tex&amp;gt; — стартовое состояние автомата&lt;br /&gt;
* &amp;lt;tex&amp;gt;\delta : Q \times \Pi \to Q \times \Pi \times \{ \leftarrow, \rightarrow, \downarrow \}&amp;lt;/tex&amp;gt; — всюду определённая функция перехода автомата&lt;br /&gt;
&lt;br /&gt;
Отметим, что существуют различные вариации данного выше определения (например, без отвергающего состояния или с множеством допускающих состояний), которые не влияют на вычислительные способности машины Тьюринга.&lt;br /&gt;
&lt;br /&gt;
=== Определение процесса работы ===&lt;br /&gt;
Кроме формального определения самой машины требуется также формально описать процесс её работы. В определении для простоты будем предполагать, что головка в процессе работы не записывает на ленту символ &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. Это не ограничивает вычислительной мощности машин Тьюринга, поскольку для каждой машины можно сопоставить аналогичную ей, но не пищущую &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; на ленту.&lt;br /&gt;
&lt;br /&gt;
Назовём '''конфигурацией''' машины Тьюринга тройку &amp;lt;tex&amp;gt;\langle w, q, v \rangle&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;q \in Q&amp;lt;/tex&amp;gt; — текущее состояние автомата, а &amp;lt;tex&amp;gt;w, v \in (\Pi \setminus \{B\})^*&amp;lt;/tex&amp;gt; — строки слева и справа от головки до первого пробельного символа соответственно. В данной записи головка находится над ячейкой, на которой написана первая буква &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; (или &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;w = \varepsilon&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
В дальнейшем используются следующие обозначения: &amp;lt;tex&amp;gt;x, y, z \in \Pi&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;w, v \in \Pi^*&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определим на конфигурациях отношение перехода &amp;lt;tex&amp;gt;\langle w_1, q_1, v_1 \rangle \vdash \langle w_2, q_2, v_2 \rangle&amp;lt;/tex&amp;gt;:&lt;br /&gt;
* если &amp;lt;tex&amp;gt;\delta(q, x) = \langle p, y, \leftarrow \rangle&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\langle wz, q, xv \rangle \vdash \langle w, p, zyv \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
* если &amp;lt;tex&amp;gt;\delta(q, x) = \langle p, y, \rightarrow \rangle&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\langle w, q, xv \rangle \vdash \langle wy, p, v \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
* если &amp;lt;tex&amp;gt;\delta(q, x) = \langle p, y, \downarrow \rangle&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\langle w, q, xv \rangle \vdash \langle w, p, yv \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Особо следует рассмотреть случай переходов по пробельному символу:&lt;br /&gt;
* если &amp;lt;tex&amp;gt;\delta(q, B) = \langle p, y, \leftarrow \rangle&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\langle wz, q, \varepsilon \rangle \vdash \langle w, p, zy \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
* если &amp;lt;tex&amp;gt;\delta(q, B) = \langle p, y, \rightarrow \rangle&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\langle w, q, \varepsilon \rangle \vdash \langle wy, p, \varepsilon \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
* если &amp;lt;tex&amp;gt;\delta(q, B) = \langle p, y, \downarrow \rangle&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\langle w, q, \varepsilon \rangle \vdash \langle w, p, y \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Очевидно, что определённое отоношение является функциональным: для каждой конфигурации &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; существует не более одной конфигурации &amp;lt;tex&amp;gt;C'&amp;lt;/tex&amp;gt;, для которой &amp;lt;tex&amp;gt;C \vdash C'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для машины Тьюринга, которая пишет символ &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; на ленту также можно дать аналогичное формальное определение. Оно будет отличаться тем, что символы в строчках конфигурации могут содержать пробелы, и для того, чтобы эти строчки имекли конечную длину, нужно аккуратно учесть наличие пробелов при записи правил перехода. Это предоставляется читателю в качестве упражнения.&lt;br /&gt;
&lt;br /&gt;
=== Результат работы ===&lt;br /&gt;
Машину Тьюринга можно рассматривать как распознаватель слов языка. Пусть &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; — машина Тьюринга, распознаваемый ей язык определяется как &amp;lt;tex&amp;gt;\mathcal L(M) = \{ x \in \Sigma^* \mid \exists y, z \in \Pi^*: \langle \varepsilon, S, x \rangle \vdash^* \langle y, Y, z \rangle \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Также можно рассматривать машины Тьюринга как преобразователь входных данных в выходные. Машина &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; задаёт вычислимую функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, причём &amp;lt;tex&amp;gt;f(x) = y \Leftrightarrow \exists z \in \Pi^* : \langle \varepsilon, S, x \rangle \vdash^* \langle z, Y, y \rangle&amp;lt;/tex&amp;gt;. Переход автомата в состояние &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; можно интерпретировать как аварийное завершение программы (например, при некорретном входе).&lt;br /&gt;
&lt;br /&gt;
Примеры машин-распознавателей и машин-преобразователей будут даны ниже.&lt;br /&gt;
&lt;br /&gt;
== Примеры машин Тьюринга ==&lt;br /&gt;
Для начала приведём пример машины-преобразователя, которая прибавляет единицу к числу, записанному на ленте в двоичной записи от младшего бита к старшему. Алгоритм следующий:&lt;br /&gt;
* в стартовом состоянии головка идёт вправо от младшего бита к старшему, заменяя все единицы на нули,&lt;br /&gt;
* встретив нуль или пробельный символ головка записывает единицу, после чего переходит в состояние &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt;,&lt;br /&gt;
* в состоянии &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; головка идёт влево от старшего бита к младшему, не изменяя символы 0 и 1 на ленте,&lt;br /&gt;
* встретив в состоянии &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; пробельный символ, головка перемещается на один символ вправо и переходит в состояние &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;, завершая работу.&lt;br /&gt;
&lt;br /&gt;
Следующее определение формализует данный алгоритм:&lt;br /&gt;
* &amp;lt;tex&amp;gt;\Sigma = \{0, 1 \}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\Pi = \{0, 1, B\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;Q = \{S, R, Y, N \}&amp;lt;/tex&amp;gt;&lt;br /&gt;
** &amp;lt;tex&amp;gt;\delta(S, 1) = \langle S, 0, \rightarrow \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
** &amp;lt;tex&amp;gt;\delta(S, 0) = \langle R, 1, \downarrow \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
** &amp;lt;tex&amp;gt;\delta(S, B) = \langle R, 1, \downarrow \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
** &amp;lt;tex&amp;gt;\delta(R, 0) = \langle R, 0, \leftarrow \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
** &amp;lt;tex&amp;gt;\delta(R, 1) = \langle R, 1, \leftarrow \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
** &amp;lt;tex&amp;gt;\delta(R, B) = \langle Y, B, \rightarrow \rangle&amp;lt;/tex&amp;gt;&lt;/div&gt;</summary>
		<author><name>94.25.229.30</name></author>	</entry>

	</feed>