javascript实现prim算法
<script type="text/javascript">
//图的构建
function vnode() {
this.visited = 0;
this.vertex = 0;
this.arcs = new Array();
}
function G() {
this.adjlist = new Array();
}
//0 1 2 3 4 5
var a = [[0, 7, 8, 0, 0, 9], //
[0, 0, 0, 2, 5, 0], //
[0, 0, 0, 5, 0, 6], //
[0, 0, 0, 0, 9, 0], //
[0, 0, 0, 0, 0, 7], //
[0, 0, 0, 0, 0, 0]]; //
function creategraph() {
var g = new G();
for (i = 0; i < 6; i++) {
g.adjlist[i] = new vnode();
g.adjlist[i].vertex = i;
g.adjlist[i].arcs = (function () {
var b = new Array();
for (j = 0; j < 6; j++)
if (a[i][j]) { b.push(new Number(j)); b[b.length - 1].weight = a[i][j]; }
return b;
})();
}
return g;
}
var s = new Array();
var arcs = new Array();
var e = new Array();
var g = creategraph();
for (i = 0; i < 6; i++) {
for (j = 0; j < g.adjlist[i].arcs.length; j++) {
var b = {};
b.a = i;
b.b = g.adjlist[i].arcs[j];
b.c = g.adjlist[i].arcs[j].weight;
arcs.push(b);
} }
arcs.sort(function (a, b) {
return a.c - b.c;
})
//for(i=0;i<arcs.length;i++)alert(arcs[i].a+"---"+arcs[i].b);
s.push(g.adjlist[0]);
var flag = 0; var flag1 = 0;
alert(s.length + "---" + g.adjlist.length);
while (s.length < g.adjlist.length) {
flag1 = 0;
for (i = 0; i < arcs.length; i++) {
flag = 0;
if (flag1) break;
for (j = 0; j < s.length; j++) {
if (flag) break;
if (arcs[i].a == s[j].vertex)
for (k = 0; k < s.length; k++) {
if (arcs[i].b == s[k].vertex) { flag = 1; break; }
if (k == (s.length - 1)) {
alert(arcs[i].a + "---" + arcs[i].b);
s.push(g.adjlist[arcs[i].b]);
e.push(arcs[i]); arcs.splice(i, 1);
flag1 = 1;
flag = 1;
break;
}
}
else if (arcs[i].b == s[j].vertex)
for (k = 0; k < s.length; k++) {
if (arcs[i].a == s[k].vertex) { flag = 1; break; }
if (k == (s.length - 1)) {
alert(arcs[i].a + "---" + arcs[i].b);
s.push(g.adjlist[arcs[i].a]);
e.push(arcs[i]); arcs.splice(i, 1);
flag1 = 1;
flag = 1;
break;
}
}
} }
}
</script>
javascript实现prim算法的更多相关文章
- 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用
图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...
- javascript数据结构与算法--高级排序算法
javascript数据结构与算法--高级排序算法 高级排序算法是处理大型数据集的最高效排序算法,它是处理的数据集可以达到上百万个元素,而不仅仅是几百个或者几千个.现在我们来学习下2种高级排序算法-- ...
- javascript数据结构与算法-- 二叉树
javascript数据结构与算法-- 二叉树 树是计算机科学中经常用到的一种数据结构.树是一种非线性的数据结构,以分成的方式存储数据,树被用来存储具有层级关系的数据,比如文件系统的文件,树还被用来存 ...
- javascript数据结构与算法--散列
一:javascript数据结构与算法--散列 一:什么是哈希表? 哈希表也叫散列表,是根据关键码值(key,value)而直接进行访问的数据结构,它是通过键码值映射到表中一个位置来访问记录的,散列 ...
- javascript数据结构与算法---队列
javascript数据结构与算法---队列 队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据,先进先出,这点和栈不一样(后入先出).在栈中,最后入栈的元素 ...
- javascript数据结构与算法---栈
javascript数据结构与算法---栈 在上一遍博客介绍了下列表,列表是最简单的一种结构,但是如果要处理一些比较复杂的结构,列表显得太简陋了,所以我们需要某种和列表类似但是更复杂的数据结构---栈 ...
- javascript数据结构与算法---列表
javascript数据结构与算法---列表 前言:在日常生活中,人们经常要使用列表,比如我们有时候要去购物时,为了购物时东西要买全,我们可以在去之前,列下要买的东西,这就要用的列表了,或者我们小时候 ...
- 最小生成树のprim算法
Problem A Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Sub ...
- 数据结构代码整理(线性表,栈,队列,串,二叉树,图的建立和遍历stl,最小生成树prim算法)。。持续更新中。。。
//归并排序递归方法实现 #include <iostream> #include <cstdio> using namespace std; #define maxn 100 ...
随机推荐
- 设置隐藏activity的标题栏
values->styles.xml中设置:stylename="AppTheme"parent="Theme.AppCompat.Light.NoActionBa ...
- UVALive 4682 XOR Sum (trie)
题意:求一段连续的数字使得它们的异或和最大. 思路:首先利用前缀和求sum[i],这样求某段连续数字异或和最大就是求某两个j和i满足sum[i]^sum[j-1]最大,问题就变成了找两个数的异或最大. ...
- Jquery中的prop()方法 全选或全不选
注意: prop()在高版本才会有效, 低版本用attr(); $(function(){ // 元素checkbox var aChecked = $('.checkGoods'); // 全选 v ...
- Oracle数据库DECODE函数的使用.
decode函数是Oracle数据库独有的. 语法为: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 例子:select decode(sign(变量1-变量2) ...
- Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK fla ...
- 2016 - 1- 22 img tag and the lists (intro to HMTL&CSS)
1 :The img tag img tag allows put some img file into page. just like : <a href = "me.png&quo ...
- Redis - 密码配置和主从复制
使用config set命令修改requirepass参数配置Redis密码config set requirepass password 也可以通过配置文件修改密码,重启后生效. 克隆虚拟机,分别运 ...
- WCF客户端和服务端配置
服务端: <system.serviceModel> <services> <service name="Microsoft.ServiceModel.Samp ...
- [转]Golang- import 导入包的语法
http://blog.csdn.net/zhangzhebjut/article/details/25564457 一 包的导入语法 在写Go代码的时候经常用到import这个命令用来导入 ...
- Android 常见的广播 action常量
Intent.ACTION_AIRPLANE_MODE_CHANGED; //关闭或打开飞行模式时的广播 Intent.ACTION_BATTERY_CHANGED; //充电状态,或者电池的电量发生 ...