У меня есть большой граф, в котором я хочу найти изоморфизм подграфа, используя встроенный алгоритм VF2 в NetworkX. И графы "стог сена", и "иглы" являются направленными. Возьмем следующий тривиальный пример:
from networkx.algorithms.isomorphism import DiGraphMatcher
G1 = nx.complete_graph(20, nx.DiGraph)
G2 = nx.DiGraph()
G2.add_edge(1, 2)
list(DiGraphMatcher(G1, G2).subgraph_isomorphisms_iter())
Последняя строка возвращает пустой список []
.
Насколько я понимаю, это должно вернуть все ребра в графе, и действительно, если я заменю GraphMatcher
на DiGraphMatcher
, я получу список всех ребер.
Что-то не так с DiGraphMatcher
, или, возможно, что-то не так с моим пониманием того, что DiGraphMatcher
должно делать?
Версии:
- Python: 3.7.7
- NetworkX: 2.4
Пример кода неориентированного графа (заменяет все DiGraph
на Graph
, в остальном то же самое):
from networkx.algorithms.isomorphism import GraphMatcher
G1 = nx.complete_graph(20, nx.Graph)
G2 = nx.Graph()
G2.add_edge(1, 2)
list(GraphMatcher(G1, G2).subgraph_isomorphisms_iter())
DiGraphMatcher
, иGraphMatcher
возвращают пустой список на моем компьютере. - person Andy L.   schedule 23.03.2020