fauton
Version:
A library to test any finite automaton with arbitrary alphabets
20 lines (19 loc) • 782 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.epsilonClosureOfState = void 0;
function epsilonClosureOfState(epsilonTransitions, state) {
const statesStack = [];
const allEpsilonStates = new Set([state]);
statesStack.push(state);
while (statesStack.length !== 0) {
const currentState = statesStack.pop();
epsilonTransitions[currentState]?.forEach((epsilonTransitionState) => {
if (!allEpsilonStates.has(epsilonTransitionState)) {
statesStack.push(epsilonTransitionState);
allEpsilonStates.add(epsilonTransitionState);
}
});
}
return Array.from(allEpsilonStates);
}
exports.epsilonClosureOfState = epsilonClosureOfState;