js图的数据结构处理---迪杰斯特拉算法

		function Graph() {
			this.graph = [
				[0, 2, 4, 0, 0, 0],
				[0, 0, 1, 4, 2, 0],
				[0, 0, 0, 0, 3, 0],
				[0, 0, 0, 0, 0, 2],
				[0, 0, 0, 3, 0, 2],
				[0, 0, 0, 0, 0, 0]
			];
			//迪杰斯特拉算法---贪心算法
			this.dijkstra = function(src) {
				var dist = [],
					visited = [],
					length = this.graph.length;
				for(var i = 0; i < length; i++) {
					dist[i] = Infinity;
					visited[i] = false;
				}
				dist[src] = 0;
				for(var i = 0; i < length - 1; i++) {
					var u = minDistance(dist, visited);
					visited[u] = true;
					console.log(visited);
					for(var v = 0; v < length; v++) {
						if(!visited[v] &&
							this.graph[u][v] != 0 && dist[u] != Infinity &&
							dist[u] + this.graph[u][v] < dist[v]) {
							dist[v] = dist[u] + this.graph[u][v];
						}
					}
				}
			
				return dist;
			}

			function minDistance(dist, visited) {
				var min = Infinity,
					minIndex = -1;
				for(var v = 0; v < dist.length; v++) {

					if(visited[v] == false && dist[v] <= min) {
						min = dist[v];
						minIndex = v;
					}
				}
				return minIndex;
			}
		}

		var gf = new Graph();
		console.log(gf.dijkstra(0));

  

猜你喜欢

转载自www.cnblogs.com/muamaker/p/9210379.html