【问题标题】:Disjoint edge finder algorithm analysis不相交寻边算法分析
【发布时间】:2013-04-20 16:14:59
【问题描述】:

我有一个算法可以在无向图中找到一组边不相交的路径。

  1. 从图中所有边的列表开始

  2. 当列表中仍有可用边时,执行深度/广度优先搜索以找到路径。如果找到路径,保存它,从列表和图形中删除边并增加路径计数器

  3. 从列表中删除第一个可用边并将其指定为当前路径

  4. 尝试将当前路径匹配到已保存边缘列表

  5. 如果没有可用的边匹配,则路径结束

  6. 如果可用边可以扩展当前路径,将其添加到当前路径并从边列表中删除,然后继续尝试扩展当前路径。

我相信 2 和 3 在 O(E(V+E) + E) 时间内执行,因为

  • 在 O(V+E) 时间内执行广度/深度优先搜索
  • 搜索在列表中的 E 条边上执行
  • 从列表和图表中删除 E 条边

由于迭代边缘列表需要两个循环,算法的后半部分在 O(E^2) 时间内执行。

因此,我有一个最后的最坏情况 O(E(V+E)+ E^2+E)=O(EV+2E^2+E)

我说的对吗?

【问题讨论】:

    标签: big-o analysis graph-algorithm


    【解决方案1】:

    不,这是不对的。据我了解您的问题 O(E(V+E)+ E^2+E) 是正确的。但在大 O 表示法中,人们会因为复杂性而选择“最大”事件。其中包含三个复杂度类:

    1. E(V+E)
    2. E^2
    3. E

    第 2 点消除了第 3 点,因为在任何情况下,第 2 点都更大。在“最坏情况”中,E 是 V^2。有了这一点,您可以确定第 1 点是最大的复杂部分(V^3+V^4 > V^4)。你的算法是对的,你对部分的假设也是正确的,所以这个问题的算法复杂度是:O(E(V+E))

    你可以看看这些slides。在幻灯片 23 中记录了复杂性并适合您的计算;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 1970-01-01
      • 2023-01-31
      相关资源
      最近更新 更多