为什么 tsort 在此示例中没有报告任何循环?

为什么 tsort 在此示例中没有报告任何循环?

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程序)可能会帮助您轻松可视化这些循环!

相关内容