2017-07-16 12 views
-1

ノードとノードと同じ正確なものを共有するリンクを見つける最速の方法は何ですか?共通のノードを持つリンクを見つける

私はリンクのリストを持っているので、各リンクにはFromNodeとToNodeがあります。 一般的なノードを持つリンクを見つけるのが最も速い方法はわかりません。リストの周りをループし、各リンクのノードをチェックすると、それらのリンクを見つけるのに時間がかかるようです。他にどのようなアプローチをとるべきですか?

以下の画像は、物事をより明確にするために添付されています。

enter image description here

画像でindecatedように、1リンク、及び2共有B及びCのノード。リンク6,7はZとXを共有します。 結果はそれらのリンクになります。

任意のアイデアが役に立ちます

+0

開始。次に、それを改善できる場所を見てください。 – Guy

+0

私はすべてのノードのリストを保持しているので、すべてのパスを通らずにすべてのリンクを列挙できます。したがって、問題は、バブルソートi = 0からN-1、j = i + 1からNまでの2つのforループで解決されます。 – jdweng

答えて

1

あなたのリストにLINQを使用できます。

はあなたのリンクのクラスがあるとします。

public class Links 
{ 
    public string FromNode { get; set; } 
    public string ToNode { get; set; } 
} 

次に、あなただけの簡単なLINQ使用して結果を取得する:あなたが考えている溶液で

var links = new List<Links> 
      { 
       new Links{FromNode = "B", ToNode = "C"}, 
       new Links{FromNode = "C", ToNode = "B"}, 
       new Links{FromNode = "A", ToNode = "D"} 
      }; 


     var res = from a in links 
        join b in links 
        on 
        new { FromNode = a.FromNode, ToNode = a.ToNode } equals 
        new { FromNode = b.ToNode, ToNode = b.FromNode } 
        select new { a.FromNode, a.ToNode }; 
関連する問題