图论与网络优化2

CSDN 有字数限制,因此笔记分别发布,目前:

  1. 【笔记1】概念与计算、树及其算法
  2. 【笔记2】容量网络模型

4 最大流及其算法

4.1 容量网络模型

4.1.1 容量网络

容量网络:如果一个加权有向网络 D D D 满足如下三个条件:①存在唯一一个入度为 0 0 0 的顶点,称为源;②存在唯一一个出度为 0 0 0 的顶点,称为汇;③每条弧 ( v i , v j ) (v_i,v_j) (vi,vj) 赋权 c i j c_{ij} cij 是一个非负数,称为弧 ( v i , v j ) (v_i,v_j) (vi,vj) 的容量,则把这个加权有向网络 D D D 称为容量网络。


4.1.2 流

:设 D D D 是一个容量网络,令 c i j c_{ij} cij 表示弧 ( v i , v j ) (v_i,v_j) (vi,vj) 的容量。设 f f f 是定义在 D D D 的弧集上的一个函数,它赋予每条弧 ( v i , v j ) (v_i,v_j) (vi,vj) 一个非负实数 f i j f_{ij} fij,若 f f f 满足:① f i j ≤ c i j f_{ij} \leq c_{ij} fijcij;② ∀ v j ∈ V ( D ) \forall v_j \in V(D) vjV(D) \ { v s , v t } \{v_s,v_t\} {vs,vt} ∑ ( v i , v j ) ∈ E ( D ) f i j = ∑ ( v j , v i ) ∈ E ( D ) f j i \sum_{(v_i,v_j)\in E(D)} f_{ij} = \sum_{(v_j,v_i)\in E(D)} f_{ji} (vi,vj)E(D)fij=(vj,vi)E(D)fji,则称 f f f 为容量网络 D D D 的一个流,称 f i j f_{ij} fij 为弧 ( v i , v j ) (v_i,v_j) (vi,vj) 上的流量。
(非)饱和弧:弧上的流量(未)达到弧的容量。


4.1.3 流值

定理:设 f f f 是容量网络 D D D 的一个流,其中源为 v s v_s vs,汇为 v t v_t vt,由源的流出量等于汇的流入量,即 ∑ ( v s , v j ) ∈ E ( D ) f s i = ∑ ( v i , v t ) ∈ E ( D ) f i t \sum_{(v_s,v_j)\in E(D)}f_{si}=\sum_{(v_i,v_t)\in E(D)}f_{it} (vs,vj)E(D)fsi=(vi,vt)E(D)fit
证明:注意到每条弧上的流量,既是其头顶点的流入量,也是其尾顶点的流出量,因此所有弧上的流量之和、所有顶顶啊的流入量之和、所有顶点的流出量之和,这三者相等。
流值:设 f f f 是容量网络 D D D 的一个流,其源为 v s v_s vs,汇为 v t v_t vt,称源的流出量为流 f f f 的流值,记作 v a l ( f ) val(f) val(f)


4.1.4 最大流

最大流:设 D D D 是一个容量网络,若 f f f D D D 上流值最大的流,则把 f f f 称为 D D D 的最大流。
:设 D D D 是一个容量网络,源为 v s v_s vs,汇为 v t v_t vt。设顶点子集 S ⊂ V ( D ) , S ‾ = V ( D ) S \subset V(D),\overline{S}=V(D) SV(D),S=V(D) \ S S S,且 v s ∈ S , v t ∈ S ‾ v_s\in S, v_t \in \overline{S} vsS,vtS,则称弧集 { ( v i , v j ) ∈ E ( D ) ∣ v i ∈ S , v j ∈ S ‾ } \{(v_i,v_j)\in E(D)|v_i \in S, v_j \in \overline{S}\} {(vi,vj)E(D)viS,vjS} 为容量网络 D D D 的截,记作 ( S , S ‾ ) (S,\overline{S}) (S,S)
截的容量 ∑ ( v i , v j ) ∈ ( S , S ‾ ) c i j \sum_{(v_i,v_j)\in(S,\overline{S})}c_{ij} (vi,vj)(S,S)cij,记作 c ( S , S ‾ ) c_(S,\overline{S}) c(S,S)
最小截:容量达最小的截为最小截。
定理:设 D D D 是一个容量网络,源为 v s v_s vs,汇为 v t v_t vt。设 f f f 是容量网络 D D D 的一个流, ( S , S ‾ ) (S,\overline{S}) (S,S) D D D 的一个截,则有 v a l ( f ) ≤ c ( S , S ‾ ) val(f) \leq c(S,\overline{S}) val(f)c(S,S)
证明:…
流值与截容量相等当且仅当每条弧都是饱和弧且无逆流的时候。
若容量网络的一个流 f f f 的流值等于某个截 ( S , S ‾ ) (S,\overline{S}) (S,S)的容量,即 c ( S , S ‾ ) = v a l ( f ) c(S,\overline{S})=val(f) c(S,S)=val(f),则 f f f 为最大流, ( S , S ‾ ) (S,\overline{S}) (S,S) 为最小截。


4.2 最大流算法

4.2.1 可增路

可增路:设 P P P 是一条 ( v s , v j ) (v_s,v_j) (vs,vj) 路,如果①对 P P P 中每条正向弧 ( v i , v j ) , f i j < c i j (v_i,v_j),f_{ij} < c_{ij} (vi,vj),fij<cij;②对 P P P 中每条反向弧 ( v i , v j ) , f i j > 0 (v_i,v_j),f_{ij} > 0 (vi,vj),fij>0,则称 ( v s , v j ) (v_s,v_j) (vs,vj) f f f 非饱和路;否则为饱和路。从源到汇的 f f f 非饱和路,称为 f f f 可增路。


4.2.2 最大流算法

定理:设容量网络 D D D 的源为 v s v_s vs,汇为 v t v_t vt f f f D D D 的一个流,则 f f f 为最大流当且仅当 D D D 中不存在 f f f 可增路。
证明:只需证明充分性。只需证明存在截 ( S , S ‾ ) (S,\overline{S}) (S,S) 满足: ( S , S ‾ ) (S,\overline{S}) (S,S) 中的每条弧都是饱和弧, ( S ‾ , S ) (\overline{S}, S) (S,S) 中的每条弧都是零弧。
将顶点分类,令 S = { v s } ∪ { v j ∣ 存在一条 f 非饱和路 ( v s , v j ) } S=\{v_s\} \cup \{v_j|存在一条 f 非饱和路 (v_s,v_j)\} S={vs}{vj存在一条f非饱和路(vs,vj)},故有 v t ∈ S ‾ v_t \in \overline{S} vtS
S S S S ‾ \overline S S 之间假设 f i j < c i j f_{ij} < c_{ij} fij<cij,易见 P + ( v i , v j ) P+(v_i,v_j) P+(vi,vj) 亦为 f f f 非饱和路,与 v j ∈ S ‾ v_j \in \overline{S} vjS 矛盾。同理可以证明 f i j = 0 f_{ij}=0 fij=0
标号法能求解可增路


4.2.3 最大流最小截定理

最大流算法结束时,最大流流值等于最小截容量。
定理:在任何容量网络 D D D 中,最大流的流值等于最小截的容量。
证明:(大致思路)设 S S S 为能用标号法能够获得标号的顶点集合,则 ( S , S ‾ ) (S,\overline{S}) (S,S) 之间的弧的值必定为 0 0 0


4.3 最小费用最大流

4.3.1 问题描述

f f f 的费用:设容量网络 D D D 的源为 v s v_s vs,汇为 v t v_t vt c i j c_{ij} cij b i j b_{ij} bij 分别表示弧 ( v i , v j ) (v_i,v_j) (vi,vj) 上的容量和单位流量费用,设 f f f G G G 的流,则称 b ( f ) = ∑ ( v i , v j ) ∈ E ( D ) f i j b i j b(f)=\sum_{(v_i,v_j)\in E(D)}f_{ij}b_{ij} b(f)=(vi,vj)E(D)fijbij 为流 f f f 的费用。在容量网络 D D D 的所有最大流中寻找费用最小的流,这样的流称为最小费用最大流。


4.3.2 F增广圈

增广圈:设 Q Q Q 是一个具有指定正向的圈, Q + Q^+ Q+ 为圈 Q Q Q 上正向弧的集合, Q − Q^- Q 为圈 Q Q Q 上反向弧的集合。

  1. δ i j = c i j − f i j , ( v i , v j ) ∈ Q + \delta_{ij}=c_{ij}-f_{ij},(v_i,v_j) \in Q^+ δij=cijfij(vi,vj)Q+
  2. δ i j = f i j , ( v i , v j ) ∈ Q − \delta_{ij}=f_{ij},(v_i,v_j) \in Q^- δij=fij(vi,vj)Q

δ ( Q ) = m i n { δ i j ∣ ( v i , v j ) ∈ E ( Q ) } \delta(Q)=min\{\delta_{ij}|(v_i,v_j) \in E(Q)\} δ(Q)=min{δij(vi,vj)E(Q)}
δ ( Q ) > 0 \delta(Q)>0 δ(Q)>0,则称 δ ( Q ) \delta(Q) δ(Q) 为允许修改流量,称圈 Q Q Q 为容量网络 D D D 上关于流 f f f增广圈
对于 f f f 增广圈 Q Q Q,我们可以定义 f ′ f' f

  1. f i j ′ = f i j + δ ( Q ) , ( v i , v j ) ∈ Q + f_{ij}^{'}=f_{ij} + \delta(Q),(v_i,v_j)\in Q^+ fij=fij+δ(Q)(vi,vj)Q+
  2. f i j ′ = f i j − δ ( Q ) , ( v i , v j ) ∈ Q − f_{ij}^{'}=f_{ij} - \delta(Q),(v_i,v_j)\in Q^- fij=fijδ(Q)(vi,vj)Q
  3. f i j , ( v i , v j ) ∉ E ( Q ) f_{ij},(v_i,v_j) \notin E(Q) fij(vi,vj)/E(Q)

这样 f ′ f' f 仍是 D D D 的流并且 v a l ( f ′ ) = v a l ( f ) val(f')=val(f) val(f)=val(f),称 f ′ f' f 为基于 f f f 增广圈 Q Q Q 的修正流。

负圈:设有容量网络 D D D f f f 是一个流, f i j , c i j , b i j f_{ij},c_{ij},b_{ij} fij,cij,bij 分别为弧 ( v i , v j ) (v_i,v_j) (vi,vj) 上的流量、容量和单位费用,设 Q Q Q 是关于流 f f f 的增广圈。称 b ( Q , f ) = ∑ ( v i , v j ) ∈ Q + b i j − ∑ ( v i , v j ) ∈ Q − b i j b(Q,f)=\sum_{(v_i,v_j)\in Q^+}b_{ij}-\sum_{(v_i,v_j)\in Q^-}b_{ij} b(Q,f)=(vi,vj)Q+bij(vi,vj)Qbij 为增广圈的费用,若小于 0 0 0,则称 Q Q Q 为负圈。负圈与流量、容量、费用、圈的指定方向有关。


4.3.3 Klein 算法

算法:

  1. 求容量网络 D D D 的一个最大流。
  2. 寻找网络中的负圈。若没有负圈,算法结束;若找到一个负圈,转step 3
  3. 修改负圈 Q Q Q 上各弧的流量,得到修正流。在新修正流的基础上,转step 2,继续寻找负圈。

定理:设有容量网络 D D D f f f 是一个流, f i j , c i j , b i j f_{ij},c_{ij},b_{ij} fij,cij,bij 分别为弧 ( v i , v j ) (v_i,v_j) (vi,vj) 上的流量、容量和单位费用,则 f f f 是最小费用最大流当且仅当任何 f f f 增广圈 Q Q Q 的费用 b ( Q , f ) ≥ 0 b(Q,f)\geq0 b(Q,f)0,即无负圈


5 遍历性及其算法

5.1 Euler图和有向Euler图

5.1.1 定义

Euler图:如果图 G G G 中存在包含所有边的闭迹 W W W,则称 G G G E u l e r Euler Euler 图, W W W 称为 G G G E u l e r Euler Euler 闭迹。
半Euler图:如果图 G G G 中存在包含所有边的迹 P P P,则称 G G G 半 E u l e r 半Euler Euler 图, P P P 称为 G G G E u l e r Euler Euler 迹。
定理:设 G G G 为非空连通图,则下面三个命题等价:

  1. G G G E u l e r Euler Euler 图;
  2. G G G 中不含奇点;
  3. G G G 可以表示为若干个没有公共边的圈的并。

证明:

  1. 1->2:设 G G G 是连通的 E u l e r Euler Euler 图, W W W G G G E u l e r Euler Euler 闭迹,则 ∀ v ∈ V ( G ) , v \forall v \in V(G),v vV(G)v 必定在 W W W 中出现,当 v v v 作为内部点,每出现一次,必定与 G G G 中两条边关联;当 v v v 作为 W W W 的起点,则 v v v 也是重点,从而它必与两条边关联,因此 G G G 的每个顶点都是偶点。
  2. 2->3:设 G G G 是非空连通图且不含奇点,则 G G G 不是树,从而 G G G 中含有圈,不断取出圈来得到新图再取圈,因此可以从第二个命题演变成第三个命题。
  3. 3->1:由 E u l e r Euler Euler 图的定义,结论显然。

有向Euler图:若有向图 D D D 中存在包含所有弧的有向闭迹,则称 D D D 为有向 E u l e r Euler Euler 图,这样的有向闭迹,称为 D D D 的有向 E u l e r Euler Euler 闭迹。
有向半Euler图:若有向图 D D D 中存在包含所有弧的有向迹,则称 D D D 为有向 E u l e r Euler Euler 图,这样的有向迹,称为 D D D 的有向 E u l e r Euler Euler 迹。
定理:设 G G G 为非空连通有向图,则下面三个命题等价:

  1. D D D 是有向 E u l e r Euler Euler 图;
  2. ∀ v ∈ V ( D ) \forall v \in V(D) vV(D),有 d + ( v ) = d − ( v ) d^+(v)=d^-(v) d+(v)=d(v)
  3. G G G 可以表示为弧不交的回路的并。

5.1.2 Fleury 算法

算法思想:从任意顶点出发,除非别无选择,否则总是选择一条不是割边的且没走过的边,直到获得 E u l e r Euler Euler 闭迹为止。
定理:设 G G G E u l e r Euler Euler 图, W = v 0 e 1 v 1 . . . e n v n W=v_0e_1v_1...e_nv_n W=v0e1v1...envn F l e u r y Fleury Fleury 算法结束时得到的迹,则 W W W 一定是图 G G G E u l e r Euler Euler 闭迹。
证明:…


5.1.3 编码盘设计

例题:16个二进制数应该如何排列,使得圆盘沿顺时针旋转一部分,恰好组成 0000 0000 0000 1111 1111 1111 16 16 16 组四位二进制输出,同时旋转一周又返回到 0000 0000 0000 状态?
答案:定义一个有 8 8 8 个顶点的有向图 D D D,其中顶点用 3 3 3 0 − 1 0-1 01 序列 x 1 x 2 x 3 x_1x_2x_3 x1x2x3 标记,且顶点 x 1 x 2 x 3 x_1x_2x_3 x1x2x3 与顶点 x 2 x 3 0 , x 2 x 3 1 x_2x_30,x_2x_31 x2x30,x2x31 以出弧的形式相连,这样得到的有向图 D D D 中,每个顶点的入度和出度相等,都等于 2 2 2。然后从 000 000 000 出发,可以得到一个有向 E u l e r Euler Euler 闭迹为 …。注意起终点重复,所以序列取末尾数字,得…
该问题可以扩展,得到的有向图为德布鲁英图 B ( 2 , n ) B(2,n) B(2,n)。每个顶点最后一位数字构成序列为 德布鲁英序列。
编码示意图


5.2 中国邮递员问题

5.2.1 问题描述

管梅谷教授提出并研究了中国邮递员问题。
问题内容:在加权连通图 G G G 中,寻找一条经过每条边至少一次且权和最小的闭迹,即 G G G 的最优环游。
思考角度:对于重复走的边,可以看作为两点之间的重边(即重复走的边视为 k k k 重边)。


5.2.2 奇偶点图上作业法

最优环游的奇偶点图上作业法:

  1. 把图 G G G 所有奇点配成对,将每对奇点之间的一条链的每条边改为二重边,得到一个新图 G 1 G_1 G1,图中没有奇点
  2. 在图 G 1 G_1 G1 中,若顶点之间有 k ( k ≥ 3 ) k(k\geq3) k(k3) 重边,则去掉其中偶数条,只保留 1 / 2 1/2 1/2 条边,得到图 G 2 G_2 G2
  3. 检查 G 2 G_2 G2 中的每一个圈 C C C,若重复边的权和超过此圈权和的一半,则重边变为单边,单边变为二重边,重复这一过程,直到所有圈上重边的权和都不超过圈权和一半,得到 G 3 G_3 G3
  4. F l e u r y Fleury Fleury 算法求 G 3 G_3 G3 E u l e r Euler Euler 闭迹,得到图 G G G 的最优环游

定理:设 G G G 是加权连通图,则奇偶点图上作业法得到的闭途径是最优环游。
证明:…
例题:
例题

答案:图 G G G 中有 6 6 6 个奇点 v 2 , v 3 , v 5 , v 8 , v 10 , v 11 v_2,v_3,v_5,v_8,v_{10},v_{11} v2,v3,v5,v8,v10,v11,将它们搭配成三对,因此添加 v 2 v 3 v 4 v 5 , v 3 v 2 v 1 v 8 , v 10 v 11 v_2v_3v_4v_5,v_3v_2v_1v_8,v_{10}v_{11} v2v3v4v5v3v2v1v8v10v11。注意 v 2 v 3 v_2v_3 v2v3 间有两条新添加的边,删去得到新图。
图2
v 1 v 2 v 7 v 8 v 1 , v 3 v 4 v 5 v 6 v 3 v_1v_2v_7v_8v_1,v_3v_4v_5v_6v_3 v1v2v7v8v1v3v4v5v6v3 中非最优添边,因此重边变单边,单边变重边,再次得到新图:
图3
再检查圈 v 2 v 3 v 6 v 11 v 10 v 7 v 2 v_2v_3v_6v_{11}v_{10}v_7v_2 v2v3v6v11v10v7v2,也非最优,执行单重边置反,得到新图。
图4
检查通过,执行 F l e u r y Fleury Fleury 算法,得到最优环游为:
v 1 v 2 v 3 v 2 v 7 v 8 v 7 v 6 v 5 v 6 v 11 v 12 v 5 v 4 v 3 v 6 v 11 v 10 v 7 v 10 v 9 v 8 v 1 v_1v_2v_3v_2v_7v_8v_7v_6v_5v_6v_{11}v_{12}v_5v_4v_3v_6v_{11}v_{10}v_7v_{10}v_9v_8v_1 v1v2v3v2v7v8v7v6v5v6v11v12v5v4v3v6v11v10v7v10v9v8v1,环游总长度 109 109 109

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

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

相关文章

【Seata源码学习 】 篇二 TM与RM初始化过程

【Seata源码学习 】 篇二 TM与RM初始化过程 1.GlobalTransactionScanner 初始化 GlobalTransactionScanner 实现了InitializingBean 接口&#xff0c;在初始化后将执行自定义的初始化方法 io.seata.spring.annotation.GlobalTransactionScanner#afterPropertiesSet Override…

关于Chrome中F12调试Console输入多行

在chrome 浏览器中使用console调试的时&#xff0c;如果想在console中输入多行代码&#xff0c;需要进行换行。 这时我们可以使用 [ Shift Enter ] 。也叫&#xff1a; 软回车。

数据分析 - 离散概率分布的运用

期望公式 期望的方差 期望的标准差

操作系统 day10(调度的概念、层次、七状态模型)

调度的概念 调度的层次 作业调度&#xff08;高级调度&#xff09; 进程调度&#xff08;低级调度&#xff09; 内存调度&#xff08;中级调度&#xff09; 挂起态与七状态模型 三层调度的联系和对比

使用docker部署ELK日志框架-Elasticsearch

一、ELK知识了解 1-ELK组件 工作原理&#xff1a; &#xff08;1&#xff09;在所有需要收集日志的服务器上部署Logstash&#xff1b;或者先将日志进行集中化管理在日志服务器上&#xff0c;在日志服务器上部署 Logstash。 &#xff08;2&#xff09;Logstash 收集日志&#…

WPF程序给按钮增加不同状态的图片

首先我们在资源里添加几个图片&#xff0c;Up&#xff0c;Over和Down状态。 然后我们创建一个Style。默认我们的背景设置成Up 然后在Triggers里添加代码&#xff0c;当Property&#xff1a;IsMouseOver为True的时候更换成Over&#xff1b;当Property&#xff1a;IsPressed为Tr…

AR人脸道具SDK,打造极致用户体验

为了满足企业在AR领域的应用需求&#xff0c;美摄科技推出了一款领先的AR人脸道具SDK&#xff0c;旨在帮助企业快速、高效地开发出具有丰富玩法体验的AR应用&#xff0c;从而提升企业的竞争力和市场份额。 一、丰富的AR人脸道具&#xff0c;满足多样化需求 美摄科技AR人脸道具…

JAVA安全之Shrio550-721漏洞原理及复现

前言 关于shrio漏洞&#xff0c;网上有很多博文讲解&#xff0c;这些博文对漏洞的解释似乎有一套约定俗成的说辞&#xff0c;让人云里来云里去&#xff0c;都没有对漏洞产生的原因深入地去探究..... 本文从现象到本质&#xff0c;旨在解释清楚Shrio漏洞是怎么回事&#xff01…

Opencv!!在树莓派上安装Opencv!

一、更新树莓派系统 sudo apt-get update sudo apt-get upgrade二、安装python-opencv sudo apt-get install libopencv-dev sudo apt-get install python3-opencv三、查看是否安装成功 按以下命令顺序执行&#xff1a; python import cv2 cv2.__version__如果出现版本号&a…

x3daudio1_7.dll错误:解决方法和丢失原因及作用

x3daudio1_7.dll是Windows操作系统中的一个动态链接库&#xff08;DLL&#xff09;文件&#xff0c;主要作用是为DirectX音频提供支持。DirectX是微软推出的一套多媒体应用程序开发接口&#xff0c;广泛应用于游戏、多媒体制作等领域。x3daudio1_7.dll文件包含了许多与三维音频…

2.5 Windows驱动开发:DRIVER_OBJECT对象结构

在Windows内核中&#xff0c;每个设备驱动程序都需要一个DRIVER_OBJECT对象&#xff0c;该对象由系统创建并传递给驱动程序的DriverEntry函数。驱动程序使用此对象来注册与设备对象和其他系统对象的交互&#xff0c;并在操作系统需要与驱动程序进行交互时使用此对象。DRIVER_OB…

C语言ZZULIOJ1148:组合三位数之一

题目描述 把1、2、3、4、5、6、7、8、9组合成3个3位数&#xff0c;要求每个数字仅使用一次&#xff0c;使每个3位数均为完全平方数。按从小到大的顺序输出这三个三位数。 输入:无 输出:按从小到大的顺序输出这三个三位数&#xff0c;由空格隔开。输出占一行。 提示 若一个数能表…

FBI:皇家勒索软件要求350名受害者支付2.75亿美元

导语 最近&#xff0c;FBI和CISA联合发布的一份通告中透露&#xff0c;自2022年9月以来&#xff0c;皇家勒索软件&#xff08;Royal ransomware&#xff09;已经入侵了全球至少350家组织的网络。这次更新的通告还指出&#xff0c;这个勒索软件团伙的赎金要求已经超过了2.75亿美…

GDPU 商务英语 [初入职场](持续更新……)

&#x1f468;‍&#x1f3eb; 商务英语&#xff08;初入职场电子书PDF&#xff09;提取码&#xff1a;t9ri Unit 1 Job-seeking ✨ 单词 recruitment n. 招聘physical adj. 有形的;物质的profitability n. 盈利launch vt. 将(新产品等)投放市场budget n. 预算account for 占…

【入门篇】1.3 redis客户端之 jedis 高级使用示例

文章目录 0.前言1. 发布和订阅消息2. 事务操作3. 管道操作4. jedis 支持哨兵模式5. jedis 支持集群模式5. 参考链接 0.前言 Jedis是Redis的Java客户端&#xff0c;它支持所有的Redis原生命令&#xff0c;使用方便&#xff0c;且可以与Java项目无缝集成。 该库的最新版本支持Re…

场景图形管理-多视图与相机(3)

在OSG中多视图的管理是通过osgViewer::CompositeViewer类来实现的。该类负责多个视图的管理及同步工作&#xff0c;继承自osgViewer;:ViewerBase类&#xff0c;继承关系图如图8-13所示 图8-13 osgViewer::CompositeViewer 的继承关系图 在前面已经讲到&#xff0c;osgViewer:Vi…

Win通过WSL配置安装Redis

一共分为如下几步&#xff1a; 安装WSL发行版&#xff0c;如Ubuntu安装Redis配置Redis与WSL WSL安装 这里有微软官方的文档&#xff1a;https://learn.microsoft.com/zh-cn/windows/wsl/install 但我不建议零基础的这么做。很容易输完一些命令之后&#xff0c;把环境弄得乱七…

私域电商:实体商家想通过异业联盟引流,应该怎么做?

​异业联盟引流是一种有效的营销策略&#xff0c;通过与不同行业的企业或品牌合作&#xff0c;共同推广产品或服务&#xff0c;扩大品牌影响力和用户群体。以下是异业联盟引流的一些详细过程&#xff1a; ​选择合作联盟&#xff1a; 首先&#xff0c;需要选择与自己企业或品…

Mybatis-Plus最新教程

目录 原理&#xff1a;MybatisPlus通过扫描实体类&#xff0c;并基于反射获取实体类信息作为数据库信息。 ​编辑1.添加依赖 2.常用注解 3.常见配置&#xff1a; 4.条件构造器 5.QueryWrapper 6.UpdateWrapper 7.LambdaQueryWrapper:避免硬编码 8.自定义SQL 9.Iservic…

【kafka】windows安装启动

1.zookeeper的安装与启动 快速打开window powershell&#xff1a; windowx&#xff0c;选 2.kafka下载 —注意kafka和zookeeper需要版本匹配 安装路径 注意&#xff0c;kafka安装目录不能有空格。文件下载到&#xff1a; D:\Program_Files\kafka_2.12-3.6.0新建logs文件 修改c…