次の例では、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 (これは2回指定されます!)
したがって、「a」と「c」は両方とも「b」の前に来、「c」は「d」の前に来ます。しかし、そこにはループはありません!
ただし、2番目の例には、a < b、b < a(ループ!)とc < d、d < c(ループ!)という2つの直接ループがあります。
これをダイアグラムに入れて視覚化すると(このdot
プログラムを確認することをお勧めします)、これらのループを簡単に視覚化するのに役立ちます!