数据结构——6.1 图的基本概念

第六章 图

6.1 图的基本概念

  • 概念
  1. 图的概念:G由点集V和边集E构成,记为G=(V,E),边集可以为空,但是点集不能为空

    ·注意:线性表可以是空表,树可以是空树,但图不可以是空,即V一定是非空集

  2. 无向图与有向图

    1. 无向图

      1. 无向边(简称边)

      2. 无序对,例如(a,b)=(b,a),表示a和b两个点相连

    2. 有向图

      1. 有向边(简称弧)

      2. 有序对,例如<v,w>,称为从顶点v指向顶点w的弧,其中v称为弧尾,w称为弧头,<v,w>≠<w,v>,

  3. 简单图与多重图(数据结构课程只探讨 简单图)

    1. 简单图(包含简单有向图、简单无向图)

      1. 不存在重复边

      2. 不存在顶点到自身的边

    2. 多重图

      1. 图G中某两个结点之间的边数多于一条

      2. 允许顶点通过同一条边和自己关联

  4. 顶点的度、入度、出度

    1. 对于无向图:

      1. 顶点v的度是指依附于该顶点的边的条数,记为TD(v)

      2. 无向图每条边贡献两个度,因此n条边的无向图总度数为2n

    2. 对于有向图:

      1. 入度是以顶点v为终点的有向边的数目,记为ID(v)

      2. 出度是以顶点v为起点的有向边的数目,记为OD(v)

      3. 顶点v的度等于其入度和出度之和,即TD(v) = ID(v) + OD(v)

      4. 有向图每个边贡献一个入度和一个出度,因此有向图总出度等于总入度等于边的个数

  5. 顶点与顶点的关系

    1. 路径:

      1. 顶点a到顶点b之间的一条路径是指顶点序列,acde…fgb

      2. 有向图的路径方向必须符合有向边的方向

      3. 有向图和无向图均有不存在路径的情况:

        1. 无向图一个孤立点没有任何边——没有到这点的路径

        2. 有向图一个点没有被任何弧头指到——没有路径

    2. 回路:第一个顶点和最后一个顶点相同的路径称为回路或环

    3. 简单路径:在路径序列中,顶点不重复出现的路径称为简单路径。

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

    5. 路径长度:路径上边的数目

    6. 点到点的距离:从顶点u出发到顶点v的最短路径若存在,则此路径的长度称为从u到v的距离,若从u到v根不不存在路径,则记该距离为无穷 (∞)

    7. 无向图中,若从顶点v到顶点w有路径存在,则称v和w是连通的

    8. 有向图中,若从顶点v到顶点w和从顶点w到顶点v之间都有路径,则称这两个顶点是强连通的

    9. 连通图:若无向图G中任意两个顶点都是连通的,则称图G为连通图,否则称为非连通图。

      1. 对于n个顶点的无向图G,若G是连通图,则最少有 n-1 条边

      2. 对于n个顶点的无向图G,若G是非连通图,则最多可能有条边

    10. 强连通图:若有向图中任何一对顶点都是强连通的,则称此图为强连通图

      1. 对于n个顶点的有向图G若G是强连通图,则最少有(n)条边(形成回路)

      2. 在这里插入图片描述

  6. 图的局部

    1. 子图:设有两个图G=(V,E)和G’=(V,E),若V是V的子集,且E’是E的子集,不存在边两端的任何一端没有点的情况,则称G’是G的子图

    2. 生成子图:包含原图的所有顶点,和部分边的子图

    3. 连通分量:无向图中的极大连通子图(子图必须连通并且包含尽可能多的顶点和边)

    4. 强连通分量:有向图中的极大强连通子图(子图必须连通并且包含尽可能多的边)

    5. 生成树:连通图的生成树是包含图中全部顶点的一个极小连通子图

      1. (保持连通且边尽可能少)

      2. 若图中顶点数为n,则它的生成树含有 n-1条边。

      3. 对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一个回路。

      4. 应用场景:用最少的道路(边)树,连接所有地区(点)

    6. 生成森林:在非连通图中,连通分量的生成树构成了非连通图的生成森林

    7. 边的权:在一个图中,每条边都可以标上具有某种含义的数值,该数值称为该边的权值。

    8. 带权图/网:边上带有权值的图称为带权图,也称网。

    9. 带权路径长度:当图是带权图时,路径上所有边的权值之和,称为该路径的带权路径长度

  7. 几种特殊形态的图

    1. 无向完全图:无向图中任意两个顶点之间都存在边

      1. 若无向图的顶点数|V|=n,则在这里插入图片描述
    2. 有向完全图:有向图中任意两个顶点之间都存在方向相反的两条弧

      1. 若有向图的顶点数|V|=n,则在这里插入图片描述
    3. 稀疏图与稠密图:边数很少的图称为稀疏图反之称为稠密图

    4. 树:不存在回路,且连通的无向图

      1. n个顶点的树,必有n-1条边

      2. n个顶点的图,若边数大于n-1,则一定有回路

      3. 树是连通图(无向图)

    5. 有向树:1个顶点的入度为0,其余顶点的入度均1有向图,称为有向树

      1. 有向树是有向图,但不是强连通图

在这里插入图片描述

  • 理解
  1. 连通图:连起来就行,最少的马路连通最多的村子

  2. 完全图:每个点,都除他以外的所有点,完全连接

  • 技巧
  1. 当有n个点,若边数等于n-1,则无环连通,但若边数超过n-1,则有环未必连通

  2. 有n个顶点的无向图,边数v的几个临界值:

    1. 如果v<n-1,一定不是连通图

    2. 如果n-1≤v< C n − 1 2 + 1 C_{n - 1}^{2} + 1 Cn12+1,则可能是连通图,也可能不是

    3. 如果v> C n − 1 2 + 1 C_{n - 1}^{2} + 1 Cn12+1,则一定是连通图(确保n个顶点连通的思路:n-1个顶点形成完全图,再加上一个边,那么一定连通)

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

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

相关文章

【MATLAB】GA_BP神经网络回归预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 GA_BP神经网络回归预测算法结合了遗传算法&#xff08;Genetic Algorithm, GA&#xff09;和BP神经网络&#xff08;Backpropagation Neural Network, BPNN&#xff09;&#xff0c;用于解…

蓝桥杯嵌入式第8届真题(完成) STM32G431

蓝桥杯嵌入式第8届真题(完成) STM32G431 题目 分析和代码 对比第六届和第七届&#xff0c;这届的题目在逻辑思维上确实要麻烦不少&#xff0c;可以从题目看出&#xff0c;这届题目对时间顺序的要求很严格&#xff0c;所以就可以使用状态机的思想来编程&#xff0c;拿到类似题…

Python基于大数据的电影预测分析系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

介绍 MSTest Runner – CLI、Visual Studio 等

作者&#xff1a;Amaury Lev Marco Rossignoli Jakub Jareš 排版&#xff1a;Alan Wang 我们很高兴推出 MSTest 运行器&#xff0c;这是一款全新的轻量级 MSTest 测试运行器。这个新的运行器使测试更加便携和可靠&#xff0c;运行速度更快&#xff0c;并且具有可扩展性&#x…

leetcode 461. 汉明距离

比较简单的一题&#xff0c;先对两个整数进行异或操作&#xff0c;会将两个整数二进制形式中各个数字进行异或操作&#xff0c;不同的数字则为1&#xff0c;再通过移位操作统计得到的二进制数中为1的个数&#xff0c;即为所求。 Java代码如下&#xff1a; class Solution {pub…

Android SystemConfig相关

SystemConfig在哪里初始化 它声明在PackageManagerService类的静态方法main()中。在该方法中间定义Injector类对象时&#xff0c;作为它的构造参数。它是调用的SystemConfig.getInstance()实现初始化&#xff0c;之后能通过Injector类对象的getSystemConfig()得到SystemConfig类…

计算机网络——网络安全

计算机网络——网络安全 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; [跳转到网站](https://www.captainbed.cn/qianqiu) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 网络安全何…

PyTorch深度学习实战(26)——多对象实例分割

PyTorch深度学习实战&#xff08;26&#xff09;——多对象实例分割 0. 前言1. 获取并准备数据2. 使用 Detectron2 训练实例分割模型3. 对新图像进行推断小结系列链接 0. 前言 我们已经学习了多种图像分割算法&#xff0c;在本节中&#xff0c;我们将学习如何使用 Detectron2 …

单页404源码

<!doctype html> <html> <head> <meta charset"utf-8"> <title>简约 404错误页</title><link rel"shortcut icon" href"./favicon.png"><style> import url("https://fonts.googleapis.co…

C# 字体大小的相关问题

设置字体大小无法这么写&#xff0c; button1.Font.Size 20&#xff1b; 这个是只读属性&#xff1b; 把字体大小改为16&#xff0c; button2.Font new Font(button2.Font.Name, 16); 程序运行的时候先看一下窗体和控件的默认字体尺寸&#xff0c;都是9&#xff1b;然后点b…

jsp教务管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 教务管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

人脸追踪案例及机器学习认识

1.人脸追踪机器人初制 用程序控制舵机运动的方法与机械臂项目完全相同。 由于摄像头的安装方式为上下倒转安装&#xff0c;我们在编写程序读取图像时需使用 flip 函数将 图像上下翻转。 现在&#xff0c;只需要使用哈尔特征检测得到人脸在图像中的位置&#xff0c;再指示舵机运…

Docker容器输入汉字触发自动补全

一、描述 输入汉字自动触发补全&#xff1a; Display all 952 possibilities? (y or n)是因为容器中没有中文字符集和中文字体导致的&#xff0c;安装中文字体&#xff0c;并设置字符集即可。 二、解决 1、安装字符集 &#xff08;1&#xff09;查看系统支持的字符集 lo…

使用Cargo创建、编译与运行Rust项目

在 Rust 开发中&#xff0c;Cargo 是一个非常重要的工具&#xff0c;它负责项目的构建、管理和依赖管理。以下是如何使用 Cargo 创建、编译和运行 Rust 项目的详细步骤。 1. 创建新项目 首先确保你已经在计算机上安装了 Rust 和 Cargo。然后&#xff0c;在命令行中输入以下命…

HarmonyOS 横屏调试与真机横屏运行

我们有些程序 需要横屏才能执行出效果 我们在预览器上 点击如下图指向出 就进入一个横屏调试了 但 我们真机运行 依旧是竖着的 我们如下图 找到 module.json5 在 abilities 下面 第一个对象 最下面 加上 "orientation": "landscape"然后 我们再真机运…

【深度学习】基于多层感知机的手写数字识别

案例2&#xff1a;构建自己的多层感知机: MNIST手写数字识别 相关知识点: numpy科学计算包&#xff0c;如向量化操作&#xff0c;广播机制等 1 任务目标 1.1 数据集简介 ​ MNIST手写数字识别数据集是图像分类领域最常用的数据集之一&#xff0c;它包含60,000张训练图片&am…

算法沉淀——位运算(leetcode真题剖析)

算法沉淀——位运算 常用位运算总结1.基础位运算2.确定一个数中第x位是0还是13.将一个数的第x位改成14.将一个数的第x位改成05.位图6.提取一个数最右边的17.删掉一个数最右边的18.异或运算9.基础例题 力扣题目讲解01.面试题 01.01. 判定字符是否唯一02.丢失的数字03.两整数之和…

opencv mat用法赋值克隆的操作和一些基本属性

//Mat基本结构 (头部 数据部分) //赋值的话 就是修改了指针位置 但还是指向了原来数据 并没创建数据 本质上并没有变 //只有克隆或者拷贝时 它才会真正复制一份数据 //代码实现 //创建方法 - 克隆 //Mat m1 src.clone(); //复制 //Mat m2; //src.copyTo(m2); //赋值法 …

Git的基础操作指令

目录 1 前言 2 指令 2.1 git init 2.2 touch xxx 2.3 git status 2.4 git add xxx 2.5 git commit -m xxxx 2.5 git log及git log --prettyoneline --all --graph --abbrev-commit 2.6 rm xxx 2.7 git reset --hard xxx(含小技巧) 2.8 git reflog 2.9 mv xxx yyy 1…

Verilog刷题笔记30

题目&#xff1a; You are provided with a BCD one-digit adder named bcd_fadd that adds two BCD digits and carry-in, and produces a sum and carry-out. 解题&#xff1a; module top_module( input [399:0] a, b,input cin,output cout,output [399:0] sum );reg [99…