这可能是一个可能没有最佳解决方案的问题。假设我有一个有向图,不知道它是否有任何循环(循环检测将是这个问题的一个方面)。给定一组顶点(可能是数百万个顶点),我需要计算给定图的所有唯一对之间的所有不同路径(没有重复顶点的路径)。我将如何处理这种情况?
让我们看一个蛮力的方法来做到这一点:
从图中计算所有可能的对。
对于每对图,使用 DFS 获取从 Source 到 Destination 的所有路径。
- 假设这些对在哈希表中表示,将路径计数作为该对的值。
- 对其余的对重复此操作。
人们能指出哪些事情可能会出错吗?让我们以这种方式思考这个问题,找到地球上所有城市之间的所有不同路径的计算挑战是什么?如果甚至尝试解决这个问题,应该从哪里开始?
编辑:提出的一些算法在 O(n!) 阶乘时间内产生结果。对于资源有限的单台机器来说,这是一个令人生畏的计算。有谁知道 map-reduce 技术可以将图遍历的问题分解成更小的块?