整数规划——第一章 引言

news2024/9/20 16:30:02

整数规划——第一章 引言

整数规划是带整数变量的最优化问题,即最大化或最小化一个全部或部分变量为整数的多元函数受约束于一组等式和不等式条件的最优化问题。许多经济、管理、交通、通信和工程中的最优化问题都可以用整数规划来建模。

考虑一个电视机工厂的生产计划问题,如果线性规划模型给出的最优生产计划是每天生产102。4台,则可以选择每天102或103台的生产计划。另一方面,若考虑的问题是仓库的选址问题,设线性规划给出的最优解是在甲地点建或买0。6个仓库,在乙地点建或买0。4个仓库,因仓库的个数必须是整数,这时线性规划的解不能提供任何有用的决策方案。实际上,除了可以描述决策变量的离散性外,整数变量可以帮助我们刻画最优化建模中的许多约束条件,如逻辑关系、固定费用、可选变量的上界、顺序和排序关系、分片线性函数等。

整数规划的历史可以追溯到20世纪50年代,运筹学创始人和线性规划单纯形算法发明者Dantzig首先发现可以用0-1变量来刻画最优化模型中的固定费用、变量上界、非凸分片线性函数等。他和Fulkerson及Johnson对旅行售货员问题(TSP)的研究成为后来的分枝割方法和现代混合整数规划算法的开端。1958年,Gomory发现了第一个一般线性整数规划的收敛算法——割平面方法。随着整数规划理论和算法的发展,整数规划已成为应用最广泛的最优化方法之一,特别是近年来整数规划算法技术和软件系统(如CPLEX)的发展和推广,整数规划在生产企业、服务、运营管理、交通、通信等领域得到了极大的应用和发展。

1.1 分类与建模

1.1.1 线性混合整数规划

线性混合整数规划(Mixed integer program/programming,MIP)的一般形式为:

( MIP ) min ⁡   c T x + h T y ,   s . t . A x + G y ≤ b ,   x ∈ Z + n , y ∈ R + p , \begin{aligned} (\text{MIP})\quad\quad& \min \ c^T x+h^Ty,\\\ & s.t.\quad Ax+Gy\le b,\ x\in \Z^n_+,y\in \R^p_+, \end{aligned} (MIP) min cTx+hTy,s.t.Ax+Gyb, xZ+n,yR+p,

其中 Z + n \Z^n_+ Z+n n n n 维非负整数向量集合, R + p \R^p_+ R+p p p p 维非负实数向量集合。

如果问题(MIP)中没有连续决策变量,则(MIP)就是一个(纯)线性整数规划:

( IP ) min ⁡   c T x ,   s . t . A x ≤ b ,   x ∈ Z + n , \begin{aligned} (\text{IP})\quad\quad& \min \ c^T x,\\\ & s.t.\quad Ax\le b,\ x\in \Z^n_+, \end{aligned} (IP) min cTx,s.t.Axb, xZ+n,

背包问题 设有一个背包,其承重为 b b b 。考虑n件物品,其中第 j j j 件的重量为 α j α_j αj ,价值为 c j c_j cj。问如何选取物品装入背包,使背包内物品的总价值最大?

x j = { 1 , 若选取第 j 件物品, 0 , 若不选取 . x_j=\begin{cases} 1,&若选取第j件物品,\\ 0,&若不选取. \end{cases} xj={1,0,若选取第j件物品,若不选取.

则背包问题可以表示为下列线性0-1规划:

max ⁡ ∑ j = 1 n c j x j , s . t .   ∑ j = 1 n a j x j ≤ b , x ∈ { 0 , 1 } n . \begin{aligned}&\max \sum_{j=1}^n c_jx_j,\\ &s.t.\ \sum_{j=1}^n a_jx_j\le b,\\ &\quad\quad x\in \{0,1\}^n. \end{aligned} maxj=1ncjxj,s.t. j=1najxjb,x{0,1}n.

指派问题 设有 m m m 台机器, n n n 个工件,第 i i i 台机器的可用工时数为 b i b_i bi ,第 i i i 台机器完成第 j j j 件工件需要的工时数为 a i j a_{ij} aij ,费用为 c i j c_{ij} cij 。问如何最优指派机器生产。

x i j = { 1 , 若第  i  个机器加工第  j  件工件, 0 , 其他 . x_{ij}=\begin{cases} 1,&若第\ i\ 个机器加工第\ j\ 件工件,\\ 0,&其他. \end{cases} xij={1,0,若第 i 个机器加工第 j 件工件,其他.

则指派问题可以表示为如下0-1规划问题:

min ⁡ ∑ i = 1 n ∑ j = 1 n c i j x i j , s . t .   ∑ j = 1 n a i j x i j ≤ b i ,   i = 1 , . . . , m , ∑ i = 1 m x i j = 1 , j = 1 , . . . , n , x ∈ { 0 , 1 } n . \begin{aligned}&\min \sum_{i=1}^n\sum_{j=1}^n c_{ij}x_{ij},\\ &s.t.\ \sum_{j=1}^n a_{ij}x_{ij}\le b_i,\ i = 1,...,m,\\ &\quad\quad\sum_{i = 1}^m x_{ij} =1,j=1,...,n, \\ &\quad\quad x\in \{0,1\}^n. \end{aligned} mini=1nj=1ncijxij,s.t. j=1naijxijbi, i=1,...,m,i=1mxij=1,j=1,...,n,x{0,1}n.

集合覆盖问题 设某地区划分为若干个区域,需要建立若干个应急服务中心(如消防站、急救中心等),每个中心的建立都需要一笔建站费用,设候选中心的位置已知,每个中心可以服务的区域预先知道,问如何选取中心使该应急服务能覆盖整个地区且使建站费用最小。

M = { 1 , ⋅ ⋅ ⋅ , m } M=\{1,···,m\} M={1,⋅⋅⋅,m} 为该地区中的区域, N = { 1 , ⋅ ⋅ ⋅ , n } N=\{1,···,n\} N={1,⋅⋅⋅,n} 是可选的中心,设 S ≤ M S≤M SM 为中心 j ∈ N j∈N jN 可以服务的区域集合, c j c_j cj 是中心 j j j 的建站费用,定义0-1关联矩阵 A = ( a i j ) A=(a_{ij}) A=(aij) ,其中如果 i ∈ S j i∈S_j iSj a i j = 1 a_{ij}=1 aij=1 ,否则 a i j = 0 a_{ij}=0 aij=0

x j = { 1 , 若选取中心 j , 0 , 其他 . x_j=\begin{cases} 1,&若选取中心j,\\ 0,&其他. \end{cases} xj={1,0,若选取中心j其他.

则问题可以表述为:

min ⁡ ∑ j = 1 n c j x j , s . t .   ∑ j = 1 n a i j x j ≥ 1 , i = 1 , . . . , m , x ∈ { 0 , 1 } n . \begin{aligned}&\min \sum_{j=1}^n c_jx_j,\\ &s.t.\ \sum_{j=1}^n a_{ij}x_j\ge 1,i=1,...,m,\\ &\quad\quad x\in \{0,1\}^n. \end{aligned} minj=1ncjxj,s.t. j=1naijxj1,i=1,...,m,x{0,1}n.

旅行售货员问题(TSP) 设有一个旅行售货员需要去n个城市推销他的产品,他必须而且只能访问每个城市一次,并最后返回出发城市.设每个城市直接到达另一个城市的距离已知(如不能直接到达,则可设其距离为+∞),他应该如何选择旅行路线使得总的旅行距离最短?

设城市 i i i 到城市 j j j 的距离为 c i j c_{ij} cij,设

x i j = { 1 , 若他的旅游路线包括了直接从城市 i 到城市 j 的行程, 0 , 其他 . x_{ij}=\begin{cases} 1,&若他的旅游路线包括了直接从城市 i 到城市 j的行程,\\ 0,&其他. \end{cases} xij={1,0,若他的旅游路线包括了直接从城市i到城市j的行程,其他.

约束条件:

  • 离开城市 i i i 一次:

    ∑ j ≠ i x i j = 1 ,   i = 1 , . . . , n \sum_{j\not= i}x_{ij}=1,\ i=1,...,n j=ixij=1, i=1,...,n

  • 到达城市 j j j 一次:

    ∑ i ≠ j x i j = 1 ,   j = 1 , . . . , n \sum_{i\not= j}x_{ij}=1,\ j=1,...,n i=jxij=1, j=1,...,n

  • 上面的约束条件使得每个城市正好经过一次,但仍可能包括含圈但不联通的路
    线,我们需要用下面的约束条件来去除这种情况发生:

    ∑ i ∈ S ∑ j ∉ S x i j ≥ 1 , ∀ S ⊂ N = { 1 , . . . , n } , S ≠ ∅ \sum_{i\in S}\sum_{j\not\in S}x_{ij}\ge 1,\quad \forall S\sub N=\{1,...,n\},S\not =\emptyset iSjSxij1,SN={1,...,n},S=

    或者

    ∑ i ∈ S ∑ j ∈ S x i j ≤ ∣ S ∣ − 1 , ∀ S ⊂ N , 2 ≤ ∣ S ∣ ≤ n − 1 \sum_{i\in S}\sum_{j\in S} x_{ij}\le |S|-1,\quad \forall S\sub N,\quad 2\le|S|\le n-1 iSjSxijS1,SN,2Sn1

从而旅行售货员问题可以表示为:

min ⁡ ∑ i = 1 n ∑ j = 1 n c i j x i j , s . t .   ∑ j ≠ i x i j = 1 ,   i = 1 , . . . , n , ∑ i ≠ j m x i j = 1 , j = 1 , . . . , n , ∑ i ∈ S ∑ j ∈ S x i j ≤ ∣ S ∣ − 1 , ∀ S ⊂ N , 2 ≤ ∣ S ∣ ≤ n − 1 , x ∈ { 0 , 1 } n . \begin{aligned}&\min \sum_{i=1}^n\sum_{j=1}^n c_{ij}x_{ij},\\ &s.t.\ \sum_{j\not=i} x_{ij}=1,\ i = 1,...,n,\\ &\quad\quad\sum_{i \not= j}^m x_{ij} =1,j=1,...,n, \\ &\quad\quad\sum_{i\in S}\sum_{j\in S} x_{ij}\le |S|-1,\quad \forall S\sub N,\quad 2\le|S|\le n-1,\\ &\quad\quad x\in \{0,1\}^n. \end{aligned} mini=1nj=1ncijxij,s.t. j=ixij=1, i=1,...,n,i=jmxij=1,j=1,...,n,iSjSxijS1,SN,2Sn1,x{0,1}n.

1.1.2 非线性整数规划

一般非线性混合整数规划(Mixed-Integer Nonlinear Programming)问题可表示为;

( MINLP ) min ⁡ f ( x , y ) ,   s . t . g i ( x , y ) ≤ b i , i = 1 , . . . , m ,     x ∈ X , y ∈ Y \begin{aligned} (\text{MINLP})\quad\quad& \min f(x,y),\\\ & s.t.\quad g_i(x,y)\le b_i,\quad i =1,...,m,\\ &\quad\quad\ \ \ x \in X,\quad y\in Y \end{aligned} (MINLP) minf(x,y),s.t.gi(x,y)bi,i=1,...,m,   xX,yY

此处的 f , g i , i = 1 , . . . , m f,g_i,i=1,...,m f,gi,i=1,...,m R n + q \R^{n+q} Rn+q 上的实值函数, X X X Z n \Z^n Zn 的子集, Y Y Y R q \R^q Rq 的子集。

当(MINLP)中没有连续变量 y y y 时,(MINLP)即是一个(纯)非线性整数规划:

( NLIP ) min ⁡ f ( x , y ) ,   s . t . g i ( x , y ) ≤ b i , i = 1 , . . . , m ,     x ∈ X , y ∈ Y \begin{aligned} (\text{NLIP})\quad\quad& \min f(x,y),\\\ & s.t.\quad g_i(x,y)\le b_i,\quad i =1,...,m,\\ &\quad\quad\ \ \ x \in X,\quad y\in Y \end{aligned} (NLIP) minf(x,y),s.t.gi(x,y)bi,i=1,...,m,   xX,yY

最大割问题 G = ( V , E ) G=(V,E) G=(V,E) 是有 n n n 个顶点的无向图,设边 ( i , j ) (i,j) (i,j) 上的权为 w i j ( w i j = w j i ≥ 0 ) w_{ij}(w_{ij}=w_{ji}\ge 0) wij(wij=wji0)。图 G G G 的一个割 ( S , S ′ ) (S,S') (S,S) 是指 n n n 个顶点上的一个分割: S ∩ S ′ = ∅ , S ∪ S ′ = V S\cap S'=\empty,S\cup S'=V SS=,SS=V。最大割问题是求一个分割 ( S , S ′ ) (S,S') (S,S) 使连接 S S S S ′ S' S 之间的所有边上的权最大。

设 $x_i = 1\ \text{if} \ \ i\in S,\ x_i = -1 \ \text{if} \ \ i\in S’ $,则分割 ( S , S ′ ) (S,S') (S,S) 上的权为:

1 2 ( 1 2 ∑ i , j = 1 n w i j − 1 2 ∑ i , j = 1 n w i j x i x j ) = 1 4 ∑ i , j = 1 n w i j ( 1 − x i x j ) . \frac{1}{2}(\frac{1}{2}\sum_{i,j=1}^n w_{ij}-\frac{1}{2}\sum_{i,j=1}^n w_{ij} x_ix_j)=\frac{1}{4}\sum_{i,j=1}^n w_{ij}(1-x_ix_j). 21(21i,j=1nwij21i,j=1nwijxixj)=41i,j=1nwij(1xixj).
所以最大割问题可以表示为:
max ⁡   1 4 ∑ i , j = 1 n w i j ( 1 − x i x j ) , s . t .   x ∈ { − 1 , 1 } n . \begin{aligned} &\max\ \frac{1}{4}\sum_{i,j=1}^n w_{ij}(1-x_ix_j),\\ & s.t.\ x\in \{-1,1\}^n. \end{aligned} max 41i,j=1nwij(1xixj),s.t. x{1,1}n.
最大割问题是组合优化中著名的NP难问题,l995年,Goemans和Williamson对
最大割问题的SDP松弛给出了一个漂亮的结果:
f o p t ≤ f S D P ≤ α f o p t , α = 1.138 ⋅ ⋅ ⋅ , f_{opt}≤f_{SDP}≤\alpha f_{opt},\alpha=1.138···, foptfSDPαfopt,α=1.138⋅⋅⋅,
这里 f o p t f_{opt} fopt 是最大割问题的最优值, f S D P f_{SDP} fSDP是SDP松弛问题的最优值

可靠性网络 考虑有 n n n 个子系统的网络.设 r i ( 0 < r i < 1 ) r_i(0<r_i<1) ri(0<ri<1) 是第 i i i 个子系统中的部件可靠性, x i x_i xi 表示第 i i i 个子系统的冗余部件的个数。网络可靠性优化问题是求最优的冗余向量 x = ( x 1 , ⋅ ⋅ ⋅ , x n ) T x=(x_1,···,x_n)^T x=(x1,⋅⋅⋅,xn)T 使网络的整体可靠性最大。

i i i 个子系统的可靠性为
R i ( x i ) = 1 − ( 1 − r i ) x i ,   i = 1 , . . . , n R_i(x_i)=1-(1-r_i)^{x_i},\ i=1,...,n Ri(xi)=1(1ri)xi, i=1,...,n
整个网络的可靠性 R s ( x ) R_s(x) Rs(x) 是关于 R 1 ( x 1 ) , . . . , R n ( x n ) R_1(x_1),...,R_n(x_n) R1(x1),...,Rn(xn) 的增函数,下图所示的网络的可靠性为

R s = R 6 R 7 + R 1 R 2 R 3 ( Q 6 + R 6 Q 7 ) + R 1 R 4 R 7 Q 6 ( Q 2 + R 2 Q 3 ) R_s = R_6R_7+R_1R_2R_3(Q_6+R_6Q_7)+R_1R_4R_7Q_6(Q_2+R_2Q_3) Rs=R6R7+R1R2R3(Q6+R6Q7)+R1R4R7Q6(Q2+R2Q3)
其中 Q i = 1 − R i , i = 1 , . . . , n Q_i = 1-R_i,i=1,...,n Qi=1Rii=1,...,n,对应的最优冗余问题为:

max ⁡   R s ( x ) = f ( R 1 ( x 1 ) , . . . , R n ( x n ) ) , s . t .   g i ( x ) = ∑ j = 1 n g i j ( x j ) ≤ b i , i = 1 , . . . , m , x ∈ X = { x ∈ Z n ∣ 1 ≤ l j ≤ x j ≤ u j , j = 1 , . . . , n } \begin{aligned} &\max\ R_s(x)=f(R_1(x_1),...,R_n(x_n)),\\ & s.t.\ g_i(x)=\sum_{j=1}^ng_{ij}(x_j)\le b_i,\quad i=1,...,m,\\ &\quad\quad x\in X=\{x\in \Z^n|1\le l_j\le x_j\le u_j,j=1,...,n\} \end{aligned} max Rs(x)=f(R1(x1),...,Rn(xn)),s.t. gi(x)=j=1ngij(xj)bi,i=1,...,m,xX={xZn∣1ljxjuj,j=1,...,n}
其中 g i ( x ) , i = 1 , . . . , m g_i(x),i=1,...,m gi(x),i=1,...,m 代表不同的资源消耗函数,例如费用、体积、重量等。

1.2 问题的挑战性

很多整数规划问题往往看上去很简单,数学模型也不复杂,如0-1背包问题、最大割问题等,但求解这类问题其实非常困难.绝大部分整数规划问题的可行域都只有有限多个可行点(决策方案),一个简单幼稚的想法是枚举所有的可行点,但是这样会使求解难度指数增加。大部分整数规划问题的困难在于:我们本质上只能使用枚举法或隐枚举法的思想来求解问题最优解,故当问题的规模越来越大时,算法的计算时间急剧增加。与此形成对照的是连续优化问题,我们知道,最简单的连续优化问题的可行点的个数也是无穷多个,但寻找可行域中的最优点并不需要借助枚举法的思想,因为利用微积分的工具可以刻画出最优点需要满足的一组容易验证的最优性条件,如KKT条件。故只有当算法需要枚举或部分枚举这些可行点时,可行域中可行点的个数才和问题的难度有关。

另外一个朴素的想法是“四舍五入”:求解相应的连续优化问题(丢掉整数约束),然后对求得的解进行四舍五入,得到一个整数解.这个方法有两个问题:(1)一般很难通过四舍五入得到一个满足约束条件的可行解;(2)即使能求得一个可行解,其质量往往很差,即可能离最优解的距离很远,甚至和随机产生的可行解差不多。贪心算法往往可以帮助我们求到一个问题的近似解。例如,在0-1背包问题中,可以先进行排序:
c j 1 a j 1 ≥ c j 2 a j 2 ≥ . . . ≥ c j n a j n \frac{c_{j1}}{a_{j1}}\ge\frac{c_{j2}}{a_{j2}}\ge ... \ge\frac{c_{jn}}{a_{jn}} aj1cj1aj2cj2...ajncjn
然后按照从大到小的顺序 j 1 , . . . , j n j_1,...,j_n j1,...,jn 选取物品知道背包的容量 b b b 不能再装下一个物品。

在实际应用中提出的很多整数规划问题的规模一般都很大,直接利用现有的算法和软件求解往往是不可能的.这就促使人们研究有效快速的近似算法或启发式算法以寻找问题的一个近似最优解或较好的可行解,如近年来发展起来的基于半定规划的随机化算法和各种针对具体整数规划和组合优化问题的近似算法。

参考资料

  1. 整数规划 孙小玲,李瑞 北京,科学出版社 2010
  2. Wolsey L A. Integer programming[M]. John Wiley & Sons, 2020.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试面试总结——http协议相关面试题

前言 在PC浏览器的地址栏输入一串URL&#xff0c;然后按Enter键这个页面渲染出来&#xff0c;这个过程中都发生了什么事?这个是很多面试官喜欢问的一个问题 如果测试只是停留在表面上点点点&#xff0c;不知道背后的逻辑&#xff0c;是无法发现隐藏的bug&#xff0c;只能找一…

【JAVASE】类与对象

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 类与对象 1. 面向对象1.1 什么是面向对象…

Spark-对RDD的理解

RDD是分布式弹性数据集。 RDD有五大特性&#xff1a; 一组分区&#xff0c;每个RDD都会被分为多个分区&#xff0c;这些分区运行在集群的不同节点上&#xff0c;分区数决定并行计算的数量。一个计算每个分区的函数&#xff0c;就是计算逻辑。RDD之间的依赖关系&#xff0c;就…

PostgreSQL Patroni_exporter 监控 patroni高可用工具

Patroni是Cybertec公司基于python语言开发的&#xff0c;可用于使用流复制来创建&#xff0c;管理&#xff0c;维护和监视高可用性PostgreSQL集群设置的工具。 目前&#xff0c;PatroniEtcd 是最为推荐的PostgreSQL数据库高可用方案之一。 PostgreSQL有postgres_exporter监控采…

微信小程序使用 canvas 2d 实现签字板组件

本文是在微信小程序中使用 canvas 2d 来实现签字板功能&#xff1b; 效果图&#xff1a; 代码&#xff1a; 1、wxml <view><canvas id"canvas"type"2d"bindtouchstart"start"bindtouchmove"move"bindtouchend"end&qu…

iphone备份用什么软件?好用的苹果数据备份工具推荐!

众所周知&#xff0c;如果要将iPhone的数据跟电脑进行传输备份的话&#xff0c;我们需要用到iTunes这个pc工具。但是对于iTunes&#xff0c;不少人都反映这个软件比较难用&#xff0c;用不习惯。于是&#xff0c;顺应时代命运的iPhone备份同步工具就出现了。那iphone备份用什么…

VR元宇宙模拟法庭开审体验系统增加学生的参与度和学习效果

元宇宙技术是VR虚拟现实和AR增强现实技术的进一步发展和迭代&#xff0c;它在法治教育中的应用可以突破传统教育的许多限制&#xff0c;让体验者获得更加互动、沉浸和个性化的学习体验。 虚拟法庭&#xff1a; VR元宇宙开发可以模拟虚拟法庭环境&#xff0c;让学生在其中扮演不…

设计师必学!Figma怎么在线保存各种格式图片的操作方法

如今的市场上有许多协作 UI 设计软件可供选择&#xff0c;然而大部分都是国外版本的&#xff0c;对于国内设计师而言&#xff0c;由于语言上的障碍&#xff0c;使用这些软件可能会存在一定的困难。尤其是 Figma 虽然发展多年&#xff0c;但始终没有中文版&#xff0c;让众多设计…

手把手一起使用WPF开源UI框架MahApps.Metro

1、创建新项目 使用Visual Studio 2022创建新项目&#xff0c;如图点击创建新项目&#xff1a; 选择WPF应用(.NET Framework)&#xff1a; 配置新项目&#xff0c;如图&#xff1a; 随便写几个WPF默认样式控件&#xff1a; 2、安装 MahApps.Metro 点击工具->NuGet包管理器…

Iterator迭代器和Generator生成器

Iterator迭代器和for/of循环原理 Iterator迭代器规范 自己创建一个Iterator类,来实现ES6中的迭代器规范: class Iterator {constructor(assemble) {// assemble:需要迭代的数据结构this.assemble = assemble// index:记录迭代的次数(或者索引)this.index = -1}// 必须具…

excle中的条件求和SUMIF

问题&#xff1a;将每一行中红色文字的前一个值累计求和到境外总数这一列 使用的公式 自制单元格的格式计算公式&#xff1a;ctrlf3打开格式管理&#xff0c;创建如下公式&#xff0c;其中24是表示获取文字颜色 由于sumif只能直接与第二参数条件比较&#xff0c;所以先使用IF(公…

LoVT:医学图像与报告的局部表征联合学习

论文&#xff1a;https://arxiv.org/abs/2112.02889 Github&#xff1a;GitHub - philip-mueller/lovt: Localized representation learning from Vision and Text (LoVT) 摘要 摘要对比学习已被证明对未标记数据的预训练图像模型是有效的&#xff0c;在医学图像分类等任务中…

算法专题:子序列系列1

文章目录 单个序列问题示例1&#xff1a;最长递增子序列&#xff08;不连续&#xff09;思路DP数组含义递推公式初始化遍历顺序 完整版注意返回值问题 区分示例1&#xff1a;最长递增子数组区别&#xff1a;递推公式 示例2&#xff1a;最长连续递增序列&#xff08;连续&#x…

【LeetCode】不同路径Ⅱ

不同路径Ⅱ 题目描述算法流程编程代码 链接: 不同路径Ⅱ 题目描述 算法流程 编程代码 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& ob) {int m ob.size();int n ob[0].size();vector<vector<int>>dp(m1,vecto…

LabVIEW 开发在不确定路况下自动速度辅助系统

LabVIEW 开发在不确定路况下自动速度辅助系统 智能驾驶辅助系统是汽车行业最先进的升级和尖端技术&#xff0c;智能交通系统依靠智能驾驶辅助系统在公共交通部门工作。该智能驾驶辅助系统技术包括自适应巡航控制&#xff0c;防抱死制动系统&#xff0c;安全气囊展开&#xff0…

C# 中使用ValueTask优化异步方法

概要 我们在开发过程中&#xff0c;经常使用async的异步方法&#xff0c;但是有些时候&#xff0c;异步的方法中&#xff0c;可能包含一些同步的处理。本文主要介绍通过ValueTask这个struct&#xff0c;优化异步处理的方法性能。 代码及实现 有些时候我们会缓存一些数据在内…

【java线上监控】Arthas由菜鸟到菜鸡

目录 1 arthas介绍 1.1 简介 1.2 背景 1.3 Arthas&#xff08;阿尔萨斯&#xff09;能为你做什么&#xff1f; 2 window环境搭建 2.1 下载和启动 2.1 启动后&#xff1a;选择需要监控的服务 3 快速入门 3.1 打开浏览器 3.2 开启trace请求 3.3 查看 dashboard 3.6.…

UE虚幻引擎 UTextBlock UMG文本控件超过边界区域以后显示省略号

版本 5.2.1 裁剪 - 剪切 - 剪切到边界 裁剪 - 高级 - 溢出策略 - 省略

消息触达平台 - 基础理论

目录 消息触达平台 背景 业务流程 触达配置 服务处理 表现展示 效果统计 触达信息结构 对象 内容 渠道 场景 机制 消息触达平台 背景 在产品生命周期的不同阶段&#xff0c;用户触达体系可以用来对不同用户群体进行定制化运营。结合咱们的日常场景&#xff0c;公司的运营同学或…

数据结构——单链表OJ题

单链表OJ题 前言一、删除链表中等于给定值 val 的所有节点二、反转一个单链表三、返回链表的中间结点四、输出该链表中倒数第k个结点五、将两个有序链表合并六、链表的回文结构七、将链表分割成两部分八、找出第一个公共结点九、判断链表中是否有环总结 前言 在前面的博客中我…