diff --git a/pattern_matching/matcher.py b/pattern_matching/matcher.py index 47a864d..c0e713a 100644 --- a/pattern_matching/matcher.py +++ b/pattern_matching/matcher.py @@ -172,7 +172,7 @@ class MatcherVF2: h_indegree = len(h_candidate_vtx.incoming) if g_indegree > h_indegree: return - if not self.compare_fn(h_candidate_vtx.value, g_candidate_vtx.value): + if not self.compare_fn(g_candidate_vtx.value, h_candidate_vtx.value): return new_state = state.grow_vtx( h_candidate_vtx, @@ -205,16 +205,19 @@ if __name__ == "__main__": ] guest = Graph() - guest.vtxs = [Vertex('src'), Vertex('tgt')] + guest.vtxs = [ + Vertex('v != 3'), # cannot be matched with Vertex(3) - changing this to True, you get 2 morphisms instead of one + Vertex('True')] # can be matched with any node guest.edges = [ + # Look for a simple loop: Edge(guest.vtxs[0], guest.vtxs[1]), Edge(guest.vtxs[1], guest.vtxs[0]), ] - m = MatcherVF2(host, guest, lambda hv, gv: True) + m = MatcherVF2(host, guest, lambda g_val, h_val: eval(g_val, {}, {'v':h_val})) import time durations = 0 - iterations = 100 + iterations = 1 print("Patience...") for n in range(iterations): time_start = time.perf_counter_ns()