2016-10-31 2 views
0

与えられた点がソングのようにソートされるようにNx2行列を並べ替えると、ドットで値を結びます。意味することは、私の行列に値[1 1]と他のどこかに行列[1 2]がある場合、私はそれらが互いに続くような方法でそれを注文したいということです。そして、「ドットをつなぐ」次の値が[1 23]と[2 23]であれば、それはそこからの並べ替えを続けるでしょう。Matlab行列をシーケンシャル系列にソートする

この種のソートでは、隣接するポイントに対してのみ「接続ドット」が使用できるため、[1 1]は[1 2]、[2 1]、[2 2]、[0 1]、[0 0]、[1 0]、[2 0]、または[0 2](左、右、上、下、および基本対角)

答えて

0

技術的には、2ノルムを使用して問題を解決できます。

例えば:唯一のアップ、ダウン、右、左斜め1が許可されると、あなたの要素の差の2ノルムは1またはSQRT(2)である必要があり

a = [1 2]; 
b = [2 2]; 

if(norm(a-b,2) == 1 || norm(a-b,2) == sqrt(2)) 
    %apply sorting algorithm (quicksort, bubblesort, etc.) 
end 

ただし[0 0]、[0 1]、[1 0]、[1 1]、[0 0]、[1 1]、[1 0]のような複数の回答が可能な場合、 、[0 1]など) これはNが大きくなるほど問題になります。

グラフ内のノード間の接続を検索しているように、質問としてはan adjacency matrixを使用することをお勧めします。

+0

私は隣接行列について同意します。いったんこれを取得すると、残りのすべての点ではなく現在の頂点のローカル近傍のみを検索することができます。 – beaker

関連する問題