Я просто перефразирую ответ: @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.
Причина 1: если оба значения равны нулю, тоL(A) = L(B)
.
Причина 2: Мы можем доказать, что множество регулярных языков замкнуто на пересечении и объединении.Таким образом, мы сможем эффективно создавать NFA X.
и для наборов: