http://en.wikipedia.org/wiki/Dijkstra's_algorithm 여기가 위키. 언제나처럼 소스는 http://jsbin.com/acatav/3/edit#javascript "최단경로 그까이꺼 대충 트리로 펼친 담에 올 합산한 비용이 젤 적은 놈 뽑아내면 되는거 아니야?" 라고 생각했다가 역시 검색이 최고. 나보다 멍청한 놈은 좀처럼 없다는 것이 진리. 알고리즘은 심플하다. '자신과 인접한 노드와 이제까지 탐색한 노드 중 가까운 놈만 남기고 다 지운다.'의 반복. node 에서 해보려면 맨 마지막 $('p')부분을 지워주시면 되겠다. 사용예는 다음과 같다. computePath(vertices, vertices[0]); vertices 중 0번째부터 출발하는 최단 경로를 계산해서 각 vertex별 previous 와 minDistance를 넣어준다. node.js 에서 바로 돌려볼 수 있는 소스는 다음과 같다. var vertex = function(param){ var name = ''; var edge = []; var minDistance = 99999; var previous = null; name = name || param.name; edge = edge || param.edge; minDistance = minDistance || param.minDistance; previous = previous || param.previous; return { "name" : name, "edge" : edge, "minDistance" : minDistance, "previous" : previous }...
Meteor evangelist, IoT, Renoise, Lua, Javascript, Coffeescript