91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 9KB
    文件類型: .m
    金幣: 1
    下載: 1 次
    發布日期: 2021-06-14
  • 語言: Matlab
  • 標簽: 最短路徑??

資源簡介

已經輸入圖的信息,運行程序,選擇工作模式,輸入任務信息即可得到最短路徑詳細信息。兩種工作模式,一種為輸入要途徑的節點序列,且節點順序已定,程序輸出最短路徑的途徑節點及路徑距離。第二種為輸入要途徑的節點序列,但節點順序不定,程序自動尋找路徑最短的任務序列,并輸出相關詳細信息。

資源截圖

代碼片段和文件信息

clear?all;
close?all;
x=[10?33?40?58?70?79?100?10?40?100?10?20?40?60?70?78?100?40?70?10?25?40?55?70?90?100?10?40?70?10?21?40?70?85?100];????
y=[100?100?100?100?100?100?100?80?80?75?70?70?70?70?70?70?70??50?60?31?31?31?31?31?31?31?15?20?20?10?10?10?10?10?10];
?%xy是假設的工位的坐標點
z1=[1?1?2?3?3?4?5?5?6?7?8?9?10?11?11?12?13?13?14?15?15?16?17?18?19?20?20?21?22?22?23?24?24?25?26?27?28?29?30?31?32?33?34?];
z2=[2?8?3?4?9?5?6?15?7?10?11?13?17?12?20?13?14?18?15?16?19?17?26?22?24?21?27?22?23?28?24?25?29?26?35?30?32?33?31?32?33?34?35];

A=inf*ones(3535);
a=zeros(143);
for?i=1:43
?a(i)=abs(x(z1(i))-x(z2(i)))+abs(y(z1(i))-y(z2(i)));?
end
for?i=1:43
????A(z1(i)z2(i))=a(i);
end
for?i=1:35
?????for?j=1:35
????????????if?i>j
????????????????A(ij)=A(ji);
????????????end
?????end
end???????????%建立給定無向圖

%選擇工作模式
G=input(‘please?choose?one?way?to?work:?1?(given?order)2?(given?points):?‘);
if??G==1??????????????????%給定順序工作方式
???o=input(‘how?many?points?do?you?want?to?pass?by????‘);???%o為輸入要途徑點的個數
???S=zeros(1o);
???q=0;
???L=zeros(1o);
???for??i=1:o
?????????t=input(‘please?input?a?point:?‘);??
?????????if(t<0||t>35)
?????????????beep
?????????????error(‘this?is?an?error‘)
?????????end????????%輸入的數據應合法
?????????if??t==0
?????????????break
?????????else
?????????????S(i)=t;
?????????????q=q+1;
?????????end
???end??
????????if?q???????????????disp(‘warning!?numbers?of?input?is?less?than?given‘)
???????????????break
????????end
?????
????????for???i=1:o
????????????L(i)=S(i);
????????end
else????????????%-----------------------------------------------------
????o=input(‘how?many?points?do?you?want?to?input??:?‘);???%o為輸入要途徑點的個數
????S=zeros(1o);????????????????????????????????????%輸入節點寄存矩陣
???for??i=1:o
?????t=input(‘please?input?a?point:?‘);?????????????
???????????if??t==0
?????????????break
???????????else
????????????S(i)=t;
???????????end
???end??
????s=o;
????r=1;
??while(1)???
?????if?s==0;
???????break
?????end
???????r=r*s;?????????%確定字母排序運算的次數?
???????s=s-1;
??end
?SY=zeros(ro);??????%所有可能路徑的記錄矩陣
?[cd]=sort(S);??????%第一步,對輸入數據進行升序排序,以便于后續使用字母排序算法,c為升序矩陣
??a=1;???????????????
??b=1;
??for?b=1:o??????????????%將排序生成的數賦給指定的矩陣,為后續dijkstra運算提供數源(SY)
??????SY(ab)=c(b);
??end
for???time=1:r-1
???for??i=o:-1:2??????%以下部分為第三步,找出jk點。
???????if?c(i-1)??????????j=i-1;
?????????break
???????end
???end???????????????????????????????%找出j點??
????x1=j+1;????????????????????????????
????mindist1=inf;
?????for???i=x1:o?????
??????????if??c(i)c(j)????%求出比S(j)大的在S(j)后的最小值S(k)
???????????????mindist1=c(i);
???????????????k=i;??????????????
??????????end
?????end???????????????????%找出k點
?????
?????v=c(j);???????????????%第四步,交換jk點的值。my_swap.m函數已定義并存儲
?????c(j)=c(k);
?????c(k)=v;???????
?????m=j+1;????????????????%第五步,將j點后所有值對調。
?????n=o;
?????while?(m?????????v=c(m);
?????????c(m)=c(n);
?????????c(n)=v;
??????????

評論

共有 條評論