4. 图与网络模型及方法

图论起源于18 世纪。第一篇图论论文是瑞士数学家欧拉于1736 年发表的“哥尼斯堡的七座桥”。1847 年,克希霍夫为了给出电网络方程而引进了“树”的概念。1857年,凯莱在计数烷CnH2n+2CnH2n+2C_nH_{2n + 2}的同分异构物时,也发现了“树”。哈密尔顿于 1859 年提出“周游世界”游戏,用图论的术语,就是如何找出一个连通图中的生成圈、近几十年来,由于计算机技术和科学的飞速发展,大大地促进了图论研究和应用,图论的理论和方法已经渗透到物理、化学、通讯科学、建筑学、运筹学,生物遗传学、心理学、经济学、社会学等学科中。

图论为任何一个包含了一种二元关系的离散系统提供了一个数学模型,借助于图论的概念、理论和方法,可以对该模型求解。哥尼斯堡七桥问题就是一个典型的例子。在哥尼斯堡有七座桥将普莱格尔河中的两个岛及岛与河岸联结起来,问题是要从这四块陆地中的任何一块开始通过每一座桥正好一次,再回到起点。图1 哥尼斯堡七桥问题当然可以通过试验去尝试解决这个问题,但该城居民的任何尝试均未成功。欧拉为了解决这个问题,采用了建立数学模型的方法。他将每一块陆地用一个点来代替,将每一座桥用连接相应两点的一条线来代替,从而得到一个有四个“点”,七条“线”的“图”。问题成为从任一点出发一笔画出七条线再回到起点。欧拉考察了一般一笔画的结构特点,给出了一笔画的一个判定法则:这个图是连通的,且每个点都与偶数线相关联,将这个判定法则应用于七桥问题,得到了“不可能走通”的结果,不但彻底解决了这个问题,而且开创了图论研究的先河。

4.1 图的基本概念与数据结构

4.1.1 基本概念

直观第讲,对于平面上的n个点,把其中一些点对用曲线或者直线连接起来,不考虑点的位置与连线曲直长短,这样形成的一个关系结构就是一个图。记成 G=(V,E)G=(V,E)G = (V, E), VVV是以上述点为元素的顶点集,E" role="presentation" style="position: relative;">EEE是以上述连线为元素的边集。

各条边都加上方向的图称为有向图,否则称为无向图。如果有的边有方向,有的边无方向,则称为混合图。任两顶点间最多有一条边,且每条边的两个端点皆不重合的图,称为简单图。如果图的两顶点之间有边相连,则称此两顶点相邻,每一对顶点都相邻的图称为完全图,否则称为非完全图。完全图记为K|V|K|V|K_{|V|}。

若V=X⋃Y,X⋂Y=∅V=X⋃Y,X⋂Y=∅V = X \bigcup Y, X \bigcap Y = \emptyset,|X|⋅|Y|≠0|X|⋅|Y|≠0|X|\cdot |Y| \neq 0 (这里|X||X||X|表示顶点集XXX中元素的个数),且X" role="presentation" style="position: relative;">XXX中无相邻的顶点对,YYY中亦然,则称图G" role="presentation" style="position: relative;">GGG为二分图;特别地,若对任意u∈Xu∈Xu \in X,uuu与Y" role="presentation" style="position: relative;">YYY中每个顶点相邻,则称图GGG为完全二分图,记为K|X|,|Y|" role="presentation" style="position: relative;">K|X|,|Y|K|X|,|Y|K_{|X|,|Y|}。

设v∈Vv∈Vv \in V是边e∈Ee∈Ee \in E的端点,则称vvv与e" role="presentation" style="position: relative;">eee关联,与顶点vvv关联的边数称为该顶点的度,记为d(v)" role="presentation" style="position: relative;">d(v)d(v)d(v),度为奇数的顶点称为奇顶点,度为偶数的顶点称为偶顶点。可以证明∑v∈V(G)d(v)=2|E|∑v∈V(G)d(v)=2|E|\sum_{v\in V(G)}d(v) = 2|E|,即所有顶点的度数之和为边数的2倍,且由此可以知道奇顶点的总数是偶数。

设W=v0e1v1e2...ekvkW=v0e1v1e2...ekvkW = v_0e_1v_1e_2...e_kv_k,其中ei∈E,1≤i≤k,vj∈V,0≤j≤kei∈E,1≤i≤k,vj∈V,0≤j≤ke_i \in E, 1 \le i \le k, v_j \in V, 0 \le j \le k, eieie_i与vi−1vi−1v_{i - 1}和viviv_i关联,称WWW是图G" role="presentation" style="position: relative;">GGG的一条道路,kkk为路长,v0" role="presentation" style="position: relative;">v0v0v_0为起点,vkvkv_k为终点;各边相异的道路称为;各顶点相异的道路称为轨道。若WWW是一轨道,则可记为P(v0,vk)" role="presentation" style="position: relative;">P(v0,vk)P(v0,vk)P(v_0, v_k);起点与终点重合的道路称为回路。起点与终点重合的轨道称为,即对轨道P(v0,vk)P(v0,vk)P(v_0,v_k),当v0=vkv0=vkv_0 = v_k时称为一圈;图中任两顶点之间都存在道路的图,称为连通图。图中含有所有顶点的轨道称为Hamilton轨,闭合的Hamilton轨道称为Hamilton圈;含有Hamilton圈的图称为Hamilton图

称两定点u,vu,vu, v分别为起点和终点的最短轨道之长为顶点u,vu,vu, v的距离;在完全二分图K|X|,|Y|K|X|,|Y|K_{|X|, |Y|}中,XXX中两顶点之间的距离为偶数,X" role="presentation" style="position: relative;">XXX中的顶点与YYY中的顶点的距离为奇数。

赋权图是指每条边都有一个(或者多个)实数对应的图,这个(些)实数称为这条边的权(每条边可以具有多个权)。赋权图在实际问题中非常有用。根据不同的实际情况,权数的含义可以各不相同。例如,可用权数代表两地之间的实际距离火车行车时间,也可用权数代表某工序所需的加工时间等。

4.1.2 图与网络的数据结构

这里介绍计算机上用来描述图与网络的两种主要表示方法:邻接矩阵表示法稀疏矩阵表示法。在下面数据结构的讨论中,首先假设G=(V,E)" role="presentation" style="position: relative;">G=(V,E)G=(V,E)G = (V,E)是一个简单无向图,顶点集合V=v1,...vnV=v1,...vnV = {v_1,...v_n},边集E=e1,...emE=e1,...emE = {e_1, ...e_m},记为|V|=n,|E|=m|V|=n,|E|=m|V| = n, |E| = m。

1. 邻接矩阵表示法:

邻接矩阵是表示顶点之间相邻关系的矩阵,邻接矩阵记为W=(wij)n×nW=(wij)n×nW = (w_{ij})_{n \times n},当GGG为赋权图时,有:

(3)wij={权值,当vi与vj之间有边时;0或者∞,当vi与vj之间无边时." role="presentation">wij={权值,0或者∞,当vi与vj之间有边时;当vi与vj之间无边时.(3)(3)wij={权值,当vi与vj之间有边时;0或者∞,当vi与vj之间无边时.

\begin{equation} w_{ij} = \left\{ \begin{array}{ll} 权值, & \textrm{当$v_i$与$v_j$之间有边时;}\\ 0或者\infty, & \textrm{当$v_i$与$v_j$之间无边时.} \end{array} \right. \end{equation}

当GGG为非赋权图时,有:

(4)wij={1,当vi与vj之间有边时;0,当vi与vj之间无边时." role="presentation">wij={1,0,当vi与vj之间有边时;当vi与vj之间无边时.(4)(4)wij={1,当vi与vj之间有边时;0,当vi与vj之间无边时.

\begin{equation} w_{ij} = \left\{ \begin{array}{ll} 1, & \textrm{当$v_i$与$v_j$之间有边时;}\\ 0, & \textrm{当$v_i$与$v_j$之间无边时.} \end{array} \right. \end{equation}

采用邻接矩阵表示图,直观方便,通过查看邻接矩阵元素的值可以很容易地查找图中任意两个顶点viviv_i和vjvjv_j之间有无边,以及边上的权重。当图的边数mmm远小于顶点数n" role="presentation" style="position: relative;">nnn时,邻接矩阵表示法会造成很大的空间浪费。

2. 稀疏矩阵表示法:

稀疏矩阵是指矩阵中零元素很多,非零元素很少的矩阵。对于稀疏矩阵,只要存放非零元素的行标,列标,非零元素的值即可,可以按如下方式存储:

(非零元素的行地址,非零元素的列地址),非零元素的值。

在Matlab中,无向图和有向图邻接矩阵的使用上有很大差异。

对于有向图,只要写出邻接矩阵,直接使用Matlab的sparse命令,就可以将邻接矩阵转化为稀疏矩阵的表示方式。

对于无向图,由于邻接矩阵是对称阵,Matlab只需使用邻接矩阵的下三角元素,即Matlab只存储邻接矩阵下三角元素中的非零元素。

稀疏矩阵只是一种存储格式。Matlab中,普通矩阵使用sparse命令变成稀疏矩阵,稀疏矩阵使用full命令变成普通矩阵。

4.2 最短路径问题

4.2.1 两个指定顶点之间的最短路径

问题如下:给出了一个连接若干个城镇的铁路网络,在这个网络的两个指定城镇间,找一条最短铁路线。

构造赋权图G=(V,E,W)G=(V,E,W)G = (V, E, \textbf{W})。其中,顶点集V={v1,...vn}V={v1,...vn}V = \{v_1, ...v_n\}表示各个小城镇;EEE为边的集合;邻接矩阵W=(wij)n×n" role="presentation" style="position: relative;">W=(wij)n×nW=(wij)n×n\textbf{W} = (w_{ij})_{n\times n}表示顶点viviv_i和vjvjv_j之间直通铁路的距离,若顶点viviv_i和vjvjv_j之间无铁路,则wij=∞wij=∞w_{ij} = \infty。问题就是求赋权图GGG中指定的两个顶点u0" role="presentation" style="position: relative;">u0u0u_0和v0v0v_0之间具有最小权的路径。这条路径称为u0u0u_0和v0v0v_0之间的最短路径,它的权称为u0u0u_0和v0v0v_0之间的距离,也可以被记为d(u0,v0)d(u0,v0)d(u_0, v_0)。

求最短路径已有成熟的算法,如Dijkstra算法,其基本思想是按照距离u0u0u_0从近到远为顺序,依次求得u0u0u_0到GGG的各个顶点的最短路径,直到v0" role="presentation" style="position: relative;">v0v0v_0(或者直至GGG的所有顶点),算法结束。为避免重复并保留每一步的计算信息,采用了标号算法。下面是该算法的伪码描述。

(1)令l(u0)=0" role="presentation" style="position: relative;">l(u0)=0l(u0)=0l(u_0) = 0,对v≠u0v≠u0v \neq u_0,令l(v)=∞,S0={u0},i=0l(v)=∞,S0={u0},i=0l(v) = \infty, S_0 = \{u_0\}, i = 0。

(2)

[经典模型] 4. 图与网络模型及方法相关推荐

  1. 图与网络模型及方法(二)

    在我图与网络模型及方法(一)的文章中介绍了图论相关模型与方法的原理,这篇文章将详细介绍一些经典的应用问题. python中有个专门处理图.网络相关问题的库:networkx,以下部分应用代码实现部分给 ...

  2. 【沐风老师】3dMax模型贴图贴画插件使用方法详解

    3dMax模型贴图贴画插件使用方法 3dMax模型贴图贴画插件(3dmax贴花放置器),是在3dMax对象上放置贴花时使用的一种工具,可以帮助你加快工作速度.现代化的用户界面,能够保留贴花的纵横比.捕 ...

  3. 数学建模——图与网络模型及方法(一)

    目录 基本概念 MATLAB工具箱使用 最短路径算法 固定起点的最短路(Dijkstra算法) 所有顶点对之间的最短路Floyd算法 0-1整数规划方法 基本概念 图,就是由一些点和这些点之间的连线组 ...

  4. 数学建模——图与网络模型及方法(二)

    目录 基本概念 求取最小生成树 着色问题 最大流问题 最小费用流问题 旅行商问题 基本概念 连通的无圈图称为树.例如: 生成树:若图G的生成子图H是树,则称H为G的生成树或支撑树.边权之和最小的生成树 ...

  5. html5 图形水平运动,搞明白这几张图,物理经典模型动图演示

    要想把物理学好,先要把简单的概念弄懂.简单的题目做会. 一是因为简单的东西容易,这会增强学生学习的信心: 二是因为更关键的是简单的东西往往包含最基本的知识很理念,简单的概念和规律是构成复杂现象的基础和 ...

  6. 图与网络模型:经典问题、基本概念、表示方法、连通图

    图&网络系列博文: [1]图与网络模型及方法:图与网络的基本概念 [2]图&网络模型应用-最短路径问题 [3]树:基本概念与最小生成树 [4]匹配问题: 匈牙利算法 .最优指派.相等子 ...

  7. 【深度学习】深度学习模型中的信任危机及校正方法

    ‍ ‍作者: 北邮 GAMMA Lab 硕士生 刘洪瑞,副教授 王啸 1 前言 深度学习在计算机视觉.自然语言处理.数据挖掘等诸多研究领域中的潜力被广泛认可,在目标检测.语音识别.医疗检测.金融欺诈检 ...

  8. [刷题记录] luogu网络流24题 及 网络流心得体会 及 经典模型不定期更新

    文章目录 信息汇总表格 飞行员配对方案问题 分配问题 运输问题 数字梯形问题 最小路径覆盖问题 魔术球问题 圆桌问题 试题库问题 深海机器人问题 航空路线问题 火星探险问题 太空飞行计划问题 方格取数 ...

  9. 图卷积神经网络(part3)--三个经典谱域图卷积模型

    学习笔记,仅供参考,有错必究 文章目录 三个经典谱域图卷积模型 概述 SCNN SCNN的缺点 ChebNet GCN 三个经典谱域图卷积模型 概述 三个图谱卷积模型(SCNN.ChebNet.GCN ...

  10. 基于空间方法的图神经网络模型_用于时空图建模的图神经网络模型 Graph WaveNet | 课程上新...

    课程概要 本课程来自集智学园图网络论文解读系列活动. 是对论文<Graph WaveNet for Deep Spatial-Temporal Graph Modeling>的解读. 时空 ...

最新文章

  1. sqlsever无法重新启动计算机,安装SQL server 提示重新启动计算机失败怎么处理
  2. virtualbox 创建桥接网络_VirtualBox桥接网络的简单配置,让虚拟机直接访问网络
  3. 面试 -- 多线程( 一) -- 基础
  4. C语言-结构体内存对齐
  5. BUAA_OO_第二单元
  6. 自学UI设计,应当具备的基础技能(软件)
  7. ceph集群报错:HEALTH_ERR 1 pgs inconsistent; 1 scrub errors
  8. next主题设定代码高亮格式
  9. idea2016 android genyomtion,Android Studio Genyomtion配置
  10. MyEclipse安装包
  11. adb shell 命令详解
  12. Python数据分析师特训营84节
  13. 海南大学考研经验分享之(考研数学)
  14. 人工势场python_ROS及SLAM进阶教程(十一)多机器人编队人工势场法协同避障算法原理及实现...
  15. 制作种子怎么上传服务器,怎么做种子,又怎么发布呢?
  16. android平板安装win10,如何给平板电脑装win10系统?
  17. D-013 蜂鸣器硬件电路设计
  18. 推荐一个不错的在线文档分享网站-Scribd,陆续分享我的电子藏书
  19. 经验分享 | STM32CubeMX + STM32F1系列开发时遇到的四个问题及解决方案分享
  20. 从人物的名字看香港电影人的文化底蕴

热门文章

  1. 如何设计网页排版和样式 - 前端页面设计
  2. java-net-php-python-ssm仿猫眼电影计算机毕业设计程序
  3. Android videoView闪屏
  4. 如何在word中像LaTex那样打公式
  5. 慎用驱动精灵,华硕被坑爹了一个月。笔记本关机蓝屏0x000000C5参考解决方案。
  6. Spring-IOC与AOP是解决什么问题的?
  7. 谈谈你对keep-alive的了解
  8. 蓝叠模拟器的adb程序位置
  9. 【免费域名】freenom免费申请域名步骤
  10. VMware安装win10镜像