2011-01-02 5 views
3

(я нашел ответ, его ниже в комментариях к кому-либо еще)время сложность торговли офф НЛА против DFA

Ищу обсуждение, на котором лучше использовать и в каком circumstanes в компиляторе НКА или DFA. какова временная сложность компромиссов для моделирования nfa vs dfa и какая из них более подходит при каких обстоятельствах в компиляторе?

Спасибо им пересмотреть для экзамена колледжа и помощь будет значительно apriciated :)

Leanne. кто-нибудь ответит мне :(:)

+0

я нашел ответ для всех, кто хочет .. – user560618

+0

Цели времени-пространства: Цель рег. exp.r и input stringx, определить, является ли x в L (r). Метод № 1: Сборка NFAN fromr с использованием конструкции Томпсона, затем запустить предыдущий алгоритм. Можно построить время NFA inO (| r |). ¡N имеет не более чем вдвое большее число состояний, чем | r |, и не более двух переходов из каждого состояния, поэтому таблица перехода - это пространство O (| r |). ¡Предыдущий алгоритм принимает или отклоняет x inO (| r | × | x |) time – user560618

+0

Метод №2: постройте NFAN fromr, используя конструкцию Томпсона, затем DFAD fromN с использованием построения подмножества; затем используйте алгоритм DFA с последнего момента принятия/отклонения ¡D может иметь до 2k состояний, где k = # состояний в N. «Строка наихудшего случая» (a | b) * a (a | b) (a | b) ... (a | b): почему? ¡Алгоритм принятия DFA принимает или отклоняет x inO (| x |) – user560618

ответ

0
  • Время строительства DFA от NFA равно O (2^m), где m - количество узлов.
  • Время работы DFA равно O (n), где n - длина входной строки. Это связано с тем, что для данной строки существует только один путь через DFA.
  • Время строительства для NFA должно быть O (m), где m - количество узлов
  • Время работы для NFA равно O (m²n), поскольку оно не является детерминированным, и компьютер должен проверять все возможные путь для текущего символа в строке. (Не предполагая предпросмотр, он не знает, что следующий символ будет так он работает в тупики)

Эти цифры могли бы дать краткое представление Ua

+0

Запуск NFA с помощью обратного отслеживания, как вы, кажется, предположите, возьмет O (2^n) в худшем случае. К счастью, есть более умные алгоритмы, которые занимают O (mn), хотя они не поддерживают обратные ссылки. (Одна реализация - re2 от Google.) – delnan