最短路径问题
最长单调上升子序列
最大连续子段和
任意两个点之间存在一个最短路径,总共有 n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n−1)种组合
先找出所有度为1的节点,将其删除。然后在剩下的节点中继续查找度为1的节点,并删除。
直到网络中没有度为1的节点,将之前删除的所有度为1的节点kshell值赋值为1,即KS=1。
用相同方法接着查找度为2的节点,并赋值 KS=2。接着是度为3、度为4……并分别赋值KS=3、KS=4……直到网络中所有节点都有kshell值。
KS值越高,表示 影响力越大。
最小支撑树
最短路径
为满足船的往返,船上要有人驾船才能过河
k : k: k:阶段,船过河的次数,过去和返回各算一次,所以可以用奇偶说明往返情况;
s k = ( x k , y k ) s_k=(x_k,y_k) sk=(xk,yk):状态,船过河第 k k k次后,船出发岸的商人数和随从数, x k x_k xk为商人数, y k y_k yk为随从数;
u k = ( u x k , u y k ) u_k=(ux_k,uy_k) uk=(uxk,uyk):决策,船第 k k k次过河时船上的商人数和随从数, u x k ux_k uxk商人数, u y k uy_k uyk随从数;
状态转移方程: s k = s k − 1 + ( − 1 ) k u k s_k=s_{k-1}+(-1)^ku_k sk=sk−1+(−1)kuk
目标是令k最小,船使用的次数最少
横坐标表示商人数,纵坐标表示随从数
每个状态要考虑对岸的情况,比如说(2,1),虽然此时的商人数大于随从数,但对岸的随从数大于商人数,所以不可取,总共有10个点满足条件
红线表示从出发按出发,绿线表示有对岸返回,由于船上一定要有人,所以红线只能向左下方移动,而绿线只能向右上方移动
而且要保证两点间的欧氏距离小于等于2(船有载人上限)
一条由(3,3)到(0,0)红绿交替的路径就代表一种合理的方案
为了避免对某个点多次重复访问而导致的重复方案,所以要求在寻找路径过程中,对已经访问过的点进行标记
当然,这种标记要考虑两种情况:是由出发所导致还是由返回所导致,所以要有两种标记。
x k , y k , 1 x_k,y_k,1 xk,yk,1表示船在出发岸上的商人数 x k x_k xk和随从数 y k y_k yk
x k , y k , 0 x_k,y_k,0 xk,yk,0表示船在对岸上时出发岸上的商人数 x k x_k xk和随从数 y k y_k yk
共有20个点表示不同的状态,红线与绿线表示不同的方向,我们就将问题模型转化为了一个有向图
我们的目标就是找到从(3,3,1)到(0,0,0)的最短路
最短路问题就可以直接使用之前的内容
不过此时只可以判断是否有合法解以及输出一个合法解,却不能直接得知共有多少个合法解
完全路径:从某个顶点出发沿着弧方向经过所有顶点的路径称为完全路径
连通图概念解释
强连通图:任意两个顶点之间都存在互达的路径
s ( 2 ) = A s ( 1 ) = A ∗ A ∗ e s^{(2)}=As^{(1)}=A*A*e s(2)=As(1)=A∗A∗e
通过 A e Ae Ae所得的结果就是之前的得分向量,此时已经出现了一定的排名,我们将 A A A与这个6行1列的矩阵再做一次矩阵乘法,不断重复这个过程。
最终排名将会稳定下来,就可以将稳定的结果作为排名的依据
最小支撑树
用matlab读取excel中的数据‘
使用matlab命令直接得到最小生成树
可靠性计算
要求将任意一个点从图中删除后,剩下的点中要有90%的点可以相互通信,同时要求给出费用最少的铺设方案
先在保留所有边的基础上,考虑删除哪些点后会使得可靠性达不到要求,然后把这些点都标记下来
接下来的问题就是考虑如何加边
将红色点单独出来,其中那些度为1的点比较特殊,也就是上图中的51、70、77
这三个点都连接着不同的连通图,每个点我们都选择出它与它所连接的第二大的连通图所连接的点(70对应61,77对应71,51对应30),再将这三个连通集合用两条边连起来,那样无论删除三个点中的哪个都可以保证连通
有可能无法得到满足要求的结果,比如说之前选取中出现了问题,所以可能要返回重新计算
与问题二思路一致,找边——加边