Теория автоматов

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

Слова входного языка можно представить символами множества \boldsymbol{X={x_1,x_2,...x_n}}, который называют входным алфавитом, а слова выходного языка - символами множества \boldsymbol{Y={y_1,y_2,...y_p}}, который называют выходным алфавитом.

Множество состояний автомата \boldsymbol{S={s_1,s_2,...s_m}} называют алфавитом состояний.

Автоматы часто классифицируются через формальные языки, которые они могут распознавать.

Практически, теория автоматов применяется при разработке лексеров и парсеров для языков программирования, а также при построении компиляторов и разработке самих языков программирования.

Другое важнейшее применение теории автоматов — математически строгое нахождение разрешимости и сложности проблем.

Есть несколько классов автоматов, например конечные автоматы (различнают детерминированные и недетерминированные конечные автоматы), клеточные автоматы (игра «жизнь»), машины Тьюринга.

Формальное описание

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

  • Слово — строка символов, создаваемая через конкатенацию (соединение).
  • Алфавит — конечный набор различных символов (множество символов)
  • Язык — множество слов, формируемых символами данного алфавита. Может быть конечным или бесконечным.

Автомат — последовательность (кортеж) из пяти элементов (Q,Σ,δ,S0,F), где:

  • Q — конечное множество состояний автомата
  • Σ — алфавит языка, который понимает автомат
  • δ — функция перехода, такая что \delta : Q \times \Sigma \rightarrow Q
  • S0 — начальное состояние, состояние когда автомат еще не прочитал ни одного символа
  • F — множество состояний, называемое «конечные состояния».

Можно утверждать, что язык L, который читается автоматом M, состоит из множества слов w на базе алфавита Σ, так что если эти слова вводятся в M, он приходит в одно из состояний F:

L= \{ w \in \Sigma^{\star}|\hat\delta(S_0,w)\in F\}

Обычно, автомат переходит из состояния в состояние с помощью функци перехода δ, читая при этом один символ из ввода. Есть также автоматы, которые могут перейти в новое состояния без чтения символа. Функция перехода без чтения символа называется ε-переход (эпсилон-переход).

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home