From 6752c45cf632c7494f213cd0a6f94a7ac5fb4b71 Mon Sep 17 00:00:00 2001 From: Joeri Exelmans Date: Wed, 4 Sep 2024 18:05:26 +0200 Subject: [PATCH] play around with action code in pattern matching --- pattern_matching/matcher.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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()