Как учитывать общее расстояние при генерации всех возможных путей в объекте?

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]);

так лучше?

→ Ссылка