有向无环图

一个无环的有向图称做有向无环图(directed acycline praph)。简称DAG 图。DAG 图是一类较有向树更一般的特殊有向图,

dijistra算法

摘自 http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html

1.定义概览

Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。

问题描述:在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i],找到由顶点 V0 到其余各点的最短路径。(单源最短路径)

javascript实现

<html>
<body>
<script> //有向无环图
var pages = [] //开始结点有两个后继
pages["welecome"] = [];
pages["welecome"]["nextNode"] = [];
pages["welecome"]["nextNode"][0] = "workmode" //一个后继又有两个后继
pages["workmode"] = [];
pages["workmode"]["nextNode"] = [];
pages["workmode"]["nextNode"][0] = "WAN"
pages["workmode"]["nextNode"][1] = "WLAN" //WAN的后继为WLAN
pages["WAN"] = [];
pages["WAN"]["nextNode"] = [];
pages["WAN"]["nextNode"][0] = "WLAN" //WLAN的后继为终点
pages["WLAN"] = [];
pages["WLAN"]["nextNode"] = [];
pages["WLAN"]["nextNode"][0] = "OVER" //终点
pages["OVER"] = [];
pages["OVER"]["nextNode"] = []; /* 计算有向无环图中,指定两点之间的最短路径 */
function ComputeShortPath(map, startName, endName)
{
//判断两个节点是否有前后继关系,第一个为前,后一个为后
function IsSuccessor(nodeNameA, nodeNameB)
{
var page = pages[nodeNameA];
var nextNodes = page["nextNode"];
for ( var index in nextNodes )
{
var nextNode = nextNodes[index];
if ( nextNode == nodeNameB )
{
return true;
}
} return false;
} /* 生成权重矩阵 */
function GenerateEdgeWeight(map)
{
document.write("---- Generate edgeWeightMatrix ----</br>") /* 记录图中各个点之间有向边的权重 */
var edgeWeightMatrix = []; for ( var nodeNameA in map )
{
edgeWeightMatrix[nodeNameA] = []; for ( var nodeNameB in map )
{
var isSucc = IsSuccessor(nodeNameA, nodeNameB);
var weight;
if ( true == isSucc )
{
/* 有前后继的关系,权重设置为1 */
weight = 1;
}
else
{
/* 没有前后继的关系,权重设置为正无穷 */
weight = Number.POSITIVE_INFINITY;
}
edgeWeightMatrix[nodeNameA][nodeNameB] = weight; document.write("edgeWeightMatrix["+nodeNameA+"]["+nodeNameB+"]="+edgeWeightMatrix[nodeNameA][nodeNameB]+"</br>")
}
} return edgeWeightMatrix;
} /* 产生Dijistra运算的数据结构 */
function GenerateDijistraDataStruct(map, startName, edgeWeightMatrix)
{
var dijistraJSON = {
/* 已经知道最短路径集合 */
knownSet:[],
/* 未知最短路径集合 */
unKnownSet:[],
/* 最短特殊路径长度 */
distanceSP:[],
}; /* 初始化,出发点添加到已知集合,其他添加到未知集合 */
for ( var nodeName in map )
{
if ( nodeName == startName )
{
dijistraJSON.knownSet.push(startName);
}
else
{
dijistraJSON.unKnownSet.push(nodeName);
}
} /* 初始化最短特殊路径 */
document.write("---- Generate distanceSP with startName = "+startName+" ----</br>")
for ( var index in dijistraJSON.unKnownSet )
{
var nodeName = dijistraJSON.unKnownSet[index];
dijistraJSON.distanceSP[nodeName] = edgeWeightMatrix[startName][nodeName];
document.write("distanceSP["+nodeName+"]="+dijistraJSON.distanceSP[nodeName]+"</br>");
} return dijistraJSON;
} /* 运行最短路计算逻辑 */
function DoDijistraComputing(dijistraJSON, edgeWeightMatrix)
{
/* dijstra */
var loopNum = dijistraJSON.unKnownSet.length;
for ( var i=0; i<loopNum; i++ )
{
/* 找unKnownSet中最短特殊路径顶点 */
var minDistName = dijistraJSON.unKnownSet[0];
var minDistIndex = 0;
var minDist = dijistraJSON.distanceSP[minDistName];
for ( var index in dijistraJSON.unKnownSet )
{
var nodeName = dijistraJSON.unKnownSet[index];
var dist = dijistraJSON.distanceSP[nodeName];
if ( dist < minDist )
{
minDist = dist;
minDistName = nodeName;
minDistIndex = index;
}
} /* 将最短特殊路径顶点,从unkownSet中删除,加入knownSet */
dijistraJSON.unKnownSet.splice(minDistIndex, 1);
dijistraJSON.knownSet.push(minDistName); /* 更新 unKnownSet 中元素的 distanceSP 值 */
for ( var index in dijistraJSON.unKnownSet )
{
var nodeName = dijistraJSON.unKnownSet[index];
var oldDist = dijistraJSON.distanceSP[nodeName];
var weight = edgeWeightMatrix[minDistName][nodeName];
var newDist = minDist + weight;
if ( newDist < oldDist )
{
dijistraJSON.distanceSP[nodeName] = newDist;
}
}
} /* 输出看打印结果 */
document.write("---- Complete distanceSP with startName = "+startName+" ----</br>")
for ( var index in dijistraJSON.knownSet )
{
var nodeName = dijistraJSON.knownSet[index];
document.write("distanceSP["+nodeName+"]="+dijistraJSON.distanceSP[nodeName]+"<br/>");
} return dijistraJSON;
} /* 获取最短路径 */
function GetShortPath(dijistraJSON, endName)
{
return dijistraJSON.distanceSP[endName];
} var edgeWeightMatrix = GenerateEdgeWeight(map);
var dijistraJSON = GenerateDijistraDataStruct(map, startName, edgeWeightMatrix);
dijistraJSON = DoDijistraComputing(dijistraJSON, edgeWeightMatrix);
var shortPath = GetShortPath(dijistraJSON, endName); document.write("---- Complete shortpath between "+startName+" and "+endName+" = "+shortPath+"----</br>")
} ComputeShortPath(pages, "welecome", "OVER");
</script>
</body>
</html>

计算结果截图:

最后计算结果, 中distanceSP中每一个定点的值,都是开始结点 welecome到此结点的 最短距离。

aaarticlea/png;base64,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" alt="" />

javascript实现有向无环图中任意两点最短路径的dijistra算法的更多相关文章

  1. Floyd-Warshall求图中任意两点的最短路径

    原创 除了DFS和BFS求图中最短路径的方法,算法Floyd-Warshall也可以求图中任意两点的最短路径. 从图中任取两点A.B,A到B的最短路径无非只有两种情况: 1:A直接到B这条路径即是最短 ...

  2. Expm 4_2 有向无环图中的最短路径问题

    [问题描述] 建立一个从源点S到终点E的有向无环图,设计一个动态规划算法求出从S到E的最短路径值,并输出相应的最短路径. 解: package org.xiu68.exp.exp4; import j ...

  3. JavaScript 查找图中连接两点的所有路径算法

    1.把图看成以起点为根节点的树 2.使用深度遍历算法遍历路径 3.遍历到节点为目标节点时,保存这条路径 find2PointsPath(sourceId, targetId) { const { no ...

  4. poj2762 判断一个图中任意两点是否存在可达路径 也可看成DAG的最小覆盖点是否为1

      Going from u to v or from v to u? Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 179 ...

  5. pagerank算法在数学模型中的运用(有向无环图中节点排序)

    一.模型介绍 pagerank算法主要是根据网页中被链接数用来给网页进行重要性排名. 1.1模型解释 模型核心: a. 如果多个网页指向某个网页A,则网页A的排名较高. b. 如果排名高A的网页指向某 ...

  6. JavaScript + SVG实现Web前端WorkFlow工作流DAG有向无环图

    一.效果图展示及说明 (图一) (图二) 附注说明: 1. 图例都是DAG有向无环图的展现效果.两张图的区别为第二张图包含了多个分段关系.放置展示图片效果主要是为了说明该例子支持多段关系的展现(当前也 ...

  7. 有向无环图的应用—AOV网 和 拓扑排序

    有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...

  8. select 函数实现 三种拓扑结构 n个客户端的异步通信 (完全图+线性链表+无环图)

    一.这里只介绍简单的三个客户端异步通信(完全图拓扑结构) //建立管道 mkfifo open顺序: cl1 读 , cl2 cl3 向 cl1写 cl2 读 , cl1 cl3 向 cl2写 cl3 ...

  9. 算法精解:DAG有向无环图

    DAG是公认的下一代区块链的标志.本文从算法基础去研究分析DAG算法,以及它是如何运用到区块链中,解决了当前区块链的哪些问题. 关键字:DAG,有向无环图,算法,背包,深度优先搜索,栈,BlockCh ...

随机推荐

  1. HDU - The number of divisors(约数) about Humble Numbers

    Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence ...

  2. 状压dp题目总结

    这块比较薄弱.. 来几道水题: BZOJ1231: [Usaco2008 Nov]mixup2 混乱的奶牛 f[i][j]状态i结尾j的个数 ;i<=tot;i++) ;j<=n;j++) ...

  3. ThinkPHP随笔

    使用应用分组模式开发程序时,U函数表示地址时,要用这种格式 “项目名/控制器名/方法名”写地址,不能直接使用U("handle") 如:var handleUrl = '{:U(& ...

  4. linux修改系统编码

    Windows的默认编码为GBK,Linux的默认编码为UTF-8.在Windows下编辑的中文,在Linux下显示为乱码.一种方法是在windows进行转码,比如使用ue工具在文件-->转换 ...

  5. codeforces589J 简单dfs,队列

    J. Cleaner Robot time limit per test 2 seconds memory limit per test 512 megabytes input standard in ...

  6. 通过MongoDB的samus驱动实现基本数据操作

    一.MongoDB的驱动 MongoDB支持多种语言的驱动: 在此我们只介绍 C# 的驱动.仅C#驱动都有很多种,每种驱动的形式大致相同,但是细节各有千秋,因此代码不能通用.比较常用的是官方驱动和sa ...

  7. 浅谈iOS中的userAgent

    浅谈iOS中的userAgent   User-Agent(用户代理)字符串是Web浏览器用于声明自身型号版本并随HTTP请求发送给Web服务器的字符串,在Web服务器上可以获取到该字符串. 在公司产 ...

  8. [LintCode] Add Binary 二进制数相加

    Given two binary strings, return their sum (also a binary string). Have you met this question in a r ...

  9. 防止系统内存溢出触发OOM的一个内核参数

    [root@djf_dev_server ~]# sysctl -a|grep overcomvm.overcommit_memory = 0 0 内存不足报错(不会继续分配内存,防止oom)1 表示 ...

  10. div半透明背景,文字不透明

    background: rgba(255, 255, 255, 0.8) !important; /* IE无效,FF有效 */ background: #fff; filter: alpha(opa ...