图论--无向无权图

2024-06-10 11:44
文章标签 图论 无向 无权

本文主要是介绍图论--无向无权图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图论

文章目录

  • 图论
    • 图的基本概念
      • 无向图和有向图
      • 无权图和有权图
    • 图的数据结构
      • 无向无权图
      • 有向无权图
      • 无向有权图
      • 有向有权图
    • 最短路问题
      • 概念
      • 算法:寻找无权图中的最短路
      • 算法:寻找有权图中的最短路

图的基本概念

图是由很多结点和边组成的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

点的表示:v,点的集合:V

边的表示:e,边的集合:E

图:G = (V,E)

无向图和有向图

无向图:边没有方向

有向图:边有方向

无权图和有权图

无权图:所有边的权重都是一样的,都等于1

有权图:边有权重,权重的大小各不相同

权重的物理意义:可以是距离、长度、宽度等

不存在的边可以是权重无穷大、权重为0的边

图的数据结构

无向无权图

邻接表

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

邻接矩阵

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一条边对应邻接矩阵的两个元素

邻接矩阵是对称的

有向无权图

邻接表

邻接矩阵

行为To,列为From

一条边对应邻接矩阵的一个元素

邻接矩阵通常是对称的

无向有权图

邻接矩阵

一条边对应邻接矩阵的两个元素

邻接矩阵是对称的

有向有权图

邻接矩阵

一条边对应邻接矩阵的一个元素

邻接矩阵通常是非对称的

最短路问题

概念

路径:可以表示为结点的序列或边的序列

简单路径的概念:路径上没有重复结点

路径不存在:路径的长度为正无穷

无权图路径的长度 = 路径边数

有权图路径的长度 = 路径边权重总和

最短路问题:

输入图和起点s,输出s到其它所有结点的最短路径

记录到每个结点的最短路径、前一个结点

算法:寻找无权图中的最短路

以有向图为例,同样适用于无向图

空队列、表(bool是否访问过该节点, int路径长度, path前一个结点)

算法:寻找有权图中的最短路

这篇关于图论--无向无权图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048072

相关文章

poj 2914 无向图的最小割

题意: 求无向图的最小割。 解析: 点击打开链接 代码: #pragma comment(linker, "/STACK:1677721600")#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vector>#include <cstd

【代码随想录训练营第42期 续Day52打卡 - 图论Part3 - 卡码网 103. 水流问题 104. 建造最大岛屿

目录 一、做题心得 二、题目与题解 题目一:卡码网 103. 水流问题 题目链接 题解:DFS 题目二:卡码网 104. 建造最大岛屿 题目链接 题解:DFS  三、小结 一、做题心得 也是成功补上昨天的打卡了。 这里继续图论章节,还是选择使用 DFS 来解决这类搜索问题(单纯因为我更熟悉 DFS 一点),今天补卡的是水流问题和岛屿问题。个人感觉这一章节题对于刚

图论篇--代码随想录算法训练营第五十二天打卡| 101. 孤岛的总面积,102. 沉没孤岛,103. 水流问题,104.建造最大岛屿

101. 孤岛的总面积 题目链接:101. 孤岛的总面积 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。 现在你需要计算所有孤岛的总面积,岛屿面积的计算方式为组成岛屿的陆地的总数。 解题思路: 从周边找到陆地,然后通过 dfs或者bfs 将

代码随想录 刷题记录-28 图论 (5)最短路径

一、dijkstra(朴素版)精讲 47. 参加科学大会 思路 本题就是求最短路,最短路是图论中的经典问题即:给出一个有向图,一个起点,一个终点,问起点到终点的最短路径。 接下来讲解最短路算法中的 dijkstra 算法。 dijkstra算法:在有权图(权值非负数)中求从起点到其他节点的最短路径算法。 需要注意两点: dijkstra 算法可以同时求 起点到所有节点的最短路径权值不

图论篇--代码随想录算法训练营第五十一天打卡| 99. 岛屿数量(深搜版),99. 岛屿数量(广搜版),100. 岛屿的最大面积

99. 岛屿数量(深搜版) 题目链接:99. 岛屿数量 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 解题思路: 1、每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 2、遇到一个没有遍历过的节点陆地,计数器就加一,然后把该节点陆地所能遍历到的陆地都

图论篇--代码随想录算法训练营第五十天打卡| 深度优先搜索理论基础,98. 所有可达路径,广度优先搜索理论基础

深度优先搜索理论基础 DFS模板: void dfs(参数) {if (终止条件) {存放结果;return;}for (选择:本节点所连接的其他节点) {处理节点;dfs(图,选择的节点); // 递归回溯,撤销处理结果}} 98. 所有可达路径 题目链接:98. 所有可达路径 题目描述: 给定一个有 n 个节点的有向无环图,节点编号从 1 到 n。请编写一个函数,找出并返回所

数据结构实验图论:基于邻接矩阵/邻接表的广度优先搜索遍历(BFS)

数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历) 输入 输入第一行为整数n(0< n <100),表示数据的组数。 对于

代码随想录算法训练营第六十二天 | 图论part11

97. 小明逛公园 #include <iostream>#include <vector>#include <climits>#include <fstream>using namespace std;void floyd(vector<vector<vector<int>>>& grid) {int n = grid.size() - 1;for (int k = 1; k <= n;

图论 求有向图的所有强连通分量 kosaraju算法

一、问题 如何找到有向图(a)中的所有强连通分量,如图(b)    二、kosaraju算法 Kosaraju的算法(又称为–Sharir Kosaraju算法)是一个线性时间(linear time)算法找到的有向图的强连通分量。   1. 原理 它利用了一个事实,逆图(与各边方向相同的图形反转, transpose graph)有相同的强连通分量的原始图。   2. 逆图

每日刷题(图论)

P1119 灾后重建 P1119 灾后重建 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 看数据范围知道需要用到Floyd算法,但是道路是不能直接用的,需要等到连接道路的两个村庄重建好才可以使用,所以这需要按照时间依次加入中转点,再更新dis数组。 代码 #include<bits/stdc++.h>#define int long long #d