我有连接一组点的最短路径,其中起点A是固定的。我有总距离以及成对距离,以及有序索引。 我想分割路径:如果路径的总距离大于某个值,我想剪切它并开始一条新路径,依此类推。
我设法使用cumsum
和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成本(如果提供),而不是例如距离。