public void depthFirstSearch(boolean forward, StringBuilder b) { if (forward) { depthFirstSearchHelper(getStartNode(), new HashSet(), 0, true, b); } else { for (Object o : getEndNodes()) { depthFirstSearchHelper(o, new HashSet(), 0, false, b); } } }
/** * for testing only. doubles combined by addition. */ public List sampleUniformPathFromGraph() { List list = new ArrayList(); Object node = this.getStartNode(); Set endNodes = this.getEndNodes(); while (!endNodes.contains(node)) { List<Arc> arcs = new ArrayList<>(this.getArcsBySource(node)); TransducerGraph.Arc arc = arcs.get(r.nextInt(arcs.size())); list.add(arc.getInput()); node = arc.getTargetNode(); } return list; }
public TransducerGraph(TransducerGraph other, ArcProcessor arcProcessor) { this(other.getArcs(), other.getStartNode(), other.getEndNodes(), arcProcessor, null); }
public TransducerGraph(TransducerGraph other, NodeProcessor nodeProcessor) { this(other.getArcs(), other.getStartNode(), other.getEndNodes(), null, nodeProcessor); }
@Override protected TransducerGraph doCompaction(TransducerGraph graph, List l1, List l3) { TransducerGraph result = graph; if (saveGraphs) { writeFile(result, "unminimized", (String) result.getEndNodes().iterator().next()); } result = quasiDeterminizer.processGraph(result); result = new TransducerGraph(result, ocp); // combine outputs into inputs result = minimizer.minimizeFA(result); // minimize the thing //result = new TransducerGraph(graph, otsp); // for debugging result = new TransducerGraph(result, ntsp); // pull out strings from sets returned by minimizer result = new TransducerGraph(result, isp); // split outputs from inputs if (saveGraphs) { writeFile(result, "exactminimized", (String) result.getEndNodes().iterator().next()); } // for debugging do comparison of the paths accepted by graph and result //log.info(TransducerGraph.testGraphPaths(graph, result, 100)); return result; }
protected void makeInitialBlocks() { // sink block (for if the automaton isn't complete makeBlock(Collections.singleton(SINK_NODE)); // accepting block Set endNodes = getUnminimizedFA().getEndNodes(); makeBlock(endNodes); // main block Collection nonFinalNodes = new HashSet(getUnminimizedFA().getNodes()); nonFinalNodes.removeAll(endNodes); makeBlock(nonFinalNodes); }
/** * For testing only. Doubles combined by multiplication. */ private boolean canAddPath(List path) { Object node = this.getStartNode(); for (int j = 0; j < path.size() - 1; j++) { Object input = path.get(j); Arc arc = this.getArcBySourceAndInput(node, input); // next input in path if (arc == null) { return true; } node = arc.getTargetNode(); } Object input = path.get(path.size() - 1); // last element Arc arc = this.getArcBySourceAndInput(node, input); // next input in path if (arc == null) { return true; } else { return getEndNodes().contains(arc.getTargetNode()); } }
protected void makeInitialBlocks() { // sink block (for if the automaton isn't complete makeBlock(Collections.singleton(SINK_NODE)); // accepting block Set<Arc> endNodes = getUnminimizedFA().getEndNodes(); makeBlock(endNodes); // main block Collection<Arc> nonFinalNodes = Generics.newHashSet(getUnminimizedFA().getNodes()); nonFinalNodes.removeAll(endNodes); makeBlock(nonFinalNodes); }
b.append(" "); if (getEndNodes().contains(newArc.getTargetNode())) { b.append(newArc + " END\n"); } else {
length.setCount(node, Double.POSITIVE_INFINITY); Set endNodes = graph.getEndNodes(); for (Object o : endNodes) { lambda.setCount(o, 0);
for (Object o : result.getEndNodes()) { double endLambda = lambda.getCount(o); if (endLambda != 0.0) {
protected TransducerGraph buildMinimizedFA() { TransducerGraph minimizedFA = new TransducerGraph(); TransducerGraph unminimizedFA = getUnminimizedFA(); for (TransducerGraph.Arc arc : unminimizedFA.getArcs()) { Set<Arc> source = projectNode(arc.getSourceNode()); Set<Arc> target = projectNode(arc.getTargetNode()); try { if (minimizedFA.canAddArc(source, target, arc.getInput(), arc.getOutput())) { minimizedFA.addArc(source, target, arc.getInput(), arc.getOutput()); } } catch (Exception e) { //throw new IllegalArgumentException(); } } minimizedFA.setStartNode(projectNode(unminimizedFA.getStartNode())); for (Object o : unminimizedFA.getEndNodes()) { minimizedFA.setEndNode(projectNode(o)); } return minimizedFA; }
protected TransducerGraph buildMinimizedFA() { TransducerGraph minimizedFA = new TransducerGraph(); TransducerGraph unminimizedFA = getUnminimizedFA(); for (TransducerGraph.Arc arc : unminimizedFA.getArcs()) { Object source = projectNode(arc.getSourceNode()); Object target = projectNode(arc.getTargetNode()); try { if (minimizedFA.canAddArc(source, target, arc.getInput(), arc.getOutput())) { minimizedFA.addArc(source, target, arc.getInput(), arc.getOutput()); } } catch (Exception e) { //throw new IllegalArgumentException(); } } minimizedFA.setStartNode(projectNode(unminimizedFA.getStartNode())); for (Object o : unminimizedFA.getEndNodes()) { minimizedFA.setEndNode(projectNode(o)); } return minimizedFA; }
public void depthFirstSearch(boolean forward, StringBuffer b) { if (forward) { depthFirstSearchHelper(getStartNode(), new HashSet(), 0, true, b); } else { for (Iterator endIter = getEndNodes().iterator(); endIter.hasNext();) { Object o = endIter.next(); depthFirstSearchHelper(o, new HashSet(), 0, false, b); } } }
public void depthFirstSearch(boolean forward, StringBuilder b) { if (forward) { depthFirstSearchHelper(getStartNode(), new HashSet(), 0, true, b); } else { for (Object o : getEndNodes()) { depthFirstSearchHelper(o, new HashSet(), 0, false, b); } } }
public void depthFirstSearch(boolean forward, StringBuilder b) { if (forward) { depthFirstSearchHelper(getStartNode(), new HashSet(), 0, true, b); } else { for (Object o : getEndNodes()) { depthFirstSearchHelper(o, new HashSet(), 0, false, b); } } }
protected void makeInitialBlocks() { // sink block (for if the automaton isn't complete makeBlock(Collections.singleton(SINK_NODE)); // accepting block Set endNodes = getUnminimizedFA().getEndNodes(); makeBlock(endNodes); // main block Collection nonFinalNodes = new HashSet(getUnminimizedFA().getNodes()); nonFinalNodes.removeAll(endNodes); makeBlock(nonFinalNodes); }
protected void makeInitialBlocks() { // sink block (for if the automaton isn't complete makeBlock(Collections.singleton(SINK_NODE)); // accepting block Set endNodes = getUnminimizedFA().getEndNodes(); makeBlock(endNodes); // main block Collection nonFinalNodes = new HashSet(getUnminimizedFA().getNodes()); nonFinalNodes.removeAll(endNodes); makeBlock(nonFinalNodes); }
protected void makeInitialBlocks() { // sink block (for if the automaton isn't complete makeBlock(Collections.singleton(SINK_NODE)); // accepting block Set endNodes = getUnminimizedFA().getEndNodes(); makeBlock(endNodes); // main block Collection nonFinalNodes = new HashSet(getUnminimizedFA().getNodes()); nonFinalNodes.removeAll(endNodes); makeBlock(nonFinalNodes); }
protected void makeInitialBlocks() { // sink block (for if the automaton isn't complete makeBlock(Collections.singleton(SINK_NODE)); // accepting block Set endNodes = getUnminimizedFA().getEndNodes(); makeBlock(endNodes); // main block Collection nonFinalNodes = new HashSet(getUnminimizedFA().getNodes()); nonFinalNodes.removeAll(endNodes); makeBlock(nonFinalNodes); }