dlmwrite具体介绍
图与模型及方法
图与网络的数据结构
G=(V,E)1.邻接矩阵表示法 2.稀疏矩阵表示法
邻接矩阵
W
=
(
w
i
j
)
n
∗
n
W=(w_{ij})_{n*n}
W=(wij)n∗n
w
i
j
w_{ij}
wij的取值
vi与vj有边为权值(赋权图)/1(非赋权图)。 无边0或∞
稀疏矩阵
0很多,只需列出非零
sparse/full 函数来变化
最短路问题(Dijkstra算法)
eg。pb1/0(是否为P标号)
index存最短路
d(i )最短路的值
列子:具体代码
添加链接描述
两个指定顶点
给每一个 w i j w_{ij} wij一个决策变量 x i j x_{ij} xij当为1在最短路上,or为0
每对顶点之间的最短路径(Floyd)
矩阵A1,2。。。K,
A
k
(
i
,
j
)
A_k(i,j)
Ak(i,j)表示从顶点
v
i
v_i
vi到
v
j
v_j
vj的路径上所经过的顶点序号不大于k的最大路径长度
迭代计算公式:
A
k
(
i
,
j
)
=
min
(
A
k
−
1
(
i
,
j
)
,
A
k
−
1
(
i
,
k
)
+
A
k
−
1
(
k
,
j
)
)
A_k(i,j)=\min(A_{k-1}(i,j) , A_{k-1}(i,k)+A_{k-1}(k,j))
Ak(i,j)=min(Ak−1(i,j),Ak−1(i,k)+Ak−1(k,j))
k=n时,An是各个顶点的最短值
最小生成树
1.prim算法
P放最小生成树的顶点,Q放最小生成树的边
(1) P={v1},Q=
∅
\empty
∅
(2) whileP~=V
找最小边pv
P=P+{v} Q=Q+{pv}
end
[代码](https://blog.csdn.net/absurd1350/article/details/38716519)
2.Kruskal 算法
- 选e1属于E,且为权值最小的边
- 若e1,…i已经选好,再选取ei+1使无圈且为剩下未选过的中为最小边
- 选到e|v|-1为止
https://zhuanlan.zhihu.com/p/38646147(代码)
网络最大流
寻求最大流的标号法(Ford-Fulkerson)
对所有的增广路径增流
注意增流过程:正向
f
x
y
=
f
x
y
+
δ
t
f_{xy}=f_{xy}+ \delta_t
fxy=fxy+δt
逆向:
f
x
y
=
f
x
y
−
δ
t
f_{xy}=f_{xy}-\delta_t
fxy=fxy−δt
可行流为最大流,当且仅当不存在新的增广路径。
最小费用最大流问题
用线性规划解决
matlab的图论工具
[matlab图论](https://www.cnblogs.com/markReaper/p/8454817.html)
旅行商问题
修改圈近似算法
最小权的hamilton图:改良圈,先求一个hamilton圈C,再不断修改C
(1)由C删去边
v
i
v
i
+
1
v_iv_{i+1}
vivi+1和
v
j
v
j
+
1
v_jv_{j+1}
vjvj+1增加
v
i
v
j
v_iv_j
vivj和
v
j
+
1
v
i
+
1
v_{j+1}v_{i+1}
vj+1vi+1若后者的距离更小
计划评审方法和关键路线法(PERT和CPM)
计划网络图
消耗时间和资源的为作业,作业的开始和结束为事件
时间参数
1.事件时间参数
a.最早时间
T
E
(
j
)
T_E(j)
TE(j):事件j为终点的最早可能完成时间
b.最迟时间
T
L
(
j
)
T_L(j)
TL(j)最迟必须开始的时间
2.工作的时间参数
1)最早开工和最早可能完工
2)最迟开工最迟完工
3.时差
1)工作的总时间差(不影响总)
2)单时差(不影响紧后)