Я просто перефразирую ответ @Guy.
Чтобы сравнить языки, принятые обоими, мы должны выяснить, L(A) is equal to L(B)
это или нет.
Таким образом, вам нужно выяснить, является ли L(A)-L(B) and L(B)-L(A)
нулевым или нет. (Причина 1)
Часть 1:
Чтобы выяснить это, мы строим NFA X из NFA A и NFA B, .
Если X пустой набор, то L(A) = L(B)
иначе L(A) != L(B)
. (Причина 2)
Часть 2:
Теперь нам нужно найти эффективный способ доказать или опровергнуть X is empty set
. Когда X станет пустым как DFA или NFA? Ответ: X будет пустым, если нет пути, ведущего из начального состояния в любое из конечных состояний X. Для этого мы можем использовать BFS или DFS.
Reason1: Если оба значения равны нулю, то L(A) = L(B)
.
Reason2: Мы можем доказать, что множество регулярных языков замкнуто относительно пересечения и объединения. Таким образом, мы сможем эффективно создавать NFA X.
а для наборов:
person
foxtrot9
schedule
11.02.2017