这是一个适当的算法,如果它连接了,它会接受图G吗?

时间:2014-10-01 23:36:41

标签: algorithm

我想询问并查看在给定图P的情况下创建多项式时间算法是否足够?只是想仔细检查一下。

在输入(P,u,v)上,其中P是具有节点u和v的无向图:

  1. 创建图P中每个边的列表D,其中包含从x_0到x_k的数字。

  2. 选择节点u作为起始节点。利用BFS,遍历图形直到当前节点是初始u值。

  3. 在列表中重复使用x_0,直到使用x_k。

  4. 如果BFS完成,请接受。否则,拒绝。

  5. 我相信我的问题与接受/拒绝条件有关,但在这种情况下它会是什么?

1 个答案:

答案 0 :(得分:1)

你的问题在很多方面都没有意义,但从我所知道的,没有。

您的第2步将(慢慢)找到周期,这是没用的。

我不知道第3步应该是什么,而你的变量v未被使用(并且u和参数一样没有意义。)

对于有向图,您需要指定是要检查弱连接(如无向图)还是强连接。

对于弱连接,您需要:

  1. 将图表G

  2. 作为输入
  3. 为看到的节点创建一个本地的空集S

  4. 从某个节点进行深度优先搜索(包括向后链接 - 按照查找方式观察算法的复杂性!),将每个节点添加到S访问它,并在迭代期间跳过从当前节点到S中的节点的边。 (如果为边界分配额外的数据集,可以使用广度优先搜索)

  5. 检查S是否与G具有相同的节点数。

  6. 对于强连接,无论您设置哪个节点,都需要检查图表是否已连接。可能有一种方法可以比为每个节点重复上述操作更有效。

    示例图(从任何起始节点考虑这一点):

    1 -> 2
    2 -> 3
    3 -> 1
    3 -> 4
    4 -> 5
    5 -> 6
    6 -> 4