问题标签 [edges]

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 投票
2 回答
1348 浏览

c - igraph如何沿最短路径获取边缘ID

我有一个包含多个最短路径的图,并且想要检索顶点的 ID 和边的 ID:

igraph_get_all_shortest_paths(...)仅计算顶点列表。

不是吗

应该这样做吗?

当我运行时:

我收到错误:igraph_vector_clear: Assertion `v != ((void *)0)' failed

0 投票
1 回答
290 浏览

java - Prefuse API java创建边

我最近正在使用 prefuse 进行一些可视化。我所做的是从数据库中加载一些信息,为它们制作一个 prefuse 表实例,并根据该信息制作一个图表。这工作正常。

我的问题是如何为该图创建边缘

我想我必须创建另一个表来保持边缘,但我不知道创建那个东西的方法......感谢任何帮助!谢谢!

这是我为图表设置数据的代码:

0 投票
1 回答
2976 浏览

c++ - 从图中删除一条边

我想从使用 Boost 图形库生成的图形中删除一些边。

我使用 Boostboost::mt19937生成从 1 到 N(顶点数)的随机数,如下所示,并添加随机边。

但是如果我有以下 4 个顶点,我会得到上面的输出:

但可以看出,边缘(0,2) and (3,2)是重复的。对于较大的图,有时例如:(1,3) and (3,1)exists 并且它们都与无向图相同。如何删除这些顶点。我知道 Boost 有一个叫做 的东西remove_edge_if(),但是我没有找到任何精确的例子来支持我的情况。

0 投票
1 回答
1871 浏览

loops - Prolog图找到没有循环的路径,检查边缘

我试图在 Prolog 的图中找到一条路径。我设法用我在网上找到的一些片段来解决这个问题。但是,它会跟踪节点以避免两次访问它们,而我需要它不要两次访问同一边缘。这可能在大多数图中归结为相同的事情,但是因为我想用它来计算从边缘上的点到边缘上其他点的路径,我不希望它返回从一个点到相邻节点的路径到相反的节点(比如,如果我们有一条从节点 A 到节点 C 的边 AC,中间有一个点 B,那么 ACB 将不是一条可接受的路径,因为它经过 AC 两次)。

这是我当前的代码:

对于上面的示例,这将返回例如:

现在我想我可以简单地替换\+ memberchk(X,[Y|P1])\+ memberchk(Edge,S)确保相同的边缘不会两次出现在路径中,这将解决问题。但是,当我这样做时,Prolog 说没有路径。

有人可以向我解释这是哪里出错了吗?

0 投票
1 回答
3286 浏览

java - 荣格用值着色顶点

我现在被 Java 库 Jung 困住了。

我显示顶点和边,只是我找不到任何顶点着色函数,我需要顶点值而不是鼠标。

我的渲染: 顶点和边

0 投票
3 回答
6402 浏览

r - R igraph 将平行边转换为权重属性

我正在为 R 使用 igraph。我的图基于一个包含平行边的边列表(多个边具有相同的源和目标)。我想将这些平行边转换为边属性权重。有没有办法做到这一点?

如果没有简单的方法。如何识别这些平行边缘?

不返回单个重复项。我想它正在寻找重复的边缘 id。

0 投票
2 回答
2862 浏览

algorithm - 从连接节点列表中绘制图形

在一个系统中,我有一个节点列表,这些节点像普通图中一样连接。我们了解整个系统及其所有联系,我们也有一个起点。我所有的边缘都有一个方向。

现在我想自动绘制所有这些节点和边。问题不是实际绘图,而是计算 (x,y) 坐标。所以基本上我想画出整个图表,这样看起来不错。

我的数据结构将类似于:

这个问题一定有一些众所周知的算法吗?我找不到任何东西,但我可能使用了错误的关键字。

我的想法:

一种方法是将我们的起始节点定位在 (0,0),然后有一些常数,即“距离”。然后对于每个邻居,它会将距离添加到 y 位置,并且对于作为邻居的每个节点,设置 x= distance*n。

但这确实会带来很多问题——所以这绝对不是要走的路。

0 投票
1 回答
5179 浏览

prolog - 如何在 Prolog 中实现 Dijkstra 算法返回边列表?

我一直在尝试在 JIProlog 中实现 Dijkstra 最短路径算法。网上有一些可用的实现,例如herehere,但它们都将路径作为节点列表返回。这对我的实现来说是有问题的,因为我在技术上使用的是多重图,其中顶点可以通过多条边连接。因此,我需要一个返回边列表而不是节点列表的算法。

我一直在尝试调整我提到的第一个实现来跟踪边缘,但我迷失在dijkstra_l/3规则中。有人可以帮助我吗?谢谢!

0 投票
1 回答
2159 浏览

java - 绘制控制流图

我的任务是制作控制流图。首先,我设法将我的代码分成基本块。例如,这里的这个程序:

将变成以下基本块:

区块 1

区块 2

区块 3

区块 4

区块 5

区块 6

区块 7

块 8

第 9 块

我通过扫描文件并使用 Pattern 和 Matcher 根据 if、while 等语句拆分程序来完成此操作。基本块是一个 ArrayList,所有这些块都保存在一个 ArrayList> 中。

接下来,我保留了哪些基本块相互连接的 HashMap。例如,块 1 将连接到块 2 和块 3,因为它是一个 if 语句(如果这是一条路,则走另一条路)。这个 HashMap 是 > 的块号,以及它所连接的块号列表。

所以,我有基本块,以及这些基本块之间的连接列表。我现在的问题是我不确定如何以图形形式显示它。之前,我使用paint() 方法并绘制圆和线来表示一个简单的控制图,其中每个块只有一个与下一个块的连接。但是,当有多个连接时,我不知道该怎么做。有什么简单的方法可以做到这一点吗?

谢谢!

0 投票
0 回答
594 浏览

graph - 图:通过公共边进行分组/聚类的算法

首先,如果我的英语有点不对劲(这不是我的母语),我很抱歉。我会尽力让自己被理解。

我正在为我的硕士论文做一个可视化项目,我想出了一个算法问题。可视化由一个图表组成,该图表通过我所谓的关键字(边缘)表示我称之为人工制品(图表的节点)之间的连接。这些人工制品可以是各种各样的东西。例如,它们可以表示照片,而边缘将表示照片之间的标签。出于说明目的,假设照片 A 通过标签 1 连接到照片 B。这意味着照片 A 和照片 B 都具有标签 1。

现在,我有一个称为扩展的操作,它以这种方式工作:

用户双击一个节点(在我的示例中是一张照片),程序会查询数据库以查找与该节点的每个新连接。在上面的示例中,如果用户双击照片 B,则扩展将生成例如分别带有标签 2 和 3 的照片 C 和照片 D。问题是这会产生大量数据,让我无法解决分组节点的问题。理想的情况是使用尽可能多的常见关键字(边缘)进行分组。例如,现在假设照片 C 和 D 都具有标签 5,那么将有一组具有 C 和 D 的边缘为 5。但是如果照片 D 和 E 都具有标签 5 和 6,则该组是带有边缘的 D 和 E 5 和 6,然后是带有边缘 5 的照片 C(边缘可以重复)。为了显示:

我的问题是完成这个算法。在数据库上,我有以下表格:

关键字 (keyword_id、other_attributes)

人工制品(artefact_id, other_attributes

Keyword_Artefact (keyword_id, artefact_id)

Keyword_Artefact_Artefact (keyword_id, artefact_id1, artefact_id2)

解决这个问题的最佳方法是什么?一个可以用相当数量的数据完成的。

我正在使用 prefuse 库在 java 中开发这个程序。