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

专门做音乐的网站杭州网站建设小程序

专门做音乐的网站,杭州网站建设小程序,手机网站与pc网站同步,网上怎么做宣传啊通过代码探索Prim算法#xff1a;最小生成树之旅 在计算机科学领域#xff0c;图算法占据了至关重要的位置#xff0c;尤其是在设计高效的网络#xff08;无论是社交网络、计算机网络还是交通网#xff09;时。在这些算法中#xff0c;寻找最小生成树#xff08;MST最小生成树之旅 在计算机科学领域图算法占据了至关重要的位置尤其是在设计高效的网络无论是社交网络、计算机网络还是交通网时。在这些算法中寻找最小生成树MST是一个基本问题它寻求以最小的总边权重连接图中所有顶点无任何循环所需的最小边集。Prim算法作为解决此问题的经典且高效的方法脱颖而出。让我们通过详细检查代码实现及算法的基本原理来深入探究它的复杂之处。 理解Prim算法 Prim算法是一种贪心方法它一次添加一个顶点来构建MST从任意顶点开始。它维护了两个顶点集合已经包含在MST中的和尚未包含的。在每一步中它考虑连接这两个集合的所有边并从这些边中选择最小权重的边。然后它将此边的另一端的顶点移动到包含在MST中的顶点集合里。 Prim算法的美在于它的简单和高效。它通过添加最接近树的顶点来迭代扩展MST直到包含所有顶点。 代码解析 提供的代码片段是Prim算法在C中的完整实现。让我们来详细分析它的主要组成部分 初始设置 #includebits/stdc.h using namespace std;const int N 510, INF 0x3f3f3f3f; int g[N][N], dist[N]; bool st[N]; int n, m;代码以包含所有标准库开始并定义了常量和全局变量。N是图可能拥有的顶点的最大数量INF代表无限距离用于初始化。图g被表示为邻接矩阵dist用于跟踪每个顶点到MST的最小距离st跟踪顶点是否已包含在MST中。 图的构建和初始化 memset(g, 0x3f, sizeof g); cin n m; for(int i 1; i m; i) {int a, b, c;cin a b c;g[a][b] g[b][a] min(g[a][b], c); }在这一部分中代码首先使用一个大数0x3f3f3f3f初始化邻接矩阵g这意味着初始时任意两个顶点之间没有直接的连接。然后它读取顶点数n和边数m并根据输入的每条边更新邻接矩阵。如果两个顶点之间有多条边则保留权重最小的那条边。 Prim算法的实现 int prim() {memset(dist, 0x3f, sizeof dist);int res 0;for(int i 0; i n; i) {int t -1;for(int j 1; j n; j)if(!st[j] (t -1 || dist[t] dist[j]))t j;if(i dist[t] INF) return INF;if(i) res dist[t];for(int j 1; j n; j) dist[j] min(dist[j], g[t][j]);st[t] true;}return res; }prim函数是算法的核心它首先使用0x3f3f3f3f初始化dist数组。然后它通过一个循环每次迭代选择一个与MST的距离最短的未包含顶点t并将其加入MST。如果在任何时刻t的dist[t]为INF这意味着图不连通函数返回INF。否则它更新结果res并调整dist数组以反映新加入的顶点对其他所有顶点距离的影响。 主函数和结果输出 int main() {int t prim();if(t INF) puts(impossible);else cout t endl;return 0; }主函数调用prim函数来计算MST的总权重并根据返回值输出结果。如果图不连通它输出impossible否则输出MST的总权重。 代码 #includebits/stdc.husing namespace std;const int N 510, INF 0x3f3f3f3f; int g[N][N], dist[N]; bool st[N]; int n, m;int prim() {memset(dist, 0x3f, sizeof dist);int res 0;for(int i 0; i n; i)//第一个i从0开始是为了后面if语句中只处理n - 1条边{//i0时相当于预处理dist数组使得dist数组中存在数字使其能在下一个循环中能找出离生成树最近的一个点并以此来更新边的距离int t -1;for(int j 1; j n; j)if(!st[j] (t -1 || dist[t] dist[j]))t j;//因为每次选的都是最小的点故而后面更新的时候不会在更新这个点if(i dist[t] INF) return INF;if(i) res dist[t];//先更新防止负的自环for(int j 1; j n; j) dist[j] min(dist[j], g[t][j]);st[t] true; }return res; }int main() {memset(g, 0x3f, sizeof g);cin n m;for(int i 1; i m; i){int a, b, c;cin a b c;g[a][b] g[b][a] min(g[a][b], c);}int t prim();if(t INF) puts(impossible);else cout t endl;return 0; }总结 通过这段代码和对Prim算法的探讨我们不仅加深了对这一经典算法的理解还体会到了算法在解决实际问题中的应用。Prim算法以其简洁和高效在图算法中占有一席之地是理解和掌握图论基础的关键步骤。希望这篇博客能够帮助你在探索图算法的旅程中迈出坚实的一步。
http://www.w-s-a.com/news/218760/

相关文章:

  • 织梦cms 官方网站网页视频如何下载到电脑
  • 查询建设公司业绩网站国外外链平台
  • 搭建直播网站需要怎么做做石材网站步骤
  • 移动网站如何做权重wordpress 统计字数 插件
  • 编写网站的软件百度指数教程
  • 网站改版建议策划书做设计什么兼职网站
  • 北京做兼职网站文创产品设计流程
  • 南阳做玉器网站wordpress 图片被缩小
  • 自己做网站卖衣服cms做网站容易不
  • 安徽安搜做的网站怎么样手机网站商城建设答辩问题
  • 分析不同网站的优缺点房产网站定制
  • 深圳工业设计大展2021论坛与网站做优化哪个更好
  • 什么网站做招聘比较好网络营销渠道管理
  • 网站建设选择什么模式淘宝网站可以做轮播吗
  • 山西免费网站制作乌市高新区建设局网站
  • 公司网站建设费用会计处理手机app免费下载
  • 网站的做网站的公司网站有些什么内容
  • 网站新类型wordpress 随机文章
  • 电商网站建设会计分录朝阳市网站公司
  • 正邦网站建设 优帮云百姓网征婚
  • 企业网站有哪些举几个例子端午节网站建设目的
  • 南京免费发布信息网站网站建设与管理职责
  • 无锡市建设培训中心网站企业vi设计是啥
  • 宿松网站建设推荐秒搜科技国家官方网站
  • 网站的服务器选择wordpress文章底部加分享
  • 天津专业的网站建设公司阿里云服务器 wordpress
  • 家教辅导培训网站建设中东跨境电商平台有哪些
  • 商城形式的网站需要多少钱做医药商城网站的公司吗
  • 贵阳网站设计zu97彩票创建网站
  • 网站建设与分工的论文足球世界排名