在有向图中精确访问所有节点一次
Visit all nodes exactly once in a directed graph
我有一个有向图,我想找到一个只访问每个节点一次的路径。我想以很好的复杂性来做到这一点。这可能吗?如果是,如何?
您正在寻找哈密顿路径,这是一个简单的开放路径,每个节点只包含一次。
在给定图中找到哈密顿路径是NP完全的。事实上,确定给定的(有向或无向)图是否包含哈密顿路径已经是NP完全的(通过例如顶点覆盖问题的约简来证明)。
如果你仍然想编码它,这里有一个关于github的实现。如果你想要一个快速的解决方案,也许启发式就足够了(例如,受DNA分子的启发,或者在图的子集上快速工作的解决方案。例如,如果您有 DAG,则可以执行拓扑排序,然后检查是否连接了连续的顶点。如果是这样,拓扑排序给出了哈密顿路径。
相关文章:
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 在C++中一次将矢量值写入多个文件
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 为什么 zlib 放气初始化调用一次不起作用?
- 在一次迭代中从 txt 文件中读取多行
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 高级选择排序 - 在一次迭代中搜索两个元素
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何仅使用一次固定<<设置精度(2)?或者至少恢复到默认行为?
- 什么是仅调用一次并调用参数的控制台应用
- 如何确保用户在一行上提示输入一次时输入名字和姓氏?
- (C++)虽然循环一次不起作用,但我引入了多个变量
- 为什么我的信号处理程序只执行一次?
- 在有向图中精确访问所有节点一次
- 如何使用同一链接列表一次处理各种类型的节点
- C++将节点添加到链表的开头一次后失败.其他方法也有问题
- 一次删除多个节点链接列表