数据结构--图。

在前面,我们学习了线性表和树,而接下来我们要学习的图相较于他们就更加复杂。

目录

一.图的有关概念


一.图的有关概念

1.定义

图(graph)G由两个集合V和E组成,记为G=(VE)。V是顶点的有穷非空集合;E是边的集合,边是V中顶点的无序对或有序对。E可以是边的空集,者E为空集,则G中只有顶点没有边。

2.由于“弧”是有方向的,因此称由顶点集和弧集构成的图为有向图。

3.顶点:在图中的数据元素

4.弧:若<v,w> VR,则<v,w>表示从v到w的一条弧

 弧尾:v(起始点)

 弧头:w(终端点)

5.有向图:是图论中的一种重要概念,用于描述各种事物之间的有序关系。它由一组节点(或顶点)以及连接这些节点的有向边组成。每条边都有一个方向,从一个节点指向另一个节点,表示了它们之间的关系和方向性

  无向图:边没有方向的图

6.完全图:有n(n-1)/2条边的无向图

  有向完全图:对于有向图,e的取值范围是0到n(n-1),具有n(n-1)条弧的有向图

  无向完全图:n个顶点的无向图,每个顶点与其他n-1个顶点都有边,具有最大边数n(n-1)/2

7.稀疏图:有很少条边或弧的图

  稠密图:图的边或弧很多

8.权:与图的边或弧相关的数

  网:带权的图

9.邻接点:假若顶点v和顶点w之间存在一条边,那么v和w互为邻接点

10.度:无向图中,与其相关联的边的数目

  入度:(有向图)以顶点v为头的弧的数目

  出度:(有向图)以顶点v为尾的弧的数目

11.路径长度:沿路径边的数目或沿路径各边权值之和

    回路:第一个顶点和最后一个顶顶点相同的路径

    简单路径:序列中顶点不重复出现的路径

    简单回路:除了第一个顶点和最后一个顶点外,其余顶点不重复出现的回路

12.连通:无向图中如果从顶点V到顶点W有一条路径,则说V和W是连通的

  连通图:无向图中任意两个顶点都是连通的

  连通分量:无向图中的极大连通子图

  强连通分量:有向图中的极大强连通子图

13.生成树:一个极小连通子图,它含有图中全部顶点,但只有足以构成一棵树的n一1条边

二.图的存储结构

2.1.图的数组(邻接矩阵)存储表示

2.1.1图的邻接矩阵表示法的特点

·对于无图

 邻接矩阵一定是一个对称矩阵

 行(列)非零元素个数,表示度

·对于有向图:

 矩阵不一定是一个对称矩阵

行非零元素个数,表示出度

·列非零元素个数,表示入度

2.1.2应用

通过邻接矩阵判定任意两个顶点之间是否有边相连

2.邻接表

是图的一种链式存储结构

特点

无向图中顶点VI的度为第1个单链表中的结点

有向图中

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

顶点Vi的入度为整个单链表中邻接点城#

值是的结点个数

逆邻接表:有向图中对每个结点建立以Vi为头

的弧的单链表

3.十字链表

4.邻接多重表

三.图的遍历

3.1.深度优先搜索

3.1.1连通图

3.1.2非连通图

3.2.广度优先搜索

四.应用

4.1.图的连通性问题

4.1.1无向图的连通分量和生成树

4.1.2有向图的强连通分量

4.1.3最小生成树

4.1.4关节点和重连通分量

4.2有向无环图

4.3拓扑排序

4.4关键路径

4.5最短路径

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

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

相关文章

xml怎么用【C#,XML】

作用&#xff1a; 用来保存class对象的全部属性。 语法&#xff1a; < > 必须成对出现 <!--这个是注释--> <Student> </Student> 必须成对出现&#xff0c;Student也叫元素标签 <Name&g…

【Linux】传输文件,补充:VMware中Linux系统无法连接网络的解决方法

Linux系统可以和其他系统之间进行传输文件&#xff0c;只要通过ssh连接成功以后&#xff0c;就能进行文件传输。 Linux系统也可以通过URL规则和网页之间进行传输文件&#xff08;即上传/下载&#xff09;。 1、Linux系统之间传输文件&#xff1a;scp centos7自带ssh服务&…

向上转型和向下转型

转型 概念&#xff1a;Java数据类型转换是将一种数据类型的值转换为另一种数据类型的值。在Java中&#xff0c;数据类型转换可以分为两种&#xff1a;向上转型和向下转型 向上转型 ​ 是把子类对象当作父类对象来使用的过程(自动转型)。在向上转型中&#xff0c;我们创建一个…

FPGA+炬力ARM实现VR视频播放器方案

FPGA炬力ARM方案&#xff0c;单个视频源信号&#xff0c;同时驱动两个LCD屏显示&#xff0c;实现3D 沉浸式播放 客户应用&#xff1a;VR视频播放器 主要功能&#xff1a; 1.支持多种格式视频文件播放 2.支持2D/3D 效果实时切换播放 3.支持TF卡/U盘文件播放 4.支持定制化配置…

36.Docker-Dockerfile自定义镜像

镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 镜像是分层机构&#xff0c;每一层都是一个layer BaseImage层&#xff1a;包含基本的系统函数库、环境变量、文件系统 EntryPoint:入口&#xff0c;是镜像中应用启动的命令 其他&#xff1a;在…

win32操作windows应用(未完成)

win32 脚本制作 一 、获取窗口句柄 首先获取句柄&#xff0c;其次扫描组件&#xff0c;然后对按钮和文本进行操作 安装依赖 pip install pywin32 -i https://pypi.doubanio.com/simple扫描全部的句柄 import win32gui# GetDesktopWindow 获得代表整个屏幕的一个窗口&#…

Blazor/Hybird 触屏下单程序调优笔记

环境 Blazor Net8.0 FreeSql Bootstrap Blazor 组件 以下都是自己瞎琢磨的和官网资料搬运,肯定有不少错漏和不合理的地方,非常希望各位大佬评论区给我建议和意见. 1. 组件化需要提升渲染性能的组件,例如触摸屏显示每个商品下单数量的商品列表 避免不必要地呈现组件子树, 执…

QT-小项目:连接MY SQL数据库实现登录(下一章实现登录注册账号和忘记密码功能)

一、环境准备 1、下载MYSQL 64位&#xff0c;安装完成&#xff0c;制作简易数据库教程如下&#xff1a; MY SQL安装 2、QT 编译器使用 二、实现工程目录&#xff08;基于上一章基础上&#xff09; 三、源程序增加内容如下&#xff1a; login.cpp 增加头文件&#xff1a; #in…

《TAM》论文笔记(上)

原文链接 [2005.06803] TAM: Temporal Adaptive Module for Video Recognition (arxiv.org) 原文代码 GitHub - liu-zhy/temporal-adaptive-module: TAM: Temporal Adaptive Module for Video Recognition 原文笔记 What&#xff1a; TAM: Temporal Adaptive Module for …

内网安全综合管理系统是什么 | 好用的内网安全管理系统有哪些

内网安全综合管理系统是指一种集成终端管理、网络管理、内容管理、资产管理等功能的综合性安全管理系统。它主要对内网上的主机进行统一安全管理&#xff0c;包括对网络主机用户操作实施监督控制&#xff0c;并对主机中的安全软件&#xff08;如主机入侵监测系统、主机防火墙和…

关于提高 PHP 性能

解锁 PHP 性能&#xff1a;优化你的 Web 应用 在当今数字化世界中&#xff0c;Web 应用的性能对用户体验至关重要。作为最流行的服务器端脚本语言之一&#xff0c;PHP 在构建 Web 应用方面拥有广泛的应用。然而&#xff0c;PHP 应用的性能优化仍然是许多开发者关注的焦点之一。…

5 Spring 事务管理

目录 1.概述 2.事务特性&#xff1a;ACID 3.Spring 框架的事务管理支持两种方式 编程式事务 申明式事务 4.Spring 事务管理 API 事务管理器接口 Spring 的回滚方式 事务定义接口 事务的四种隔离级别 事务的七种传播行为 5.事务注解例子&#xff1a; Transactianal…

springboot+vue+mybatis警情高发智能灯箱+PPT+论文+讲解+售后

时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;警情高发智能灯箱当然不能排除在外。警情高发智能灯箱是在实际应用和软件工程的开发原理之上&#xff0c;运用微信开发者、java语言以及SpringBo…

如何获得一个Oracle 23ai数据库(docker容器)

准确的说&#xff0c;是Oracle 23ai Free Developer版&#xff0c;因为企业版目前只在云上&#xff08;OCI和Azure&#xff09;和ECC上提供。 方法包括3种&#xff0c;本文介绍第3种&#xff1a; Virtual ApplianceRPM安装Docker 我已经有了一台Oracle Linux 8的虚机&#x…

python:做柱状图

import matplotlib.pyplot as plt # 数据 categories [A, B, C, D] values [23, 45, 56, 78] # 创建柱状图 plt.bar(categories, values) # 添加标题和标签 plt.title(柱状图示例) plt.xlabel(类别) plt.ylabel(数值) # 显示图形 plt.show() D:\software\新建文件夹\python\L…

力扣每日一题- 给植物浇水 II -2024.5.9

力扣题目&#xff1a;给植物浇水 II 题目链接: 2105.给植物浇水 II 题目描述 代码思路 根据题目内容&#xff0c;使用双指针从左右两边同时向中间移动&#xff0c;模拟浇水过程即可。 代码纯享版 class Solution {public int minimumRefill(int[] plants, int capacityA, …

java 文件表创建及前后端使用

表结构task_file 前端具体到业务表单 <el-form-item label"任务附件" prop"taskAttachment"><el-upload ref"upload" accept".jpg, .png, .txt, .xlsx, .doc, .docx, .xls, .pdf, .zip, .rar":action"upload.url" …

Go-Zero自定义goctl实战:定制化模板,加速你的微服务开发效率(四)

前言 上一篇文章带你实现了Go-Zero和goctl&#xff1a;解锁微服务开发的神器&#xff0c;快速上手指南&#xff0c;本文将继续深入探讨Go-Zero的强大之处&#xff0c;并介绍如何使用goctl工具实现模板定制化&#xff0c;并根据实际项目业务需求进行模板定制化实现。 通过本文…

videosapi开发微信管理系统

获取登录二维码&#xff1a; export interface Request {/*** 设备ID&#xff0c;首次登录传空&#xff0c;之后传接口返回的appId*/appId?: string;/*** 代理IP 格式&#xff1a;socks5://username:password123.2.2.2*/proxyIp?: string;/*** 地区*/regionId: string;[prop…

宋仕强论道之新质生产力

宋仕强论道之新质生产力&#xff0c;宋仕强说当前5G通信、人工智能、万物互联、工业互联网、数字经济、新能源技术和产业等领域正蓬勃发展&#xff0c;成为未来经济增长的重要推动力&#xff0c;也是目前提倡的新质生产力的重要组成部分。而这些领域的发展都离不开数据的采集、…