現在、接続のリストがリストに保存されています。各接続は、2 つのポイントを接続する有向リンクであり、ポイントが複数のポイントにリンクしたり、複数のポイントにリンクされたりすることはありません。例えば:
connections = [ (3, 7), (6, 5), (4, 6), (5, 3), (7, 8), (1, 2), (2, 1) ]
生成する必要があります:
ordered = [ [ 4, 6, 5, 3, 7, 8 ], [ 1, 2, 1 ] ]
入力ポイントと接続のリストを受け取り、それ自体を再帰的に呼び出して次のポイントを見つけ、それを成長する順序付きリストに追加するアルゴリズムを使用してこれを実行しようとしました。ただし、正しいポイントから開始しないと (これは同じアルゴリズムを逆に繰り返すだけの問題である必要があります)、接続されていないストランドが複数ある場合にも、私のアルゴリズムは機能しなくなります。
これらの接続を順序付けるための効率的なアルゴリズムを作成する最良の方法は何でしょうか?