当前位置: 首页 > 知识库问答 >
问题:

Python igraph无法在无向图中找到边

漆雕升
2023-03-14

我在Python3中有一个简单的代码,使用igraph返回我添加到无向图中的边。

from igraph import *
g = Graph()
g.add_vertices(3)
g.add_edges([(0,1), (1,2)])
# display(plot(g))
edge=g.es.find(_source=1, _target=0)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-14-4182287b1986> in <module>
      4 g.add_edges([(0,1), (1,2)])
      5 # display(plot(g))
----> 6 edge=g.es.find(_source=1, _target=0)

E:\Softwares\Anaconda\lib\site-packages\igraph\__init__.py in find(self, *args, **kwds)
   3615         if es:
   3616             return es[0]
-> 3617         raise ValueError("no such edge")
   3618 
   3619     def select(self, *args, **kwds):

ValueError: no such edge

但是,如果按照输入源和目标的顺序设置源和目标,它会返回边缘。在这种情况下,源=0,目标=1
我的猜测是,它不是真正的无向图。

我的问题是,如何得到一个真正的无向图,即使我在g.es.find()函数中切换了源节点和目标节点,它也会返回边,就像对无向图一样?

共有1个答案

湛鸿
2023-03-14

使用此方法获取边缘:

from igraph import *
g = Graph()
g.add_vertices(3)
g.add_edges([(0,1), (1,2)])

#get the ID
g.get_eid(0,1)
0

#get the edge list
g.get_edgelist()
[(0, 1), (1, 2)]

#get the first edge from the edge list
g.get_edgelist()[0]
(0, 1)

最后,要验证它是否是定向的,请使用g.is_directed()

 类似资料:
  • 我试着用谷歌搜索,但是没有任何有价值的东西弹出。 图表: 它是无方向的 表示为具有双边的有向图 可能包含具有负权重的边 我知道我可以使用Bellman Ford在有向情况下解决这个问题,但是对于无向边,它只返回单边(2个循环)作为其输出。我需要找到一个循环的大小 此外,该算法应该具有运行时复杂性O(V*E)和内存复杂性O(V)。

  • 我尝试运行Drupal作为Docker容器在Vagant box boot2docker(在Windows 8.1)。 Vagrantfile(Drupal容器) 主机/Vagrantfile(boot2docker) 在Drupal容器的目录中运行会导致错误,因为找不到Drupal映像。 输出 它的工作原理,如果我将主机的方框更改为 主机/虚拟文件(ubuntu/trusty64) 但我喜欢使用

  • 注意,有一个多边形ABCIHGJKLMLKA,它包括节点KLM,但多边形CDEG不包括F。 我读过关于这个问题的解决方案,但没有像我这样的leaf要求。在以前的解决方案中存在的一些公理是,每条边只使用两次,但是死端边总共需要遍历四次。也就是说,存在一个包含所有外部节点ABCDEFGJKLMLKA的多边形,但是它会被丢弃,因为它将朝外。 下面介绍了一种类似问题的解决方案,即sans the leaf

  • 我是斯坦纳树问题领域的初学者,我需要确定我的问题的名称,如果存在:给定无向、无权重、根图和一些顶点(模板节点)。我想构建树,其中所有的终端节点都是叶子,具有最小数量的斯坦纳顶点。有谁能为我找出这个问题的类(名称)以便阅读更多关于这个的信息。谢谢你们所有人

  • 设G=(V,E)是无向图。如果G的每个圈在F中至少有一条边,则称边集F E为反馈边集。 a)最小尺寸反馈边集:由于图是无权的,我们可以使用DFS。我们像往常一样从任意顶点开始DFS。当我们遇到一个后边时,我们将它插入反馈边集。当DFS完成时,该集将是答案。 b)最小权重反馈边集:由于图是加权的,我们可以使用Kruskal。但是Kruskal通常从最小权重的边开始。如果我们可以否定所有的边权重,然后

  • 这是我第一次尝试设置docker(版本17.09.0-ce)。我已经按照官方网站的所有说明在我的机器(Windows10x64)上运行正常。当我在控制台上键入时,返回。但我正在尝试执行docker run-t hello world,答案如下: 我的互联网来自代理,但我制作了一个VPN,所有东西都工作得很好,除了docker,我甚至使用pip安装python软件包。有什么不对劲吗?