当前位置: 首页 > news >正文

深圳营销型网站seo中小企业网站制作

深圳营销型网站seo,中小企业网站制作,陕西省建设工程招投标信息网官网,wordpress安装vps实现描述 如图: Prim算法的基本思想是从一个顶点开始,逐步构建最小生成树。具体步骤如下: 随机选取一个顶点作为起始点,并将其加入最小生成树的集合中。从该顶点出发,选择一条边连接到其他未被访问的顶点中的最小权…

实现描述

如图:
在这里插入图片描述

Prim算法的基本思想是从一个顶点开始,逐步构建最小生成树。具体步骤如下:

  1. 随机选取一个顶点作为起始点,并将其加入最小生成树的集合中。
  2. 从该顶点出发,选择一条边连接到其他未被访问的顶点中的最小权值边。
  3. 将该顶点加入到最小生成树的集合中,并标记为已访问。
  4. 重复步骤2和步骤3,直到最小生成树包含所有顶点。

与Kruskal算法相比,Kruskal是选择最小边,通过判断连通性加入最小生成树;
Prim算法是选择点,构成最小生成树,然后选择未加入的点,通过权重判断是否能加入最小生成树;

下面是详细的构建过程:

首先加入index=0的点,此时最小生成树包含了只有0;

最小生成树此时节点[0],其他各个节点到最小生成树距离表:

索引minDistance(所有节点到最小生成树的最小距离)nodeInTheTree(记录节点是否在最小生成树里面)
0true
15false
28false
37false
4无穷大false
53false

之后,选择距离最小生成树距离最近的点加入,这里选择index=5,最小生成树此时节点[0,5],其他各个节点到最小生成树距离表:

索引minDistance(所有节点到最小生成树的最小距离)nodeInTheTree(记录节点是否在最小生成树里面)
0true
15false
28false
36false
41false
53true

注意,此时最小生成树节点[0,5],是两个,这两个是一个整体;

依次类推,直至nodeInTheTree数组里面所有节点都加入,然后计算minDistance节点的和即为最小生成树边距离;

注意,如果需要获取加入的起点-终点的边情况,额外添加记录数组parents,当获取到本次加入最小生成树的节点时候,更新其他点连入最小生成树的边情况进行记录;

实现代码

public static void main(String[] args) {int nodeNum = 6;int[][] grid = {{0, 1, 5},{0, 5, 3},{0, 3, 7},{0, 2, 8},{1, 2, 4},{2, 5, 9},{3, 5, 6},{2, 3, 5},{3, 4, 5},{4, 5, 1}};int[][] matrix = new int[nodeNum][nodeNum]; // init matrixfor (int i = 0; i < nodeNum; i++) {Arrays.fill(matrix[i], Integer.MAX_VALUE);}for (int i = 0; i < grid.length; i++) {int u = grid[i][0];int v = grid[i][1];int w = grid[i][2];matrix[u][v] = w;matrix[v][u] = w;}int[] minDistance = new int[nodeNum]; // 所有节点到最小生成树的最小距离Arrays.fill(minDistance, Integer.MAX_VALUE);boolean[] nodeInTheTree = new boolean[nodeNum]; //记录节点是否在最小生成树里面int[] parents = new int[nodeNum]; //记录最小生成树的边Arrays.fill(parents, -1);for (int i = 0; i < nodeNum; i++) {int current = 0; //默认0int minValue = Integer.MAX_VALUE;//选择距离当前生成树最近的点for (int j = 0; j < nodeNum; j++) {if (nodeInTheTree[j]) {//在树中跳过continue;}if (minDistance[j] < minValue) {current = j;minValue = minDistance[j];}}nodeInTheTree[current] = true;//将选择的节点加入最小生成树//更新其他节点到最小生成树的距离for (int j = 0; j < nodeNum; j++) {if (nodeInTheTree[j]) {//在树中跳过continue;}if (matrix[current][j] < minDistance[j]) {minDistance[j] = matrix[current][j];parents[j] = current;     //用最新选择的点去连接之前的点}}}int totalDistance = 0;for (int i = 1; i < nodeNum; i++) {totalDistance += minDistance[i];}System.out.println("总的权重值为:" + totalDistance);//输出边for (int i = 1; i < nodeNum; i++) {System.out.println("u=" + i + "; v=" + parents[i]);}}
http://www.yidumall.com/news/54126.html

相关文章:

  • 手机网站建设合同windows系统优化软件排行榜
  • 网站开发软件搭配网站搜索排名查询
  • 活动列表 wordpressseo研究学院
  • 张家口做网站便宜点的建立一个网站需要花多少钱
  • 龙岗营销网站建设公司哪家好湖北荆门今日头条
  • 阐述建站流程百度竞价托管哪家好
  • 馀姚网站建设百度官方电话24小时
  • 做网站还是做app好新媒体运营怎么自学
  • 湛江做网站哪家好国外媒体报道
  • 网站建设 软件廊坊seo管理
  • 浙江杭州软件公司排名上海整站seo
  • 微信公众号网址谷歌seo外包
  • 自学做网站多长时间傻瓜式自助建站系统
  • 以下属于常见的b2c平台的有海淀区seo引擎优化多少钱
  • 那些门户网站的官网做的好域名状态查询工具
  • 女人网上量体做衣网站网络推广宣传
  • 西安手机网站建设职业培训机构需要什么资质
  • 小程序后台上海百度推广优化公司
  • 建设银行校招网站入口今日新闻头条大事
  • 阳春网站开发网络营销员岗位的职责与要求
  • 杭州公司做网站四川seo关键词工具
  • 兰州网站备案网络推广一个月工资多少
  • 网站如何能让百度收录百度问问首页登录
  • 北京网站建设开发公司天津seo
  • 郴州新网招聘刷关键词排名seo软件
  • 万网网站建设步骤百度关键词权重查询
  • 苏州seo网站诊断市场调研
  • 没有网站怎么推广云搜索引擎
  • 搭建平台的同义词锦州seo推广
  • asp网站源码安装教程百度基木鱼建站