js图的数据结构处理----普里姆算法
//求加权无向连通图的MST的贪心算法
//最小树,最小路径联通各个点
function PRIM(){
var graph = [
[],
[undefined,Infinity, 23 ,Infinity,Infinity,Infinity, 28 ,36],
[undefined, 23 ,Infinity, 20 ,Infinity,Infinity,Infinity,1],
[undefined,Infinity, 20 ,Infinity, 15 ,Infinity,Infinity,4],
[undefined,Infinity,Infinity, 15 ,Infinity, 3 ,Infinity,9],
[undefined,Infinity,Infinity,Infinity, 3 ,Infinity, 17 ,16],
[undefined, 28 ,Infinity,Infinity,Infinity, 17 ,Infinity,25],
[undefined, 36 , 1 , 4 , 9 , 16 , 25 ,Infinity]
];
this.prim = function(u){
var n = graph.length;
var s = [];
var closest = [];
var lowcost = [];
u = u || 1 ; //初始化集合U的,第一个点为1
for(var i = 1 ; i < n; i++ ){
s[i] = false; //初始化为,未加入
closest[i] = u; //初始化的时候,v-u集合的所有点,都到第一个点距离最短
lowcost[i] = graph[u][i];//距离
}
s[u] = true;
closest[u] = -1;
lowcost[u] = 0;
//开始计算
for(var i = 1 ; i < n ; i++){
//寻找最近点
var t = u;
var temp = Infinity;
for(var j = 0; j < n ; j++){
if(lowcost[j] < temp && !s[j]){
temp = lowcost[j];
t = j;
}
}
if(t == u){
break;
}
s[t] = true; //将t收集进入 U集合
for(var j = 1; j < n; j++){
if(!s[j] && lowcost[j] > graph[t][j]){
lowcost[j] = graph[t][j]; //更新最小距离,进过t接入
closest[j] = t; //记录前溯点
}
}
}
return {
u,
closest,
lowcost
}
}
}
//u集合表示已经确定节点,v-u表示未确定的节点
//s[i]为true表示i已经加入u集合
//closest[j],为集合v-u中的,点j到集合u中的最近点i,closest[j] = i;
//lowcost[j],为集合v-u中的,点j到集合u中的最近点i的距离
//等式成立: map[j][closest[j]] = lowcost[j];
//2、初始化 集合u为1,数组,closet = [], lowcost = [], s = [];
//3、在lowcost中找最小值lowcost[t],则点t就是集合u到集合v-u的最近点
//4、将t加入集合u
//5、如果集合v-u,结束。否则执行6
//6、对集合v-u中的所有点,更新 lowcost和closest,
//更新方式: if(map[t][j] < lowcost[j]){lowcost[j] = map[t][j]; castset[j]=t; }
//重复执行3
var prim = new PRIM();
console.log(prim.prim())
相对应的还有:克鲁斯卡尔算法
js图的数据结构处理----普里姆算法的更多相关文章
- ACM第四站————最小生成树(普里姆算法)
对于一个带权的无向连通图,其每个生成树所有边上的权值之和可能不同,我们把所有边上权值之和最小的生成树称为图的最小生成树. 普里姆算法是以其中某一顶点为起点,逐步寻找各个顶点上最小权值的边来构建最小生成 ...
- hdu 1233:还是畅通工程(数据结构,图,最小生成树,普里姆(Prim)算法)
还是畅通工程 Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- 图->连通性->最小生成树(普里姆算法)
文字描述 用连通网来表示n个城市及n个城市间可能设置的通信线路,其中网的顶点表示城市,边表示两城市之间的线路,赋于边的权值表示相应的代价.对于n个定点的连通网可以建立许多不同的生成树,每一棵生成树都可 ...
- 普里姆算法(Prim)
概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图(带权图)里搜索最小生成树.即此算法搜索到的边(Edge)子集所构成的树中,不但包括了连通图里的所有顶点(Vertex)且其所有边的权 ...
- 最小生成树---普里姆算法(Prim算法)和克鲁斯卡尔算法(Kruskal算法)
普里姆算法(Prim算法) #include<bits/stdc++.h> using namespace std; #define MAXVEX 100 #define INF 6553 ...
- 查找最小生成树:普里姆算法算法(Prim)算法
一.算法介绍 普里姆算法(Prim's algorithm),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值之 ...
- HDU 1879 继续畅通工程 (Prim(普里姆算法)+Kruskal(克鲁斯卡尔))
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 普里姆算法(Prim)邻接矩阵法
算法代码 C#代码 using System; namespace Prim { class Program { static void Main(string[] args) { int numbe ...
- Prim算法(普里姆算法)
描述: 一个连通图的生成树是指一个极小连通子图,它含有图中的全部顶点,但只有足以构成一棵树的 n-1 条边.我们把构造连通网的最小代价生成树成为最小生成树.而Prim算法就是构造最小生成树的一种算法. ...
随机推荐
- 通过Java语言连接mysql数据库
1加载驱动 2创建链接对象 3创建语句传输对象 4接受结果集 5遍历 6关闭资源
- mtd工具
http://daemons.net/linux/storage/mtd.html MTD The Memory Technology Devices (MTD) subsystem provides ...
- MySQL使用mysqldump备份及还原
MySQL可以使用mysqldump进行数据的逻辑备份,配合开启bin log日志可以实现数据的全量恢复及增量恢复 MySQL版本查看 修改配置文件记录bin log日志 [mysqld] #bin ...
- 《开源网店系统iWebShop2.0模板开发教程》的说明
<开源网店系统iWebShop2.0模板开发教程>是网上广为流传的一个文档,有点问题. 其中的第4章: ========================================== ...
- python面向对象高级:枚举
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数.这两种类型经常(但不总是)重叠. 枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,例 ...
- express工程的优化和请求参数的处理
1.让工程自动刷新 在Express的默认工程中,ejs, jade等模板的改变会立刻被渲染到浏览器中,但是js的改变不能立即刷新.这时候我们要用到一些自动刷新工具, 如 nodemon, super ...
- Druid 在有赞的实践
https://mp.weixin.qq.com/s?__biz=MzAxOTY5MDMxNA==&mid=2455759407&idx=1&sn=28390d7f5b2685 ...
- MySQL transaction
MySQL transaction(数据库的事务) 数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作. 要么完全执行,要么完全地不执行. ACID 事务 ...
- 在U盘上安装GRUB2直接引导ISO
本文的内容来源于 http://maxmars.net/blog/2012/10/02/boot-multiple-iso-from-usb-using-linux/ 以下所有命令都在 root 用户 ...
- 使用Dom4j的xPath解析xml文件------xpath语法
官方语法地址:http//www.w3school.com.cn/xpath/index.asp xpath使用路径表达式来选取xml文档中的节点或节点集.节点是通过沿着路径(path)或者步(ste ...