subcircuit library: implied allExtern for mining
authorClifford Wolf <clifford@clifford.at>
Sat, 2 Mar 2013 13:34:00 +0000 (14:34 +0100)
committerClifford Wolf <clifford@clifford.at>
Sat, 2 Mar 2013 13:34:00 +0000 (14:34 +0100)
libs/subcircuit/README
libs/subcircuit/subcircuit.cc
libs/subcircuit/test_mine.txt

index d1bdb1f646413aa588a18b447feee1934f5cc171..a2467f6a26169fc799d148d43e4cfdf23d29b71c 100644 (file)
@@ -333,10 +333,6 @@ at most maxNodes nodes that occurs at least minMatches times:
        std::vector<SubCircuit::Solver::MineResult> results;
        mySolver.mine(results, minNodes, maxNodes, minMatches);
 
-The miner works by finding frequent pairs of nodes and then combining them
-to larger subcircuits. Because of this incremental strategy the miner only
-works as expected on graphs with markAllExtern() set.
-
 The mine() method has an optional fifth parameter that limits the number
 of matches counted in one graph. This can be useful when mining for circuits
 that are found in at least a number of graphs. E.g. the following call
index a55b97ab415aa68beb4462756c9776c66fdd4df5..b31c45e1d39210c4e5781246673125c7617bf032 100644 (file)
@@ -1155,7 +1155,6 @@ class SubCircuit::SolverWorker
                for (auto &it : graphData)
                {
                        GraphData &haystack = it.second;
-                       assert(haystack.graph.allExtern);
 
                        std::vector<std::set<int>> enumerationMatrix;
                        std::map<std::string, std::set<std::string>> initialMappings;
@@ -1176,6 +1175,7 @@ class SubCircuit::SolverWorker
                for (int nodeIdx : testSet.nodes)
                        needle_nodes.push_back(graph.nodes[nodeIdx].nodeId);
                needle.graph = Graph(graph, needle_nodes);
+               needle.graph.markAllExtern();
                diCache.add(needle.graph, needle.adjMatrix, graphId, userSolver);
 
                std::vector<Solver::Result> ullmannResults;
index e3b9170b76d72676a29d4de31dcb54293b3a6d4a..b200e47d9c4f13d968e8322c485be885a6355b1d 100644 (file)
@@ -7,7 +7,9 @@ graph macc22
        node add_1 add A 32 B 32 Y 32
        connect mul_1 Y add_1 A
        connect mul_2 Y add_1 B
-       allextern
+       extern mul_1 A B
+       extern mul_2 A B
+       extern add_1 Y
 endgraph
 
 graph macc4x2
@@ -24,7 +26,11 @@ graph macc4x2
        connect mul_4 Y add_2 B
        connect add_1 Y add_3 A
        connect add_2 Y add_3 B
-       allextern
+       extern mul_1 A B
+       extern mul_2 A B
+       extern mul_3 A B
+       extern mul_4 A B
+       extern add_3 Y
 endgraph
 
 swapgroup mul A B