阿尔法贝塔阀原理_图总结 - 阿尔法个贝塔 - 博客园

一.思维导图

二.概念笔记

图的存储结构

1. 邻接矩阵

定义:设图G有n (n大于等于1) 个顶点,则邻接矩阵是一个n阶方阵。

当矩阵中的 [i,j] !=0(下标从1开始) ,代表其对应的第i个顶点与第j个顶点是连接的

特点

无向图的邻接矩阵是对称矩阵,n个顶点的无向图需要n*(n+1)/2个空间大小

有向图的邻接矩阵不一定对称,n个顶点的有向图需要n²的存储空间

无向图中第i行的非零元素的个数为顶点Vi的度

有向图中第i行的非零元素的个数为顶点Vi的出度,第i列的非零元素的个数为顶点Vi的入度

2.邻接表

定义:为图G中的每一个顶点建立一个单链表,每条链表的结点元素为与该顶点连接的顶点

特点

无向图顶点Vi的度为第i个单链表中的结点数无向图中

顶点Vi的出度为第i个单链表中的结点个数

顶点Vi的入度为全部单链表中连接点域值是i的结点个数

图的遍历

深度优先遍历

图的深度优先遍历类似于树的前序遍历。先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点,直到所有的顶点都被访问。

广度优先遍历

图的广度优先遍历类似于树的层次遍历。从图中某顶点出发,依次访问各个邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使得“先被访问的顶点的邻接点先于后被访问的顶点的邻接点被访问,直至图中所有已被访问的顶点的邻接点都被访问到。如果此时图中尚有顶点未被访问,则需要另选一个未曾被访问过的顶点作为新的起始点,直至图中所有顶点都被访问到为止。

最小生成树

Prim算法

Prim算法首先以一个结点作为最小生成树的初始结点,然后以迭代的方式找出与最小生成树中各结点权重最小边,并加入到最小生成树中。加入之后如果产生回路则跳过这条边,选择下一个结点。直至所有结点都加入到最小生成树中。

Kruskal算法

Kruskal算法在找最小生成树结点之前,需要对所有权重边做从小到大排序。将排序好的权重边依次加入到最小生成树中,如果加入时产生回路就跳过这条边,加入下一条边。当所有结点都加入到最小生成树中之后,就找出了最小生成树。

Kruskal在算法效率上是比Prim快,因为Kruskal只需一次对权重的排序就能找到最小生成树,而Prim算法需要多次对邻边排序才能找到

最短路径

Dijkstra算法

Dijkstra算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。

Floyd算法

Floyd算法是先找出最短的距离,然后在考虑如何找出对应的行进路线。

三.疑难问题

关于Dijkstra算法和Floyd算法的代码实现,从网上摘取两段代码理解

const int MAXINT = 32767;

const int MAXNUM = 10;

int dist[MAXNUM];

int prev[MAXNUM];

int A[MAXUNM][MAXNUM];

void Dijkstra(int v0)

{

bool S[MAXNUM]; // 判断是否已存入该点到S集合中

int n=MAXNUM;

for(int i=1; i<=n; ++i)

{

dist[i] = A[v0][i];

S[i] = false; // 初始都未用过该点

if(dist[i] == MAXINT)

prev[i] = -1;

else

prev[i] = v0;

}

dist[v0] = 0;

S[v0] = true;

for(int i=2; i<=n; i++)

{

int mindist = MAXINT;

int u = v0;    // 找出当前未使用的点j的dist[j]最小值

for(int j=1; j<=n; ++j)

if((!S[j]) && dist[j]

{

u = j; // u保存当前邻接点中距离最小的点的号码

mindist = dist[j];

}

S[u] = true;

for(int j=1; j<=n; j++)

if((!S[j]) && A[u][j]

{

if(dist[u] + A[u][j] < dist[j]) //在通过新加入的u点路径找到离v0点更短的路径

{

dist[j] = dist[u] + A[u][j]; //更新dist

prev[j] = u; //记录前驱顶点

}

}

}

}

typedef struct

{

char vertex[VertexNum]; //顶点表

int edges[VertexNum][VertexNum]; //邻接矩阵,可看做边表

int n,e; //图中当前的顶点数和边数

}MGraph;

void Floyd(MGraph g)

{

int A[MAXV][MAXV];

int path[MAXV][MAXV];

int i,j,k,n=g.n;

for(i=0;i

for(j=0;j

{

A[i][j]=g.edges[i][j];

path[i][j]=-1;

}

for(k=0;k

{

for(i=0;i

for(j=0;j

if(A[i][j]>(A[i][k]+A[k][j]))

{

A[i][j]=A[i][k]+A[k][j];

path[i][j]=k;

}

}

}

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

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

相关文章

WebApi Post 后台无法获取参数的解决方案

事件回放&#xff1a; 之前一段时间&#xff0c;公司里前端用的Angularjs 发送http请求也是用的ng的组件&#xff0c;后台是.Net的WebApi 前端 var data {PArgs: {PageIndex: 0,PageSize: 8,RowsCount: 0} };$http.post("/Api/Test/ABC", data).success(function (d…

南京大学计算机系周小莉,周会群

媒体报道&#xff1a;南京大学周会群&#xff1a;用计算机聪明地做实验Q《中国教育网络》A周会群Q&#xff1a;南京大学的高性能计算中心非常特殊&#xff0c;分布在物理&#xff0c;化学、天文、地球科学四个不同的学科中&#xff0c;为什么采取这种模式&#xff1f;A&#xf…

不要怂,就是GAN (生成式对抗网络) (五):无约束条件的 GAN 代码与网络的 Graph...

GAN 这个领域发展太快&#xff0c;日新月异&#xff0c;各种 GAN 层出不穷&#xff0c;前几天看到一篇关于 Wasserstein GAN 的文章&#xff0c;讲的很好&#xff0c;在此把它分享出来一起学习&#xff1a;https://zhuanlan.zhihu.com/p/25071913。相比 Wasserstein GAN &#…

用于MyBatis CRUD操作的Spring MVC 3控制器

到目前为止&#xff0c;我们已经为域类“ User ”创建了CRUD数据库服务&#xff0c;并且还将MyBatis配置与Spring Configuration文件集成在一起。 接下来&#xff0c;我们将使用Spring MVC创建一个网页&#xff0c;以使用MyBatis CRUD服务对数据库执行操作。 使用MyBatis 3创建…

2pin接口耳机_拆解报告:雷柏首款真无线耳机XS200

-----我爱音频网拆解报告第185篇-----雷柏是一家历史悠久的鼠标和键盘厂商&#xff0c;截至目前&#xff0c;雷柏(rapoo)总共出了四款耳机&#xff0c;此前曾推出过三款蓝牙耳机&#xff0c; 分别是S500 蓝牙立体声麦克风耳机&#xff0c;S200 蓝牙立体声麦克风耳机&#xff0c…

html表单中阴影,html5中input表单加边框,阴影效果.doc

文档介绍&#xff1a;CSS:input:focus{border-color:#99;}获取焦点时改变颜色focus能同时改变宽度长度背景色…….form,p(margin-bottom:30px;margin-left:20px;).shadow,.one,.two,.three,.four,.five,.six( height:50px; width:280px; border:C;).shadow( -moz-box-shadow:C;…

带有GSON和抽象类的JSON

经过多年使用org.json库在Java中支持JSON数据交换格式后&#xff0c;我已切换到Google Gson 。 org.json是一个较低级的库&#xff0c;因此您必须创建JSONObject&#xff0c;JSONArray&#xff0c;JSONString等…并执行其他低级工作。 Gson简化了这项工作。 它提供了简单的toJs…

深入理解javascript原型和闭包(3)——prototype原型

转载&#xff0c;原文地址http://www.cnblogs.com/wangfupeng1988/p/3978131.html 既typeof之后的另一位老朋友&#xff01; prototype也是我们的老朋友&#xff0c;即使不了解的人&#xff0c;也应该都听过它的大名。如果它还是您的新朋友&#xff0c;我估计您也是javascript的…

python 温度 符号_Python通过小实例入门学习---1.0(温度转换)

1.安装Python 3 下载地址: Welcome to Python.org​www.python.org 2.“温度转换”实例:摄氏度--->华氏度 / 华氏度--->摄氏度 TempConvert.py TempStr = input("请输入带有符号的温度值:") if TempStr[-1] in ["f","F"]:C = (eval(Tem…

mysql 修改root密码

1.找到配置文件my.ini &#xff0c;然后将其打开&#xff0c;可以选择用记事本打开 C:\Program Files (x86)\MySQL\MySQL Server 5.0 2.打开后&#xff0c;搜索mysqld关键字&#xff0c;找到后&#xff0c;在mysqld下面添加skip-grant-tables&#xff0c;保存退出。 PS&#x…

联想计算机CDROM启动,联想电脑光驱启动问题?

1、开机按del键或f2进入bios设置(不同主板按键不一样&#xff0c;一般是DEL&#xff0c;也可能是F2&#xff0c;可以参考下主板说明)&#xff0c;将计算机的启动模式调成从光盘启动。也就是从cdrom启动&#xff0c;根据主板的不同&#xff0c;bios设置有所差异(一般是&#xff…

没有J2EE容器的JNDI和JPA

我们希望通过尽可能简单的设置来测试一些JPA代码。 计划仅使用Java和Maven&#xff0c;不使用应用程序服务器或其他J2EE容器。 我们的JPA配置需要两件事才能成功运行&#xff1a; 数据库来存储数据&#xff0c; JNDI访问数据库。 这篇文章分为两个部分。 第一部分显示了如何…

string 大小写转换

STL的algorithm库确实给我们提供了这样的便利&#xff0c;使用模板函数transform可以轻松解决这个问题&#xff0c;开发人员只需要提供一个函数对象&#xff0c;例如将char转成大写的toupper函数或者小写的函数tolower函数。 transform原型&#xff1a; 1 #include <string&…

linux服务器上svn的log_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器 | Linux 中国...

在 Centos 8 和 RHEL 8 系统中&#xff0c;默认未安装 VNC 服务器&#xff0c;它需要手动安装。在本文中&#xff0c;我们将通过简单的分步指南&#xff0c;介绍如何在 Centos 8 / RHEL 8 上安装 VNC 服务器。-- Pradeep KumarVNC(虚拟网络计算Virtual Network Computing)服务器…

怎么把网页保存到本地计算机,在IE浏览器中,将网页保存到本地计算机中,若只需保存其中的文字、超链接和表格信息,应该选择的保存类型为( )...

2.(2017高一上东台月考)阅读下面一段资料&#xff0c;判断在给出的几种说法中不正确的是( )资料&#xff1a;IP电话与传统电话IP电话是按国际互联网协议规定的网络技术内容开通的电话业务&#xff0c;中文翻译为网络电话或互联网电话&#xff0c;它是利用国际互联网Inetrnet为…

html_博客博主

csdn: 工匠若水 http://blog.csdn.net/yanbober yunama: IT蓝豹&#xff1a;http://www.itlanbao.com/&#xff1b; http://ask.dcloud.net.cn/docs/; 博客园&#xff1a; https://www.cnblogs.com/guweiwei/category/965437.html转载于:https://www.cnblogs.com/awkflf11/p/55…

Windows上的Java线程CPU分析

本文将为您提供一个教程&#xff0c;介绍如何在Windows OS上快速查明Java线程贡献者与CPU严重问题有关。 Windows与Linux&#xff0c;Solaris和AIX等其他操作系统一样&#xff0c;使您可以在进程级别监视CPU利用率&#xff0c;还可以监视在进程中执行任务的单个线程。 在本教程…

flask 继承模版的基本使用1

转载于:https://www.cnblogs.com/wanghaonull/p/6399492.html

东芝2303am维护清零_东芝打印机2303A怎样清零

展开全部东芝e68a843231313335323631343130323136353331333365653137打印机是按照相关要求生产的正规产品&#xff0c;其清零方式与正规产品相同。因此此处将介绍常用的打印机清零方法。打印机清零一般分两种&#xff1a;一种是手工清零&#xff0c;另一种是软件清零。一、手工…

计算机日期函数公式大全,Excel技巧: 根据日期汇总月份的计算公式

在许多情况下&#xff0c;Excel记录的数据将按照发生的日期进行记录&#xff0c;但是根据日期记录的数据将非常分散&#xff0c;通常需要每月汇总相应的数据. 在这种情况下&#xff0c;您需要将日期转换为月份. 本文介绍了如何使用SUMPRODUCT函数按月汇总数据.公式提示在SUMPRO…