this.indexes.set(this.heapContainer[indexOne], indexOne);
this.indexes.set(this.heapContainer[indexTwo], indexTwo);
this.indexes.set(this.heapContainer[0], 0);
indexes[heapContainer[indexToRemove]] = indexToRemove;
сделать.if (!distances.get(child[0]) || distances.get(child[0]) > newdistance)
// x,y - точка от которой ищем +1м вверх
// -180 <=x<=180, -90<=y<=90.
l = 0
// required_dist - нужное приращение
r = min(180, 90-y);
while r-l < 1e-10:
m=(r+l)/2;
dist = haversine((x,y),(x,y+m)); // Формула для расстояния между точками.
if dist > required_dist: r = m
else l = m
step = l; // шаг по широте, чтобы сдвинутся на required_dist.
newdistance
, а -newdistance
.for (var child of graph[startNode].keys())
не нужен.
Похоже вы исчерпали возможности джаваскрипта.
Флойд будет быстрее если у подвижных вершин мало соседей. Но, например, когда вам надо найти пути до всех вершин, чтобы найти самую далекую, вам придется для каждой из n конечных вершин перебирать всех соседей подвижного начала. Это может быть даже медленнее дейкстры,