AGV 9.2 -- Nested depth-first search
Previous chapter: Automata-based LTL Model Checking with Sequential Circuits
This is a learning note of a course in CISPA, UdS. Taught by Bernd Finkbeiner
Introduction
We now develop an algorithm for checking whether the language of a given Büchi automaton is empty
. A natural idea is to use depth-first search (DFS) twice.
The language is non-empty $\Leftrightarrow$ it is accepted by some words:
- there exists an accepting state $q$,
- $q$ is reachable from some initial state (discovered by 1st DFS), and
- $q$ can again be reached from $q$ (discovered by 2nd DFS),
Example (Simple DFS)
Consider the following Büchi automaton (edge labels do not matter and are omitted).
Step 1
: discovers $q_0$, $q_1$, and $q_3$.Step 2
: searches from $q_0$ and $q_3$: not successful; searches from $q_1$: discovers the path back to $q_1$ via $q_2$.