我有一个算法可以在无向图中找到一组边缘不相交的路径。
从图表中所有边缘的列表开始
虽然列表中仍有可用边,但请先执行深度/广度搜索以查找路径。如果找到路径,请保存它,从列表和图表中删除边缘并增加路径计数器
从列表中删除第一个可用边缘并将其指定为当前路径
尝试将当前路径与已保存边缘列表相匹配
如果没有可用的边缘匹配,则路径已完成
如果可用边可以扩展当前路径,请将其添加到当前路径并从边列表中删除,然后继续尝试扩展当前路径。
我相信2和3在O(E(V + E)+ E)时间执行,因为
算法的后半部分在O(E ^ 2)时间内执行,因为迭代边缘列表需要两个循环。
因此,我有一个最后的最坏情况O(E(V + E)+ E ^ 2 + E)= O(EV + 2E ^ 2 + E)
我是对的吗?
答案 0 :(得分:1)
不,那不对。据我所知你的问题O(E(V + E)+ E ^ 2 + E)是对的。但是在Big O Notation中,人们会因复杂性而采取“最大”的事件。你有三个复杂性类:
第3点被第2点消除,因为在每种情况下两个都更大。在“最坏情况”中,E是V ^ 2。利用该已知,您可以确定点1是最大复杂度部分(V ^ 3 + V ^ 4> V ^ 4)。您的算法是正确的,您对部件的假设也是如此,因此该问题的算法复杂性为: O(E(V + E))
您可以查看这些slides。在幻灯片23中,写下来的复杂性适合您的计算;)