【408考点之数据结构】图的基本概念

图的基本概念

图是一种重要的数据结构,它由顶点和顶点之间的边组成。图广泛应用于计算机科学、工程、数学和其他领域,用于表示和解决各种复杂问题。

一、图的定义
  1. 图的基本定义

    • 图 (G) 由一个顶点集合 (V(G)) 和一个边集合 (E(G)) 组成,记为 (G(V, E))。
    • 顶点(Vertex):图中的一个节点。
    • 边(Edge):连接两个顶点的连线。
  2. 边的类型

    • 无向边:没有方向性的边,用双向箭头表示,例如 ( (v1, v2) )。
    • 有向边:有方向性的边,用单向箭头表示,例如 ( <v1, v2> )。
二、图的分类
  1. 按边的方向分类

    • 无向图:边没有方向性的图。
    • 有向图:边有方向性的图。
  2. 按边的权值分类

    • 无权图:边没有权值的图。
    • 加权图:边有权值的图,通常表示边的长度、费用等。
三、图的表示方法
  1. 邻接矩阵

    • 用一个二维数组表示顶点之间的连接关系。
    • 对于无向图,矩阵是对称的;对于有向图,矩阵不一定对称。
    • 优点:简单直观,易于实现。
    • 缺点:空间复杂度高,对于稀疏图不适用。
    #define MAXVEX 100
    typedef struct {int vexs[MAXVEX];            // 顶点表int arc[MAXVEX][MAXVEX];     // 邻接矩阵int numVertexes, numEdges;   // 图中当前的顶点数和边数
    } MGraph;
    
  2. 邻接表

    • 每个顶点对应一个链表,链表中的节点表示与该顶点相连的其他顶点。
    • 优点:节省空间,适用于稀疏图。
    • 缺点:查找顶点之间的边不如邻接矩阵方便。
    typedef struct EdgeNode {        // 边表结点int adjvex;                  // 邻接点域,存储该顶点对应的下标int weight;                  // 用于存储权值,对于非网图可以不需要struct EdgeNode *next;       // 链域,指向下一个邻接点
    } EdgeNode;typedef struct VertexNode {      // 顶点表结点int data;                    // 顶点域,存储顶点信息EdgeNode *firstEdge;         // 边表头指针
    } VertexNode, AdjList[MAXVEX];typedef struct {AdjList adjList;int numVertexes, numEdges;   // 图中当前顶点数和边数
    } GraphAdjList;
    
四、图的基本性质
    • 无向图中,顶点的度是与其相连的边的条数。
    • 有向图中,顶点的出度是其出边的条数,入度是其入边的条数。
  1. 路径和回路

    • 路径:从一个顶点到另一个顶点所经过的顶点序列。
    • 简单路径:路径中不包含重复顶点。
    • 回路:路径的起点和终点是同一个顶点。
  2. 连通性

    • 无向图中,如果任意两个顶点之间存在路径,则该图是连通的。
    • 有向图中,如果任意两个顶点之间存在双向路径,则该图是强连通的。
五、图的应用

图的应用非常广泛,以下是一些常见的应用场景:

  1. 社交网络分析:用图表示用户及其关系。
  2. 交通网络:用图表示城市和道路。
  3. 通信网络:用图表示网络节点和通信线路。
  4. 电路设计:用图表示电路元件和连接关系。

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

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

相关文章

微信公众号写作时必备的AI提示词(也称为指令或Prompt)

猫头虎 &#x1f42f; 微信公众号写作时必备的AI提示词&#xff08;也称为指令或Prompt&#xff09; &#x1f389; 大家好&#xff0c;我是猫头虎&#xff0c;科技自媒体博主。今天&#xff0c;我们来聊聊如何利用AI提示词&#xff0c;打造出爆款的微信公众号文章。&#x1…

Win10扩充C盘(把其他盘存储空间分给C盘)

C盘虽然没有安装任何软件&#xff0c;但无奈安装某些软件&#xff08;例如VS&#xff0c;QuarC等&#xff09;总会占用C盘容量&#xff0c;且C盘内存很小&#xff08;只有60G左右&#xff09;&#xff0c;看着D盘的三四十空闲内存&#xff0c;决定把D盘内存分给C盘30G&#xff…

css持续学习

一、样式层叠 当一个css样式发生冲突时&#xff0c;比如多处给一个字体设置了不同的颜色&#xff0c;这个时候就需要样式层叠了&#xff0c;它会进行三种比较 比较重要性 重要性从高到低&#xff1a; 1.带有 important 的作者样式&#xff08;作者样式就是开发者写的样式&…

【Red Hat 7.9---详细安装Oracle 11g】---图形化界面方式

原文&#xff1a;https://blog.csdn.net/qq_41840843/article/details/131198718?spm1001.2014.3001.5501 &#x1f53b; 一、安装前规划 规划项(本环境)描述操作系统版本Red Hat Enterprise Linux Server release 7.9 (Maipo)主机名db-oracle数据库版本Oracle 11gIp规划192.…

【毛毛虫案例-重力 Objective-C语言】

一、接下来,我们给这个毛毛虫,添加一下重力 1.把我们之前的代码,复制粘贴一份儿,改个名字,叫做:17-毛毛虫案例-重力, 重力的话,实际上,就比较简单了啊,那我们重力的话,去添加的时候,我也要在外面,去添加, 重力的话,叫做啥,UIGravityBehavior,啊, UIGravity…

Thinkphp/Laravel高校竞赛管理系统的设计与实现_9pi7u

高校竞赛管理&#xff0c;其工作流程繁杂、多样、管理复杂与设备维护繁琐。而计算机已完全能够胜任高校竞赛管理工作&#xff0c;而且更加准确、方便、快捷、高效、清晰、透明&#xff0c;它完全可以克服以上所述的不足之处。这将给查询信息和管理带来很大的方便&#xff0c;从…

时序约束(一):时钟的约束

目录 一、时钟约束的目的 二、约束工程项目 三、主时钟和生成时钟 四、主时钟约束 五、生成钟约束 一、时钟约束的目的 之前的文章对时序分析的基本原理做了介绍&#xff0c;我们会发现时序分析离不开时钟信号。对于时序分析工具来说同样如此&#xff0c;分析工具需要我…

【漏洞复现】用友GRP-U8——SQL注入

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 用友GRP-U8是一款企业管理软件&#xff0c;其系统dialog_moreUs…

财务RPA案例研究——分析成功的财务RPA实施案例

现代社会正加速向数字时代转型&#xff0c;数字技术以崭新的模式全面融入各行业领域。为顺应新一轮科技革命和产业变革趋势&#xff0c;越来越多的企业不断深化应用大数据、云计算、人工智能等新一代信息技术&#xff0c;积极迎接数字化转型&#xff0c;而RPA技术由于能够以自动…

常用组件详解(二):torch.nn.Flatten、torch.flatten()

文章目录 torch.nn.Flattentorch.flatten() 官方API文档&#xff1a;点击跳转。torch.nn.Flatten是Pytorch提供的类&#xff0c;常用于将输入数据进行展平&#xff0c;而torch.flatten()函数与之功能相同。 torch.nn.Flatten 类初始化方式&#xff1a; torch.nn.Flatten(star…

React学习总结

一、React是什么 React是用于构建用户界面的JS库&#xff0c;是一个将数据渲染为HTML视图的开源JS库 为什么学&#xff1f; &#xff08;1&#xff09;原生JS操作DOM繁琐&#xff0c;效率低 &#xff08;2&#xff09;使用JS直接操作DOM&#xff0c;浏览器会进行大量的重绘…

算法基础详解

大O记法 为了统一描述&#xff0c;大O不关注算法所用的时间&#xff0c;只关注其所用的步数。 比如数组不论多大&#xff0c;读取都只需1步。用大O记法来表示&#xff0c;就是&#xff1a;O(1)很多人将其读作“大O1”&#xff0c;也有些人读成“1数量级”。一般读成“O1”。虽…

Spring Boot中的定时任务调度

Spring Boot中的定时任务调度 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨如何在Spring Boot应用中实现定时任务调度&#xff0c;这在实际…

友力科技广州数据中心搬迁

搬迁工作内容 1.搬迁技术工作 1)确定机房搬迁的负责人以及负责人的联系方式&#xff0c;保证在搬迁的过程中统一指挥管理。 2)确定服务器的数量&#xff0c;服务器的型号&#xff0c;服务器的配置等&#xff0c;如有需要&#xff0c;联系相关服务器的供货商或者厂家提供技术支持…

PDF 如何高效的转换成 markdown

为什么需要把 PDF 转换成 Markdown 格式 在处理PDF文件时&#xff0c;将其转换为Markdown文件格式有以下几个主要原因&#xff1a; 结构化和可读性&#xff1a;Markdown通过识别结构元素&#xff08;如标题、标头、子标题、表格和图像&#xff09;来指定文档的固有结构&#xf…

【极速入门版】编程小白也能轻松上手Comate AI编程插件

文章目录 概念使用错误检测与修复能力API生成代码生成json格式做开发测试 在目前的百模大战中&#xff0c;AI编程助手是程序员必不可少的东西&#xff0c;市面上琳琅满目的产品有没有好用一点的&#xff0c;方便一点的呢&#xff1f;今天工程师令狐向大家介绍一款极易入门的国产…

容易混淆的ITAM与CMDB

在信息技术管理领域&#xff0c;IT资产管理&#xff08;ITAM&#xff09;和配置管理数据库&#xff08;CMDB&#xff09;是两个至关重要的工具。尽管它们在某些方面存在交集&#xff0c;但各自具备独特的功能和应用场景。本文将深入探讨ITAM和CMDB的概念、功能、优势&#xff0…

Linux内核 -- 多核操作之on_each_cpu函数实现与使用

使用 on_each_cpu 在多核系统中执行对称操作 背景介绍 在多核系统中&#xff0c;有时需要在每个 CPU 上执行特定的操作。这种操作需要确保每个 CPU 都能执行相同的函数&#xff0c;以实现对称的处理。在 Linux 内核中&#xff0c;提供了一个标准函数 on_each_cpu&#xff0c;…

mysql中in参数过多优化

优化方式概述 未优化前 SELECT * FROM rb_product rb where sku in(1022044,1009786)方案2示例 public static void main(String[] args) {//往list里面设置3000个值List<String> list new ArrayList<>();for (int i 0; i < 3000; i) {list.add(""…

python-docx 获取页面大小、设置页面大小(纸张大小)

本文目录 前言一、docx纸张大小介绍1、document.xml① 关于 document.xml 的一些知识点② 纸张大小在哪里③ 纸张大小都有啥④ EMU对应的尺寸列表二、获取docx纸张大小1、完整代码2、运行效果图三、python为docx设置纸张大小1、完整代码2、效果图前言 今天的这边文章,我们来说…