C# 中的平面嵌入(平面遍历)算法

发布于 2024-10-05 18:08:32 字数 366 浏览 8 评论 0原文

我有一个图G。该图是平面图

我希望找到图表的所有面。我明白 构建平面嵌入是查找面(或区域或循环)的方法,使得所有边必须由最多 2 个面共享。

C# 中是否有易于实现的平面嵌入算法?商业或开源都可以。

I have a graph G. The graph is a planar graph.

I wish to find all the faces of the graph. I understand that constructing a planar embedding is the way to find the faces ( or regions, or cycles), such that all the edges must be shared by at most 2 faces.

Is there a readily made implementation of planar embedding algorithm in C#? Either commercial or open source is fine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

波浪屿的海角声 2024-10-12 18:08:37

在这里,这个 C# 项目表示它受到 Boost 库的启发,并表示它支持:

  • 检查给定的无向图是否是平面的
  • 如果给定的图是平面的,则计算平面嵌入
  • ​​计算给定平面嵌入的面

它似乎使用 Boyer -Myrvold 平面性测试:

  • 检查图是否是一个大循环,是否是平面的,并且嵌入中恰好有两个面
  • 检查是否随机图具有超过 3n - 6 个顶点,是否不是平面

https://github.com/OndrejNepozitek/GraphPlanarityTesting

Here, this C# project says it was inspired by the Boost library, and says it supports:

  • Checks if a given undirected graph is planar or not
  • Computes planar embedding if a given graph is planar
  • Computes faces of a given planar embedding

It appears to use Boyer-Myrvold Planarity Testing:

  • Checks that if a graph is one big cycle, it is planar and there are exactly two faces in the embedding
  • Checks that if a random graph has more than 3n - 6 vertices, it is not planar

https://github.com/OndrejNepozitek/GraphPlanarityTesting

粉红×色少女 2024-10-12 18:08:36

经过一番搜索,我发现平面面遍历 Boost库中的函数满足我的需求。

然后,可以用纯 C 方式包装该函数,并通过 PInvoke 从 C# 调用它。

After some searching, I found that Planar Face Traversal function in Boost library suits my needs.

One can then wrap the function in plain C manner and call it from C# via PInvoke.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文