Как учитывать общее расстояние при генерации всех возможных путей в объекте?
function *find(gr, src, dst, path=[], visited=(new Set()), sumDistance = 0) {
if (src === dst) {
yield path.concat(dst, sumDistance);
}
else if (graph[src] && !visited.has(src)) {
visited.add(src);
path.push(src);
for (const neighbor of graph[src]) {
sumDistance += neighbor[1];
yield *findPaths(graph, neighbor[0], dst, path, visited, sumDistance);
}
visited.delete(src);
path.pop(src);
}
};
const grap = route => {
return graph;
};
К сожалению, он не учитывает подсчет общего маршрута для каждого найденного результата. Как вариант, была попытка возвращать в функции graphify массив с возможными путями и расстояние. Но рекурсивная функция берет число последнего маршрута и суммирует его
Ответы (1 шт):
Автор решения: Sergei Kirjanov
→ Ссылка
//sumDistance += neighbor[1];
yield *findPaths(graph, neighbor[0], dst, path, visited, sumDistance + neighbor[1]);
так лучше?