Мене цікавлять ефективні алгоритми перетину DFA для особливих випадків. А саме, коли ДФА для перетину підкоряються певній структурі та / або працюють з обмеженим алфавітом. Чи є джерело, де я можу знайти алгоритми таких випадків?
Щоб питання не було занадто широким, особливу інтерес представляє наступна структура: всі DFA, які перетинаються, працюють у двійковому алфавіті (0 | 1), вони також можуть використовувати символи, що не цікавляться. Більше того, всі стани мають лише один перехід, за винятком якнайбільше K спеціальних станів, у яких є лише два переходи (і ці переходи завжди є 0 або 1, але жодного не хвилює). K - ціле число, менше 10 для практичних цілей. Також у них є єдиний приймаючий стан. Крім того, відомо, що перетин ВЖЕ є DFA у вигляді "смужки", тобто немає гілок, як на наступному зображенні:
EDIT: Можливо, опис обмеження на вхідних DFA не дуже зрозумілий. Я спробую вдосконалити це в цьому пункті. Ви маєте вхідні T DFA. Кожен з цих DFA працює лише на двійковому алфавіті. Кожен з них має не більше N станів. Для кожного DFA, кожен з його штатів є одним із наступних:
1) стан, що приймає (він лише один і немає переходу з нього в інший стан)
2) стан з двома переходами (0 і 1) в один і той же цільовий стан (більшість штатів такого роду)
3) стан із двома переходами (0 та 1) у різні цільові стани (щонайбільше K такого типу)
Гарантується, що існує лише один стан, що приймає, і що в кожному вхідному DFA є щонайбільше K станів типу (3). Це також гарантує , що перетин DFA все вхідні ДКІ є «смугою» (як описано вище), розміри менше , ніж N .
EDIT2: Деякі додаткові обмеження, як вимагає DW у коментарях:
- Вхідні DFA - це DAG.
- Вхідні DFA "вирівнюються", дотримуючись визначення DW в коментарях. А саме, ви можете призначити різні цілі числа для кожного стану таким чином, що кожен перехід переходить від цілого числа u до цілого числа v , такого, що u + 1 = v .
- Кількість допускають станів для кожного вхідного DFA, не перевищує K .
Будь-які ідеї? Дякую.
a DFA in form of "strip", i.e., no branches
? Чи є у вас якісь конкретні причини вважати, що у вашому випадку можна зробити краще, ніж стандартний алгоритм?