首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DFS在DFS中,具有已知字符串的DFS

DFS在DFS中,具有已知字符串的DFS
EN

Stack Overflow用户
提问于 2013-09-04 14:21:11
回答 1查看 1.1K关注 0票数 2

我正在寻找我的代码的复杂性计算。它只是DFS (深度优先搜索)中的DFS(深度优先搜索)。DFS从头到尾在一个图(状态机)上运行(向后搜索)。每当它到达start时,它就会累积使其到达start的字符串,并使用另一个DFS在另一个图上尝试该字符串,以检查它是否也在具有相同字符串的另一个图上达到start状态。

外部DFS复杂度确定为O(Vo+Eo),其中Vo :外部图中的顶点数,Eo :外部图中的边数。但是,当将要跟随的字符串已知时,DFS内部的复杂性是什么?

如果可能的话,你能对整个算法的复杂性负责吗?

我不确定它是O((Eo+Vo)+(Ei+Vi))还是O((Eo+Vo)(Ei+Vi))还是smtg .else

先谢谢你,

EN

回答 1

Stack Overflow用户

发布于 2013-09-04 17:50:45

这取决于您在第二个DFS失败的情况下如何处理。失败的意思是告诉您第二个图不包含在第一个DFS中找到的字符串。

如果第二个DFS失败意味着您在第一个DFS中回溯并搜索另一个字符串,然后再次尝试第二个DFS,那么您的复杂性就是O((Eo+Vo)*(Ei+Vi)),因为在最坏的情况下,您可能会为第一个DFS中到开始节点的每个单独的DFS路径执行第二个图的完整DFS。

如果第二个DFS失败意味着您停止,那么在最坏的情况下,您将执行第一个图的单个DFS和第二个图的单个DFS,从而导致O((Eo+Vo)+(Ei+Vi))最坏情况的复杂性。

DFSing检查图形是否包含字符串的事实意味着,在某些情况下,您可以提前终止DFS (例如,您到达一个没有剩余字符可供检查的非起始顶点)。然而,你是否能够提前终止完全取决于图的结构,所以我会说第二个DFS在最坏的情况下仍然是O(Ei+Vi)的,因为对于一个讨厌的图,你可能仍然会发现自己正在经历所有的边和所有的顶点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18606736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档