Конечный автомат: различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
Alt-sysrq (обсуждение | вклад) м →Другие способы описания: форматирование |
Nikolice (обсуждение | вклад) Нет описания правки |
||
Строка 1:
'''Коне́чный автома́т''' (сокращённо — «'''КА'''») — [[абстрактный автомат]], число возможных внутренних [[Состояние|состояний]] которого [[конечное множество|конечно]].
Результат работы автомата определяется по его конечному состоянию.
Существуют различные способы задания алгоритма функционирования конечного автомата. Например, конечный автомат может быть задан в виде упорядоченной пятерки элементов некоторых [[Множество (математика)|множеств]]:▼
=== Способы задания алгоритма функционирования КА ===
Существуют различные способы задания [[Алгоритм функционирования|алгоритма функционирования]] конечного автомата.
==== Задание в виде упорядоченной пятёрки элементов ====
▲
: <math>~M = (V, Q, q_0, F, \delta) </math>,
где
* <math>V</math> — ''входной алфавит'' (конечное множество ''входных символов''), из которого формируются ''входные слова'', воспринимаемые конечным автоматом;
* <math>Q</math> — ''множество внутренних [[Состояние|состояний]]'';
* <math>q_0</math> — ''начальное [[состояние]]'' <math>(q_0 \in Q)</math>;
* <math>F</math> — множество ''заключительных, или конечных [[Состояние|состояний]]'' <math>(F \subset Q)</math>;
* <math>\delta</math> — ''функция переходов'',
Принято полагать, что конечный автомат начинает работу в состоянии ''q<sub>0</sub>'', последовательно считывая по одному символу входного слова (цепочки входных символов). Считанный символ переводит автомат в новое состояние в соответствии с функцией переходов.▼
▲Принято полагать, что конечный автомат начинает работу в состоянии «''q<sub>0</sub>''», последовательно считывая по одному символу входного слова (цепочки входных символов). Считанный символ — переводит автомат в новое [[состояние]], в соответствии с функцией переходов.
Читая входную цепочку символов «''x''» и делая переходы из [[Состояние|состояния]] в [[состояние]] — автомат, после прочтения последнего символа входного слова, окажется в некотором состоянии: «''q'''». Если это состояние является заключительным, то говорят, что автомат допустил слово «''x''».
=== Применение КА на практике ===
Конечные автоматы широко используются на практике, например, в [[синтаксический анализатор|синтаксических]] и [[лексический анализатор|лексических анализаторах]], [[Тестирование программного обеспечения|тестировании программного обеспечения]] [[Тестирование на основе модели|на основе моделей]].▼
Конечные автоматы широко используются на практике, — например:
* В [[синтаксический анализатор|синтаксических]] и [[лексический анализатор|лексических анализаторах]];
▲
== Другие способы описания ==
# «'''[[Диаграмма Мура|Диаграмма состояний]]'''» (или, — иногда, — «'''
# «'''Таблица переходов'''» — табличное представление функции ''δ''. Обычно в такой таблице каждой строке соответствует одно состояние, а столбцу — один допустимый входной символ. В ячейке на пересечении строки и столбца записывается состояние, в которое должен перейти автомат, если в данном состоянии он считал данный входной символ.
== Детерминированность ==
Подразделение конечных автоматов:
[[Файл:ДКА.jpg|thumb|300px|right|Детерминированный конечный автомат]]
* «Детерминированный» конечный автомат («'''ДКА'''»; см. иллюстрацию):
** Не имеет дуг с меткой ''ε'' (предложение, не содержащее ''ни одного'' символа);
* Недетерминированный конечный автомат (НКА) является обобщением детерминированного. Недетерминированность автоматов достигается двумя способами:▼
** Из любого состояния, по любому символу — возможен переход в точности ''в одно'' состояние;
▲* «Недетерминированный» конечный автомат («'''НКА'''») — является обобщением «детерминированного». Недетерминированность автоматов достигается двумя способами:
{| align="center" class="standard"
Строка 55 ⟶ 64 :
== Разработка моделей с использованием конечных автоматов ==
Конечные автоматы позволяют построить модели систем параллельной обработки
== Что может «делать» конечный автомат и последовательностная машина? ==
Ответ
Классическим примером могут служить автоматы-куклы, выполнявшие сложные последовательности действий, например: пишущие на бумаге определенный текст, играющие На рояле заранее установленные пьесы т. д.
|