How to obtain next/previous node in a tour represented as an array (=permutation of size n)
1 回表示 (過去 30 日間)
古いコメントを表示
I have been struggling to find an efficient solution to my problem. I am working with tours, which basically are permutations of the numbers 1 to n (n is given).
Now I want to code an anonymous function* that would work as follows:
tour = [1 8 9 7 4 5 2 10 6 3];
Next = nextNode(tour,2);
Next2 = nextNode(tour,3);
Prev = prevNode(tour,10);
Prev2 = prevNode(tour,1);
% result should be:
% Next = 10
% Next2 = 1
% Prev = 2
% Prev2 = 3
Any suggestions and solutions are welcome, thank you!
1 件のコメント
madhan ravi
2018 年 12 月 19 日
編集済み: madhan ravi
2018 年 12 月 19 日
Birdman why do you keep deleting my answer? You deleted it three times. What's wrong? It's not nice to delete answers.
採用された回答
madhan ravi
2018 年 12 月 19 日
編集済み: madhan ravi
2018 年 12 月 19 日
Note: your prev should be 2 not 6 maybe you made a typo.
tour = [1 8 9 7 4 5 2 10 6 3];
Next = nextNode(tour,2)
Next2 = nextNode(tour,3)
Prev = prevNode(tour,10)
Prev2 = prevNode(tour,1)
function Result = nextNode(tour,n)
idx=find(tour==n);
if idx==numel(tour)
Result = tour(1);
else
Result = tour(idx+1);
end
end
function Result1=prevNode(tour,n)
idx=find(tour==n);
if idx==1
Result1=tour(end);
else
Result1=tour(idx-1);
end
end
Gives:
Next =
10
Next2 =
1
Prev =
2
Prev2 =
3
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!