我想询问并查看在给定图P的情况下创建多项式时间算法是否足够?只是想仔细检查一下。
在输入(P,u,v)上,其中P是具有节点u和v的无向图:
创建图P中每个边的列表D,其中包含从x_0到x_k的数字。
选择节点u作为起始节点。利用BFS,遍历图形直到当前节点是初始u值。
在列表中重复使用x_0,直到使用x_k。
如果BFS完成,请接受。否则,拒绝。
我相信我的问题与接受/拒绝条件有关,但在这种情况下它会是什么?
答案 0 :(得分:1)
你的问题在很多方面都没有意义,但从我所知道的,没有。
您的第2步将(慢慢)找到周期,这是没用的。
我不知道第3步应该是什么,而你的变量v
未被使用(并且u
和参数一样没有意义。)
对于有向图,您需要指定是要检查弱连接(如无向图)还是强连接。
对于弱连接,您需要:
将图表G
为看到的节点创建一个本地的空集S
。
从某个节点进行深度优先搜索(包括向后链接 - 按照查找方式观察算法的复杂性!),将每个节点添加到S
访问它,并在迭代期间跳过从当前节点到S
中的节点的边。 (如果为边界分配额外的数据集,可以使用广度优先搜索)
检查S
是否与G
具有相同的节点数。
对于强连接,无论您设置哪个节点,都需要检查图表是否已连接。可能有一种方法可以比为每个节点重复上述操作更有效。
示例图(从任何起始节点考虑这一点):
1 -> 2
2 -> 3
3 -> 1
3 -> 4
4 -> 5
5 -> 6
6 -> 4