机器学习笔记之最优化理论与方法(三)凸集的简单认识(下)

机器学习笔记之最优化理论与方法——凸集的简单认识[下]

  • 引言
    • 回顾:基本定义——凸集
    • 关于保持集合凸性的运算
      • 仿射变换
    • 凸集基本性质:投影定理
    • 点与凸集的分离
    • 支撑超平面定理

引言

继续凸集的简单认识(上)进行介绍,本节将介绍凸集的基本性质以及相关定理

回顾:基本定义——凸集

关于凸集 ( Convex Set ) (\text{Convex Set}) (Convex Set)定义可简单表述为:可行域 C \mathcal C C中任意两点间的连线,其连线上的任意一点仍在可行域 C \mathcal C C范围内。对应数学符号表示如下:
∀ x , y ∈ C ; ∀ λ ∈ [ 0 , 1 ] ⇒ λ ⋅ x + ( 1 − λ ) ⋅ y ∈ C \forall x,y \in \mathcal C;\forall \lambda \in [0,1] \Rightarrow \lambda \cdot x + (1 - \lambda) \cdot y \in \mathcal C x,yC;λ[0,1]λx+(1λ)yC
如果记线性规划 min ⁡ { c T x ∣ A x = b , x ≥ 0 } \min \{c^T x \mid \mathcal A x = b,x \geq 0\} min{cTxAx=b,x0}最优解组成的集合为 S \mathcal S S,那么 S \mathcal S S是否为凸集 ? ? ?

自然是凸集

  • 最优解集合 S \mathcal S S中任取两点 x 1 , x 2 ∈ S x_1,x_2 \in \mathcal S x1,x2S,必然有:
    其中这里 v ∗ v^* v记作可行域范围内,使 c T x c^Tx cTx达到最小的最优解。
    c T x 1 = c T x 2 = v ∗ c^Tx_1 = c^Tx_2 = v^* cTx1=cTx2=v
  • 根据凸集定义 ∀ λ ∈ [ 0 , 1 ] \forall \lambda \in [0,1] λ[0,1],观察 λ ⋅ x 1 + ( 1 − λ ) ⋅ x 2 \lambda \cdot x_1 + (1 - \lambda) \cdot x_2 λx1+(1λ)x2是否也在最优解集合 S \mathcal S S内即可。将该点代入有:
    c T [ λ ⋅ x 1 + ( 1 − λ ) ⋅ x 2 ] = λ ⋅ c T x 1 ⏟ v ∗ + ( 1 − λ ) ⋅ c T x 2 ⏟ v ∗ = v ∗ \begin{aligned} & \quad c^T[\lambda \cdot x_1 + (1 - \lambda) \cdot x_2] \\ & = \lambda \cdot \underbrace{c^Tx_1}_{v^*} + (1 - \lambda) \cdot \underbrace{c^Tx_2}_{v^*} \\ & = v^* \end{aligned} cT[λx1+(1λ)x2]=λv cTx1+(1λ)v cTx2=v
    可以看出: c T [ λ ⋅ x 1 + ( 1 − λ ) ⋅ x 2 ] c^T[\lambda \cdot x_1 + (1 - \lambda) \cdot x_2] cT[λx1+(1λ)x2]依然是最优解。也就是说: λ ⋅ x 1 + ( 1 − λ ) ⋅ x 2 ∈ S \lambda \cdot x_1 + (1 - \lambda) \cdot x_2 \in \mathcal S λx1+(1λ)x2S S \mathcal S S是凸集得证。

关于保持集合凸性的运算

所谓保持集合凸性的运算,即凸集执行一系列运算后,其结果是凸集的性质不发生变化

C 1 , C 2 ∈ R n \mathcal C_1,\mathcal C_2 \in \mathbb R^n C1,C2Rn,并且是凸集。则有:

  • 交集 C 1 ∩ C 2 = { x ∣ x ∈ C 1 , x ∈ C 2 } \mathcal C_1 \cap \mathcal C_2 = \{x \mid x \in \mathcal C_1,x \in \mathcal C_2\} C1C2={xxC1,xC2}同样是凸集
    相反,并集 C 1 ∪ C 2 \mathcal C_1 \cup \mathcal C_2 C1C2未必是凸集~
  • 关于集合的加减运算 C 1 ± C 2 = { x ± y ∣ x ∈ C 1 , y ∈ C 2 } \mathcal C_1 \pm \mathcal C_2 = \{x \pm y \mid x \in \mathcal C_1,y \in \mathcal C_2\} C1±C2={x±yxC1,yC2}同样是凸集

如果存在一个由 n n n维向量组成的集合 S \mathcal S S
{ S = { x ∈ R n ∣ ∣ P ( t ) ∣ ≤ 1 , ∣ t ∣ ≤ π 3 } P ( t ) = ∑ i = 1 n x i ⋅ cos ⁡ ( i ⋅ t ) \begin{cases} \begin{aligned} & \mathcal S = \left\{x \in \mathbb R^n \mid |\mathcal P(t)| \leq 1, |t| \leq \frac{\pi}{3} \right\} \\ & \mathcal P(t) = \sum_{i=1}^n x_i \cdot \cos (i \cdot t) \end{aligned} \end{cases} S={xRnP(t)1,t3π}P(t)=i=1nxicos(it)
那么集合 S \mathcal S S是否为凸集 ? ? ?

  • 首先,由于 S \mathcal S S是关于 x x x的集合,因而 P ( t ) \mathcal P(t) P(t)可看作是一个关于 x x x线性表达式。并且有:
    − 1 ≤ ∑ i = 1 n x i ⋅ cos ⁡ ( i ⋅ t ) ≤ 1 -1 \leq \sum_{i=1}^n x_i \cdot \cos (i \cdot t) \leq 1 1i=1nxicos(it)1
  • 如果 t t t给定,那么可以将上式视作: { ∑ i = 1 n x i ⋅ cos ⁡ ( i ⋅ t ) ≤ 1 ∑ i = 1 n x i ⋅ cos ⁡ ( i ⋅ t ) ≥ − 1 \begin{cases} \sum_{i=1}^n x_i \cdot \cos(i \cdot t) \leq 1 \\ \sum_{i=1}^n x_i \cdot \cos(i \cdot t) \geq -1 \\ \end{cases} {i=1nxicos(it)1i=1nxicos(it)1所描述的一对半空间的交集
  • 由于 − π 3 ≤ t ≤ π 3 \begin{aligned}-\frac{\pi}{3}\leq t \leq \frac{\pi}{3}\end{aligned} 3πt3π,是一个连续的范围,那么:可以在该范围内取出无穷个 t t t,从而得到无穷对半空间的交集。而半空间自身是凸集,那么无穷对半空间的交集同样是凸集。因而 S \mathcal S S是凸集。
    准确的说, S \mathcal S S是一个多面体。

如果 n = 2 n = 2 n=2,此时仅包含两个变量 x 1 , x 2 x_1,x_2 x1,x2。可以通过 2 2 2维图像的方式观察这个多面体凸集描述的范围。具体代码如下:
t t t固定的情况下,函数 ∣ P ( t ) ∣ = 1 ⇒ P ( t ) = ± 1 |\mathcal P(t)| = 1 \Rightarrow \mathcal P(t) = \pm1 P(t)=1P(t)=±1可看做是 ϕ ( x 1 , x 2 ) \phi(x_1,x_2) ϕ(x1,x2)的表示。令 ϕ ( x 1 , x 2 ) = P ( t ) ∓ 1 ≜ 0 \phi(x_1,x_2) = \mathcal P(t) \mp 1 \triangleq 0 ϕ(x1,x2)=P(t)10,从而得到 x 1 , x 2 x_1,x_2 x1,x2之间的函数关系:
x 1 ⋅ cos ⁡ t + x 2 ⋅ cos ⁡ ( 2 ⋅ t ) = ± 1 ⇒ x 1 = ± 1 − x 2 ⋅ cos ⁡ ( 2 ⋅ t ) cos ⁡ t \begin{aligned} & \quad x_1 \cdot \cos t + x_2 \cdot \cos (2 \cdot t) = \pm1 \\ & \Rightarrow x_1 = \pm\frac{1 - x_2 \cdot \cos (2 \cdot t)}{\cos t} \end{aligned} x1cost+x2cos(2t)=±1x1=±cost1x2cos(2t)

import numpy as np
import matplotlib.pyplot as plt
import mathx = np.linspace(-2.5,2,100)
tChoice = np.linspace(-1 * (math.pi / 3),math.pi / 3,30)def phi(x1,t):return (1 - x1 * math.cos(2 * t)) / math.cos(t)def phiTrans(x1,t):return (x1 * math.cos(2 * t) - 1) / math.cos(t)for t in tChoice:y = list()y2 = list()for x1 in x:y.append(phi(x1,t))y2.append(phiTrans(x1,t))plt.plot(x,y,c="tab:red")plt.plot(x,y2,c="tab:red")
plt.show()

对应图像结果表示如下:
中间围成的区域就是 n = 2 n=2 n=2条件下的多面体凸集 S \mathcal S S
多面体凸集示例

仿射变换

仿射变换 ( Affine Transformation ) (\text{Affine Transformation}) (Affine Transformation)同样是保持集合凸性的一种运算。具体描述如下:
需要注意的是:线性变换是特殊的仿射变换

假设函数 f ( ⋅ ) : R n ↦ R m f(\cdot):\mathbb R^n \mapsto \mathbb R^m f():RnRm仿射函数,即 f ( x ) = A x + b f(x) = \mathcal Ax + b f(x)=Ax+b。其中 A ∈ R m × n , b ∈ R m \mathcal A \in \mathbb R^{m \times n},b \in \mathbb R^{m} ARm×n,bRm,则有如下结论:
其中 f − 1 ( ⋅ ) f^{-1}(\cdot) f1()表示仿射函数 f ( ⋅ ) f(\cdot) f()的逆

  • 如果 C \mathcal C C凸集 ⇒ f ( C ) = { f ( x ) ∣ x ∈ C } \Rightarrow f(\mathcal C) = \{f(x) \mid x \in \mathcal C\} f(C)={f(x)xC}也是凸集
  • 如果 C \mathcal C C凸集 ⇒ f − 1 ( C ) = { x ∣ f ( x ) ∈ C } \Rightarrow f^{-1}(\mathcal C) = \{x \mid f(x) \in \mathcal C\} f1(C)={xf(x)C}也是凸集

以第一项为例:对于 ∀ y 1 , y 2 ∈ f ( C ) \forall y_1,y_2 \in f(\mathcal C) y1,y2f(C),必然有:
{ y 1 = A x 1 + b y 2 = A x 2 + b x 1 , x 2 ∈ C \begin{cases} y_1 = \mathcal Ax_1 + b \\ y_2 = \mathcal Ax_2 + b \end{cases}\quad x_1,x_2 \in \mathcal C {y1=Ax1+by2=Ax2+bx1,x2C
根据凸集的定义,对 ∀ λ ∈ [ 0 , 1 ] \forall \lambda \in [0,1] λ[0,1],将 λ ⋅ y 1 + ( 1 − λ ) ⋅ y 2 \lambda \cdot y_1 + (1 - \lambda) \cdot y_2 λy1+(1λ)y2展开,有:
λ ⋅ y 1 + ( 1 − λ ) ⋅ y 2 = λ ( A x 1 + b ) + ( 1 − λ ) ⋅ ( A x 2 + b ) = A [ λ ⋅ x 1 + ( 1 − λ ) ⋅ x 2 ] + b \begin{aligned} \lambda \cdot y_1 + (1 - \lambda) \cdot y_2 & = \lambda (\mathcal Ax_1 + b) + (1 - \lambda) \cdot(\mathcal Ax_2 + b) \\ & = \mathcal A [\lambda \cdot x_1 + (1 - \lambda) \cdot x_2] + b \end{aligned} λy1+(1λ)y2=λ(Ax1+b)+(1λ)(Ax2+b)=A[λx1+(1λ)x2]+b
由于 x 1 , x 2 ∈ C x_1,x_2 \in \mathcal C x1,x2C,且 C \mathcal C C凸集,必然有:
∀ λ ∈ [ 0 , 1 ] ⇒ λ ⋅ x 1 + ( 1 − λ ) ⋅ x 2 ∈ C \forall \lambda \in [0,1] \Rightarrow \lambda \cdot x_1 + (1 - \lambda) \cdot x_2 \in \mathcal C λ[0,1]λx1+(1λ)x2C
从而有:
λ ⋅ y 1 + ( 1 − λ ) ⋅ y 2 ∈ f ( C ) \lambda \cdot y_1 + (1 - \lambda) \cdot y_2 \in f(\mathcal C) λy1+(1λ)y2f(C)
因而 f ( C ) f(\mathcal C) f(C)也是凸集

一些特殊的仿射变换有:
其中 α , β \alpha,\beta α,β是常数。

  • 放缩 ( Scaling ) (\text{Scaling}) (Scaling)
    α ⋅ C = { α ⋅ x ∣ x ∈ C } \alpha \cdot \mathcal C = \{\alpha \cdot x \mid x \in \mathcal C\} αC={αxxC}
  • 平移 ( Translation ) (\text{Translation}) (Translation)
    β + C = { β + x ∣ x ∈ C } \beta+ \mathcal C = \{\beta+ x \mid x \in \mathcal C\} β+C={β+xxC}
  • 投影 ( Projection ) (\text{Projection}) (Projection)
    { x 1 ∣ ( x 1 x 2 ) ∈ C } \left\{x^1 \mid \begin{pmatrix}x^1 \\ x^2\end{pmatrix} \in \mathcal C\right\} {x1(x1x2)C}

对应示例图像表示如下:
特殊仿射变化示例

凸集基本性质:投影定理

投影定理描述如下:
假设 C ⊂ R n \mathcal C \subset \mathbb R^n CRn,是一个非空闭凸集 y ∈ R n y \in \mathbb R^n yRn y ∉ C y \notin \mathcal C y/C,有:

  • 存在唯一的点 x ˉ ∈ C \bar{x} \in \mathcal C xˉC,使得 x ˉ \bar{x} xˉ y y y C \mathcal C C的距离最小的点,且有:
    距离最小的点即投影点
    ∥ x ˉ − y ∥ = inf ⁡ { ∥ x − y ∥ ∣ x ∈ C } > 0 \|\bar {x} - y\| = \inf\{\|x - y\| \mid x \in \mathcal C\} > 0 xˉy=inf{xyxC}>0
  • x ˉ \bar{x} xˉ y y y C \mathcal C C最小距离点充要条件是:
    ( x − x ˉ ) T ( x ˉ − y ) ≤ 0 ∀ x ∈ C (x - \bar{x})^T (\bar{x} - y) \leq 0 \quad \forall x \in \mathcal C (xxˉ)T(xˉy)0xC

证明过程:

  • 存在性
    关于 y y y C \mathcal C C的距离,本质上是描述 y y y与凸集 C \mathcal C C中点的距离,假设 x ′ ∈ C x' \in \mathcal C xC,对应目标函数表示如下:
    这里使用二范数表示 x ′ x' x y y y之间的距离。
    min ⁡ f ( x ) = ∥ y − x ′ ∥ 2 2 \min f(x) = \|y - x'\|_2^2 minf(x)=yx22
    但我们要找的是距离最小的点,而这个 x ′ x' x可能并不是那个点。因而我们要找的距离最小点的可行域表示为:
    s.t.  x ∈ C ∩ N d ( y ) \text{s.t. } x \in \mathcal C \cap \mathcal N_d(y) s.t. xCNd(y)
    其中 d = ∣ ∣ y − x ′ ∣ ∣ 2 2 d = ||y - x'||_2^2 d=∣∣yx22;而 N d ( y ) \mathcal N_d(y) Nd(y)表示 y y y为圆心,半径为 d d d的圆所描述的范围。也就是说:如果 x ′ x' x不是距离最小点,并不需要重新从范围 C \mathcal C C中寻找点,只需要在交集内寻找距离最小点即可。对应图像表示如下:
    投影定理存在性示例
    由于 C \mathcal C C非空闭凸集,说明这个交集有界。在连续函数(距离函数)在有界空间内求最小值,那么该值必然可达

  • 唯一性(反证):
    对应图像表示如下~
    投影定理唯一性示例
    不妨设 x ′ , x ˉ ( x ˉ ≠ x ′ ) x',\bar{x}(\bar x \neq x') x,xˉ(xˉ=x)均是投影点,从而有:
    d = ∥ y − x ˉ ∥ 2 2 = ∥ y − x ′ ∥ 2 2 d = \|y - \bar{x}\|_2^2 = \|y - x'\|_2^2 d=yxˉ22=yx22
    由于 x ˉ ≠ x ′ \bar{x} \neq x' xˉ=x,连接两点,根据凸集合的定义:两点连线上的点必然也 ∈ C \in \mathcal C C。此时, x ′ , x ˉ , y x',\bar{x},y x,xˉ,y三个点构成一个等腰三角形,从而有:线段 x ˉ x ′ \bar{x}x' xˉx上的点到 y y y的距离必然小于 d d d。从而得出: x ˉ , x ′ \bar{x},x' xˉ,x不是投影点,这与假设冲突。因而 x ′ , x ˉ x',\bar{x} x,xˉ两点重合,投影点具有唯一性

  • 充要条件:观察下面图像:
    充要条件示例
    假设此时已经找到了投影点 x ˉ \bar{x} xˉ,必然有:

    • 向量 y − x ˉ y - \bar{x} yxˉ x ˉ \bar{x} xˉ在凸集 C \mathcal C C的切线垂直;
    • 并且凸集 C \mathcal C C中除去 x ˉ \bar{x} xˉ之外的其他点均与 y − x ˉ y - \bar{x} yxˉ处在由切线划分的不同的半空间

    从而有:向量 y − x ˉ y - \bar{x} yxˉ x − x ˉ ( ∀ x ∈ C ) x - \bar{x}(\forall x \in \mathcal C) xxˉ(xC)之间的夹角总是大于等于 9 0 。 90^。 90。即:
    等于 9 0 。 90^。 90 x , x ˉ x,\bar{x} x,xˉ重合~
    ( y − x ˉ ) T ( x − x ˉ ) = ∥ y − x ˉ ∥ ⋅ ∥ x − x ˉ ∥ cos ⁡ θ ≤ 0 (y - \bar{x})^T (x - \bar{x}) = \|y - \bar{x}\| \cdot \|x - \bar{x}\| \cos \theta \leq 0 (yxˉ)T(xxˉ)=yxˉxxˉcosθ0
    反之同理。

点与凸集的分离

定理描述如下:
假设 C 1 , C 2 \mathcal C_1,\mathcal C_2 C1,C2是两个非空凸集,若存在非零 α ∈ R n \alpha \in \mathbb R^n αRn b ∈ R b \in \mathbb R bR使得
或者写作: α T z ≤ α T x ∀ x ∈ C 1 , ∀ z ∈ C 2 \alpha^T z \leq \alpha^Tx \quad \forall x \in \mathcal C_1,\forall z \in \mathcal C_2 αTzαTxxC1,zC2
{ α T x ≥ b ∀ x ∈ C 1 α T z ≤ b ∀ z ∈ C 2 \begin{cases} \alpha^T x \geq b \quad \forall x \in \mathcal C_1 \\ \alpha^T z \leq b \quad \forall z \in \mathcal C_2 \end{cases} {αTxbxC1αTzbzC2
则称超平面 H = { x ∣ α T x = b } \mathcal H = \{x \mid \alpha^T x = b\} H={xαTx=b}分离集合 C 1 , C 2 \mathcal C_1,\mathcal C_2 C1,C2

严格分离
观察上述的分离定义,由于超平面可以取等,使得凸集 C 1 , C 2 \mathcal C_1,\mathcal C_2 C1,C2与超平面 H \mathcal H H之间可能存在交集。而严格分离定义在上述分离定义的基础上, C 1 , C 2 \mathcal C_1,\mathcal C_2 C1,C2均不与超平面 H \mathcal H H之间存在交集。即:
{ α T x > b ∀ x ∈ C 1 α T z < b ∀ z ∈ C 2 \begin{cases} \alpha^T x > b \quad \forall x \in \mathcal C_1 \\ \alpha^T z < b \quad \forall z \in \mathcal C_2 \end{cases} {αTx>bxC1αTz<bzC2
基于上述定义,从而有如下推论:

  • 两个不相交的非空凸集,它们一定能分离
    相反,如果存在集合不是凸集,那就不一定了~
  • 假设 C ⊂ R n \mathcal C \subset \mathbb R^n CRn非空闭凸集,点 y ∉ C y \notin \mathcal C y/C,必然存在超平面 H \mathcal H H y y y C \mathcal C C分离
    例如上面描述投影定理充要条件中的红色虚线。实际上:垂直于 y − x ˉ y - \bar{x} yxˉ并且经过线段 x ˉ y \bar{x}y xˉy上的超平面都是满足要求的
    { α = y − x ˉ α T ( y − x ) ≥ 0 ⇒ α T y ≥ α T x ∀ x ∈ C \begin{cases} \alpha = y - \bar{x} \\ \alpha^T(y - x) \geq 0 \Rightarrow \alpha^Ty \geq \alpha^T x \quad \forall x \in \mathcal C \end{cases} {α=yxˉαT(yx)0αTyαTxxC
    上面式子描述的向量 y − x y-x yx描述的是从凸集 C \mathcal C C中的任意一点指向 y y y的向量,而该向量和向量 y − x ˉ y - \bar{x} yxˉ之间的夹角必然是锐角

支撑超平面定理

定理描述如下:
假设 C ∈ R n \mathcal C \in \mathbb R^n CRn非空闭凸集,其中 x ˉ \bar{x} xˉ C \mathcal C C边界点 x ˉ ∈ ∂ C \bar{x} \in \partial \mathcal C xˉC,则存在非零向量 α ∈ R n \alpha \in \mathbb R^n αRn使得:
其中 ∂ C \partial \mathcal C C表示集合 C \mathcal C C边界点 int C \text{int} \mathcal C intC表示集合 C \mathcal C C不包含边界点的所有内点 c l C cl\mathcal C clC表示由内点、边界点构成的集合(闭包) ⇒ \Rightarrow 非空的闭凸集合
α T x ≤ α T x ˉ ∀ x ∈ c l C \alpha^T x \leq \alpha^T \bar{x} \quad \forall x \in \mathcal clC αTxαTxˉxclC
此时,也称超平面 H = { x ∈ R n ∣ α T x = α T x ˉ } \mathcal H = \{x \in \mathbb R^n \mid \alpha^T x = \alpha^T \bar{x}\} H={xRnαTx=αTxˉ}凸集 C \mathcal C C x ˉ \bar{x} xˉ处的支撑超平面。对应图像表示如下:
支撑超平面定理示例
证明过程
已知 x ˉ ∈ ∂ C \bar{x} \in \partial \mathcal C xˉC,要证: ∃ α ≠ 0 \exist \alpha \neq 0 α=0使得 α T x ≤ α T x ˉ ∀ x ∈ c l C \alpha^T x \leq \alpha^T \bar{x} \quad \forall x \in cl\mathcal C αTxαTxˉxclC

由于 x ˉ ∈ ∂ C \bar{x} \in \partial \mathcal C xˉC,则必然可以找到收敛于 x ˉ \bar{x} xˉ的点序列 { x k } ↦ x ˉ \{x_k\} \mapsto \bar{x} {xk}xˉ并且 { x k } ∉ c l C \{x_k\} \notin cl\mathcal C {xk}/clC
也就是说:这个点序列 { x k } \{x_k\} {xk}并不是从凸集 C \mathcal C C内找的,而是从集合之外找的

由于 x k ∉ c l C x_k \notin cl\mathcal C xk/clC,根据分离定理,存在超平面/非零法向量 α k \alpha_k αk,有:
也就是说:每一次迭代,总会找到相应的超平面 α k \alpha_k αk C \mathcal C C x k x_k xk做分离
α k T x ≤ α k T x k x ∈ c l C \alpha_k^T x \leq \alpha_k^T x_k \quad x \in cl\mathcal C αkTxαkTxkxclC
由于 α k \alpha_k αk法向量,我们更关注它的方向性而不是大小。因而不妨设 ∥ α k ∥ = 1 \|\alpha_k\| = 1 αk=1,则有:法向量序列 { α k } \{\alpha_k\} {αk}随着 { x k } \{x_k\} {xk}的迭代过程收敛到某位置。当 k ⇒ ∞ k \Rightarrow \infty k时,有:
α T x ˉ = lim ⁡ k ⇒ ∞ α k T ⋅ x k ≥ α T x x ∈ c l C \alpha^T \bar{x} = \mathop{\lim}\limits_{k \Rightarrow \infty} \alpha_k^T \cdot x_k \geq \alpha^T x \quad x \in cl\mathcal C αTxˉ=klimαkTxkαTxxclC
证毕。使用图像表示如下:
支撑超平面定理证明
相关参考:
最优化理论与方法-第二讲-凸集

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

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

相关文章

go小知识2

Golang开发新手常犯的50个错误_gezhonglei2007的博客-CSDN博客 一些题目整理&#xff0c;附带大佬的解释 1.go中哪些值不能寻址& 常量&#xff08;const常量&#xff0c;字面值3.14&#xff0c;字符串“xxx”&#xff0c;函数或方法, map的val值&#xff09; golang中接…

OpenCV(二十五):边缘检测(一)

目录 1.边缘检测原理 2.Sobel算子边缘检测 3.Scharr算子边缘检测 4.两种算子的生成getDerivKernels() 1.边缘检测原理 其原理是基于图像中灰度值的变化来捕捉图像中的边界和轮廓。梯度则表示了图像中像素强度变化的强弱和方向。 所以沿梯度方向找到有最大梯度值的像素&…

Linux网络编程 网络基础知识

目录 1.网络的历史和协议的分成 2.网络互联促成了TCP/IP协议的产生 3.网络的体系结构 4.TCP/IP协议族体系 5.网络各层的协议解释 6.网络的封包和拆包 7.网络预备知识 1.网络的历史和协议的分成 Internet-"冷战"的产物 1957年十月和十一月&#xff0c;前苏…

C#__线程的优先级和状态控制

线程的优先级&#xff1a; 一个CPU同一时刻只能做一件事情&#xff0c;哪个线程优先级高哪个先运行&#xff0c;优先级相同看调度算法。 在Thread类中的Priority属性&#xff08;Highest,Above,Normal,BelowNormal,Lowest&#xff09;可以影响线程的优先级 关于…

swiper删除虚拟slide问题

在存在缓存的情况下&#xff0c;删除较前的slide&#xff0c;会出现当前slide与后一个slide重复出现的情况 假设当前存在5个slide&#xff0c;且这5个slide已缓存&#xff0c;则删除slide2后&#xff0c;仍为5个slide&#xff0c;且slide2的内容变为slide3的内容&#xff0c;此…

Pushgetway安装和使用

1、Pushgetway安装和使用 1.1 Pushgateway是什么 pushgateway 是另一种数据采集的方式&#xff0c;采用被动推送来获取监控数据的prometheus插件&#xff0c;它可以单独运行在 任何节点上&#xff0c;并不一定要运行在被监控的客户端。 首先通过用户自定义编写的脚本把需要监…

记一次时间序列算法的自回归预测--ARAutoreg

背景 最近公司给客户要做一些数据的预测&#xff0c;但是客户不清楚哪些做起来比较符合他们的&#xff0c;于是在经过与业务方的沟通&#xff0c;瞄准了两个方面的数据 1.工程数据&#xff1a;对工程数据做评估&#xff0c;然后做预警&#xff0c;这个想法是好的&#xff0c;…

DGIOT-Modbus-RTU控制指令05、06的配置与下发

[小 迪 导 读]&#xff1a;伴随工业物联网在实际应用中普及&#xff0c;Modbus-RTU作为行业内的标准化通讯协议。在为物联网起到采集作用的同时&#xff0c;设备的控制也是一个密不可分的环节。 场景解析&#xff1a;在使用Modbus对设备进行采集后&#xff0c;可以通过自动控制…

多波束测线问题

多波束测线问题 问题的背景是海洋测深技术&#xff0c;特别是涉及单波束测深和多波束测深系统。这些系统利用声波传播原理来测量水体深度。 单波束测深系统通过向海底发射声波信号并记录其返回时间来测量水深。该系统的特点是每次只有一个波束打到海底&#xff0c;因此数据分布…

理解项目开发(寺庙小程序)

转载自&#xff1a;历经一年&#xff0c;开发一个寺庙小程序&#xff01; (qq.com) 破防了&#xff01;为方丈开发一款纪念小程序&#xff01; (qq.com) 下面内容转载自&#xff1a;程序员5K为青岛啤酒节开发个点餐系统&#xff01; (qq.com) 看一个人如何完成一个项目的开发…

CSS笔记(黑马程序员pink老师前端)浮动,清除浮动

浮动可以改变标签的默认排列方式。浮动元素常与标准流的父元素搭配使用. 网页布局第一准则:多个块级元素纵向排列找标准流&#xff0c;多个块级元素横向排列找浮动。 float属性用于创建浮动框&#xff0c;将其移动到一边&#xff0c;直到左边缘或右边缘触及包含块或另一个浮动框…

分类预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)分类预测

分类预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)分类预测 目录 分类预测 | MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)分类预测预测效果基本介绍程序设计参考资料致谢 预测效果 基本介绍 MATLAB实现PCA-LSTM(主成分长短期记忆神经网络)分类预测。Matlab实现基于P…

【java】【项目实战】[外卖十一]项目优化(Ngnix)

目录 一、Nginx概述 1、Nginx介绍 2、Nginx下载和安装 3、Nginx目录结构 二、Nginx命令 1、查看版本 2、检查配置文件正确性 3、启动和停止 4、重新加载配置文件 三、Nginx配置文件结构 1、全局块 2、events块 3、http块 四、Nginx具体应用 1、部署静态资源 2、…

LeetCode 904. 水果成篮

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 在你去摘水果的时候&#xff0c;你当前只能拥有两种种类的水果&#xff0c;若想拿第三种水果&#xff0c;就需要发下前两种水果中的一种。 法一&#xff1a;滑动窗口哈希表(未优化…

【Linux】shell脚本和bat脚本:

文章目录 一、脚本对应环境&#xff1a;【1】shell&#xff1a;linux环境&#xff1b;后缀名为.sh【2】bat&#xff1a;windows环境&#xff1b;后缀名为.bat或者.cmd 二、脚本执行&#xff1a;【1】shell执行【2】bat脚本执行 三、脚本相关命令&#xff1a;1. shell命令【1】s…

有向图和无向图的表示方式(邻接矩阵,邻接表)

目录 一.邻接矩阵 1.无向图​编辑 2.有向图 补充&#xff1a;网&#xff08;有权图&#xff09;的邻接矩阵表示法 二.邻接表 1.无向图 2.有向图 三.邻接矩阵与邻接表的关系 一.邻接矩阵 1.无向图 &#xff08;1&#xff09;对角线上是每一个顶点与自身之间的关系&…

数据库(MySQL)的存储过程

一、存储过程介绍 存储过程是事先经过编译并存储在数据库中的一段SQL 语句的集合&#xff0c;调用存储过程可以简化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&#xff0c;对于提高数据处理的效率是有好处的。 存储过程思想上很简单&#xff0…

多功能透明屏,在智能家居领域中,有哪些功能特点?显示、连接

多功能透明屏是一种新型的显示技术&#xff0c;它能够在透明的表面上显示图像和视频&#xff0c;并且具有多种功能。 这种屏幕可以应用于各种领域&#xff0c;如商业广告、智能家居、教育等&#xff0c;为用户提供更加便捷和多样化的体验。 首先&#xff0c;多功能透明屏可以…

[HNCTF 2022 Week1]——Web方向 详细Writeup

Week1 [HNCTF 2022 Week1]2048 f12查看源代码 可以看出游戏的分数是score 修改score的值 得到flag [HNCTF 2022 Week1]Interesting_include 得到源码 <?php //WEB手要懂得搜索 //flag in ./flag.phpif(isset($_GET[filter])){$file $_GET[filter];if(!preg_match(&qu…

3次多项式轨迹规划(PLC SCL代码)

机器人、运动控制等常用的轨迹规划有三次多项式、五次多项式、梯形速度规划,S型速度规划,今天我们主要介绍三次多项式轨迹规划,有关T型和S型轨迹规划大家可以查看下面文章博客,这里不再赘述, 梯形轨迹规划 梯形速度曲线轨迹规划(速度前馈+PID、SCL+ ST代码)_RXXW_Dor的博…