![为什么 tsort 在此示例中没有报告任何循环?](https://linux22.com/image/142177/%E4%B8%BA%E4%BB%80%E4%B9%88%20tsort%20%E5%9C%A8%E6%AD%A4%E7%A4%BA%E4%BE%8B%E4%B8%AD%E6%B2%A1%E6%9C%89%E6%8A%A5%E5%91%8A%E4%BB%BB%E4%BD%95%E5%BE%AA%E7%8E%AF%EF%BC%9F.png)
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
程序)可能会帮助您轻松可视化这些循环!