@Override public boolean startExploration(N node, TarjanSCCRecord data) { records.put(node, data); return true; }
@Override public boolean startExploration(N node, TarjanSCCRecord data) { records.put(node, data); return true; }
protected S2 copyState(S1 s1) { SP2 prop = spMapping.apply(s1); S2 s2 = out.addState(prop); stateMapping.put(s1, s2); return s2; }
protected S2 copyInitialState(S1 s1) { SP2 prop = spMapping.apply(s1); S2 s2 = out.addInitialState(prop); stateMapping.put(s1, s2); return s2; }
protected S2 copyInitialState(S1 s1) { SP2 prop = spMapping.apply(s1); S2 s2 = out.addInitialState(prop); stateMapping.put(s1, s2); return s2; }
protected S2 copyState(S1 s1) { SP2 prop = spMapping.apply(s1); S2 s2 = out.addState(prop); stateMapping.put(s1, s2); return s2; }
@Override public S next() { S state = bfsQueue.poll(); for (I input : inputs) { Collection<S> succs = ts.getSuccessors(state, input); for (S succ : succs) { if (seen.put(succ, VisitedState.VISITED) != VisitedState.VISITED) { bfsQueue.add(succ); } } } return state; }
@Override public S next() { S state = bfsQueue.poll(); for (I input : inputs) { Collection<S> succs = ts.getSuccessors(state, input); for (S succ : succs) { if (seen.put(succ, VisitedState.VISITED) != VisitedState.VISITED) { bfsQueue.add(succ); } } } return state; }
public BFSOrderIterator(SimpleTS<S, I> ts, Collection<? extends I> inputs) { this.ts = ts; this.inputs = inputs; Collection<S> initial = ts.getInitialStates(); bfsQueue.addAll(initial); seen = ts.createStaticStateMapping(); for (S state : initial) { seen.put(state, VisitedState.VISITED); } }
@Override public N next() { N result = bfsQueue.poll(); if (result == null) { throw new NoSuchElementException(); } for (E edge : graph.getOutgoingEdges(result)) { N tgt = graph.getTarget(edge); if (visited.put(tgt, VisitedState.VISITED) != VisitedState.VISITED) { bfsQueue.add(tgt); } } return result; }
public BFSOrderIterator(SimpleTS<S, I> ts, Collection<? extends I> inputs) { this.ts = ts; this.inputs = inputs; Collection<S> initial = ts.getInitialStates(); bfsQueue.addAll(initial); seen = ts.createStaticStateMapping(); for (S state : initial) { seen.put(state, VisitedState.VISITED); } }
protected N2 copyNode(N1 node) { NP2 prop = npMapping.get(node); N2 n2 = outGraph.addNode(prop); nodeMapping.put(node, n2); return n2; }
@Override public GraphTraversalAction processInitial(N initialNode, Holder<DFSData<D>> outData) { D data = visitor.initialize(initialNode); DFSData<D> rec = new DFSData<>(data, dfsNum++); records.put(initialNode, rec); outData.value = rec; return GraphTraversalAction.EXPLORE; }
@Override public GraphTraversalAction processInitial(N initialNode, Holder<DFSData<D>> outData) { D data = visitor.initialize(initialNode); DFSData<D> rec = new DFSData<>(data, dfsNum++); records.put(initialNode, rec); outData.value = rec; return GraphTraversalAction.EXPLORE; }
protected N2 copyNode(N1 node) { NP2 prop = npMapping.get(node); N2 n2 = outGraph.addNode(prop); nodeMapping.put(node, n2); return n2; }
@Override public TSTraversalAction processInitial(S1 state, Holder<S2> outData) { S2 s2 = stateMapping.get(state); if (s2 != null) { out.setInitial(s2, true); return TSTraversalAction.IGNORE; } else if (!stateFilter.test(state)) { return TSTraversalAction.IGNORE; } SP2 sp = spMapping.apply(state); s2 = out.addInitialState(sp); stateMapping.put(state, s2); outData.value = s2; return TSTraversalAction.EXPLORE; }
@Override protected Iterator<Word<I>> l3Iterator(List<I> middle, Word<I> prefix) { final S tmp = automaton.getState(prefix); final S state = automaton.getSuccessor(tmp, middle); List<Word<I>> localSuffixes = localSuffixSets.get(state); if (localSuffixes == null) { localSuffixes = Automata.stateCharacterizingSet(automaton, inputs, state); if (localSuffixes.isEmpty()) { localSuffixes = Collections.singletonList(Word.epsilon()); } localSuffixSets.put(state, localSuffixes); } return localSuffixes.iterator(); }
@Override protected Iterator<Word<I>> l3Iterator(List<I> middle, Word<I> prefix) { final S tmp = automaton.getState(prefix); final S state = automaton.getSuccessor(tmp, middle); List<Word<I>> localSuffixes = localSuffixSets.get(state); if (localSuffixes == null) { localSuffixes = Automata.stateCharacterizingSet(automaton, inputs, state); if (localSuffixes.isEmpty()) { localSuffixes = Collections.singletonList(Word.epsilon()); } localSuffixSets.put(state, localSuffixes); } return localSuffixes.iterator(); }
private boolean initialize() { Covers.buildReachFromStateCover(reach, bfsQueue, automaton, oldCover, Record::new); final S init = automaton.getInitialState(); if (reach.get(init) == null) { // apparently the initial state was not yet covered Record<S, I> rec = new Record<>(init, Word.epsilon()); reach.put(init, rec); bfsQueue.add(rec); return false; } return true; } }
private boolean initialize() { Covers.buildReachFromStateCover(reach, bfsQueue, automaton, oldCover, Record::new); final S init = automaton.getInitialState(); if (reach.get(init) == null) { // apparently the initial state was not yet covered Record<S, I> rec = new Record<>(init, Word.epsilon()); reach.put(init, rec); bfsQueue.add(rec); return false; } return true; } }