数据结构之<图>的介绍

图(Graph)的概念:
在数据结构中,图是由节点(顶点)和边组成的非线性数据结构。图用于表示不同对象之间的关系,其中节点表示对象,边表示对象之间的连接或关系。

1.图的基本组成元素:

  1. 节点(Vertex 或 Node): 表示图中的实体或对象。节点可以有不同的属性和值。在某些情况下,节点也被称为顶点。

  2. 边(Edge): 表示连接节点的关系。边可以是有向的(有方向性)或无向的(无方向性),也可以有权重或权值(表示边的成本、距离或其他度量)。

2.图的分类:

2.1.有向图(Directed Graph):

在这里插入图片描述

有向图是一种图,其中边有方向。也就是说,从一个节点到另一个节点的边具有明确的起点和终点。有向图中的边可以是单向的,也可以是双向的。

2.2.无向图(Undirected Graph):

在这里插入图片描述
无向图是一种图,其中边没有方向。也就是说,从一个节点到另一个节点的边没有明确的起点和终点。无向图中的边是双向的,表示节点之间的对等关系。

2.3.连通图(Connected Graph):

在这里插入图片描述
连通图是指图中任意两个节点之间都存在路径的图。也就是说,从图中的任意一个节点出发,都可以到达图中的其他所有节点。

2.4.非连通图(Disconnected Graph):

在这里插入图片描述
非连通图是指图中存在孤立的节点或者多个不相连的子图。也就是说,从某个节点出发,无法到达图中的其他某些节点。

2.5.加权图(Weighted Graph):

在这里插入图片描述
加权图是一种图,其中每条边都有一个权重或者值。这些权重可以表示节点之间的距离、成本、容量等。加权图用于解决一些需要考虑边的权重的问题,如最短路径问题、最小生成树问题等。

3.图的表示方式:

  1. 邻接矩阵(Adjacency Matrix): 用二维数组表示节点之间的连接关系。矩阵的行和列表示节点,矩阵元素表示节点之间是否存在边或边的权重。

  2. 邻接表(Adjacency List): 用链表、数组或字典等数据结构表示图中的节点及其相邻节点。每个节点记录其相邻节点的信息。

4.图的常见操作和算法:

  • 遍历(Traversal): 深度优先搜索(DFS)和广度优先搜索(BFS)是常用的图遍历算法,用于访问和搜索图中的节点和边。

  • 最短路径算法(Shortest Path Algorithms): 例如 Dijkstra 算法和 Bellman-Ford 算法,用于找到图中两个节点之间的最短路径。

  • 最小生成树算法(Minimum Spanning Tree Algorithms): 如 Prim 算法和 Kruskal 算法,用于找到连接图中所有节点的最小成本树形结构。

  • 拓扑排序(Topological Sorting): 用于有向无环图(DAG)中节点的线性排序,使得图中任何一对顶点u和v,若边(u, v)存在,则u排在v的前面。

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

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

相关文章

人生感悟 | 当前经济形势,给25~35岁的年轻人一点建议

哈喽,你好啊,我是雷工! 这两年经济情况怎么样呢?相信大家都有自己的感觉。 且不说网上看到的“裁员裁到大动脉”“设计院欠薪”等各种新闻。 说自己和家人的亲身经历吧,这两年经历了被拖欠工资、公司缩编、换工作、公…

Vue中插槽的使用

目录 一、默认插槽 (1)概念 (2)代码展示 (3)后备内容 二、具名插槽 (1)概念 (2)代码展示 三、作用域插槽 (1)概念 &#xff0…

一个 tomcat 下如何部署多个项目?附详细步骤

一个tomcat下如何部署多个项目?Linux跟windows系统下的步骤都差不多,以下linux系统下部署为例。windows系统下部署同理。 1 不修改端口,部署多个项目 清楚tomcat目录结构的应该都知道,项目包是放在webapps目录下的,那…

vue2 echarts不同角色多个类型数据的柱状图

前端代码&#xff1a; 先按照echarts插件。在页面里引用 import * as echarts from "echarts";设置div <div style"width:100%;height:250px;margin-top: 4px;" id"addressChart"></div>方法: addressEcharts() {const option {g…

RabbitMQ搭建集群环境、配置镜像集群、负载均衡

RabbitMQ集群搭建 Linux安装RabbitMQ下载安装基本操作命令开启管理界面及配置 RabbitMQ集群搭建确定rabbitmq安装目录启动第一个节点启动第二个节点停止命令创建集群查看集群集群管理 RabbitMQ镜像集群配置启用HA策略创建一个镜像队列测试镜像队列 负载均衡-HAProxy安装HAProxy…

【精选】计算机网络教程(第3章数据链路层)

目录 前言 第3章数据链路层 1、差错检测&#xff08;CRC&#xff09; 2、点对点协议&#xff08;了解应用场景&#xff09; 3、什么是碰撞域&#xff0c;什么是广播域 碰撞域&#xff08;Collision Domain&#xff09;&#xff1a; 广播域&#xff08;Broadcast Domain&a…

计算机组成原理学习(输入输出系统)

目录 输入输出系统&#xff08;i/o系统&#xff09; 一.现代计算机的结构 二.常见的&#xff08;I/O设备或者是外部设备&#xff09; ​ 三.主机如何与I/O设备进行交互 四.I/O控制方式简介 五.I/O系统的基本组成 输入输出系统&#xff08;i/o系统&#xff09; 一.现代计算…

一键安装下载3ds Max!别墅还是宫殿?3ds Max助你建造梦幻般的艺术建筑

不再浪费时间在网上寻找3ds Max的安装包了&#xff01;因为你所需要的一切都可以在这里找到&#xff01;作为一款全球领先的3D设计工具&#xff0c;3ds Max为创作者们带来了前所未有的便利和创作灵感。无论是建筑设计、影视特效还是游戏开发&#xff0c;3ds Max都能帮助你实现想…

C++——C++11(1)

时至今日&#xff0c;C标准已经到了C23&#xff0c;但是你要说哪一次提出的标准最经 典&#xff0c;那C11一定会被人提及&#xff0c;C11带来了数量可观的变化&#xff0c;其中包 含了约140个新特性&#xff0c;以及对C03标准中约600个缺陷的修正&#xff0c;这使得 C11更像是从…

一个神奇的Python库:Evidently,机器学习必备

Evidently 是一个面向数据科学家和机器学习工程师的开源 Python 库。它有助于评估、测试和监控从验证到生产的数据和 ML 模型。它适用于表格、文本数据和嵌入。 简介 Evidently 是一个开源的 Python 工具&#xff0c;旨在帮助构建对机器学习模型的监控&#xff0c;以确保它们的…

博客动态校验+静态校验二次开发方式

静态校验&#xff1a; 1&#xff1a;将需要静态校验的参数继承BaseReqeust类重写validate方法&#xff1a; 动态校验&#xff1a; 1&#xff1a;在需要校验的实现类上加&#xff1a; BizValidate注解 2&#xff1a;写一个校验类&#xff0c;方法命名规范为&#xff1a;需要校…

修改npm源码解决服务端渲染环境中localstorage报错read properties of undefined (reading getItem)

现象&#xff1a; 这个问题是直接指向了我使用的第三方库good-storage&#xff0c;这是一个对localStorage/sessionStorage做了简单封装的库&#xff0c;因为项目代码有一个缓存cache.ts有用到 原因分析&#xff1a; 从表象上看是storage对象找不到getItem方法&#xff0c; 但…

Android--Jetpack--数据库Room详解一

人生何须万种愁&#xff0c;千里云烟一笑收 一&#xff0c;定义 Room也是一个ORM框架&#xff0c;它在SQLite上提供了一个抽象层&#xff0c;屏蔽了部分底层的细节&#xff0c;使用对象对数据库进行操作&#xff0c;进行CRUD就像对象调用方法一样的简单。 二&#xff0c;角色介…

基于YOLOv8深度学习的路面标志线检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

docker容器-compose单机容器编排

目录 yaml文件使用的注意事项 yaml文件的基本数据结构 docker-compose单机容器编排 docker-compose的常用命令 安装docker-compose docker-compose部署nginx nginx文件 yml文件 docker-compose创建镜像和容器 docker-compose构建lnmp nginx文件 mysql文件 php文件…

华为组播配置案例

igmp-snooping主要用于生成二层组播表项&#xff0c;防止交换机全部接口都发组播报文 PC端配置&#xff1a; 组播源配置&#xff1a; R1 interface GigabitEthernet0/0/0 ip address 10.0.0.1 255.255.255.0 pim dm interface GigabitEthernet0/0/1 ip address 192.168.0…

UE5 C++(三)— 基本用法(生命周期、日志、基础变量)

文章目录 生命周期日志打印Outlog打印屏幕打印 基础变量类型FString、FName 和 FText&#xff0c;三者之间的区别 基础数据类型打印 忘记说了每次在Vscode修改后C脚本后&#xff0c;需要编译一下脚本&#xff0c;为了方便我是点击这里编译脚本 生命周期 Actor 生命周期官方文档…

年底总结-基于战略落地的年度经营计划

到了年底&#xff0c;今年不管经济如何&#xff0c;形势多么不好&#xff0c;这个月也要结束2023年了&#xff0c;在这个阶段最关键的是做好今年的总结以及明年的计划。 总结是为了更好地做明年的计划和形势的预判。 借用数据表作为工具&#xff0c;科学理性地对自身公司的经…

基于Java+Swingt学生信息管理系统

基于JavaSwing学生信息管理系统 一、系统介绍二、功能展示四、其他系统实现五、获取源码 一、系统介绍 1.用户登陆&#xff1a;在帮助按钮处&#xff0c;可以查看登陆账号及密码&#xff1a; 账号admin,密码123456 在未输入的情况下&#xff0c;会提示用户名不能为空&#xff…

广受好评的开源基础大模型最全梳理,你最钟意哪一个?

2023 年即将过去。一年以来&#xff0c;各式各样的大模型争相发布。当 OpenAI 和谷歌等科技巨头正在角逐时&#xff0c;另一方「势力」悄然崛起 —— 开源。 开源模型受到的质疑一向不少。它们是否能像专有模型一样优秀&#xff1f;是否能够媲美专有模型的性能&#xff1f; 迄…