「最もエネルギー効率のよいルート選択」と同じであるが,こちらは,合計距離が最短になるルート選択。エネルギー行列と違って,距離行列は対称行列である。
ノードが少なければ,しらみつぶし探索でも問題ないが,ノードが多くなったら,別の解法を採らないとね...
dist = matrix(c(0,1,3,4,5, 1,0,2,3,4, 3,2,0,1,2, 4,3,1,0,1, 5,4,2,1,0), 5)
library(e1071)
route = permutations(5)
d = apply(route, 1, function(r) sum(dist[cbind(r, c(r[-1], r[1]))]))
( min.dist = min(d) ) # 最短距離
route[d == min.dist,] # 径路(逆順も含む)
※コメント投稿者のブログIDはブログ作成者のみに通知されます