【问题标题】:Algorithms for polyhedral graph (planar 3-connected graph) isomorphism?多面体图(平面三连通图)同构的算法?
【发布时间】:2012-03-31 08:51:18
【问题描述】:

我已经对平面 3 连通图的图同构主题进行了一些研究,但是存在大量具有不同限制、理论复杂性和使用频率的算法,我很难找到一个合适的输出为:

  • 简单易懂
  • 可以以最清晰的方式实施
  • 在小型图(最多几十个顶点)上具有良好的实际性能

如果我自己不了解不同的算法,就很难知道我是使用一种更老的、更专业的算法来解决这个问题,还是使用更新的、更通用的算法更好。 在所有可能的候选人中,哪一个是最合适的?

【问题讨论】:

  • 希望会好一点。您可能会考虑标记以迁移到我们的其他站点之一。我不确定这会在这里获得多大的吸引力..
  • 感谢您的关注。在发布我的问题之前,我想到这可能不是最好的 SE,但我想不出一个更合适的 SE——在我看来这不是理论计算机科学,这不是关于软件开发的概念问题,它不是真的是数学等等……你能建议你认为这在哪个网站上最有效吗?
  • 你的猜测和我的一样好。我只真正熟悉三巨头(和程序员),因为那是我主要处理的......

标签: algorithm language-agnostic graph isomorphism polyhedra


【解决方案1】:

我认为 Weinberg 的算法符合要求。

  • 易于理解:计算 G 和 H 的 rotation systems 作为平面度测试算法的副产品。由于 G 和 H 是 3 连通的,因此当且仅当 G 和 H 是同构的时,这些旋转系统是同构的,直到顺时针和逆时针互换。在 G 中选择一个省道(= 具有指示方向的边缘)d 并尝试将其映射到 H 中的所有省道 e(并重复 H 的其他方向)。由于G是连通的,所有其他的飞镖d'可以通过组合G的旋转系统的两个操作从d到达。将相应的操作应用于e并检查是否存在同构。

  • 最大清晰度:除了平面度测试,上面是一页代码。也许您可以重复使用其他人的平面性测试?例如,Boost 中有一个。如果不是,我仍然认为实现自己的比重写 nauty 更容易。

  • 在小图上具有良好的实用性能:经过平面性测试,Weinberg 的算法基本上是对每个 dart 进行两次同步的深度优先遍历。总运行时间为 O(|V|2),没有潜伏大常数。

【讨论】:

  • 注意:Hopcroft 和 Tarjan 的 |V|log|V| 可能算法比较简单;我现在无法访问他们的文章。另一方面,线性时间平面性测试和二次时间平面性测试之间的区别在于一些奇特的数据结构,所以如果你自己编写测试,你也可以满足于二次时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
相关资源
最近更新 更多