資源簡(jiǎn)介
寫的用于求多條最短路徑的刪除算法,還有dijstra算法,更新最短路徑樹等子函數(shù)實(shí)現(xiàn)
代碼片段和文件信息
function????Pset=deletion(comksten)
????Pset=zeros(klength(com));%k條最短路徑集合
????%*****************step?1?Dijkstra求第一條最短路徑*******************%
????[tree?path?Dist]=Dijkstra(comlength(com)sten);%first?shortest?path?by?dijkstra
????%k條最短路徑集合
???
????sp_num=1;%******當(dāng)前最短路徑數(shù)***********
????for?tian=1:length(path)
????????Pset(sp_numtian)=path(tian);
????end
????oringnal_dem=length(com);
????rep=[0;0];
????rep_num=0;%擴(kuò)展次數(shù)
????N=com;
????next_change_node=0;
????%**********************step?2******************************%
????while?sp_num ????????i=2;
????????stepflag=1;
????????while?stepflag
??????????????%*********************step3?step4********************%?
????????if?(length(find(N(path(i):)1)&&isempty(find(rep(2:)==path(i)))
?????????????rep_num=rep_num+1;
?????????????rep_element=[oringnal_dem+rep_num?path(i)];%*****擴(kuò)展對(duì)************%
?????????????rep=[rep?rep_element‘];
?????????????N=addedge(Nrep_element(2)rep_element(1)path);
?????????????next_change_node=path(i+1);
?????????????follownodeflag=i+1;
?????????????stepflag=0;
?????????????Dist=[Dist?inf];
?????????????tree(rep_element(1))=-1;
?????????????
?????????????%%%修改樹%%%
?????????????[tree??Dist]=tree_change(Ntreerep_element(1)Distst);
????????elseif?(length(find(N(path(i):)1)&&(~isempty(find(rep(2:)==path(i))))
????????????nodeflag=1;
????????????j=i+1;
????????????while?nodeflag
????????????????if?isempty(find(rep(2:)==path(j)))
????????????????????next_change_node=path(j);
?????????????????????follownodeflag=j;
????????????????????nodeflag=0;
????????????????else
?????????????
評(píng)論
共有 條評(píng)論