5.数据结构期末复习之图以及相关算法

news2024/11/28 5:36:36

1.应用:

  1. 教学计划(先修什么才能修什么课程)
  2. 社交网络
  3. 地图导航

2.什么是图? 顶点(有穷非空个)+顶点的边 ,抽象为G=(V,E) =(Vert,Edge)

1.无向图: 点到点都可以到达 表示为(vi,vj)
2.有向图 只能一个点到另外一个点 表示为<vi,vj>

在这里插入图片描述
又分为:

1.非带权图(上面的例子就是)
2.带权图(网图)

在这里插入图片描述
又又分为:

1.稠密图(边多) 只是相对概念
2.稀疏图(边少)
在这里插入图片描述

3.几个概念
1.邻接(从本节点可以到达另外一个节点) 邻接点(可到达的点),依附(与邻接相反的概念) 如图

无向图: A 邻接C和B
有向图: A邻接B和C D邻接A

在这里插入图片描述

  1. 完全图
    1. 无向完全图 任意两个点有边
    边数=n*(n-1)/2 (n是节点数)
    2. 有向完全图 任意两点有方向相反的两条弧
    边数=n*(n-1)

在这里插入图片描述

  1. 度(无向图):边数
    入度(有向图) 进入弧头有多少个
    出度(有向图) 出去弧头有多少个

4,在这里插入图片描述

  1. 路径:顶点的序列
    简单路径: 点不重复走
    回路:成一个环形
    简单回路:成环状但是点不重复
    在这里插入图片描述

5.路径长度(边的权相加)
在这里插入图片描述
6.子图 G’(V’,E;) 属于 G(V,E)这个图
在这里插入图片描述
7.连通顶点:之间有路径
连通图: 任两点可以访问(可以间接通过其他节点)
非连通图: 任两点不能连通
连通分量: 连通 后 里面的元素 (是图的极大连通子图)
极大连通子图: 加一个点连通 去边不连通
(有向)强连通分量: ^同理
在这里插入图片描述
在这里插入图片描述
请添加图片描述
在这里插入图片描述

4.图的深度优先遍历(需要stack栈辅助) 一边入栈一边访问 如果访问完了出栈访问

在这里插入图片描述
5.图的广度优先遍历(像树层次遍历)(需要队列辅助) 先访问相邻的全部节点后访问,相邻的相邻在这里插入图片描述
6.图的邻接矩阵(顺序存储存储图)(一维数组)(稠密图)

1.一维(存顶点)+二维(顶点之间的关系)
edge[i][j]=1 连接的 ------如果----- =0 不连接
在这里插入图片描述2.怎么求每个节点的度?(无向图) 一行的值相加即可 如: 上面 v0的度为2 v1的度为3
(有向图) j是出度 i是入度
在这里插入图片描述
3.网图的(带权)(需要多一个存全都二维[])
在这里插入图片描述

7.图的邻接表(改进了连接矩阵空间复杂度为O(n^2) 存稀疏图大量浪费空间)

1.无向 空间复杂度为O(n+e) 有n个顶点 e条边
在这里插入图片描述2.有向的(链表的的指向,代表图箭头的方向)
在这里插入图片描述3.带权的(2的基础上链表加个权值字段)
在这里插入图片描述

8.最小生成树(实际运用)(把图转换为树)

1.定义 (是极小连通子图 含 n-1条边)
在这里插入图片描述
2.代价: 权之和最小
在这里插入图片描述
3.在实际的应用(光纤布线,需要最短的距离,物流站点的设置)

9.最小生成树值Prim算法(无向图)(加入节点作为一个整体)必须访问全部节点结束
关键字: 整体

  1. 步骤:
    1. 从任意一点出发
    2. 找最短边,然后加入节点作为一个整体!!!(不能为环)
    例如:

在这里插入图片描述

第二个例子 (好办法,使用圈圈辅助,容纳为一个整体)

在这里插入图片描述
10.最小生成树值Kruskal算法(无向图)(全部点作为整体,分别在点与点直接连接)(适合边多的)(两个算法,生成树可能不一样,但权值加起来是一样的)
关键字: 部分

步骤:
1.画出全部点
2.全部边的权值放到一个数组里面从小到大排序
3.找到这个图最小权值的边连接,如果成环,剔除这个边
4.不停做3…
在这里插入图片描述

11.最小生成树之Dijkstra算法(上面两种算法是给你一个图生成树,求任意两点的最短距离)(不用于负权值) (不必访问所有顶点)复杂度O(n^2) 关键字: 以前
在这里插入图片描述
下面是求1->3的最短路径(需要从以前路径比较[看看是否到达这个点])

在这里插入图片描述
12.Floyd算法(和dj一样求任意两点的最短距离)(适合负权值)(不必访问所有顶点)(!!!遍历全部节点作为中转节点,如果中转后更小改值) 关键字: 中转

在这里插入图片描述

13.AOV网(activity on vertex network)(不一定有起点和终点)

  1. 工程:所有工程有子工程,必须完成子过程才能完成工程(说人话就是,一件事情有他的前提条件,必须先做完切菜洗菜,才能炒菜)
  2. 使用拓扑排序(有向无环图)(topology拓扑学 位置学的英译)(一个点在path不重复出现)判断AOV网是否有回路
    在这里插入图片描述
    14.AOE网(AOE+权[时间] ) 边上的每个活动都有持续时间 activity on edge network(一定有源点[入度为0]和终点[出度为0])
    1.解决的问题: 总工程最长(短)要多少时间, 缩短工期加快哪些活动更有效
    2.关键路径(最长的路径,不同方案下)

在这里插入图片描述

3.(算法过程而不是肉眼看到的)
在这里插入图片描述

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

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

相关文章

Day29

TCP_SER #include <myhead.h>//定义处理错误的宏函数 #define ERR_MSG(msg) do{\fprintf(stderr,"line:%d %s %s",__LINE__, __FILE__, __func__);\perror(msg);\ }while(0)//定义IP和端口号 #define IP "192.168.2.186" #define PORT 6666int …

数组的定义方式及访问

问题 如何创建及访问数组。 方法 了解数组的概念 数组就是存储多个数据的容器&#xff0c;数组的长度固定&#xff0c;多个数据的数据类型要一致。 数组的三种定义方式 数据存储的数据类型[] 数组名字 new 数组存储的数据类型[长度] 数据类型[] 数组名 new 数据类型[]{元素…

测试人35岁何去何从?软件测试路在何方?“我“一路升级打怪...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试员干到35岁&a…

暑期健身房招生活动文案分享,在线传单设计

想要有效地宣传健身房的信息&#xff0c;还能够吸引学员了解报名的宣传单要怎么制作&#xff1f;不用自己动手设计&#xff0c;借助在线模板和在线设计工具&#xff0c;一键就能生成专属的招生传单。以下是在线招生传单设计教程和传单设计模板使用教程。 首先找到一个在线设计工…

Juypter更改默认路径,并且解决改完默认路径不自动跳转的问题

目录 更改默认路径 第一步先在你所安装的juypter的环境下输入下面代码 第二步在自己的文件夹下找到这个目录&#xff0c;用记事本打开 第三步更改快捷方式 解决浏览器不调转方法 相对于juypter来讲&#xff0c;还是挺好用的&#xff0c;自我感觉比pycharm更好一点。 juypt…

ES6中 Promise和使用场景

介绍 &#x1f959;&#x1f959;&#x1f959;更加合理和更加强大 Promise&#xff0c;译为承诺&#xff0c;是异步编程的一种解决方案&#xff0c;比传统的解决方案&#xff08;回调函数&#xff09;更加合理和更加强大 在以往我们如果处理多层异步操作&#xff0c;我们往往…

群晖服务器被encrypted勒索病毒攻击后的表现与如何解密勒索病毒

群晖服务器是一种高效的数据管理方案&#xff0c;但是如果被Encrypted勒索病毒感染&#xff0c;可能会导致许多重要的数据会丢失。Encrypted勒索病毒将加密被感染服务器上的文件&#xff0c;导致它们无法打开。一旦我们遭到encrypted勒索病毒攻击&#xff0c;建议大家选择专业的…

【Web开发技术】异常处理机制的使用

文章目录 一、引言1、应用场景2、语法3、体系 二、详细设计&#xff08;后端开发&#xff09;1、信息提示常量类2、自定义异常3、Model层4、Controller层5、View层 一、引言 编程也有很久的时间了&#xff0c;如果每个报的错误和寻找的答案写成一张纸&#xff0c;叠加起来也得有…

JAVA项目代码几乎没有改动,重新发布后突然报错,无法启动

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; JAVA项目代码几乎没有改动&#xff0c;重新发布后突然报错&#xff0c;无法启动 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; JAVA项目代码几乎没有改动&#xff0c;重新发布后…

2023年PMP 续证的费用和流程最全介绍

PMP证书并不是终身有效的&#xff0c;是需要三年一续的&#xff0c;PMI会在有效期截止前给持证者发邮件提示换证&#xff08;续证&#xff09;。目前的续证费用为150美金和积满60个PDU&#xff0c;60个PDU是在证书三年有效期内积满就可以&#xff0c;像我的培训机构艾威每周都会…

当Mysql缓慢时,这几招可解燃眉之急

第一步定位问题源&#xff1a; 常见的以查询Mysql性能问题的方法 1.大部分的性能问题都是查询过慢的问题&#xff0c;可以查询慢sql日志。 通过慢查询日志定位那些执行效率较低的SQL语句&#xff0c;用–log-slow-queries[ file_name]选项启动时&#xff0c;mysqld写一个包含所…

售后退换货客服话术

在客服的工作生涯里&#xff0c;售后退换货这种问题&#xff0c;对于我们客服来说可以说是见惯不惯了。今天小编给大家准备了一些退换货的售后回复话术&#xff0c;让大家工作起来更加高效。 一、引导退换货 1.亲&#xff0c;麻烦您收到后请先试穿&#xff0c;请一定要保持衣服…

WordPress入门版,保姆级记录

服务器里用户越近&#xff0c;访问速度越快&#xff0c;所以需要根据用户群体选择合适的服务器 国外网站&#xff1a;SiteGround国内网站&#xff1a;阿里云 bidewang.co/sg WordPress托管服务器页面&#xff0c;一般选择第二个套餐 没有域名则选择购买域名 然后填选购买信息…

007-从零搭建微服务-网关中心(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff1a;https://gitee.com/csps/mingyue 文档地址&#xff1a;https://gitee.com/csps/mingyue/wikis 新建 mingyue-gateway 在 【从零搭建微服务…

练习SpringBoot烘培坊项目

烘培坊项目 文章目录 烘培坊项目项目概述项目搭建项目关键代码实现实现首页轮播图实现注册功能实现登录功能实现图片上传稿件管理页面内容列表功能稿件管理页面修改功能稿件管理页面删除功能首页三个类型下的分类展示首页三种类型的内容展示点击查看更多进入列表页面在header里…

mysql waf绕过-WAF Bypass技巧(2)

数据库waf绕过的一些玩法 WAF Bypass技巧(0)_luozhonghua2000的博客-CSDN博客 WAF绕过-WAF Bypass技巧(1)_luozhonghua2000的博客-CSDN博客 数据库特性 第一篇: Mysql数据库特性 0x01 前言 我们经常利用一些数据库特性来进行WAF绕过。在Mysgl中,比如可以这样 位置一: 参数和…

泰坦尼克号幸存者预测

本文所有的代码及数据均存放与https://github.com/MADMAX110/Titanic 泰坦尼克号幸存者预测挑战赛是一个非常受欢迎的机器学习实践项目。这是 Kaggle.com 上最受欢迎的比赛之一。 数据中有3个文件:train.csv&#xff0c;test.csv&#xff0c;和gender_submit .csv。 train.csv包…

内存碎片:理解、应用场景和防止措施

目录 摘要1. 引言2. 内存碎片的概念3. 内存碎片的产生原因4. 应用场景4.1 应用场景一&#xff1a;长时间运行的服务器4.2 应用场景二&#xff1a;嵌入式系统 5. 预防和处理内存碎片6. 示例代码&#xff1a;生成内存碎片7. 总结 摘要 本文旨在向初学者详细介绍内存碎片的概念、…

【爬虫】4.1 Scrapy 框架爬虫简介

目录 1. Scrapy 框架介绍 2. 建立 Scrapy 项目 3. 入口函数与入口地址 4. Python 的 yield 语句 5. Scrapy 爬虫的数据类型 1. Scrapy 框架介绍 1.1 Scrapy 的安装 pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple/ 1.2 Scrapy爬虫框架结构 “52”结构&…

「HTML和CSS入门指南」table 标签详解

什么是 table 标签? 在 HTML 中,table 标签用于创建表格。使用 table 标签可以帮助您以可视化和结构化的方式呈现数据。 table 标签的基本语法 以下是 table 标签的基本语法: <table><tr><th>姓名</th><th>年龄</th><th>性别&l…