Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 09:56   #1
Леська17
Пользователь
 
Аватар для Леська17
 
Регистрация: 15.11.2010
Сообщений: 15
Смущение Моделирование работы конечного детерминированного автомата

"Моделирование работы конечного детерминированного автомата"
Конечный автомат-абстрактная вычислительная машина с конечной памятью. конечный автомат задается набором (Q, q0, F, E, б)
Q-конечное множество состояний автомата;
q0-начальное состояние автомата, принадлежащее Q;
F-множество финальных состояний, подмножество Q;
E-допустимый входной алфавит(конечное множество допустимых входных символов), из которого формируются строки, считаемые автоматом;
б-функция переходов состояний автомата.

Автомат начинает работу в состоянии q0, считывая по одному символу входной строки. Считанный символ переводит автомат в новое состояние из Q в соответствии с функцией переходов. Если по завершении считывания входного слова (цепочки символов) автомат оказывается в одном из допускающих состояний, то слово "принимается" автоматом. В этом случае говорят, что оно принадлежит языку данного автомата. В противном случае слово "отвергается".

Другие способы описания.
Диаграмма состояний (или иногда граф переходов)-графическое представление множества состояний и функции переходов.



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

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

вот решение:

Program Avtovat;
const
G : array[1..5,1..5] of Integer =
((2,3,4,5,1),
(3,4,5,0,2),
(4,2,1,2,3),
(5,1,2,0,4),
(2,0,5,1,4)
);
var
BeginState,CurState : Integer;
EndState : array[1..2] of Integer;
s : String;
i : Integer;
begin
//s:='13343'; // Входная последовательность принадлежит языку автомата
//s := '1334'; // конечное состояние 2 - не входит в набор финальных состояний
//s := '13352'; // невозможный переход
BeginState := 1; // Начальное состояние
EndState[1] := 4; EndState[2] := 5; // Конечное состояние

writeln ('Входная последовательность: ',s);
CurState := BeginState;
for i := 1 to Length(s) do
begin
write ('Было ',CurState,' ');
CurState := G[StrToInt(s[i]),CurState];
writeln('подано ',s[i],' Стало ',CurState);
if CurState = 0 then // 0 - переход невозможен
begin
writeln('Данная последовательность не принадлежит языку автомата');
Exit;
end;
end;
if CurState in [4..5] then
writeln('Данная последовательность принадлежит языку автомата')
else
writeln('Данная последовательность не принадлежит языку автомата');
end.


В принципе, как сказал преподователь, смысл есть, но ему не нравиться что таблица забита заранее...лучше бы ее вводить из файла. Он сказал, что надо будет в эту таблицу добавить в каждый элемент не только новое состояние, но еще и новый символ. Тогда элементами таблицы будут уже не integer, а record sost:integer; sym:char end; нужно использовать процедуры и функции. Для ввода, вывода и для других вещей.
Основная программа не должна быть захламлена непонятными второстепенными операторами. Но я не могу понять чего он хочет(
Леська17 вне форума Ответить с цитированием
Старый 09.12.2010, 11:46   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Цитата:
В принципе, как сказал преподователь, смысл есть,
Я ожидал более эмоциональной реакции на МОЮ программу.

Цитата:
но ему не нравиться что таблица забита заранее...лучше бы ее вводить из файла.
Логично, и легко выполнимо.

Цитата:
Он сказал, что надо будет в эту таблицу добавить в каждый элемент не только новое состояние, но еще и новый символ. Тогда элементами таблицы будут уже не integer, а record sost:integer; sym:char end;
Хочет чтобы автомат не только разбирал входную , но и генерировал выходную строку. Типа как старинный автомат с газировкой(если ты конечно такие видел). Бросаешь туда 1 копейку - он тебе газировки наливает, бросаешь 3 коп - газировки с сиропом. Тоже легко выполнимо.

Цитата:
нужно использовать процедуры и функции. Для ввода, вывода и для других вещей.
Может и не нужно. Но хочется ему, чтобы ты показал, что знаешь о существовании таких. И это возможно.

Цитата:
Основная программа не должна быть захламлена непонятными второстепенными операторами.
Без комментариев о суровых Казанских преподах.

Цитата:
Но я не могу понять чего он хочет(
Собственно все объяснил.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 09.12.2010, 20:30   #3
Леська17
Пользователь
 
Аватар для Леська17
 
Регистрация: 15.11.2010
Сообщений: 15
По умолчанию

спасибо большое) 2-ой раз спасаешь)
Леська17 вне форума Ответить с цитированием
Старый 09.12.2010, 20:33   #4
Леська17
Пользователь
 
Аватар для Леська17
 
Регистрация: 15.11.2010
Сообщений: 15
По умолчанию

Насчет преподов ты прав)

Последний раз редактировалось Леська17; 09.12.2010 в 20:36.
Леська17 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Моделирование работы конечного детерминированного автомата" Леська17 Помощь студентам 7 19.05.2016 19:53
Моделирование работы конечного детерминированного автомата jewel Помощь студентам 3 25.11.2010 13:05
Реализация конечного автомата на с++ AnRo Помощь студентам 0 17.11.2010 13:49
Лексический анализатор азбуки Морзе в виде конечного автомата MrBrain Помощь студентам 1 08.11.2010 10:23
моделирование работы светофора на перекрестке люля Фриланс 10 24.03.2009 09:41