有没有一种有效的方法来删除不属于 DAG 中两个节点之间最长路径的所有边?例如,对于图(DAG): (1->2, 2->3, 2->4, 1->3, 1->4) 我想删除边 1->3, 1-> 4 因为路径 1->2->3, 1->2->4 更长
编辑:所以我认为最好的方法是使用拓扑排序并从右到左遍历数组,同时为每个节点聚合其后代。然后对于每个边 a->b,我们可以使用 a 的所有其他直接后代检查 b 是否可以从 a 到达(如果是,我们删除边)。但我没有找到一个实现,我不确定它是否正确,有没有人知道这样的实现?