我知道Breadth First Search
和Depth First Search
。我读了这个页面,也在SO上,我发现了这个问题,这个问题也是。
我想知道的是一些实际的场景,我会使用深度优先而非广度搜索。虽然我提供的第三个问题链接有点相似,但我的问题更倾向于t-sql
和SQL Server 2008/2012
的性能。
此外,如果我使用一个而不是另一个,有人能给我举个例子吗?我能对性能产生多大影响(最坏的情况)?比方说,如果我采用dfs
,并且我在第一个节点中有50个子节点,并且我正在搜索第二个节点,那么dfs
将比我所能想到的慢大约50倍,因为它首先必须遍历50个子对象,然后它将到达第二个节点。是这样还是不这样?我的意思是,这就是表演的直接关系吗?
最后,再次重复我的问题,尽管它可能(很可能)是特定于应用程序和需求的,但我想知道一些实际情况,在这种情况下,我会使用其中一个而不是另一个,选择其中一个的性能成本可能是多少?另外,我在维护一个分类目录,我应该选择什么?比方说,我正在维护一个图书类别目录,比如:science => physics => astronomy
等等,哪一个会是最好的?dfs
还是bfs
?
您基本上回答了自己的问题。根据数据,使用最有可能首先访问所需节点的搜索方法。