矩阵运算实现深度优先和dijkstra算法

本文探讨了简单深度优先计算模型及其在计算机网络中的应用,并引入了一种宏观Dijkstra算法的概念,通过矩阵运算来计算图中节点间的最短路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
模型:
简单深度优先计算
--- b---
|    |     |
a   |     d
|    |     |
----c---
矩阵:可以走就是1.不能走就是0.
自己到自己强制定义为0,线代书是这样的。后面出了点问题。以后修复。
算符定义:
  a b c d
a 0 1 1 0
b 1 0 1 1
c 1 1 0 1
d 0 1 1 0
 
令这个矩阵是A
传统矩阵运算
A^2=A*A=
忽略+号
0110   0010    0100   0110
0010   1011    1001   0010
0100   1001    1101   0100
0110   0010    0100   0110

 a b c d
a2 1 1 2
b1 3 2 1
c1 2 3 1
d2 1 1 2
含义:bc=2 从b到c有两条路径。
运用:
    计算机网络rip协议。按照路由器跳数实行。在A表中从a到d:ad=0
    继续查表:A^2是2说明有两条路径 。查运算过程。a-b-d a-c-d
    如果ad还是0就需要查询(计算)A^3的表和中间过程
移植,加强:
    什么是宏观dijkstra算法?(自己查资料定义的。。)
两个准则:
    1.搜索结点且已经走过的路径不返回搜索
    2.有更小的代价路径就替换
解读:
    1.1保证了时间复杂度没有出现高阶
    2.1这个不是先宽度后优先
    分析:按照dijkstra的终止条件:标记所有结点。则这个不是传统宽度优先搜索。
名词解释:
    传统宽度优先搜索。从A出发目标是C
则计算所有的A的出去的。再从结点挨个展开。计算到第一个C后继续计算。直到出现所有的都代价值比最小的C的代价值后面就不计算了。如果是双向都连通的图。dijkstra算法可能会拓展到图中存在的所有结点。
继续深度优先计算:
 30   
--- b---
|  2|1   | 10
a   |    d
|    | 
----c
10
算符定义:
  a  b  c   d
a 0  30 10  0
b 30 0  21  10
c 10 21 0   0
d 0  10 0   0
这个矩阵命名为B
还是从a到d计算最短路径。
B^2运算:
每次挨个取的元素还是矩阵乘法的行列计算的两个元素。
乘法变加法。加法变min计算.但是这里0要处理。那么就规定min中如果出现了0就忽视。如果修复就是引入高阶无穷小
上次计算中这个点存在值。这次计算出现0则从上次中找。如果上次是0.这次还是0则这个结点继续是0//其实还是加法
如果第一个数非0,第二个数为0则用&标记。表示目前暂时不可到。记录距离。
关键计算:
修复前:
aa=min(0+0,30+0,10+0,0+0)=10   
ab=min(30+0,30+0,21+10,0+0)=30
ac=min(10+0,30+21,10+0,0+0)=10
//ad=min(0+0,30+10,0&【10】,0)=40 //这个后面有说明
ad=min(0+0,30+10,0,0)=40
修复自己到自己加上高阶无穷小量0.01
  a     b    c    d
a 0.01  30   10   0
b 30    0.01 21   10
c 10    21   0.01 0
d 0     10   0    0.01
这个矩阵命名为C
C^2
aa=0.01
ab=30
ac=10
ad=40
经过第一轮计算结果是a-b-d
第二轮这个值还是这么多。ad的0&【10】计算出来等于41.还是ad这个结果直接丢弃
算法完备性。如果想要保证最优解。人工识别。从a到d最多是3轮计算计算9步。如果是计算机最多就是算法的元素个数的平方。这个是4^2.
算法优化方向:
改为三角阵。具体的过程需要证明。
暂时写到这里。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值