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

2.2. Конечный автомат

Конечный автоматтеории алгоритмов) — математическая абстракция, позволяющая описывать пути изменения состояния объекта в зависимости от его текущего состояния и входных данных, при условии что общее возможное количество состояний конечно.

Конечный автомат является частным случаем абстрактного автомата. Конечный автомат может быть детерминированным или недетерминированным, в зависимости от того, имеется ли один или несколько вариантов его поведения на каком-то шаге.

Формально конечный автомат определяется как пятёрка

Где:

K — конечное множество состояний автомата,

—единственно допустимое начальное состояние автомата,

—множество конечных состояний, причём допустимо F=Ø, и

F=K, Σ — допустимый входной алфавит, из которого формируются строки, считываемые автоматом,

—функция переходов.

Автомат начинает работу в состоянии s, считывая по одному символы входной строки. Считанный символ переводит автомат в новое состояние из K, в соответствии с функцией переходов. Процесс продолжается до тех пор, пока не будет достигнуто одно из состояний F.

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

2.3. Формальное определение

Фред Коэн со ссылкой на машину Тьюринга Формально определил вирус следующим образом:

M: (SM, IM, OM: SM x IM > IM, NM: SM x IM > SM, DM: SM x IM > d)

Ммашина Тьюринга (конечный автомат)с заданным множеством:

  • состояний SM,

  • множеством входных символов IM

  • множеством отображений (OM, NM, DM),

Машина Тьюринга М на основе своего текущего состояния s SM и входного символа i IM, считанного с полубесконечной ленты, определяет:

  • выходной символ o IM для записи на ленту,

  • следующее состояние машины s' SM

  • и движения по ленте d {-1,0,1}.

Для данной машины M, последовательность символов v: vi IM может быть сочтена вирусом тогда и только тогда, когда обработка последовательности v в момент времени t, влечёт за собой то, что в один из следующих моментов времени t, последовательность v′ (не пересекающаяся с v) существует на ленте, и эта последовательность v′ была записана M в точке t′, лежащей между t и t″:

CM t j:

SM(t) = SM0

PM(t) = j

{ CM(t, j) … CM(t, j + |v| - 1)} = v

v' j' t' t":

t < t" < t'

{j' … j' +|v'|} ∩ {j … j + |v|} =

{ CM(t', j') … CM(t', j' + |v'| - 1)} = v'

PM(t") { j' … j' + |v'| - 1 }

где:

  • t N число базовых операций «перемещения», осуществлённых машиной

  • PM N номер позиции на ленте машины в момент времени t

  • SM0 начальное состояние машины

  • CM(t, c) содержимое ячейки c в момент времени t

Данное определение было дано в контексте вирусного множества:

VS = (M, V) — пары, состоящей из машины Тьюринга M и множества последовательностей символов V: v, v' V.

Из данного определения следует, что понятие вируса неразрывно связано с его интерпретацией в заданном контексте, или его окружении.

Фредом Коэном было показано, что:

в общем виде вопрос о том, является ли данная пара (M, X): Xi IM вирусом, неразрешим (то есть не существует алгоритма, который мог бы достоверно определить все вирусы), теми же средствами, которыми доказывается неразрешимость проблемы остановки.

Другие исследователи доказали, что существуют такие типы вирусов (вирусы, содержащие копию программы, улавливающей вирусы), которые не могут быть безошибочно определены ни одним алгоритмом.