/** Sends BP messages starting from children to parents. This version uses constant stack space. */ private void lambdaPropagation (cc.mallet.grmm.types.Tree tree, Object root) { LinkedList openList = new LinkedList (); LinkedList closedList = new LinkedList (); openList.addAll (tree.getChildren (root)); while (!openList.isEmpty ()) { Object var = openList.removeFirst (); openList.addAll (tree.getChildren (var)); closedList.addFirst (var); } // Now open list contains all of the nodes (except the root) in reverse topological order. Send the messages. for (Iterator it = closedList.iterator (); it.hasNext ();) { Object child = it.next (); Object parent = tree.getParent (child); sendMessage (mdlCurrent, child, parent); } }
/** Sends BP messages starting from children to parents. This version uses constant stack space. */ private void lambdaPropagation (cc.mallet.grmm.types.Tree tree, Object root) { LinkedList openList = new LinkedList (); LinkedList closedList = new LinkedList (); openList.addAll (tree.getChildren (root)); while (!openList.isEmpty ()) { Object var = openList.removeFirst (); openList.addAll (tree.getChildren (var)); closedList.addFirst (var); } // Now open list contains all of the nodes (except the root) in reverse topological order. Send the messages. for (Iterator it = closedList.iterator (); it.hasNext ();) { Object child = it.next (); Object parent = tree.getParent (child); sendMessage (mdlCurrent, child, parent); } }
/** Sends BP messages starting from children to parents. This version uses constant stack space. */ private void lambdaPropagation (cc.mallet.grmm.types.Tree tree, Object root) { LinkedList openList = new LinkedList (); LinkedList closedList = new LinkedList (); openList.addAll (tree.getChildren (root)); while (!openList.isEmpty ()) { Object var = openList.removeFirst (); openList.addAll (tree.getChildren (var)); closedList.addFirst (var); } // Now open list contains all of the nodes (except the root) in reverse topological order. Send the messages. for (Iterator it = closedList.iterator (); it.hasNext ();) { Object child = it.next (); Object parent = tree.getParent (child); sendMessage (mdlCurrent, child, parent); } }
private static cc.mallet.grmm.types.Tree graphToTree (Graph g) throws Exception { // Perhaps handle gracefully?? -cas if (g.vertexSet ().size () <= 0) { throw new RuntimeException ("Empty graph."); } Tree tree = new cc.mallet.grmm.types.Tree (); Object root = g.vertexSet ().iterator ().next (); tree.add (root); for (Iterator it1 = new BreadthFirstIterator (g, root); it1.hasNext();) { Object v1 = it1.next (); for (Iterator it2 = g.edgesOf (v1).iterator (); it2.hasNext ();) { Edge edge = (Edge) it2.next (); Object v2 = edge.oppositeVertex (v1); if (tree.getParent (v1) != v2) { tree.addNode (v1, v2); assert tree.getParent (v2) == v1; } } } return tree; }
private static cc.mallet.grmm.types.Tree graphToTree (Graph g) throws Exception { // Perhaps handle gracefully?? -cas if (g.vertexSet ().size () <= 0) { throw new RuntimeException ("Empty graph."); } Tree tree = new cc.mallet.grmm.types.Tree (); Object root = g.vertexSet ().iterator ().next (); tree.add (root); for (Iterator it1 = new BreadthFirstIterator (g, root); it1.hasNext();) { Object v1 = it1.next (); for (Iterator it2 = g.edgesOf (v1).iterator (); it2.hasNext ();) { Edge edge = (Edge) it2.next (); Object v2 = edge.oppositeVertex (v1); if (tree.getParent (v1) != v2) { tree.addNode (v1, v2); assert tree.getParent (v2) == v1; } } } return tree; }
private static cc.mallet.grmm.types.Tree graphToTree (Graph g) throws Exception { // Perhaps handle gracefully?? -cas if (g.vertexSet ().size () <= 0) { throw new RuntimeException ("Empty graph."); } Tree tree = new cc.mallet.grmm.types.Tree (); Object root = g.vertexSet ().iterator ().next (); tree.add (root); for (Iterator it1 = new BreadthFirstIterator (g, root); it1.hasNext();) { Object v1 = it1.next (); for (Iterator it2 = g.edgesOf (v1).iterator (); it2.hasNext ();) { Edge edge = (Edge) it2.next (); Object v2 = edge.oppositeVertex (v1); if (tree.getParent (v1) != v2) { tree.addNode (v1, v2); assert tree.getParent (v2) == v1; } } } return tree; }