2
Я хотел бы знать, если есть простой способ проверить некоторый неориентированный граф в NetworkX, является ли дерево или неПроверьте неориентированный граф является деревом в NetworkX
Я хотел бы знать, если есть простой способ проверить некоторый неориентированный граф в NetworkX, является ли дерево или неПроверьте неориентированный граф является деревом в NetworkX
Самый быстрый способ для графа G (V, E) может быть проверено, если | V | = | E | + 1 и связна:
import networkx as nx
def is_tree(G):
if nx.number_of_nodes(G) != nx.number_of_edges(G) + 1:
return False
return nx.is_connected(G)
if __name__ == '__main__':
print(is_tree(nx.path_graph(5)))
print(is_tree(nx.star_graph(5)))
print(is_tree(nx.house_graph()))
Я не знаю, если есть элегантный способ сделать это с 'networkx', но простой глубины первого обхода, помечая узлы, которые вы посещали будет работать (если он находит уже посещенный узел, есть цикл, и поэтому он не является деревом). – Blckknght