一些网络优化问题(笔记)

  • 关于图和树的概念

最小支撑树

  • 寻找支撑树的两种方法:破圈法 避圈法

Dijkstra算法(贪心策略)

  • 使用:用于解决边权权为正的单源最短路问题

算法思路

Step 1:初始化距离

初始化距离,1号点到起点的距离为0,其他店到起点的距离无穷大

Step 2:迭代

循环n次,找到没有确定最短距离且距离起点最近的点,用这个点更新其他点的距离,这个点同时也确定了最短距离。循环n次就可以确定n个点到起点的距离了

  • 如何解决Dijkstra算法权重不能为负数的问题?Bellman——Ford算法

  • 如何优化?堆优化(用优先队列priority_queue)

Bellman-Ford算法

  • 解决负权图

  • 判断有无负权回路的单源最短路径问题(迭代超过V-1次,就说明存在负权回路)

算法思路

  • 当赋权有向图有负权时,求最短路的办法

    利用如下递推公式:

 

对于t =2, ........., 3,

若进行到某一步, 对于所有点j, 有

 

 

  • 缺点:时间复杂度高

Floyd算法(求所有顶点之间的最短路径)

一求最短路径步骤

  • 初始时设置一个n阶方阵, 令其对角线元素为 0 , 若存在弧 < V i, V j>, 则对应元素为权值; 否则 为 无穷大

  • 逐步试着在原直接路径中增加中间顶点, 若加 入中间点后路径变短, 则修改之; 否则, 维持 原值

  • 所有顶点试探完毕, 算法结束

网络最大流问题

  • 什么是最大流问题?

    • 最小费用最大流问题的一般提法是:在一个给定的 网络 D=(V, A, C, B) 的每一条弧上, 除了给出容量 c_{i j} 之外, 还给出了每一弧上单位流量的费用 b_{i j}, 求一 个最大流 f, 使流 f 的总费用

     

    达到最小。

寻求最大流的算法

Ford- Fulkerson 算法(FF算法)(深度优先搜索)

Edmonds -Karp算法(广度优先搜索)

Dinic算法(结合广度优先搜索和深度优先搜索)

旅行商问题

一个商人欲到n个城市推销商品, 每两个城市 i和j之间的距离为 d_ij, 如何迭择一条道路使得 商人每个城市正好走一遇后回到起点且所走路 线最短。

图论模型

构造一个图G =(V, E), 顶点表示城市, 边 表示连接两城市的路, 边上的权W (e) 表示距离(或时间或费用)。旅行推销员问题就成为在加权图中寻找一条经过每个顶点正好一 次的取短圈的问题, 即求最佳Hamilton 圈的 问题。

基本概念

1)哈米尔顿路径 (H路径):经过图G每个顶点正好一次的路径;

2)哈米尔顿圈 (H圈);经过 \mathrm{G} 的每个顶点正好一次的圈;

3)哈米尔顿图 (H图):含H圈的图。

4)最佳 H 圈:在加权图 G=(V, E) 中, 权最小的H圈;

5)最佳推销员回路:经过每个 顶点一次的权最小闭通路;

6)TSP问题:在加权图中求最佳H圈的问题。

旅行商问题的数学规划模型

设 d_{i j} 是 i 与 j 之间的距离, x_{i j}=0 或 1 (1表示连线, 0 表示不连线). 则有:

旅行商问题的数学规划模型二

用 n 个顶点的排列i_1, ........, i_n 表示旅行商的解, 则

 

旅行商问题的求解算法

  • 解法一:根据整数规划模型(模型一),可以利用优化软件 (Lingo等) 进行求解;

  • 解法二: 根据模型二, 可以利用智能优化算法进行求解 (禁忌搜 索算法、蚁群算法等)

车辆路径问题(VRP)

车辆路线问题(VRP)最早是由Dantzig和Ramser于1959年首次提出,它是指一定数量的客户,各自有不同数量的货物需求,配送中心向客户提供货物,由一个车队负责分送货物,组织适当的行车路线,目标是使得客户的需求得到满足,并能在一定的约束下,达到诸如路程最短、成本最小、耗费时间最少等目的。

问题描述

设有一场站(depot),共有M 辆货车,车辆容量为Q,有N位顾客(customer),每位顾客有其需求量D。车辆从场站出发对客户进行配送服务最后返回场站,要求所有顾客都被配送,每位顾客一次配送完成,且不能违反车辆容量的限制,目的是所有车辆路线的总距离最小。

算法类型

精确解法
  • 分枝定界法 (Branch and Bound Approach)

  • 割平面法 (Cutting Planes Approach)

  • 网络流算法 (Network Flow Approach)

  • 动态规划算法 (Dynamic Programming

  • Approach)

启发式算法

构造算法 (Constructive Algorithm )

两阶段算法 (Two Phase Algorithm)

元启发式算法 (Metaheuristics Algorithm)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值