algorithm - 查找从一个图节点到另一个图节点的所有路径的逻辑

标签 algorithm logic combinations

<分区>

我有一个棘手的逻辑问题,我正在尝试创建一个算法来解决它,但我正在努力解决这个问题。

考虑这个数据:

A to B
A to C
A to D
A to E
B to C
B to D
B to E
C to D
C to E
D to E

如您所见,这有效地生成了如下模型:A - B - C - D - E

你只能朝一个方向走,(从左到右),我想写的是一种算法,可以计算出两点之间所有可能的组合,即

如果我想从 AE 所有可能的组合都是这样的:

A - E 
A - D - E
A - C - E
A - B - E
A - C - D - E
A - B - D - E
A - B - C - E
A - B - C - D - E

我想这就是全部。

有人可以帮我解决这个问题的逻辑吗?

最佳答案

首先,考虑如何表示单个“跃点”:每个节点都需要一个相邻节点的列表。从构建这些节点开始。

您还需要一种从节点池中查找节点的方法(通过它的名称?)。也许将它们放在 map 中?

蛮力算法是从请求的节点开始,递归地跟踪所有跃点,观察循环,直到到达请求的结束,传递一个列表——将其用作下推堆栈,以记录路径。每次到达请求的末端时,将列表的内容保存到 Path 集合中。如果你遇到了死胡同(没有链接到请求的结束),请返回你的递归并继续前进。

根据您对速度的需求,您可以扩展数据结构以保存一些预先计算的路径。

尝试用伪代码解决这个问题,然后用 Java。

关于algorithm - 查找从一个图节点到另一个图节点的所有路径的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13179057/

相关文章:

php - 通过向多个买家出售商品来找到最高总价,受用户输入限制,可以进行多少次单独销售

python - 如何计算具有重复元素的列表的排列(排列)

performance - 从矩阵的行和列总和重建矩阵

java - Java 中 && 和被零除错误的不一致

c++ - 组合算法

python - 这个 Python 表达式有意义吗?

java - java计算两个日期之间的时间差,考虑营业时间、停工和周末

C++添加对列表的元素

algorithm - 检测 2D 空间中距离最大的两个点的最快方法是什么?

ruby - 从 key 小于特定值的哈希中获取所有值的有效方法