当前位置: 首页 > news >正文

整数规划——第三章 全单模矩阵

整数规划——第三章 全单模矩阵

若线性规划问题的约束矩阵为全单模矩阵,则该问题可行域的顶点都是整数点,从而线性规划与整数规划的最优解相同。

3.1 全单模性与最优性

考虑线性整数规划问题:
(IP) min ⁡ c T x , s . t . A x ≤ b , x ∈ Z + n \text{(IP)}\quad\begin{aligned} &\min c^Tx,\\ &s.t.\ Ax\le b,\\ &\qquad x\in \Z_+^n \end{aligned} (IP)mincTx,s.t. Axb,xZ+n
其中 A A A m × n m×n m×n 整数矩阵, b b b n n n 维整数向量。用如下线性规划作为其松弛问题:
(LP) min ⁡ c T x , s . t . A x ≤ b , x ∈ R + n \text{(LP)}\quad\begin{aligned} &\min c^Tx,\\ &s.t.\ Ax\le b,\\ &\qquad x\in \R_+^n \end{aligned} (LP)mincTx,s.t. Axb,xR+n
若线性松弛问题存在最优解,且其可行集合 $P={x\in \R_+^n|Ax\le b}
$ 的所有顶点都是整数点,则线性规划问题必有整数最优解。因此,求解线性松弛问题(LP)就可得到原整数规划问题§的最优解。下面给出一个保证问题(LP)的最优解是整数点的充分条件

定理3.1 若线性规划问题(LP)的最优基矩阵B满足 det ( B ) = ± 1 \text{det}(B)=\pm1 det(B)=±1,这里 B B B 是矩阵 ( A , I ) (A,I) (A,I) m × m m×m m×m 维子方阵,则线性规划问题(LP)的最优解是整数解。

定义3.1 设矩阵 A A A m × n m×n m×n 整数矩阵。若矩阵 A A A 的任意子方阵的行列式等于0,1或者-1,则称矩阵A为全单模矩阵

易知,若整数规划(IP)中的矩阵 A A A 是全单模矩阵,求解线性规划(LP)等价于求解整数规划(IP)。

性质3.1若矩阵 A A A 是全单模矩阵,则矩阵中元素a=0,1或者-1。

定理3.2 设矩阵 A A A 是全单模矩阵,向量 b b b 是整数向量,则多面体 P = { x ∈ R + n ∣ A x ≤ b } P=\{x\in \R_+^n|Ax\le b\} P={xR+nAxb} 的顶点都是整数点。

定理3.3 若对任意整数向量 b b b ,多面体 P = { x ∈ R + n ∣ A x ≤ b } P=\{x\in \R_+^n|Ax\le b\} P={xR+nAxb} 的顶点都是整数点,则 A A A 是全单模矩阵。

3.2 全单模矩阵的性质

性质3.2 设整数矩阵 A A A 是全单模矩阵,对 A A A 进行以下运算不改变其全单模性:

  1. 对矩阵 A A A 进行转置;
  2. 矩阵 ( A , I ) (A,I) (A,I) 是全单模的;
  3. 去掉 A A A 的一行(或者一列):
  4. A A A 的一行(或者一列)乘以-1;
  5. 互换 A A A 的两行(或者两列):
  6. A A A 进行转轴运算.

定理3.4 矩阵 A A A 是全单模矩阵等价于对于每个集合 J ⊆ N = { 1 , 2 , . . . , n } J\sube N=\{1,2,...,n\} JN={1,2,...,n},必存在 J J J 的分割 J 1 , J 2 J_1,J_2 J1,J2 使得
∣ ∑ j ∈ J 1 a i j − ∑ j ∈ J 2 a i j ∣ ≤ 1 , i = 1 , . . . , m . \left| \sum_{j\in J_1}a_{ij} -\sum_{j\in J_2}a_{ij}\right|\le 1,\quad i=1,...,m. jJ1aijjJ2aij 1,i=1,...,m.
推论3.3 设矩阵 A A A { 0 , 1 , − 1 } \{0,1,-1\} {0,1,1}矩阵,并且每列至多有两个非零元素,则矩阵 A A A 是全单模矩阵当且仅当存在 A A A 的行分割 Q 1 , Q 2 Q_1,Q_2 Q1,Q2 使得同一列中的两个非零元素满足以下条件:

  1. 若符号相同,则一个元素位于 Q 1 Q_1 Q1,另一元素位于 Q 2 Q_2 Q2
  2. 若特号相反,则这两个元素同时属于 Q 1 Q_1 Q1,或者同时属于 Q 2 Q_2 Q2

由以上讨论可得到一个易于验证的全单模矩阵的充分条件

推论3.4 设矩阵 A A A 的任意元素都是0,1或者一1,若 A A A 满足以下两个条件,则矩阵 A A A 是全单模的:

  1. A A A 的每一列至多含有两个非零元素;
  2. 若某列含有两个非零元素,则两个元素之和为0.

3.3 全单模矩阵在网络问题中的应用

3.3.1 二部图

给定无向图 G = ( V , E ) G=(V,E) G=(V,E),其中 V V V 表示顶点集合, E E E 表示边集合。定义图 G G G 的关联矩阵 M M M ,其行和列分别用顶点集 V V V 和边集 E E E 标记;若边 e e e 经过项点 v v v ,则 M v , e = 1 M_{v,e}=1 Mv,e=1;否则 M v , e = 0 M_{v,e}=0 Mv,e=0

若一个图 G = ( V , E ) G=(V,E) G=(V,E) 的顶点集合 V V V 可分解成两个非空子集 V 1 , V 2 V_1,V_2 V1,V2,使得 E E E 中每条边的两个端点分别属于 V 1 , V 2 V_1,V_2 V1,V2,则称该图为二部图。下面定理表明无向图的关联矩阵的全单模性与二部图之间的等价性。

定理3.5 G = ( V , E ) G=(V,E) G=(V,E) 表示无向图, M M M 表示图 G G G V × E V\times E V×E 关联矩阵,则 M M M 是全单模矩阵当且仅当图 G G G 是二部图。

3.3.2 指派问题

指派问题是二部图问题的一种特殊情况,是指将 n n n 项任务恰当地分配给 n n n 个工人,每个工人只能执行一项任务。由于每个工人完成不同工作所的成本不同,我们的目的是在保证各项任务完成的前提下最小化成本。令表示 c i j c_{ij} cij 由工人 i i i 完成任务 j j j 的成本,则最小化成本的指派问题可表述如下:
min ⁡ ∑ i = 1 n ∑ j = 1 n c i j x i j , s . t . ∑ j = 1 n x i j = 1 , i = 1 , . . . , n , ∑ i = 1 n x i j = 1 , j = 1 , . . . , n , x i j ∈ { 0 , 1 } , i , j = 1 , . . . , n . \begin{aligned}&\min \sum_{i=1}^n\sum_{j=1}^n c_{ij}x_{ij},\\ &s.t.\ \sum_{j=1}^nx_{ij} =1,\ i = 1,...,n,\\ &\quad\quad\sum_{i = 1}^n x_{ij} =1,j=1,...,n, \\ &\quad\quad x_{ij}\in \{0,1\},\quad i,j = 1,...,n. \end{aligned} mini=1nj=1ncijxij,s.t. j=1nxij=1, i=1,...,n,i=1nxij=1,j=1,...,n,xij{0,1},i,j=1,...,n.
U U U 表示工人集合, V V V 表示任务集合,在此集合上建立边集 E E E:若工人 i i i 能够胜任任务 j j j ,则边 ( i , j ) ∈ E (i,j)∈E (i,j)E 。故图 G = ( U , V , E ) G=(U,V,E) G=(U,V,E) 是二部图。由于二部图的关联矩阵是全单模矩阵,则求解其线性规划松弛问题即可得到整数最优解.,

另一类指派问题是将工人们分派到不同小组进行轮班,称之为排班问题。假设工作时间有 m m m 个小时,共有 n n n 次轮班,每一次轮班需要连续工作几个小时。第 j j j 次轮班用 m m m 0 − 1 0-1 01 向量 a j a_j aj 表示:若在第 i i i 个小时被排在第 j j j 次轮班中,则 a i j = 1 a_{ij}=1 aij=1 ;否则 a i j = 0 a_{ij}=0 aij=0 。所以向量 中 1 元素是连续出现的,实际上。由 a j , j = 1 , . . . n a_j,j=1,...n aj,j=1,...n 组成的矩阵 A A A m × n m\times n m×n 维的区间矩阵。区间矩阵定义如下,其具有全单模性:

定义3.2 A A A m × n m\times n m×n { 0 , 1 } \{0,1\} {0,1} 矩阵,若该矩阵的每一列中 1 1 1 元素连续出现,即如果 a i j = a k j = 1 a_{ij}={a_{kj}}=1 aij=akj=1,且 k > i + 1 k>{i+1} k>i+1,那么对任意 i < l < k , a l j = 1 i<l<k,a_{lj}=1 i<l<k,alj=1,则称 A A A 为区间矩阵。

定理3.6 区间矩阵是全单模矩阵。

所以求解上述问题的线性规划松弛即可得到整数最优解。

3.3.3 最小费用网络流问题

有向图关联矩阵介绍如下:

给定有向图 D = ( V , A ) D=(V,A) D=(V,A) V V V 表示顶点集, A A A 表示弧的集合, ( u , v ) ∈ A (u,v)∈A (u,v)A 表示从顶点 u u u 流向顶点 v v v 的弧.记其 V × A V×A V×A 相关矩阵为 M M M 。若弧 a a a 流入顶点 v v v,则 M v , a = 1 M_{v,a}=1 Mv,a=1;若弧 a a a 流出顶点 v v v,则 M v , a = − 1 M_{v,a}=-1 Mv,a=1;否则 M v , a = 0 M_{v,a}=0 Mv,a=0

定理3.7 有向图 D = ( V , A ) D=(V,A) D=(V,A)的关联矩阵 M M M 是全单模矩阵.

给定有向图 D = ( V , A ) D=(V,A) D=(V,A) h u , v h_{u,v} hu,v 表示弧 ( u , v ) (u,v) (u,v) 上的最大容量, b v b_v bv 表示顶点 v v v 处的需求量, c u , v c_{u,v} cu,v 表示弧 ( u , v ) (u,v) (u,v) 上单位流量所需要的费用,记
V + ( v ) = { u ∈ V ∣ ( v , u ) ∈ A } , V − ( v ) = { u ∈ V ∣ ( u , v ) ∈ A } V^+(v)=\{u\in V|(v,u)\in A\},\quad V^-(v)=\{u\in V|(u,v)\in A\} V+(v)={uV(v,u)A},V(v)={uV(u,v)A}
则最小费用网络流问题可以表述为
min ⁡ ∑ ( u , v ) ∈ A c u , v x u , v , s . t . ∑ u ∈ V + ( v ) x v , u − ∑ u ∈ V − ( v ) x u , v = b v , ∀ v ∈ V , 0 ≤ x u , v ≤ h u , v , ∀ ( u , v ) ∈ A \begin{aligned} &\min \sum_{(u,v)\in A}c_{u,v}x_{u,v},\\ &s.t. \ \sum_{u\in V^+(v)}x_{v,u}-\sum_{u\in V^-(v)}x_{u,v}=b_v,\ \forall v\in V,\\ &\qquad 0\le x_{u,v}\le h_{u,v},\ \forall (u,v)\in A \end{aligned} min(u,v)Acu,vxu,v,s.t. uV+(v)xv,uuV(v)xu,v=bv, vV,0xu,vhu,v, (u,v)A

最小费用网络流问题的输入是一个有向图,其中每条边都有一个容量和一个单位流量费用。该图还有一个源点和一个汇点。问题的目标是在满足源点到汇点之间流量约束的情况下,找到一种最小费用的流量分配方案。

M M M 为该图的关联矩阵。上述最小费用网络流问题即
min ⁡ { c T x ∣ M x = b , 0 ≤ x ≤ h } \min \{c^Tx|Mx=b,\ 0\le x \le h\} min{cTxMx=b, 0xh}
应当注意的是,若该问题可行,则总需求量之和必为0,即 ∑ v ∈ V b v = 0 \sum_{v\in V}b_v=0 vVbv=0。若容 h u , v h_{u,v} hu,v 及各顶点需求量 b v b_v bv 都是整数,由关联矩阵 M M M 的全单模性可知该最小费用网络流问题有整数最优解。

例3.2 有向图 G G G 由图3.1给出,图 G G G 的关联矩阵和各顶点需求量由表3.1给出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-opALfXJm-1691228174238)(%E6%95%B4%E6%95%B0%E8%A7%84%E5%88%92%E2%80%94%E2%80%94%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E5%85%A8%E5%8D%95%E6%A8%A1%E7%9F%A9%E9%98%B5.assets/image-20230805171035424.png)]
在这里插入图片描述

相关文章:

整数规划——第三章 全单模矩阵

整数规划——第三章 全单模矩阵 若线性规划问题的约束矩阵为全单模矩阵&#xff0c;则该问题可行域的顶点都是整数点&#xff0c;从而线性规划与整数规划的最优解相同。 3.1 全单模性与最优性 考虑线性整数规划问题&#xff1a; (IP) min ⁡ c T x , s . t . A x ≤ b , x …...

数据结构和算法

数据结构和算法目录表 CCJava线性结构 1. 数组、单链表和双链表 2. Linux内核中双向链表的经典实现 数组、单链表和双链表 数组、单链表和双链表 栈 栈 栈 队列 队列 队列树形结构 二叉查找树 二叉查找树 二叉查找树 AVL树 AVL树 AVL树 伸展树 伸展树 伸展树 1. 红黑树(一)之…...

[Vulnhub] matrix-breakout-2-morpheus

目录 <1> 信息收集 <2> getshell <3> Privilege Escalation&#xff08;提权&#xff09; <1> 信息收集 nmap -sP 192.168.236.0/24 扫描一下靶机ip 靶机ip: 192.168.236.154 nmap -A -p 1-65535 192.168.236.154 扫描一下靶机开放哪些服务 开放…...

JDK, JRE和JVM之间的区别和联系

JDK, JRE和JVM是与Java编程语言相关的三个重要的概念&#xff0c;它们分别代表Java Development Kit&#xff08;Java开发工具包&#xff09;、Java Runtime Environment&#xff08;Java运行时环境&#xff09;和Java虚拟机&#xff08;Java Virtual Machine&#xff09;。它们…...

mac电脑访问windows共享文件夹连接不上(设置445端口)

前提&#xff1a;首先需要保证mac和windows都在同一局域网内&#xff0c;如果不在肯定是连不上的&#xff0c;就不用往下看了。 事情是这样的&#xff0c;公司入职发了mac电脑&#xff0c;但是我是window重度用户&#xff0c;在折腾mac的过程中&#xff0c;有许多文件需要从wi…...

metersphere性能压测执行过程

(1) 首先在controller层&#xff0c;通过RunTestPlanRequest接收请求参数 PostMapping("/run")public String run(RequestBody RunTestPlanRequest request) (2) 在PerformanceTestService中的run中进行具体的逻辑处理&#xff0c; 首先根据请求中ID来获取库中存储…...

揭秘Word高级技巧:事半功倍的文字处理策略

Microsoft Word是一款广泛使用的文字处理软件&#xff0c;几乎每个人都有使用过它的经历。但是&#xff0c;你是否知道Word中隐藏着许多高级技巧和功能&#xff0c;可以帮助你事半功倍地处理文字&#xff1f;在本文中&#xff0c;我们将揭秘一些Word的高级技巧&#xff0c;让你…...

06-1_Qt 5.9 C++开发指南_对话框与多窗体设计_标准对话框

在一个完整的应用程序设计中&#xff0c;不可避免地会涉及多个窗体、对话框的设计和调用&#xff0c;如何设计和调用这些对话框和窗体是搞清楚一个庞大的应用程序设计的基础。本章将介绍对话框和多窗体设计、调用方式、数据传递等问题&#xff0c;主要包括以下几点。 Qt 提供的…...

模拟实现消息队列项目(系列7) -- 实现BrokerServer

目录 前言 1. 创建BrokerServer类 1.1 启动服务器 1.2 停止服务器 1.3 处理一个客户端的连接 1.3.1 解析请求得到Request对象 1.3.2 根据请求计算响应 1.3.3 将响应写回给客户端 1.3.4 遍历Session的哈希表,把断开的Socket对象的键值对进行删除 2. 处理订阅消息请求详解(补充) …...

vscode插件不能搜索安装

1 现象 vscode搜索自己的插件&#xff0c;报错&#xff1a; Error while fetching extensions. HXR failed2 原因 之前用vscode开发golang语言&#xff0c;设置了proxy代理&#xff0c;所以导致错误&#xff0c;删除即可 重启vscode 3 结果...

路由器工作原理(第二十九课)

路由器工作原理(第二十九课) 一图胜过千言 1) 路由:数据从一个网络到另外一个网络之间转发数据包的过程称为路由 2) 路由器:连接不同网络,实现不同网段之间的通信 3)路由表:路由器选择数据的传输路径的依据 原始的路由表 Destination/Mask Proto Pre Cost …...

linux log 日志

/* author: hjjdebug * date: 2023年 08月 08日 星期二 13:18:08 CST * descriptor: linux log 日志 * destinator: 搞清linux 下log 日志 * 下面代码编译通过即可运行 */ #include <stdio.h> #include <syslog.h> int main(void) { // 打开系统日志, 可…...

uniapp获取当前页面高度

设置动态高度:style"{height: pageHeightpx}" <view class"uni-content" :style"{height: pageHeightpx}" >... </view>获取当前页面高度&#xff1a; onLoad() {// 获取当前窗口高度this.pageHeight uni.getSystemInfoSync().wi…...

Java课题笔记~ Spring 集成 MyBatis

Spring 集成 MyBatis 将 MyBatis 与 Spring 进行整合&#xff0c;主要解决的问题就是将 SqlSessionFactory 对象交由 Spring 来管理。所以该整合&#xff0c;只需要将 SqlSessionFactory 的对象生成器SqlSessionFactoryBean 注册在 Spring 容器中&#xff0c;再将其注入给 Dao…...

分布式系统理论基础

文章目录 介绍目标 正文CAPConsistencyAvailabilityPartition tolerance BASEBasically AvailableSoft StateEventually Consistent ACIDatomicityconsistencyisolationdurability 参考文档 介绍 分布式系统面临的场景往往是众口难调&#xff0c;“这也要&#xff0c;那也要”…...

mfc 编辑框限制

DoDataExchange由框架调用&#xff0c;作用是交互并且验证对话框数据&#xff0c;主要由(DDX) 和 (DDV)宏实现。 永远不要直接调用这个函数&#xff0c;而是通过UpdateData(TRUE/FALSE)实现控件与变量之间值的传递。 当然你也可以不使用DoDataExchange而完成控件与变量之间值…...

web基础与tomcat环境部署

一. 简述静态网页和动态网页的区别。 请求响应信息&#xff0c;发给客户端进行处理&#xff0c;由浏览器进行解析&#xff0c;显示的页面称为静态页面。处理文件类型如.html、jpg、.gif、.mp4、.swf、.avi、.wmv、.flv等 请求响应信息&#xff0c;发给事务端进行处理&#xff0…...

Go 变量

在Go中&#xff0c;有不同的变量类型&#xff0c;例如&#xff1a; int 存储整数&#xff08;整数&#xff09;&#xff0c;例如123或-123float32 存储浮点数字&#xff0c;带小数&#xff0c;例如19.99或-19.99string - 存储文本&#xff0c;例如“ Hello World”。字符串值用…...

【雷达通信】非相干多视处理(CSA)(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

73. 矩阵置零

题目链接&#xff1a;力扣 解题思路&#xff1a; 方法一&#xff1a;比较容易想到的方向&#xff0c;使用两个数组row和col保存有0的行或者列&#xff0c;然后将有0的那一行或那一列的所有元素都设置为0 AC代码 class Solution {public void setZeroes(int[][] matrix) {in…...

新手避坑指南:用MATLAB复现TI IWR1443雷达的距离与速度FFT处理(附完整代码)

新手避坑指南&#xff1a;用MATLAB复现TI IWR1443雷达的距离与速度FFT处理&#xff08;附完整代码&#xff09; 第一次拿到IWR1443毫米波雷达开发板时&#xff0c;看着官方文档里密密麻麻的英文术语和零散的代码片段&#xff0c;我对着电脑屏幕发呆了整整半小时。作为电子工程专…...

当NB-IoT遇上同步轨道卫星:GEO场景下的定时关系增强全指南(基于3GPP Release 17最新规范)

GEO卫星场景下NB-IoT定时关系增强技术解析 1. GEO卫星通信与NB-IoT的技术融合挑战 地球静止轨道&#xff08;GEO&#xff09;卫星通信与窄带物联网&#xff08;NB-IoT&#xff09;技术的结合&#xff0c;为全球物联网覆盖提供了革命性解决方案。GEO卫星位于地球赤道上空35,786公…...

终极指南:使用OpenCore Legacy Patcher为老旧Mac安装最新macOS系统

终极指南&#xff1a;使用OpenCore Legacy Patcher为老旧Mac安装最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为老旧Mac无法升级最新系统而烦恼吗&am…...

UE4SS终极指南:解锁虚幻引擎4/5游戏Mod开发新境界

UE4SS终极指南&#xff1a;解锁虚幻引擎4/5游戏Mod开发新境界 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS …...

轻量级MCU命令行交互系统设计与优化

1. 轻量级MCU命令行交互系统设计指南1.1 系统概述在嵌入式系统开发过程中&#xff0c;调试和维护阶段往往需要与单片机进行参数交互和操作控制。传统解决方案如RT-Thread的finsh组件虽然功能强大&#xff0c;但对于资源受限的MCU&#xff08;如ROM<64KB&#xff0c;RAM<8…...

保姆级教程:用seqtk、bwa和bedtools从零绘制GC-depth图,诊断测序污染

从零构建GC-depth分析全流程&#xff1a;手把手教你诊断测序数据污染 刚拿到测序数据的生物信息学新手&#xff0c;常常会面临一个灵魂拷问&#xff1a;我的数据干净吗&#xff1f;GC-depth分析就像给测序数据做"体检"&#xff0c;通过一张图就能快速发现细菌污染、样…...

TI DSP BootLoader实战:从Flash分区到安全跳转的工程化指南

1. 为什么需要BootLoader&#xff1f; 想象一下你家的空调遥控器突然需要升级功能&#xff0c;但厂家要求必须拆开外壳用专用设备烧录——这显然不现实。BootLoader就是嵌入式设备的"遥控器升级按钮"&#xff0c;让设备在出厂后仍能通过常规接口&#xff08;如串口、…...

大一大二最容易忽视的一张“证书”,却悄悄决定了很多人的未来

很多大学生到了大三才突然发现一件事&#xff1a;有些机会&#xff0c;原来早在大一大二就已经埋好了门槛。比如——英语四六级。保研、考研复试、国企网申、研究生免修英语、甚至一些实习岗位筛选&#xff0c;很多时候都会看到同一行字&#xff1a;CET-4 / CET-6 成绩这张证书…...

Umi-OCR插件技术方案:5款引擎深度对比与实战配置指南

Umi-OCR插件技术方案&#xff1a;5款引擎深度对比与实战配置指南 【免费下载链接】Umi-OCR_plugins Umi-OCR 插件库 项目地址: https://gitcode.com/gh_mirrors/um/Umi-OCR_plugins Umi-OCR插件库为开源OCR工具提供了丰富的引擎选择&#xff0c;从本地CPU加速到云端AI识…...

解锁新可能:ArkData 在智能穿戴设备中的应用

解锁新可能&#xff1a;ArkData 在智能穿戴设备中的应用随着人们对健康生活的重视&#xff0c;智能穿戴设备愈发普及。这些设备能够实时收集心率、步数、睡眠等健康数据&#xff0c;为人们的健康管理提供重要参考。在这一背景下&#xff0c;如何高效管理和利用这些健康数据成为…...