mirror of
https://github.com/multipleof4/lynchmark.git
synced 2026-01-14 08:37:56 +00:00
Docs: Update benchmark results
This commit is contained in:
@@ -1,2 +1,29 @@
|
||||
async function findShortestPath(graph,start,end){const{default:PriorityQueue}=await import('https://cdn.jsdelivr.net/npm/js-priority-queue@0.3.0/dist/priority-queue.esm.js');if(start==null||end==null)return Infinity;if(start===end)return 0;if(!graph||!Object.prototype.hasOwnProperty.call(graph,start))return Infinity;const visited=new Set;const dist=new Map([[start,0]]);const pq=new PriorityQueue({comparator:(a,b)=>a[0]-b[0]});pq.queue([0,start]);for(;pq.length;){const[d,node]=pq.dequeue();if(visited.has(node))continue;visited.add(node);if(node===end)return d;const neighbors=graph[node]||{};for(const[neighbor,weight]of Object.entries(neighbors)){if(typeof weight!=='number'||weight<0)continue;const alt=d+weight;if(alt<(dist.get(neighbor)??Infinity)){dist.set(neighbor,alt);pq.queue([alt,neighbor]);}}}return Infinity;}
|
||||
let u;
|
||||
const loadQueue=async()=> (u=u||import('https://cdn.jsdelivr.net/npm/js-priority-queue@0.2.0/es6.js')).then(r=>r.default);
|
||||
|
||||
export async function findShortestPath(graph,start,end){
|
||||
if(start===end) return 0;
|
||||
if(!graph||typeof graph!=='object') return Infinity;
|
||||
const own=Object.prototype.hasOwnProperty;
|
||||
if(!own.call(graph,start)||!own.call(graph,end)) return Infinity;
|
||||
const PriorityQueue=await loadQueue();
|
||||
const dist=new Map([[start,0]]);
|
||||
const heap=new PriorityQueue({comparator:(a,b)=>a[1]-b[1]});
|
||||
heap.queue([start,0]);
|
||||
while(heap.length){
|
||||
const [node,score]=heap.dequeue();
|
||||
if(score>dist.get(node)) continue;
|
||||
if(node===end) return score;
|
||||
const edges=graph[node];
|
||||
if(!edges) continue;
|
||||
for(const [next,weight] of Object.entries(edges)){
|
||||
const total=score+weight;
|
||||
if(total<(dist.get(next)??Infinity)){
|
||||
dist.set(next,total);
|
||||
heap.queue([next,total]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return Infinity;
|
||||
}
|
||||
export default findShortestPath;
|
||||
Reference in New Issue
Block a user