subgraph_isomorphism doesn't work with filtered patterns
- OS Nixos 21.05.git.831ce6e04d5
- Python 3.8.12
- GCC 10.3
- Boost 1.69.0
GraphView attempt
Consider the following example:
g1=Graph(directed=True)
v1=g1.add_vertex()
v2=g1.add_vertex()
g1.add_edge(v1,v2)
flt=g1.new_vp('bool')
flt[v1]=True
flt[v2]=True
v3=g1.add_vertex() # <Line1
flt[v3]=False # <Line2
g2=Graph(directed=True)
v1=g2.add_vertex()
v2=g2.add_vertex()
g2.add_edge(v1,v2)
g1v=GraphView(g1,vfilt=flt)
iso=subgraph_isomorphism(g1v,g2)
assert len(iso)>0, f"Can't find isomorphism using a filtered pattern"
The assert would trigger, despite the fact that the unmasked parts of the graphs are identical.
Vertex filter attempt
Similarily, set_vertex_filter
doesn't work:
g1=Graph(directed=True)
v1=g1.add_vertex()
v2=g1.add_vertex()
g1.add_edge(v1,v2)
flt=g1.new_vp('bool')
flt[v1]=True
flt[v2]=True
v3=g1.add_vertex()
flt[v3]=False
g1.set_vertex_filter(flt)
g2=Graph(directed=True)
v1=g2.add_vertex()
v2=g2.add_vertex()
g2.add_edge(v1,v2)
iso=subgraph_isomorphism(g1,g2)
assert len(iso)>0, f"Can't find isomorphism using a filtered pattern"
Edited by Sergey M