我知道Breadth First Search
和Depth First Search
。我读了这个页面,也在 SO 上,我发现了这个问题和这个问题。
我想知道的是一些实用的场景,我会使用深度优先于广度搜索。t-sql
尽管我提供的第三个问题链接有点相似,但我的问题更针对SQL Server 2008/2012
性能。
另外,如果我使用一个而不是另一个,谁能告诉我一个例子,我可以有多少(最坏的情况)性能影响?说,如果我采用 a dfs
,并且我在第一个节点有 50 个孩子,并且我正在搜索第二个节点,dfs
那么我可以想象的速度会慢 50 倍,因为它首先必须横切 50 个孩子然后它会来到第二个节点。是这样还是不是?我的意思是它就像这种直接关系,是表现还是其他方面?
最后,再次重复我的问题,虽然它可能(很可能是)特定于应用程序和需求,但我想知道一些实际场景,我会使用其中一个而不是另一个,以及选择一个而不是另一个的性能成本可能是多少另一个?另外,我在维护一个分类目录我应该选择什么?比如说,我正在维护一个书籍类别目录,例如:science => physics => astronomy
等等,哪一个是最好的?dfs
还是bfs
?