5.3图的综合应用算法(最小生成树、最短路径生成)

news2024/12/28 23:00:30

一.最小生成树算法

1.概念(Minimum-Spanning-Tree)MST

生成树:针对于连通图,包含全部顶点,去掉一条边后不连通,加一条边形成环
最小生成树:带权连通无向图,边的权值之和最小的生成树(MST)

2.普里姆Prim算法(顶点)

从一个顶点开始出发,选择这个顶点代价最小的顶点进行构造,重复执行,一直到所有顶点全部进入生成树中
只关注顶点,,时间复杂度:O(|V|)
适合边稠密图

//伪代码核心
1.节点入树数组
isJoint[v];
2.用于更新各顶点的代价地图
lowCost[v];

在这里插入图片描述

3.Kruskal最小生成树算法(边)

算法执行过程:
从代价最小的一条边出发,选择最小的两端顶点未连接的边,不断重复,直到把全部顶点装入生成树中
只关注边,时间复杂度O(|E|log2|E|)
适合边稀疏图
在这里插入图片描述

二、最短路径生成算法

1.BFS寻找无向不带权图最短路径

适用于无权无向图寻找最短路径

相关代码原理:

d[i]:表示从u到i结点的最短路径
path[i]:最短路径从哪个顶点过来**
bool visited[MAX_VERTEX_NUM]; //记录该节点是否访问过

    void BFS_MIN_Distance(Graph G, int u)
    {
        for (i = 0; i < G.vexnum; ++i)
        {
            d[i] = 无穷       //初始化路径长度
            path[i] = -1; //最短路径从哪个顶点过来
        }
        d[u] = 0;
        visited[u] = TRUE;
        EnQueue(Q, u);
        while (!= isEmpty(Q))
        {
            DeQueue(Q, u);
            for (w = FirstNeighbor(G, v); w >= 0; w = NextNeighbor)
            {
                if (!visited[w])
                {
                    d[w] = d[u] + 1;
                    path[w] = u;
                    visited[w] = TRUE;
                    EnQueue(Q, w);
                }
            }
        }    

2.Dijkstra寻找有向非负权图最短路径(单源最短路径)

不适合权值为负的有向图

三个用到的数组:

1、标记各节点是否已经找到最短路径
    final[vex.num];
2.记录各个点的路径长度 
dist[vex.num];
3.路径上的前驱
 path[vex.num];

方法体:

void Dijkstra(int u)
{
    // 1.dij初始化
    memset(vis, 0, sizeof(vis));
    for (int t = 1; t <= n; t++)
    {
        dis[t] = map[u][t]; //让dis对应某一点到另外各点的距离
    }
    vis[u] = 1; //设置该点访问过
    // 2.找到最小点
    for (int t = 1; t < n; t++)
    {
        int minn = Inf;
        int temp;
        for (int i = 1; i <= n; i++)
        {
            if (!vis[i] & dis[i] < minn)
            {
                minn = dis[i];
                temp = i;
            }
        }
        vis[temp] = 1; //让它被访问
        // 3.更新距离
        for (int i = 1; i <= n; i++)
        {
            if (map[temp][i] + dis[temp] < dis[i])
            {
                dis[i] = map[temp][i] + dis[temp];
            }
        }
    }
}

3.Floyd算法

求解各个顶点的最短路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/652321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于前端跨域的结局方案

前言 跨域产生的原因 浏览期的安全策略。常见的解决跨域的方法&#xff1a; 1.JONSP 利用<script>标签的src可以发起跨域请求,大致过程&#xff1a;前端的方法名传到地址上callbackxx 缺点&#xff1a;只能get方法2.domain.iframe、domain.hash、domain.parent等 上述这…

VUE项目无法启动NODE版本与NODE-SASS、SASS-LOADER版本不兼容

系列文章目录 文章目录 系列文章目录错误分析一、版本比对二、解决方案总结 错误分析 在VUE项目开发中&#xff0c;我们经常会遇到报错&#xff1a; Node Sass version 7.0.1 is incompatible with ^4.0.0。 网上解决方案也千奇百怪&#xff0c;最终操作下来&#xff0c;也是…

首添机密计算创新成果!龙蜥首获 ACM SIGSOFT 杰出论文奖

近日&#xff0c;软件工程领域的全球旗舰级会议-软件工程大会 ICSE 在澳大利亚墨尔本市召开&#xff0c;龙蜥社区云原生机密计算 SIG 核心成员&#xff08;阿里云JVM 团队&#xff09;在 Java 机密计算方面的研究成果入选了 ICSE2023&#xff0c;并且以该会议今年唯一的 All Fi…

STM32F407之SD卡读数据介绍

1&#xff0c;SD卡基础知识 SD卡&#xff08;Secure Digital Memory Card&#xff09;即&#xff1a;安全数字存储卡&#xff0c;它是在MMC的基础上发展而来&#xff0c;作为存储器件广泛应用于电子产品中。 1.1 SD卡有SDIO和SPI两种传输方式&#xff0c;具体信号定义如下&…

DSSAT模型: 遥感数据与作物生长模型同化及在作物长势监测与估产中的应用

查看原文>>>遥感数据与作物生长模型同化及在作物长势监测与估产中的应用 基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具&#xff0c;可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系&#xff0c;为不…

华为开源自研AI框架昇思MindSpore应用案例:SSD目标检测

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 SSD&#xff0c;全称Single Shot MultiBox Detector&#xff0c;是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测试集上&#xff0c;SSD对于输入尺寸300x300的网络&#xf…

基于html+css的图展示130

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

正交标注有利于无监督医学图像分割

文章目录 Orthogonal Annotation Benefits Barely-supervised Medical Image Segmentation摘要本文方法Registration ModuleLabel MixingDense-Sparse Co-Training 实验结果 Orthogonal Annotation Benefits Barely-supervised Medical Image Segmentation 摘要 半监督学习的…

【DRAM存储器二】Sense Amplifier

&#x1f449;个人主页&#xff1a;highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 参考书籍&#xff1a;《Memory Systems - Cache, DRAM, Disk》 目录 前言 感应…

【数据管理架构】什么是 OLAP?

作为数据仓库实施的核心组件&#xff0c;OLAP 为商业智能 (BI) 和决策支持应用程序提供快速、灵活的多维数据分析。 什么是 OLAP&#xff1f; OLAP&#xff08;用于在线分析处理&#xff09;是一种软件&#xff0c;用于对来自数据仓库、数据集市或其他一些统一的集中式数据存储…

Sentieon | 每周文献-Population Sequencing-第一期

群体基因组系列文章-1 标题&#xff08;英文&#xff09;&#xff1a;The Impact of ACEs on BMI: An Investigation of the Genotype-Environment Effects of BMI 标题&#xff08;中文&#xff09;&#xff1a;ACEs对BMI的影响&#xff1a;探究BMI的基因型-环境效应 发表期刊…

【栈与队列part01】| 232.用栈实现队列、225.用队列实现栈

目录 ✿LeetCode232.用栈实现队列❀ ✿LeetCode225. 用队列实现栈❀ ✿LeetCode232.用栈实现队列❀ 链接&#xff1a;232.用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a;…

为什么要使用卷积

1. 卷积这个名词是怎么解释&#xff1f;“卷”是什么意思&#xff1f;“积”又是什么意思&#xff1f; 卷积的“卷”&#xff0c;指的的函数的翻转&#xff0c;从 g(t) 变成 g(-t) 的这个过程&#xff1b;同时&#xff0c;“卷”还有滑动的意味在里面&#xff08;吸取了网友李…

【Vue全家桶高仿小米商城】——(一)Node环境配置

文章目录 第一章&#xff1a;课程简介一、Win/Mac Node环境安装二、Linux Node环境安装三、安装淘宝镜像四、安装vue/vue-cli/webpack/webpack-cli五、Node版本如何做卸载和升级&#xff08;Mac/Linux&#xff09; 第一章&#xff1a;课程简介 对课程的整体内容做介绍&#xf…

系统编程(4):进程间通信

文章目录 管道通信无名管道有名管道 管道通信 无名管道 无名管道只能在有亲缘关系之间的进程间通信&#xff08;比如父子进程&#xff09;。 第一步是创建一个管道&#xff0c;这个管道有两个文件描述符一个读&#xff0c;一个写 - 两个文件描述符fd[2]&#xff0c;一个文件…

智慧城市同城V4小程序V2.27独立开源版 + 小程序+全插件+VUE小程序开源前端 安装测试教程

智慧城市同城V4小程序V2.27开源独立版本月最新版&#xff0c;与上一版相比修复了一些小细节&#xff0c;功能本身并无大的变化。体验下来感觉唯一区别用户授权一键就登陆了&#xff0c;上两版都需要选择头像呢称。新版系统包含全插件、包括很多稀缺收费的插件都在里面如括招聘、…

操作系统|知识梳理|复习(下)

目录 &#x1f4da;文件与外存空间 &#x1f407;文件的概念 &#x1f407;文件系统的概念 &#x1f407;文件的组织——路径与目录 &#x1f407;文件的存储⭐️ &#x1f955;连续分配法 &#x1f955;链接分配法 &#x1f955;扩展分配法 &#x1f955;链表备份法 …

chatgpt赋能python:Python生成指定位数SEO文章的方法

Python生成指定位数SEO文章的方法 在网站优化中&#xff0c;SEO是一项非常重要的工作&#xff0c;它能够帮助我们提高网站的排名&#xff0c;并吸引更多的流量。在进行SEO优化时&#xff0c;我们需要开发一些有关关键词的文章。本文将介绍如何使用Python生成指定位数的SEO文章…

【前端基础篇】盒子模型、边距、边框、外边距合并问题详解

文章目录 一、盒模型概念与组成1.1 生活举例1.2 概念 二、盒模型组成分析2.1 **内容区&#xff08;content&#xff09;**2.2 内填充&#xff08;padding&#xff09;2.3 **边框&#xff08;border&#xff09;**2.5 外边距&#xff08;margin&#xff09;2.6 外边距合并问题2.…

【Django 网页Web开发】06. 模板继承的主题导航栏案例 高效开发 便捷维护(保姆级图文)

目录 实现效果模板继承moban.html 模板页面子页面test1.htmltest2.html url.pyview.py常见格式总结 欢迎关注 『Django 网页Web开发』 系列&#xff0c;持续更新中 欢迎关注 『Django 网页Web开发』 系列&#xff0c;持续更新中 实现效果 很多页面都有导航栏&#xff0c;以CSD…