如何解决确定图是有向图还是无向图 完整代码:
任何人都可以提供一些关于如何编写一个方法的建议,该方法在 python 中有向图或无向图时返回?
谢谢。
class DiGraph :
def __init__ ( self ) :
self._adj = {}
def add_node ( self,u ) :
if u not in self._adj :
self._adj [ u ] = []
def add_edge ( self,u,v,weight =1) :
self.add_node ( u )
self.add_node ( v )
self._adj [ u ].append (( v,weight ) )
解决方法
我不确定这是否是您要找的东西,但我是这么认为的。
some_graph = DiGraph()
some_graph.add_edge("a","b")
some_graph.is_directed()
这将返回 True,因为在一个方向上只有一条边。
some_graph = DiGraph()
some_graph.add_edge("a","b")
some_graph.add_edge("b","a")
some_graph.is_directed()
这将返回 False,因为在两个方向上都有具有相同权重的边。
some_graph = DiGraph()
some_graph.add_edge("a","a",2)
some_graph.is_directed()
这将返回 True,因为即使在两个方向上都有边,它们的权重也不同。
完整代码:
class DiGraph :
def __init__ ( self ) :
self._adj = {}
def add_node ( self,u ) :
if u not in self._adj :
self._adj [ u ] = []
def add_edge ( self,u,v,weight =1) :
self.add_node ( u )
self.add_node ( v )
self._adj [ u ].append (( v,weight ) )
def is_directed ( self ) :
for u,neigh in self._adj.items():
for n in neigh:
print("u","neigh:",neigh)
if n[0] != u and not ([(node,w) for node,w in self._adj[n[0]] if (node==u and w==n[1])]):
return True
return False
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。