首页 > 解决方案 > 如何根据距离分割最短路径

问题描述

我有连接一组点的最短路径,其中起点 A 是固定的。我有总距离、成对距离以及有序索引。我想分割路径:如果路径的总距离大于某个值,我想切割它并开始一条新路径等等。

我设法使用cumsumand accummary(我正在使用 MATLAB )实现它,但这是一个非常丑陋的解决方案,我想知道还有其他方法吗?

Dmax = max(totdistance);
th   = Dmax/4;                 % threshold
toSplit = distances;           % pairwise distance
nSplit  = cumsum(distances/th);
subs    = floor( nSplit ) + 1;
newPaths = accumarray( subs(:), (1:numel(subs)).', [], @(x) {cumsum(toSplit(x))});

这样我也可以使用 totcost 和 pairwaise 成本(如果提供),而不是例如距离。

标签: matlabshortest-pathcumsumaccumarray

解决方案


推荐阅读