2016-11-30 6 views
-2

を通してグラフがペア[1 2]がV.今ループ異なるMATLAB構造体

にノード2にノード1を接続するように、私は、二つのこと、nodes Vの組とedges Uの集合によって表されますグラフ及び頂部/ノードのセット:

V = [1 2 3 4 5 6]; 

その縁:

U = {[1 6],[2 3],[3 5],[2 4],[5 1]}; 

先頭番号1 V(1)が先頭番号2 V(2)に接続されていて、エッジのリストのUにループがあるかどうかを確認するにはどうすればよいですか?私は、グラフは、MATLABを使用して二連であれば見つける必要があり、この質問

  1. の動機の背後にある


    背景。

  2. 私は別々のセットでこれらの2つのトップを切り離す必要があるので。
+0

それらの間にエッジが存在しない場合は連絡がないので、私は理解していません。いいえ? – obchardon

+3

これはあなたの宿題を解決する場所ではありません。あなたがこれまでに試したこと、または少なくともあなたのアプローチを教えてください。 – Chris311

+1

@ Chris311私は完全な解決を求めなかった。私はちょうど1つの関数を必要としました。Matlabの知識が乏しいために書くことができませんでした。私は次回に自分の質問を改善しようとします。ありがとう – GR2096

答えて

0

どのように私は、トップナンバー1は、上部番号2と接続されているかどうかを確認するためにforループを書くことができますか?

ここにその機能があります。 areConnect.mという名前のファイルを作成し、その上にそれを置く:

あなたのメインプログラムにここで
function areConnected = areConnect(topA, topB, U) 

    for i = 1 : numel(U) 

     vector = cell2mat(U(i)); 

     if topA == vector(1) && topB == vector(2) 

      areConnected = true; 
      return 

     end 

     if topB == vector(1) && topA == vector(2) 

      areConnected = true; 
      return 

     end 

    end 

    areConnected = false; 

end 

あなたはそれをテストすることがあります。

V = [1 2 3 4 5 6] 
U = {[1 6],[2 3],[3 5],[2 4],[5 1]} 

areConnected16 = areConnect(V(1), V(6), U) 
areConnected12 = areConnect(V(1), V(2), U) 

それは、次の出力につながる:

V = 
    1  2  3  4  5  6 
U = 
    [1x2 double] [1x2 double] [1x2 double] [1x2 double] [1x2 double] 
areConnected16 = 
    1 
areConnected12 = 
    0 

参考文献:

  1. https://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-cell-array.html
  2. https://www.mathworks.com/help/matlab/ref/specialcharacters.html
+1

ありがとうございました! – GR2096

関連する問題