zoukankan      html  css  js  c++  java
  • 图与网络优化

    一、图论概述

      图论是应用广泛的运筹学分支,在实际生活、生产和科学研究中,有很多问题可以用图论的理论和方法来解决。

      经典的图论问题有:欧拉七桥问题、环球旅行问题、中国邮递员问题......

      欧拉回路:从图中任意一点出发,经过图中所有边一次且仅一次的回路。

      哈密顿回路:从图中任意一点出发,经过图中所有顶点一次且仅一次的回路。

       中国邮递员问题:

      

      一名邮递员负责投递某个街区的邮件。如何为他(她)设计一条最短的投递路线?(从邮局出发,经过投递区内每条街道至少一次,最后返回邮局)由于这一问题是我国管梅谷教授1960年首先提出的,所以国际上称之为中国邮递员问题。

    二、图的基本概念

      (仅供科普,以后有机会单独写一篇)

      图分为:有向图无向图

      点数p、边数q、关联边多重边、点的次(度)d(v)奇点偶点悬挂点孤立点悬挂边

      相关定理:①任一图中,所有点的次之和是边数的两倍(即度数之和为2q)。②任一图中,奇点的个数为偶数。

      :图中的点、边交错的序列。(初等链:所有点均不相同的链简单链:所有边均不相同的链。)

      :两个端点相同的链。

      中间点:除了两个端点以外的点。

      连通图、连通分图、生成子图

      基础图G(D):从有向图D中去掉所有弧的箭头得到的无向图。

      始点、终点、弧

      :一条按照弧方向前进的链。

      回路:起、终点相同;初等路:各顶点不相同的路 

    三、最小树问题

    1. 树:一个无圈的连通图。

      如:

      

    2. 树的6个等价性质:

    设图 T = (V, E)是一个树,其中点数为p、边数q

    (1)T为无圈的连通图

    (2)T无圈,且q=p-1

    (3)T连通,且q=p-1 

    (4)T无圈,但增加一条边,可得到一个且仅一个圈

    (5) T连通,但舍弃一条边,图便不连通

    (6)T中任意两个顶点之间恰有一条链

    3. 生成树(支撑树):若T=(V,E′)是G=(V,E)的生成子图,且T是一个树,则T为G的一个生成树。

      图G有生成树的充要条件是图G是连通的。

       证明:

      必要性是显然的。

      充分性 设G是连通图,若G不含圈,则G本身是一个树,从而G是它自身的一个支撑树。若G含圈,任取一个圈,从圈中去掉任意一条边,得到G的一个支撑子图G1。若G1不含圈,则G1是G的一个支撑树;否则继续上述破圈操作,直到没有圈为止,最终找到一个支撑子图,它不含圈,是G的一个支撑树。

      寻找生成树的方法“破圈法”“避圈”法

      破圈法:破坏已有的圈。

      避圈法:连接点的时候避免构成圈。

      所以生成树对于连通图来说是不唯一的。

    4. 赋权图:给图G=(V,E),对G中的每一条边[vi, vj],相应地有一个数wij,则称这样的图G为赋权图,wij称为边[vi, vj]上的权。

       

    5. 最小生成树:T = (V, E′)是G的一个生成树,T中所有边的权之和为生成树的权w(T)。如果T*的权w(T*)是G的所有生成树的权中最小者,则称为G的最小生成树树(最小树)

    6. 最小树问题

      例:某工厂在6个车间之间的道路网如图所示,每条道路的距离已知。

      

      问:如何沿道路架设电话线网,才能使电话线的总长最小?

      最小树问题就是在赋权图上求最小生成树的问题

       

       避圈法操作起来相对比较麻烦。

       例:

      

    四、最短路问题

      最短路问题是在赋权有向图中寻求最短路的问题。

       

       求解方法:Dijkstra算法

       适用范围:正费用网络(wij ≥ 0),即权值不为负。

      基本步骤:

      

      

    五、网络最大流问题

      问题引入:

      

      要求制定一个运输方案使从v1到v6运输的产品数量最多。

      基本概念:

      网络:给定一个有向图D = (V,A),在V中指定一点为发点(始点),记为vs,而另一点为收点(终点),记为vt,其余点为中间点。对于每一个弧(vi,vj) ∈A ,对应有一个c(vi,vj)≥0,简写为cij,称为弧的容量。这样的D叫做一个网络,记为D = (V, A, C)

      :所谓网络上的流是指定义在弧集合A上的一个函数f = {f(vi,vj)},并称f(vi,vj)为弧(vi,vj)的流量,简称fij

      可行流

      

      零流令所有弧的流量fij=0,就得到一个零流,其流量v(f)=0。

      最大流: 使流量v(f)最大的可行流。

      最大流问题的数学模型:

      

      (非)饱和弧、(非)零流弧:

      

      向前弧、向后弧:

      

      

  • 相关阅读:
    Lua获取当前时间
    标准库
    Cocos2d-x retain和release倒底怎么玩?
    lua 中处理cocos2dx 的button 事件
    探讨把一个元素从它所在的div 拖动到另一个div内的实现方法
    从 ie10浏览器下Symbol 未定义的问题 探索vue项目如何兼容ie低版本浏览器(ie9, ie10, ie 11 )
    setTimeout里无法调用鼠标事件的event
    浅谈HTTP缓存以及后端,前端如何具体实现HTTP缓存
    window7电脑git设置快捷命令
    从获取点击事件根元素谈 target和currentTarget
  • 原文地址:https://www.cnblogs.com/cruelty_angel/p/10566717.html
Copyright © 2011-2022 走看看