首页 > 其他分享 >数据结构之<图>的介绍

数据结构之<图>的介绍

时间:2023-12-18 22:31:54浏览次数:31  
标签:表示 Graph 介绍 算法 图中 图是 数据结构 节点

图(Graph)的概念:

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

1.图的基本组成元素:

  1. 节点(Vertex 或 Node): 表示图中的实体或对象。节点可以有不同的属性和值。在某些情况下,节点也被称为顶点。
  2. 边(Edge): 表示连接节点的关系。边可以是有向的(有方向性)或无向的(无方向性),也可以有权重或权值(表示边的成本、距离或其他度量)。

2.图的分类:

2.1.有向图(Directed Graph):

数据结构之<图>的介绍_连通图

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

2.2.无向图(Undirected Graph):

数据结构之<图>的介绍_连通图_02

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

2.3.连通图(Connected Graph):

数据结构之<图>的介绍_连通图_03

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

2.4.非连通图(Disconnected Graph):

数据结构之<图>的介绍_权重_04

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

2.5.加权图(Weighted Graph):

数据结构之<图>的介绍_Graph_05

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

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的前面。

标签:表示,Graph,介绍,算法,图中,图是,数据结构,节点
From: https://blog.51cto.com/xaye/8878869

相关文章

  • C# 10 完整特性介绍
    C#10完整特性介绍hez2010coreclrcontributor​关注他 你经常看C#话题的内容前言距离上次介绍C#10的特性已经有一段时间了,伴随着.NET6的开发进入尾声,C#10最终的特性也终于敲定了。总的来说C#10的更新内容很多,并且对类型系统做了不小......
  • 数据结构 —— 线性表、栈、队列
    一、算法复杂度 【2011】设n是描述问题规模的非负整数,下面的程序片段时间复杂度是()x=2;while(x<n/2)x=2*x;AO(log2(n))  BO(n) CO(nlog2(n)) DO(n^2) 答案:A解析:x=2^i=n/2i=log2(n/2) 【2012】求整数n(n>=0)的阶乘的算法......
  • 数据结构算法---二叉排序树
    二叉排序树(BinarySearchTree,BST),也称为二叉搜索树或二叉查找树,是一种经典的数据结构,它满足以下性质:对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值。对于树中的每个节点,其右子树中的所有节点的值都大于该节点的值。左子树和右子树也都是二叉排序树。基于这些性......
  • 数据结构算法---冒泡排序
    冒泡排序(BubbleSort)是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻两个元素并按照大小交换位置,直到整个列表排序完成。这种排序算法得名于越小的元素会经由交换慢慢"浮"到列表的顶端。下面是冒泡排序的基本步骤:从列表的第一个元素开始,比较它与下一个元素的大小。如果......
  • 数据结构与算法 第二章线性表(48课时课程笔记)Data Structure and Algorithms
    2.1线性表的类型定义一个线性表是n个数据元素的有限序列。 (1)结构初始化 InitList(&L) 构造一个空的线性表L。(2)销毁结构 DestroyList(&L)(3)引用型操作  (4)修改型操作  一个算法举例:假设有两个集合A和B分别用两个线性表LA和LB表示(即:线性表中的数据元素即为集......
  • gdb基本使用介绍
    GDB介绍GDB是GNUDebugger的简称,其作用是可以在程序运行时,检测程序正在做什么。GDB程序自身是使用C/C++程序编写的,但可以支持除C/Cpp之外很多编程语言的调试。GDB原生支持调试的语言包含:C/Cpp/D/Go/Object-C/OpenCLC/Fortran/Rust等等。使用GDB,我们可以方便地进行如下任务:如果......
  • 天猫商品详情接口 json 格式返回介绍
    天猫商品详情数据接口返回的JSON格式数据通常包含以下字段:num_iid:商品IDtitle:商品标题desc_short:商品简短描述price:商品价格total_price:商品总价(如有优惠券等)suggestive_price:推荐价格orginal_price:原价nick:卖家昵称num:库存数量detail_url:商品详情链接pic_url:商品图片链接brand:......
  • 45、Flink 的指标体系介绍及验证(2)-指标的scope、报告、系统指标以及追踪、api集成示例
    文章目录Flink系列文章一、Flink指标体系2、Scope范围1)、用户范围2)、系统范围SystemScope3)、所有变量列表4)、用户变量3、Reporter4、Systemmetrics1)、CPU2)、Memory3)、Threads4)、GarbageCollection5)、ClassLoader6)、Network7)、Defaultshuffleservice8)、Cluster9)、Availabili......
  • 45、Flink 的指标体系介绍及验证(3)- 完整版
    文章目录Flink系列文章一、Flink指标体系1、Registeringmetrics注册指标1)、指标类型2)、计数器3)、Gauge4)、Histogram5)、Meter2、Scope范围1)、用户范围2)、系统范围SystemScope3)、所有变量列表4)、用户变量3、Reporter4、Systemmetrics1)、CPU2)、Memory3)、Threads4)、GarbageColl......
  • 47、Flink 的指标报告介绍(graphite、influxdb、prometheus、statsd和datalog)及示例(jmx
    文章目录Flink系列文章一、MetricReporters1、概述及示例2、入门示例0)、特别说明1)、配置2)、验证3)、自定义的指标收集器3、基于标志符格式vs.基于tags格式4、Pushvs.Pull5、发送器1)、JMX2)、Graphite2)、InfluxDB4)、Prometheus5)、PrometheusPushGateway6)、StatsD7)、Datadog8)......