Package org.drools.core.util.bitmask

Examples of org.drools.core.util.bitmask.OpenBitSet


    public void mapNodeToCliqueFamily(OpenBitSet[] varNodeToCliques, JunctionTreeClique[] jtNodes) {
        for ( int i = 0; i < varNodeToCliques.length; i++ ) {
            GraphNode<BayesVariable> varNode = graph.getNode( i );

            // Get OpenBitSet for parents
            OpenBitSet parents = new OpenBitSet();
            int count = 0;
            for ( Edge edge : varNode.getInEdges() ) {
                parents.set( edge.getOutGraphNode().getId() );
                count++;
            }

            if ( count == 0 ) {
                // node has no parents, so simply find the smallest clique it's in.
            }

            OpenBitSet cliques = varNodeToCliques[i];
            if  ( cliques == null ) {
                throw new IllegalStateException("Node exists, that is not part of a clique. " + varNode.toString());
            }
            int bestWeight = -1;
            int clique = -1;
            // finds the smallest node, that contains all the parents
            for ( int j = cliques.nextSetBit(0); j >= 0; j = cliques.nextSetBit( j+ 1 ) ) {
                JunctionTreeClique jtNode = jtNodes[j];

                // if the node has parents, we find the small clique it's in.
                // If it has parents then is jtNode a supserset of parents, visa-vis is parents a subset of jtNode
                if ( (count == 0 || OpenBitSet.andNotCount(parents, jtNode.getBitSet()) == 0 ) && ( clique == -1 || jtNode.getBitSet().cardinality() < bestWeight ) ) {
View Full Code Here


     * @param id
     * @param clique
     */
    public void mapVarNodeToCliques(OpenBitSet[] nodeToCliques, int id, OpenBitSet clique) {
        for ( int i = clique.nextSetBit(0); i >= 0; i = clique.nextSetBit( i + 1 ) ) {
             OpenBitSet cliques = nodeToCliques[i];
            if ( cliques == null ) {
                cliques = new OpenBitSet();
                nodeToCliques[i] = cliques;
            }
            cliques.set(id);
        }
    }
View Full Code Here

        // must use the adjacency matrix, and not the vertex.getEdges() for connections,
        // as it gets updated with new connections, during elimination
        weightRequired = (int) Math.abs(v.getContent().getOutcomes().length);
        newEdgesRequired = 0;

        cliqueBitSet = new OpenBitSet(adjMatrix.length);

        cliqueBitSet.set(v.getId());

        // determine new edges added, to ensure all adjacent nodes become neighbours in a cluster
        boolean[] adjList = adjMatrix[ v.getId() ];
View Full Code Here

import static org.junit.Assert.assertTrue;

public class JunctionTreeBuilderTest {
    @Test
    public void testOpenBitSet() {
        OpenBitSet b1 = bitSet("00000111");
        OpenBitSet b2 = bitSet("00000111");
        OpenBitSet b3 = bitSet("00000110");
        OpenBitSet b4 = bitSet("00001110");

        assertEquals(0, OpenBitSet.andNotCount(b1, b2)); // b1 and b3 are equal

        assertEquals( 1,  OpenBitSet.andNotCount( b2, b3 ) ); // b2 is not a subset of b3
        assertEquals(0, OpenBitSet.andNotCount(b3, b2)); // b3 is a subset of b2
View Full Code Here

    public void testCliqueSuperSet() {
        Graph<BayesVariable> graph = new BayesNetwork();
        JunctionTreeBuilder jtBuilder = new JunctionTreeBuilder( graph );

        List<OpenBitSet> cliques = new ArrayList<OpenBitSet>();
        OpenBitSet OpenBitSet1 = bitSet("00011110");
        jtBuilder.updateCliques(cliques, OpenBitSet1);
        assertEquals( 1, cliques.size() );

        // ignore subset
        OpenBitSet OpenBitSet2 = bitSet("00000110");
        jtBuilder.updateCliques(cliques, OpenBitSet2);
        assertEquals( 1, cliques.size() );
        assertEquals( OpenBitSet1, cliques.get(0) );

        // add overlapping, as not a pure subset
        OpenBitSet OpenBitSet3 = bitSet("01000110");
        jtBuilder.updateCliques(cliques, OpenBitSet3);
        assertEquals( 2, cliques.size() );
        assertEquals( OpenBitSet1, cliques.get(0) );
        assertEquals( OpenBitSet3, cliques.get(1) );
    }
View Full Code Here

        GraphNode x4 = addNode(graph);
        GraphNode x5 = addNode(graph);
        GraphNode x6 = addNode(graph);


        OpenBitSet OpenBitSet1_1 = bitSet("00001110");
        OpenBitSet OpenBitSet1_2 = bitSet("01101100");
        SeparatorSet s1 = new SeparatorSet( OpenBitSet1_1, 0, OpenBitSet1_2, 0, graph);

        OpenBitSet OpenBitSet2_1 = bitSet("00001110");
        OpenBitSet OpenBitSet2_2 = bitSet("00100100");
        SeparatorSet s2 = new SeparatorSet( OpenBitSet2_1, 0, OpenBitSet2_2, 0, graph);

        List<SeparatorSet> list = new ArrayList<SeparatorSet>();
        list.add( s1 );
        list.add( s2 );
View Full Code Here

        x1.setContent(new BayesVariable<String>("x1", x0.getId(), new String[]{"a"}, new double[][]{{0.1 }}));
        x2.setContent(new BayesVariable<String>("x2", x0.getId(), new String[]{"a", "b"}, new double[][]{{0.1, 0.1}}));
        x3.setContent(new BayesVariable<String>("x3", x0.getId(), new String[]{"a", "b"}, new double[][]{{0.1, 0.1}}));

        OpenBitSet OpenBitSet1_1 = bitSet("00001110");
        OpenBitSet OpenBitSet1_2 = bitSet("01101100");
        SeparatorSet s1 = new SeparatorSet( OpenBitSet1_1, 0, OpenBitSet1_2, 0, graph);

        OpenBitSet OpenBitSet2_1 = bitSet("00001110");
        OpenBitSet OpenBitSet2_2 = bitSet("00100110");
        SeparatorSet s2 = new SeparatorSet( OpenBitSet2_1, 0, OpenBitSet2_2, 0, graph);

        List<SeparatorSet> list = new ArrayList<SeparatorSet>();
        list.add( s1 );
        list.add( s2 );
View Full Code Here

        GraphNode x4 = addNode(graph);
        GraphNode x5 = addNode(graph);
        GraphNode x6 = addNode(graph);


        OpenBitSet OpenBitSet1_1 = bitSet("00001110");
        OpenBitSet OpenBitSet1_2 = bitSet("01000010");
        SeparatorSet s1 = new SeparatorSet( OpenBitSet1_1, 0, OpenBitSet1_2, 0, graph);

        OpenBitSet OpenBitSet2_1 = bitSet("00001110");
        OpenBitSet OpenBitSet2_2 = bitSet("01000100");
        SeparatorSet s2 = new SeparatorSet( OpenBitSet2_1, 0, OpenBitSet2_2, 0, graph);

        List<SeparatorSet> list = new ArrayList<SeparatorSet>();
        list.add( s1 );
        list.add( s2 );
View Full Code Here

        GraphNode x4 = addNode(graph);
        GraphNode x5 = addNode(graph);
        GraphNode x6 = addNode(graph);

        OpenBitSet OpenBitSet1 = bitSet("00001110");
        OpenBitSet OpenBitSet2 = bitSet("00011100");
        OpenBitSet OpenBitSet3 = bitSet("00110000");
        OpenBitSet OpenBitSet4 = bitSet("01110000");

        List<OpenBitSet> cliques = new ArrayList<OpenBitSet>();
        cliques.add ( OpenBitSet1 );
        cliques.add ( OpenBitSet2 );
        cliques.add ( OpenBitSet3 );
        cliques.add ( OpenBitSet4 );

        List<SeparatorSet> separatorSets = new ArrayList<SeparatorSet>();
        for ( int i = 0; i < cliques.size(); i++ ) {
            OpenBitSet ci = cliques.get(i);
            for ( int j = i+1; j < cliques.size(); j++ ) {
                OpenBitSet cj = cliques.get(j);
                if ( ci.intersects( cj ) ) {
                    SeparatorSet separatorSet = new SeparatorSet( ci, 0, cj, 0, graph );
                }
            }
        }
View Full Code Here

        GraphNode x5 = addNode(graph);
        GraphNode x6 = addNode(graph);
        GraphNode x7 = addNode(graph);

        List<OpenBitSet> list = new ArrayList<OpenBitSet>();
        OpenBitSet OpenBitSet1 = bitSet("00001111");
        OpenBitSet OpenBitSet2 = bitSet("00111100");
        OpenBitSet OpenBitSet3 = bitSet("11100000"); // linear

        OpenBitSet intersect1And2 = ((OpenBitSet)OpenBitSet2.clone());
        intersect1And2.and(OpenBitSet1);

        OpenBitSet intersect2And3 = ((OpenBitSet)OpenBitSet2.clone());
        intersect2And3.and(OpenBitSet3);

        list.add(OpenBitSet1);
        list.add(OpenBitSet2);
        list.add(OpenBitSet3);
View Full Code Here

TOP

Related Classes of org.drools.core.util.bitmask.OpenBitSet

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.