Stage 4 — 같은 regex 와 같은 입력을 NFA 시뮬레이터와 DFA 시뮬레이터에 동시에 흘려 넣습니다. 왼쪽 pane 에서는 active 집합이 움직이고, 오른쪽 pane 에서는 단일 DFA state 하나만 이동합니다. 두 엔진의 verdict 가 항상 일치하는지도 summary 로 못박아 둡니다.
Stage 5 — 같은 language 를 받아들이는 DFA 중 가장 작은 것을 찾습니다. Hopcroft 의 partition refinement 는 accept / non-accept 두 블록에서 시작해, 어떤 symbol 로 움직였을 때 서로 구분되는 state 들을 발견할 때마다 block 을 쪼갭니다. 더 이상 쪼갤 수 없을 때가 최소 DFA 입니다.