求最短路径程序,要求如下:

求最短路径程序,要求如下:,第1张

我想你应该使用matlab来编程吧,c是不好解决这类问题的。首先你应该有10个分店的坐标值,各店之间能否互相达到的零一领结矩阵这两组数据,否则是无法求的。matlab的导入数据可以直接importdate *** 作,用两个变量分别保存导进的数据。利用10*2的坐标矩阵可以求出一个10*10的任意两点之间的直接距离,作为各点的权值,这个程序就不用我写了吧,然后直接把两个矩阵相乘,便得到了可以直接连通的距离领结矩阵,不连通的用无穷大表示,对角线为0。

其实解决这一问题的方法是由 Floyd R W 提出的算法,称之为 Floyd 算法。 给你一个求6个点任意两点间的最短距离的例子,这里的数据是自己输的,你有数据文件的话可以直接导。clearclc

n=6a=zeros(n)

a(1,2)=50a(1,4)=40a(1,5)=25a(1,6)=10

a(2,3)=15a(2,4)=20a(2,6)=25a(3,4)=10a(3,5)=20

a(4,5)=10a(4,6)=25a(5,6)=55

a=a+a'M=max(max(a))*n^2%M为充分大的正实数

a=a+((a==0)-eye(n))*M

path=zeros(n)

for k=1:n

for i=1:n

for j=1:n

if a(i,j)>a(i,k)+a(k,j)

a(i,j)=a(i,k)+a(k,j)

path(i,j)=k

end

end

end

end

a, path 得到的a便是任意两点间的最短距离。

是0001001011001010,余3循环码得到的方法。

1.前100以X5作为BCD代码转换指令的执行条件,并在左侧总线的右侧输入LDX5。

2.然后输入BCD码转换度指令:BCDD6K1Y0在X5接点右侧。它表示将D6中的二进制数转换为BCD代码并将其存储在K1Y0中。

3、程序写好后,按转换键编译程序,再按模拟测试键将程序写入模拟PLC。

4.当模拟测试窗口出现时,点击菜单启动,然后选择继电器内存监控。

5.点击monitor窗口菜单中的soft元素,然后选择bitsoft元素X和wordsoft元素D。

6.单击X5执行BCD代码转换指令,可以看到D6中的二进制文件已经转换为BCD代码。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11303638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存