保研复习数据结构-图(10)

一.图的定义和基本术语

1.什么是图?

图(Graph)是由顶点的有穷非空集合V(G)和顶点之间边的集合E(G)组成,通常表示为:G=(V,E),其中,G表示图,V是图G中顶点的集合,E是图G中边的集合。

2.什么是完全图(Completed graph)?

对于有n个顶点的无向图,边e的数目为 0 ~ n(n-1)/2,对于无向完全图,共有n(n-1)/2条边。对于有向图,边的数目是0 ~ n(n-1),有向完全图的边数为n(n-1)。有很少条边或弧的图称为稀疏图(Sparse graph),反之称为稠密图(Dense graph)。

3.什么是网(Network)?

带权的图,权是指边或弧上带有相应的数字。

4.什么是子图(Subgraph)?

图的顶点集的子集and图的边集的子集

5.一个图的所有顶点的度数的和的一半等于边数:

e=\frac{1}{2}\Sigma ^n_{i=1}ID(v_i)

6.什么是图中的回路或环(Cycle)?

第一个顶点和最后一个顶点相同的路径称为回路或者环。

7.什么是连通图(Connected Graph)?

如果对于图中任意两个顶点Vi和Vj都有路径,那么说明这个图是连通图。

8.什么是连通分量(Connected component)?

指的是无向图中的极大连通子图=子图and连通图

9.什么是强连通图?什么是强连通子图?

对于有向图中的连通图,和有向图中的连通分量。

10.什么是生成树(Spanning Tree)?

生成树是一个连通图的极小连通子图,它包含树所需的全部顶点。顶点数为n的生成树一定含有n-1条边。如果一个含有n个顶点的图的边数小于n-1,那么这个图一定是非连通图;如果边数大于n-1,那么一定包含环。

11.什么是生成森林?

对应于非连通图,是由多个生成树组成的包含图中所顶点的森林。

二.最小生成树(Minimum Cost Spanning Tree)

1.什么是最小生成树?

所有边代价和最小的生成树称为最小生成树

2.Prim算法和Kruskal算法利用的是最小生成树的什么性质?

MST性质:假设N=(V , { E })是一个连通网,如果U是顶点集V的一个非空子集,如果存在一条权重(代价)最小的边(u,v)使得u \in U, v \in V-U,那么必然存在一棵包含(u,v)的最小生成树。

3.Prim算法是什么?

Prim算法基于贪心对于连通加权无向图来选择最小生成树的算法,每次选出一条距离已有最小生成树最短的边加入到集合中,最终实现最小生成树

具体流程:

  1. 用两个集合A{}和集合B{}分别表示找到的点集和未找到的点集。
  2. 对于元素a属于A,元素b属于B,选择一条最小的边(a,b)加入最小生成树
  3. 直到A=V,B为空

4.Kruskal算法是什么?

Prim算法是基于点,Kruskal算法是基于边。

先将边从小到大排列,从小到大添加不构成环路的边,由于要排序,所以复杂度为O(nlogn)

  1. 将边按照权重从小到大排列
  2. 枚举第一个边,加入MST里,判断是否成环
  3. 如果成环则跳过,否则确定这条边为MST里的
  4. 继续枚举下一条边,直到所有的边都枚举完

三.拓扑排序(Topological Sort)

1.什么是拓扑排序?

针对于有向无环图,只有有向无环图才存在拓扑排序。拓扑排序是针对有向无环图的拓扑序列,这个序列满足:(1)每个顶点出现且仅出现一次(2)如果存在一条从A到B的路径,那么A一定在B的前面

2.拓扑排序的过程?

  1. 选择一个没有前驱(入度为0)的顶点
  2. 删除这个顶点和所有以它为起点的边
  3. 重复操作12,直到整个图为空或者剩余结点,后一种状况说明图存在环路。

四.关键路径(Critical Path)

1.什么是关键路径?

关键路径是针对于AOE(Activity on edge)来说的,AOE中边表示活动,权重表示活动持续的时间,顶点表示事件。所有有最早开始时间和最晚开始时间相同的事件组成的路径为关键路径。

2.关键路径的求解步骤?

  1. 绘制项目网络图,标志个活动的持续时间和活动之间的逻辑关系。
  2. 计算每个活动的最早开始时间(ES)和最晚开始时间(LS),以及最早完成时间(EF)和最晚完成时间(LF) 。
  3. 计算每个活动的浮动时间,即LS-ES或LF-EF。
  4. 找出浮动时间为零的活动,这些活动所构成的路径就是关键路径。

五.最短路径(Minimum Path)

1.迪杰斯特拉算法(单源最短路径)

  1. 从所有未访问的点中,找出当前距离最小的,设为u,并将其标记为已访问的。
  2. 调整u的所有边(若是有向图则为出边)连接的并且未被访问过的点:若weight[u->v] + dist[u] < dist[v], 则将dist[v]更新为dist[u]+weight[u->v]。
  3. 重复1和2步骤,直到所有点都被标记为已访问的,则dist[i]即s到i的最短距离。如果只想求从s到某一点的最短距离,那么当该点被标记为访问过之后可直接退出。
  4. 补充:如果除了最短距离之外还想求出具体的路径,只需建立一个pre数组,在步骤2后添加操作:pre[v] = u(前提是dist[v]被更新)。

2.弗洛伊德算法(多源最短路径)

弗洛伊德算法可以给出图中任意两个结点之间的最短路径,比迪杰斯特拉更一般。

Foyd算法的思想是将n个节点的网络表示为n行n列的矩阵,而矩阵中的元素(i,j)表示从节点i到节点j的距离d_{ij},如果两点直接没有边相连,则相应的元素就是无穷(\infty).

  1. 邻接矩阵dist储存路径,同时最终状态代表点点的最短路径。如果没有直接相连的两点那么默认为一个很大的值(不要溢出)!而自己的长度为0.
  2. 第1个到第n个点依次加入图中。每个点加入进行试探是否有路径长度被更改。
  3. 而上述试探具体方法为遍历图中每一个点(i,j双重循环),判断每一个点对距离是否因为加入的点而发生最小距离变化。如果发生改变,那么两点(i,j)距离就更改。
  4. 重复上述直到最后插点试探完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL基础练习题:创建数据库

这部分主要是为了帮助大家回忆回忆MySQL的基本语法&#xff0c;数据库来自于MySQL的官方简化版&#xff0c;题目也是网上非常流行的35题。这些基础习题基本可以涵盖面试中需要现场写SQL的问题。 创建数据库 在开始练习之前&#xff0c;我默认你的电脑上是没有本系列练习题需要…

题目:【序列中删除指定数字】【变种水仙花数】【数组串联】【交换奇偶位】【offsetof宏的实现】

题目一:序列中删除指定数字 #include <stdio.h>int main(){int a0;int arr[50]{0};int c0;scanf("%d",&a);for(int i0;i<a;i){scanf("%d",&arr[i]);//输入a个值}scanf("%d",&c);//输入要删除的数据int i0;int j0;for(i0;i&…

【科东软件】鸿道Intewell-Win_V2.1.1_release版本正式发布

Intewell-Win_V2.1.1_release版本 版本号&#xff1a;V2.1.1 版本发布类型&#xff1a;release正式版本 版本特点 修复此前版本中的问题 运行环境推荐 Intewell developer可以运行在windows7及windows10 64位 支持硬件列表

【40分钟速成智能风控2】互联网金融信用风险

目录 ​编辑 信用风险 白名单准入 贷前识别 贷中管理 贷后催收 信用风险 白名单准入 白名单是信用风险管理的第一道门槛&#xff0c;与整个平台贷款产品的设计和定位有紧密的联系。白名单设立的初衷是圈定目标客户&#xff0c;有了目标客群之后才能更好地进行精准营销&…

非关系型数据库——三万字Redis数据库详解

目录 前言 一、Redis概述 1.主要特点 2.Redis优缺点 3.Redis为什么这么快 4.Redis那么快&#xff0c;为什么不用它做主数据库&#xff0c;只用它做缓存 5.线程模型 5.1单线程架构 5.2多线程IO处理&#xff08;Redis 6及以上&#xff09; 5.3线程模型的优化 6.作用 …

基于SpringBoot+微信小程序的点餐系统

一、项目背景介绍&#xff1a; 小程序外卖扫码点餐为客户提供的是最方便的饮食方式,以快速、便捷的点餐业务送货上门为 -客户服务,这省去了客户很多不必要的时间和麻烦,给商家带来更多利益。同时,小程序外卖扫码点餐可以辅助餐饮企业营销,通过信息管理,可以记录餐饮企业方方面面…

Linux--进程(2)

目录 前言 1. 进程的状态 1.1 进程排队 1.2 运行&#xff0c;阻塞&#xff0c;挂起 2.Linux下具体的进程状态 2.1僵尸和孤儿 3.进程的优先级 4.Linux的调度与切换 前言 这篇继续来学习进程的其它知识 上篇文章&#xff1a;Linux--进程&#xff08;1&#xff09;-CS…

挑战30天C++基本入门(DAY8--树)[part 3](速通哦~)

#上一章我们把搜索二叉树的知识给传授完毕&#xff0c;如果认真的看下去并且手打了几遍&#xff0c;基本上内部的逻辑还是可以理解的&#xff0c;那我们现在就截至继续学习树的一些重要知识啦~~ 树高怎么求呀&#xff1f;如果用上一次学的层次遍历来求树高&#xff0c;有点小题…

笔记 | 软件工程:需求分析

1 需求分析 #需求分析 1.1 需求分析概述 初步软件需求存在的问题&#xff1a;不具体&#xff0c;不清晰&#xff0c;关系不明朗&#xff0c;存在潜在缺陷&#xff0c;没有区分不同软件需求&#xff08;有必要鉴别不同软件需求项的重要性差别&#xff0c;区分不同软件需求的开…

图数据库技术:知识图谱的存储与查询

图数据库技术&#xff1a;知识图谱的存储与查询 一、引言 在探索知识的宇宙中&#xff0c;知识图谱是组织和理解海量信息的星系图。在这张图中&#xff0c;每一个概念、实体与事物不再是孤立的点&#xff0c;而是通过关系与边相互连接&#xff0c;形成一个复杂而有机的网络。图…

Kubesphere在创建服务的添加容器步骤搜索镜像步骤找不到镜像

Kubesphere在创建服务的添加容器步骤搜索镜像步骤找不到镜像 {"status": "failed","message": "invalid character p after top-level value" }添加了标签也没用&#xff08;如&#xff1a;mysql:5.7&#xff09; 可以看到 dockerhu…

再聊一聊AUC指标

关于模型评估的指标&#xff0c;之前已经写过不少这方面的文章&#xff0c;最近在实践中又有了一点新的思考&#xff0c;本文对模型评估中的AUC指标再进行一些简单的探讨。 情况一&#xff0c;以下图中的数据为例&#xff0c;1代表用户发生逾期&#xff0c;标记为坏样本&#x…

定时器测试:用定时器监控定时器

using System; using System.Timers;namespace TestTimer {internal class Program{private static int usingResource 0;static int m 0;static Timer timerTask new Timer();static Timer timerMonitor new Timer();static void Main(string[] args){//任务 定时器timerT…

金三银四面试题(十六):MySQL面试都问什么(1)

在开发岗位面试中&#xff0c;MySQL基本是必考环节。所以接下来我们就进入MySQL八股文环节&#xff0c;看看都有哪些高频考题。 MySQL 中有哪些不同的表格&#xff1f; 在MySQL中&#xff0c;可以创建多种不同类型的表格&#xff0c;其中一些常见的类型包括&#xff1a; InnoD…

js笔记(学习存档)

JS的调用方式与执行顺序 使用方式 HTML页面中的任意位置加上<script type"module"></script>标签即可。 常见使用方式有以下几种&#xff1a; 直接在<script type"module"></script>标签内写JS代码。直接引入文件&#xff1a;…

GPT-5将在6月发布前进行「红队进攻测试」

“GPT-5将在6月发布”的消息刷屏了AI朋友圈。这则消息之所以被无数人相信并转发&#xff0c;是因为已经有不少技术人员在社交平台上晒出了「红队进攻测试」邀请。 基于 GPT系列庞大的用户体量和影响力&#xff0c;OpenAI 将更加重视GPT-5 的安全性&#xff0c;作为GPT-5上市前的…

2024年C语言最新经典面试题汇总(21-30)

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…

OpenAI 推出新网络爬虫GPTBot,为GPT-5做准备

目录 一、GPTBot是什么&#xff1f;它是如何工作的&#xff1f;二、GPTBot 与 Google Bot 等搜索引擎网络爬虫有何不同&#xff1f;三、GPTBot 与 Perplexity AI 的网络爬虫有何不同&#xff1f;四、允许 GPTBot 爬取有哪些风险和好处&#xff1f;4.1 允许 GPTBot 的好处4.2 允…

PostgreSQL:所有支持的数据类型及建表语句实例

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、引言 在当今这个数据驱动的时代&#xff0c;数据库已经成为了企业和个人不可或缺的工具。而在众多数据库产品中&#xff0c;PostgreSQL以其强大的功能和高度的可扩展性&#xff0c;受到了越来越多开发者的青睐。…

移除元素 -- 力扣第27题 -- 暴力、双指针解法

题目 https://leetcode.cn/problems/remove-element/description/ 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并原地修改输…