Алгоритм Бжозовського можна поширити на автомати Мура, але його часова складність загалом експоненціальна. Чи існує якийсь інший алгоритм мінімізації автоматів Мура? Який час роботи цих алгоритмів, якщо такі є?
Алгоритм Бжозовського можна поширити на автомати Мура, але його часова складність загалом експоненціальна. Чи існує якийсь інший алгоритм мінімізації автоматів Мура? Який час роботи цих алгоритмів, якщо такі є?
Відповіді:
Оригінальний алгоритм мінімізації DFA був фактично розроблений для Moore Machines , керуючись їх, очевидно, більш спостережливою поведінкою. Але алгоритм, представлений тут, є реконструкцією з мінімізації DFA, оскільки я виявив історичні дані після цього факту.
Після Вікіпедії (з деякими помітними змінами):
Мур машина може бути визначена як 6-кортежу , що складається з наступних дій :
- скінченна множина станів
- стартовий стан (його також називають початковим станом) який є елементом Q
- кінцевий набір, який називається вхідним алфавітом
- кінцевий набір, який називається вихідним алфавітом
- функція переходу відображення стану та алфавіту введення до наступного стану
- вихідна функція відображення кожного стану у вихідному алфавіті
З цього визначення машина Мура є детермінованим перетворювачем з кінцевим станом.
Я не маю посилання на мінімізацію автомати Moore. Однак, здається, не надто складно уявити алгоритм, похідний від алгоритму, що використовується для детермінованих автоматичних систем кінцевого стану.
Ідея мінімізації DFA заснована на характеристиці звичайних мов Myhill-Nerode .
З урахуванням мовою , і пару рядків х і у , визначає відмітна розширення бути рядком г такий , що саме один з двох рядків х г і у г належить L . Визначте відношення R L на рядках за правилом, що x R L y iff немає розрізнювального розширення для x і y . Неважко показати, що R L - це відношення еквівалентності на рядках, і таким чином він ділить набір усіх рядків на класи еквівалентності.
Теорема Міхілла-Нерода стверджує, що є регулярним тоді і лише тоді, коли R L має кінцеве число класів еквівалентності, і тим більше, що кількість станів у найменшому детермінованому кінцевому автоматі (DFA), що розпізнає L , дорівнює кількості класів еквівалентності в R L .
В насправді кожне стан найменшого DFA таке , що W д , як визначено вище , є одним з класів еквівалентності відносини R L .
Для немінімально DFA для регулярного мови , то легко показати , що кожне безліч W ц містить рядки , які все належать одному і тому ж класу еквівалентних по відношенню до R L .
Отже, мінімізація DFA насправді складається з станів, що зливаються (розглядаються як набори еквівалентних рядків), кожного разу, коли буде показано, що два різних стану містять еквівалентні рядки.
Для цього існує два досить швидких алгоритми, алгоритм Мура (1956), який знаходиться в часі і алгоритм Хопкрофта (1971) в часі O ( n log n ) .
Розширення автоматів Мура найкраще можна зрозуміти в перевизначенні відносини еквівалентності як для датчика T . Відношення R L стосувалося того, чи призведе майбутній вхід в еквівалентному стані до приймаючого. Р Т відношення еквівалентності автоматів Мура стосується введення , чи буде в майбутньому виробляти один і той же вихід.
Отже, даючи перетворювач і дві струни x і y , ми визначаємо розрізнювальним розширенням такий рядок z , що T ( x z ) = T ( x ) u і T ( y z ) = T ( y ) v з u ≠ v , тобто такий, що вихідна поведінка перетворювача відрізняється для z залежно від того, наскільки він знаходиться за x або y .
Знову ж таки, - це відношення еквівалентності, що ділить всі рядки в Σ ∗ на класи еквівалентності. У разі машини Мура ці класи знову відповідатимуть стану мінімального перетворювача.
Наступний алгоритм імітує алгоритм Мура для мінімізації DFA.
Визначимо початкове розбиття на Q на класи держав S е в наступному:
Потім розділимо класи на таким чином:
повторювати послідовно для кожного класу станів , поки жодні зміни не повторяться ∀ a ∈ Σ ,
Якщо тобільше нічогонерозділяйте S на підмножини S i такі, щодля кожної підмножини S i існує інший клас S ′ ∈ P такий, що ∀ q ∈ S i ,
(підмножини S i замінюють S на P )
Коли не залишиться класу, який потрібно розділити, решта класів станів формуватимуть стани мінімальної машини Мура.
За побудовою всі стани в класі мають однаковий вихід, який є виходом для класу.
Аналогічно, для будь-якого введення всі стани класу переходять у деякий стан того ж іншого класу, який визначає функцію переходу для мінімальної машини Мура.
Аналіз складності:
Нехай бути числом станів, і s = | Σ | розмір вхідного алфавіту.
Основний цикл виконується не більше n разів, оскільки кожна ітерація повинна розділяти щонайменше один клас станів, а кожен клас містить принаймні один стан. Кожна ітерація циклу вивчає кожний стан в кінцевій кількості разів і пропорційно кількості вхідних символів. Отже, складність алгоритму дорівнює O ( s n 2 ) , така ж, як алгоритм мінімізації DFA, який послужив орієнтиром для цього.
Я не маю посилання на цю мінімізацію машин Мура. Можливо, це включено до його статті:
Мур, Едвард Ф (1956). "Геданкен-експерименти на послідовних машинах". Автоматичні дослідження , анали математичних досліджень (Прінстон, Нью-Джерсі: Princeton University Press) (34): 129-153.
Цей документ є основною посиланням, що представляє машини Мура . Це також є посиланням на алгоритм мінімізації DFA Мура . Таким чином, це повинно бути дивно, якщо адаптація алгоритму до мінімізації машин Мура не була принаймні запропонована в цій роботі. Я перевірив папір, і представлена версія алгоритму мінімізації насправді для машин Мура, а не для DFA. Папір добре написаний, але стиль часу ускладнює читання. Цікаво бачити, що багато ідей теорії Міхілла-Нерода кінцевих державних машин уже замальовані в цій роботі.
Більш свіжий алгоритм завдяки Джону Хопкрофту (1971) повинен бути аналогічно адаптований до машин Мура. Незрозуміло, що була якась причина опублікувати цю адаптацію де завгодно, і папір Hopcroft, здається, не має посилання на машини Мура.
Версія алгоритму Бржозовського з використанням похідних регулярних виразів наведена в [2], главі 12, розділі 4, де він зараховується до [4]. Див. [1] та [3] більш загальний випадок подальших перетворювачів (термінологія дещо застаріла, а термін послідовний перетворювач , мабуть, сьогодні є більш доречним).
[1] C. Choffrut, Мінімізація перехідних перетворювачів: опитування, Теорет. Склад. Наук. 292 (2003), 131–143.
[2] С. Ейленберг, Автомати, Мови та машини, т. A, Academic Press, 1974.
[3] Ж.-Є. Pin, Навчальний посібник щодо послідовних функцій . (Слайди)
[4] Г. Н. Реней, Послідовні функції, JACM 5 (1958), 177–180.
Алгоритм Бржозовського є поганою відправною точкою (якщо ви переймаєтесь асимптотикою найгіршого виконання). Навіть Вікіпедія говорить вам стільки:
Як зауважив Бржозовський (1963), реверсування країв DFA створює недетермінований кінцевий автомат (NFA) для повернення мови оригіналу та перетворення цього NFA в DFA за допомогою стандартної конструкції силового набору (будуючи лише досяжні стани перетворений DFA) призводить до мінімальної DFA для тієї ж перевернутої мови. Повторюючи цю операцію розвороту вдруге, створюється мінімальний DFA для мови оригіналу. Найгірша складність алгоритму Бржозовського є експоненціальною, оскільки існують регулярні мови, для яких мінімальний коефіцієнт DFA звороту є експоненціально більшим, ніж мінімальний DFA мови [6], але він часто працює краще, ніж це може запропонувати цей гірший випадок.
Алгоритм має експоненціальний найгірший час виконання навіть у DFA, оскільки він обчислює автомат для реверсу, який, можливо, повинен бути експоненціально великим. Тож ваша проблема не пов'язана з розширенням на перетворювачі.
Спробуйте адаптувати інший алгоритм мінімізації DFA.