@Override public E getShortestPathEdge(N target) { Record<N, E> rec = records.get(target); if (rec == null) { return null; } return rec.reach; }
@Override public float getShortestPathDistance(N target) { Record<N, E> rec = records.get(target); if (rec == null) { return Graphs.INVALID_DISTANCE; } return rec.dist; }
@Override public E getShortestPathEdge(N target) { Record<N, E> rec = records.get(target); if (rec == null) { return null; } return rec.reach; }
@Override public float getShortestPathDistance(N target) { Record<N, E> rec = records.get(target); if (rec == null) { return Graphs.INVALID_DISTANCE; } return rec.dist; }
private Path<N, E> makePath(N target) { N currNode = target; Pred<N, E> pred = preds.get(currNode); List<E> edges = new ArrayList<>(pred.depth); while (pred != null && pred.edge != null) { edges.add(pred.edge); currNode = pred.node; pred = preds.get(currNode); } Collections.reverse(edges); return new Path<>(graph, currNode, edges); }
private Path<N, E> makePath(N target) { N currNode = target; Pred<N, E> pred = preds.get(currNode); List<E> edges = new ArrayList<>(pred.depth); while (pred != null && pred.edge != null) { edges.add(pred.edge); currNode = pred.node; pred = preds.get(currNode); } Collections.reverse(edges); return new Path<>(graph, currNode, edges); }
MealyDHCState(final LinkedHashSet<Word<I>> splitters, final CompactMealy<I, O> hypothesis, final MutableMapping<Integer, MealyDHC.QueueElement<I, O>> accessSequences) { this.splitters = splitters; this.hypothesis = hypothesis; this.accessSequences = Maps.newHashMapWithExpectedSize(hypothesis.size()); for (final Integer s : hypothesis.getStates()) { final MealyDHC.QueueElement<I, O> elem = accessSequences.get(s); if (elem != null) { this.accessSequences.put(s, elem); } } }
protected T2 copyTransition(S2 src2, I2 input2, T1 trans1, S1 succ1) { TP2 prop = tpMapping.apply(trans1); S2 succ2 = stateMapping.get(succ1); T2 trans2 = out.createTransition(succ2, prop); out.addTransition(src2, input2, trans2); return trans2; }
protected void copyTransitions(S2 src2, I2 input2, Iterator<? extends T1> transitions1It) { List<T2> transitions2 = new ArrayList<>(); while (transitions1It.hasNext()) { T1 trans1 = transitions1It.next(); S1 succ1 = in.getSuccessor(trans1); S2 succ2 = stateMapping.get(succ1); TP2 prop = tpMapping.apply(trans1); T2 trans2 = out.createTransition(succ2, prop); transitions2.add(trans2); } out.addTransitions(src2, input2, transitions2); }
protected T2 copyTransition(S2 src2, I2 input2, T1 trans1, S1 succ1) { TP2 prop = tpMapping.apply(trans1); S2 succ2 = stateMapping.get(succ1); T2 trans2 = out.createTransition(succ2, prop); out.addTransition(src2, input2, trans2); return trans2; }
protected E2 copyEdge(N2 src2, E1 edge, N1 tgt1) { EP2 prop = epMapping.get(edge); N2 tgt2 = nodeMapping.get(tgt1); return outGraph.connect(src2, tgt2, prop); }
protected final void updateInitials() { for (S1 init1 : in.getInitialStates()) { S2 init2 = stateMapping.get(init1); if (init2 == null) { continue; } out.setInitial(init2, true); } } }
protected final void updateInitials() { for (S1 init1 : in.getInitialStates()) { S2 init2 = stateMapping.get(init1); if (init2 == null) { continue; } out.setInitial(init2, true); } } }
protected E2 copyEdge(N2 src2, E1 edge, N1 tgt1) { EP2 prop = epMapping.get(edge); N2 tgt2 = nodeMapping.get(tgt1); return outGraph.connect(src2, tgt2, prop); }
protected S2 copyTransitionChecked(S2 src2, I2 input2, T1 trans1, S1 succ1) { TP2 prop = tpMapping.apply(trans1); S2 succ2 = stateMapping.get(succ1); S2 freshSucc = null; if (succ2 == null) { succ2 = copyState(succ1); freshSucc = succ2; } T2 trans2 = out.createTransition(succ2, prop); out.addTransition(src2, input2, trans2); return freshSucc; }
protected S2 copyTransitionChecked(S2 src2, I2 input2, T1 trans1, S1 succ1) { TP2 prop = tpMapping.apply(trans1); S2 succ2 = stateMapping.get(succ1); S2 freshSucc = null; if (succ2 == null) { succ2 = copyState(succ1); freshSucc = succ2; } T2 trans2 = out.createTransition(succ2, prop); out.addTransition(src2, input2, trans2); return freshSucc; }
protected N2 copyEdgeChecked(N2 source, E1 edge, N1 tgt1) { EP2 prop = epMapping.get(edge); N2 tgt2 = nodeMapping.get(tgt1); N2 freshTgt = null; if (tgt2 == null) { tgt2 = copyNode(tgt1); freshTgt = tgt2; } outGraph.connect(source, tgt2, prop); return freshTgt; }
protected N2 copyEdgeChecked(N2 source, E1 edge, N1 tgt1) { EP2 prop = epMapping.get(edge); N2 tgt2 = nodeMapping.get(tgt1); N2 freshTgt = null; if (tgt2 == null) { tgt2 = copyNode(tgt1); freshTgt = tgt2; } outGraph.connect(source, tgt2, prop); return freshTgt; }
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; } }
@Override public Word<I> transformAccessSequence(Word<I> word) { checkInternalState(); Integer state = hypothesis.getSuccessor(hypothesis.getInitialState(), word); return assembleAccessSequence(accessSequences.get(state)); }