Algorithm 请解释这个算法的流程以及它是如何工作的?(Knuth拓扑排序)

Algorithm 请解释这个算法的流程以及它是如何工作的?(Knuth拓扑排序),algorithm,Algorithm,给定{1..n}上的~x~y表示x

给定{1..n}上的~x~y表示x 访问123并向左移动3

0132
0312
访问132并向左移动3

0132
0312
访问312。我们无法移动3,因为0~3。一直向右移动,然后尝试移动2


我们不能移动2,因为1~2。试着移动1。我们无法移动1,因为0~1。试着移动0-oops,我们完成了。

也许会是一个更好的地方,请您解释一下您在测试中所做的,在前面和后面。我从未见过python代码。对不起@SurajSangani伪代码中的条件j~k等价于Python中的prefersj,k。Prefers是一个可调用的参数。除数只是用于测试目的的示例关系,与拓扑_顺序的操作无关。代码从不进入while循环,因为j=k=n,也不进入if循环,因为l总是小于k。如果我错了,请纠正我。谢谢@苏拉杰桑加尼一号包括了我的测试用例,并对其进行了仔细检查,以确保它是正常的。l可能比k小,但l~k并不总是这样。
0123