Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Алгоритмы / Математика / Разное /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Минимизация автомата - Программирование от RIN.RU
Минимизация автомата

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


0. Инициализируем новый автомат одним начальным состоянием.
далее будем состояния добавлять.
1. Строим очередь из состояний старого автомата, инициализируя
ее начальным состоянием автомата.
2. Строим словарь из состояний старого автомата в
состояния нового автомата, инициализируя его соответствием
начальных состояниий автоматов.
3. Цикл: пока очередь непуста.
3а) извлекаем из нее состояние старого,
назовем его рабочим.
3б) добавляем в таблицу переходов нового
автомата строку, которую будем заполнять в цикле
4в) Цикл по всему алфавиту:
4ва) Подаем на вход автомата i-й символ языка
4вб) Проверяем, есть ли новое состояние старого
автомата в словаре
4вв) Если нет,
4вва) добавляем состояние новому автомату
4ввб) добавляем соответствие состояний в словарь
4ввв) добавляем состояние старого
автомата в очередь
4вг) заполняем клеточку в таблице переходов нового автомата.
(образ [по словарю] рабочего состояния при подаче на вход
текущего символа перейдет в образ нового состояния)
конец.




 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь