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 ...
随机推荐
- python抓取性感尤物美女图
由于是只用标准库,装了python3运行本代码就能下载到多多的美女图... 写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完. 测试发现速度一般,200K左右的下载速度,也没有很 ...
- 2013年国庆节前51Aspx源码发布详情
Sky软件公司网站修正版源码 2013-9-30 [VS2010]源码描述:针对Sky软件公司网站源码进行修正.修改ckeditor引用问题,发布样式错误问题.vs2010直接编译.发布成功. 网站 ...
- Ubuntu 14.10 下sed命令详解
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- hdu 2030
PS:原本这道题就空了好久...今天才去查了下汉字机内码... 然后才知道了. 1—— 一个汉字在字符串中是以两个负的字符形式存储,所以本题只要把字符串中负字符的个数找出来,再 除以2 就OK了. 2 ...
- ios工程中ARC与非ARC的混合
ARC与非ARC在一个项目中同时使用, 1,选择项目中的Targets,选中你所要操作的Target,2,选Build Phases,在其中Complie Sources中选择需要ARC的文件双击,并 ...
- C# 封装一个钩子类
利用C#设置钩子函数,并封装成类.如果想要实现全局钩子的话,必须将实现的代码封装到类库里. using System; using System.Collections.Generic; using ...
- 数据库 SQL优化
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- jQuery实现产品滚动效果
html: <div class="win_list_b"> <div class="scroll" style="height: ...
- 关于UIMenuController的使用 弹出菜单 UIMenuItem
UIMenuController *menuController = [UIMenuController sharedMenuController]; UIMenuItem *menuI ...
- PHP 的snmp各个版本的Wrapper封装类
原文来自:http://blog.chinaunix.net/uid-7654720-id-3211234.html class SNMP_Wrapper { protected $_host; pr ...