【发布时间】:2012-08-26 07:59:42
【问题描述】:
我有一个无向图。该图中的一条边是特殊的。我想找到属于包含第一条边的偶数循环的所有其他边。
我不需要列举所有的循环,我认为这本质上是 NP。我只需要知道,对于每条边,它是否满足上述条件。
蛮力搜索当然可以,但是太慢了,我正在努力想出更好的方法。任何帮助表示赞赏。
【问题讨论】:
-
这里没有足够的信息来提供您所寻求的质量的答案。您提前多长时间知道哪个边缘是特殊的?是否允许对数据进行预处理?你事先接触了多少数据(例如加载它),你能修改你预处理数据的方式吗?
-
此外,您可能需要查看所有循环如果您不能滥用预处理,但我想不出以某种方式证明该断言的证据。
-
@ninjagecko 该图表示一种化学结构,即顶点是原子,边缘是这些原子之间的化学键。用户正在不断地编辑化学结构,并且预计该算法将在用户执行编辑时实时运行。我们为图使用了一个简单的邻接表结构,尽管我们也维护了一些其他结构(例如,我们始终知道一条边是否是循环的一部分)。如果我理解正确,预处理不是一个选项,因为图形(和特殊边)总是在变化。
-
“虽然我们也维护了一些其他结构(例如,我们始终知道边是否是循环的一部分)”——也许这个结构被修改以跟踪它是否是偶数循环的一部分?它是什么样的结构? (预处理应该是可行的,因为用户从文件中加载化学物质,或者它以某种方式生成,这是一个 O(N) 操作,但可能不是必需的。)
-
循环是否仅限于简单循环?两个三角形通过它们的尖端之间的边缘连接(一种沙漏形状)算作长度为 8 的循环,中间边缘被使用两次吗?
标签: algorithm graph graph-theory