问题标签 [edge-list]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3578 浏览

java - 为 Java Graph 类实现间接连接测试

我正在用 Java 编写一个类来表示 Graph 数据结构。这特定于无向、未加权的图,其目的主要用于边缘测试(节点 A 直接或间接连接到节点 B)。

我需要帮助来实现indirectEdgeTest 方法。在下面的代码中,我只注释了这个方法并且我返回 false,所以代码将按原样编译。

我花了一些时间想出一个算法,但我似乎找不到比这更简单的东西了,我担心我让它变得比它需要的更复杂:

  • 首先测试直接连接
  • 如果从节点 a 到节点 b 不存在直接连接:
    • 对于我连接到节点 a 的每条边:
      • 创建一个不包含边 a -> i 的新图
      • 测试节点 i 和 b 之间的间接连接的新图

欢迎您回答伪代码或实际 Java 代码。这是我的代码:

0 投票
1 回答
30889 浏览

python - 如何通过指定规则改变边缘的权重?

我有一个加权图:

获取节点列表:

我想通过这条规则改变每条边的权重:

删除一个节点,比如节点5,很明显,边(4, 5),和(5, 6)将被删除,每条边的权重变为:

这个算法怎么写?

path_graph只是一个例子。我需要一个适合任何图形类型的程序。此外,程序需要是可迭代的,这意味着我每次都可以从原始图中删除一个节点。

0 投票
1 回答
12570 浏览

python - 如何在 GraphViz 中生成矩形样式的边缘而不是曲线?

我使用 Pydot Python 库使用点语言生成了 Graphviz 图像。

生成的 Graphviz 图

但是边缘正在绘制曲线,我需要这种输出:

预期的 Graphviz

请提供使用 Graphviz 的解决方案。

0 投票
1 回答
1712 浏览

r - R igraph write.graph() edgelist 如果图为空

在 R 中使用包“igraph”并调用函数:

如果我通过使用来回忆图表

该图是空的,但也没有顶点!

0 投票
1 回答
5531 浏览

c++ - 扫描线多边形填充算法

我正在实现基于扫描线的多边形填充算法。我知道一般算法,我现在正在尝试用 C++ 实现它。

我需要将边缘表实现为活动边缘列表。

我已将活动边缘列表设为矢量,以便于动态插入和删除。

然而,边缘表有点混乱。

我正在尝试使用向量数组来实现边缘表,并且向量将包含我制作的结构。

这是结构。

我有一个 for 循环,它遍历传入的顶点数组,然后它创建一个桶并将桶插入边缘表中 ymin 索引处的边。

我的问题是我很难遍历边缘表并访问各个存储桶。

这是桶向量数组的声明:

这是我的 for 循环,它在试图打印出项目的边缘表上进行迭代。我尝试对索引使用迭代器和普通 int,但在尝试打印每个存储桶的值时都不起作用。

0 投票
1 回答
212 浏览

prolog - 在 JIProlog 中使用冻结

我想用 JIProlog 进行图形搜索。下面的示例memberchk没有 . 但是,当我确实包含它时,Prolog 冻结,可能是因为无限搜索。

这个答案中,我找到了原因(边缘列表尚未实例化)和解决方案的提示(使用freeze/2)。但是,freeze/2在我正在使用的 JIProlog 中不起作用。谁能帮我找到替代解决方案?

编辑:我知道一般来说,对于图表来说,这将是一个跟踪节点的解决方案,例如在这个例子中,但是对于我的特定应用程序,“节点”也可以边缘,这就是我想要检查的原因被访问的边而不是被访问的节点。

0 投票
2 回答
9452 浏览

python - 使用 igraph 导入加权边缘列表

我有以下 txt 文件,以 edgelist 格式表示网络。

前两列代表通常情况:哪个节点连接到其他哪些节点

第三列代表权重,代表每个节点联系对方的次数。

我已经搜索了igraph文档,但没有提到在导入 txt 等标准文件格式时如何包含权重参数。

该文件可以从这里访问,这是我一直在使用的代码:

此代码将第三列视为重量以外的其他内容。

有谁知道解决方案?

0 投票
3 回答
27844 浏览

r - 如何从R中的矩阵创建边缘列表?

该关系表示为如下矩阵x

这些条目是指它们拥有的连接数。

谁能告诉我如何将其写为边缘列表?

我宁愿把它写成一个边缘列表:

但是这个边缘列表可以让我创建一个网络图吗?

0 投票
1 回答
773 浏览

r - igraph:具有每个顶点的中心性度量和每个顶点的属性的 csv 文件

我有 2 个数据库:

  1. 边缘列表,
  2. 带有属性的顶点列表(地理位置和演员类别)

我从数据库 db 中的边列表构建了一个图 G:

我计算了中心性度量(度、介数)。

而且我能够从我的另一个 CSV 表中获取顶点属性,其中包含每个顶点的所有属性。

但是我找不到将顶点列表中每个顶点的属性赋予边缘列表中的顶点的方法(我的顶点列表中的顶点比边缘列表中的顶点多)

因此,我无法构建包含以下列的最终 csv 文件:顶点 ID、顶点名称、顶点属性、顶点度数、顶点介数。我可以用 Id、名称和度数+介数构建这样的文件,但我找不到给出每个顶点属性的方法。

0 投票
2 回答
2368 浏览

python - iGraph Python,将边缘列表转换为元组并添加.edges

我有一个 Graph G1,它有 50 个节点和 100 条边。所有边都被加权。我创建了一个边列表(按预定义的顺序排序,删除具有大值的特定边),它们的索引如下:

我想以 10 个批次将边添加到不同的图 G2(以节省计算时间),但 add.edges 似乎想要一个顶点对的元组列表。所以,

  1. 如何将上面的 Edge 列表转换为元组列表,例如 [(40,2),(10,1),(10,11),(0,0),...]。我尝试使用 G1.es[edge].tuple 进行循环,但 iGraph 将 [edge] 变量作为属性读取,而如果您只编写 G1.es[75].tuple,它可以正常工作。

  2. 如何从 G1 中查找权重并将它们以 10 个为一组添加到 G2 中?