tsort 如何查找以下示例中的顺序?
为什么 tsort 在此示例中不报告任何循环,
$ tsort <<EOF
a b c d c b a b
EOF
a
c
b
d
而在这个呢?谢谢。
$ tsort <<EOF
a b c d d c b a
EOF
tsort: -: input contains a loop:
tsort: a
tsort: b
a
b
tsort: -: input contains a loop:
tsort: c
tsort: d
c
d
答案1
您的第一个输入中没有循环。让我们来分解一下:
a b c d c b a b
或者,将其成对放置:
- a < b
- c < d
- c < b
- a < b(这个指定了两次!)
因此,“a”和“c”都位于“b”之前,“c”也位于“d”之前。但那里没有循环!
不过,在第二个示例中,您拥有的是两个直接循环,a < b,b < a(循环!)和 c < d,d < c(循环!)
将这些放入图表中进行可视化(您可能想查看该dot
程序)可能会帮助您轻松可视化这些循环!