|
|
1
3
我需要一个类似的算法来对具有依赖关系的任务进行排序(每个任务都可以有一个需要先完成的父任务)。 我发现 拓扑排序 . 这里是一个 iterative implementation in Python 有非常详细的评论。 在进行拓扑排序时,可以计算缩进级别。只需将节点的缩进级别设置为其父节点的缩进级别+1,因为它被添加到拓扑顺序中。 注意,可以存在许多有效的拓扑顺序。为了保证生成的拓扑顺序对具有子节点的父节点进行分组,选择一种基于局部排序信息生成的图的深度优先遍历的拓扑排序算法。 维基百科给出 two more algorithms for topological sort . 注意,这些算法没有那么好,因为第一个算法是广度优先遍历,第二个算法是递归的。 |
|
2
2
对于层次结构,您几乎肯定需要递归(如果允许任意深度)。我很快编写了一些Ruby代码来说明如何实现这一点。(
如果你不说红宝石,我可以用别的东西来做。 编辑: 我更新了上面的代码以输出两个数据结构。 输出:
|
|
|
3
1
Wonsung的文章帮助了很多,不过这是一个普通的图表,而不是一棵树。所以我对它做了一些修改,创建了一个专门为树设计的算法:
|
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 10 月前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 11 月前 |
|
|
Pengcheng · 这个简单的递归函数的输出是什么?你能详细解释一下吗? 11 月前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 1 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 1 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 1 年前 |