问题标签 [lemon-graph-library]

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 回答
414 浏览

c++ - 有没有办法通过 LEMON Graph 库中的 Map 值获取节点?

我正在使用LEMON Graph 库,想知道是否有一种有效的方法可以通过其对应的值接收ListDigraph::Node xListDigraph::NodeMap

我在想类似的事情:

LEMON中是否已经存在类似的东西?如果除了写自己的地图别无他法,我如何返回键(节点)?我可以迭代地图的基础值吗?

0 投票
0 回答
166 浏览

c++ - 具有源和目标的无向图上的 BOOST min-cut/max-flow

我可以在必须有源和目标的无向图上使用 Boost 的任何算法(两个节点必须分开切割)。preflow_relabel 说它需要一个有向图。Stoer_wagner_min_cut 说它适用于无向图,但我找不到它要求源/目标节点的位置。

如果没有,有人有什么建议吗?我将 Lemon 设置为工作,但我认为他们通过将无向图视为两个有向边,一个单向,从而在无向图上实现最大流量。这会导致运行时问题,其中运行时与某些边的容量大小相关。

这是针对大学级别的计算生物学研究,我这么说是因为我假设人们可能会问为什么我们想要源/目标用于具有最大流/最小切割的无向图。

非常感谢。

0 投票
1 回答
412 浏览

c++ - 为什么将候选“=”运算符重载标记为 const?

我不能使用std::set_union,因为我没有正确地重载赋值运算符。

我正在使用std::set我自己的结构,NodeChange_t它本身包含另一个结构,point_t。以下是这些家伙的运算符重载:

在这种情况下,我想*nodeChanges被覆盖。但我不断收到的错误是:

const如果重点是修改左侧的内容,那么标记赋值运算符有什么意义?我一直在搞砸const预选赛,但似乎无处可去。任何帮助表示赞赏。

0 投票
1 回答
235 浏览

c++ - C++ - 将值插入 std::map 时出现分段错误

我正在尝试在 C++ 中构建一个图形实例解析器,它将图形节点作为输入并将它们插入到由 LEMON 库定义的 SmartGraph 类中。

该库不允许我插入具有特定 ID 的节点(据我在文档中所见),因此我创建了一个并行结构来存储输入文件的节点 ID 和节点 ID 之间的关系我的代码中的实际图表(可能有一个聪明的方法来解决这个问题,但我没有考虑太多,这对我来说听起来不错,只要实例不是那么大以至于我用完内存,这几乎是不可能的)。为此,我使用了一个 std::map ,它将输入文件 ID 作为键,将图形节点 ID 作为值。

如果我只是执行程序,这个 std::map 在从输入文件中读取行的循环的第 239 次迭代中崩溃,如果我用 Valgrind 检查它,它会达到 2252,这让我觉得我必须做一个真正的大的疏忽和某处的内存泄漏,但我无法弄清楚。代码如下

我知道这很丑陋,但我正试图在我开始精巧之前让它发挥作用,所以请耐心等待。node 是输入文件中节点的 ID,以整数表示。它在尝试 .insert() instance_graph_ids 中的值时崩溃,这是我之前写过的地图结构。我已经用 gdb 进行了检查,node 和 new_node_id 都是普通整数,instance_graph_ids 上的现有值对我来说也不错。尝试在 gdb 中的 instance_graph_ids 中调用 find() 或 insert() 会返回“尝试获取不在内存中的值的地址”错误。我在这里想念什么?


编辑了一个完整的例子。示例实例可从https://snap.stanford.edu/data/oregon1_010331.txt.gz下载

0 投票
0 回答
166 浏览

c++ - 使用柠檬创建 C++ 图

我正在尝试从我的大学解决 C++ 中的算法问题,但它基本上归结为创建 n*n 图,每个节点都有其邻居的边(基本上类似于连接节点的平方网格)。然后,我需要删除特定的边,并运行最短路径算法(对于未加权的边,我想柠檬有这个功能)。我的问题是如何创建这样的图,如何标记边缘(例如,给它一个特定的类),以及如何删除节点之间的边缘。

非常感谢!

0 投票
1 回答
190 浏览

c++ - C++ LEMON Graph Library - 使用 graphToEps() 显示弧/边图

使用LEMON C++ 库和GraphToEps,我试图可视化带有边(或弧)权重的网格图,但没有运气。到目前为止,这是我的main()中的内容:

我可以使用 获取节点文本(为简单起见,我在上面的代码中省略了)graphToEps.nodeTexts(id),如 graphToEps演示中所示,但我找不到类似edgeTexts(weights(id))or的内容arcTexts(weights(id))

上面代码的输出如下所示,我希望地图weights中的权重位于相应边的顶部。

网格图图像

任何帮助是极大的赞赏。

0 投票
1 回答
86 浏览

unix - 安装柠檬找不到ILOG COIN SOPLEX

我正在尝试安装github 存储库并按如下方式运行

我收到以下错误

这里有一个类似的问题。但是我尝试注释掉#CMAKE_POLICY(SET CMP0048 OLD) 并确保我使用的是最新版本的cmake。

我不知道如何找到这些开发库或找到替代品。请建议如何解决这个问题。此外,这仅在我尝试运行它的 unix 服务器上是一个问题。在我的本地 Windows 计算机上,安装进行得很顺利。

0 投票
0 回答
45 浏览

c++ - 错误:没有上下文类型信息的重载函数使用 LEMON-graph-library

所以我正在使用来自 GUROBI 的惰性约束来实现 Benders 程序。作为子问题过程的一部分,我需要使用广度优先搜索来处理图形,为此我使用的是 LEMON。我正在尝试实现使用访问者进行 BFS 搜索。但是,当我尝试使用 bfs.reached() 访问到达节点的映射时,我得到一个编译器(我想)错误。

这是到目前为止的回调类实现:

这是(不完整的访问者)实现。

错误看起来像这样

我对正在发生的事情一无所知,因为我想到的唯一错误是命名空间之间的关键字冲突

但没有找到解决办法。我是 C++ 的新手,所以我问你们这可能来自哪里。

0 投票
1 回答
143 浏览

c++ - 柠檬图如何找到两个节点之间的所有路径

我正在将 Lemon C++ 库用于图形,我需要做的是找到两个节点之间的所有路径。我能够找到一条路径(最短),但我需要所有这些。

有没有办法用柠檬做到这一点?

0 投票
0 回答
16 浏览

c++ - 使用具有各种弧类型的 LEMON 进行图形搜索

LEMON 提供了几种我目前在有向图上使用的图搜索算法,没有任何问题。

我打算将不同类型的弧(例如,“蓝色弧”和“红色弧”)添加到我的有向图中,并且想知道是否可以指示这些搜索算法仅遵循蓝色弧或红色弧。我知道过滤器可用于检索相关的子图,但如果可能的话,我想避免每次需要搜索我的图时都构建它们。