這是一個拓撲排序的一個很好的例子。通過遍歷遵循訂單要求創建集合的最常見算法是Kahn's Algorithm。僞代碼可以在下面看到,維基百科鏈接中的信息應該足以讓你開始。
L ← Empty list that will contain the sorted elements
S ← Set of all nodes with no incoming edges
while S is non-empty do
remove a node n from S
add n to tail of L
for each node m with an edge e from n to m do
remove edge e from the graph
if m has no other incoming edges then
insert m into S
if graph has edges then
return error (graph has at least one cycle)
else
return L (a topologically sorted order)
請注意,「起始節點」將通過適當地表示圖形中的傳入邊緣來執行。它將成爲S
中唯一啓動的節點。如果您想獲得其他信息,請在評論中告訴我。
看起來應該這樣做。讓我來實現這個,然後我會分享我的反饋 –