国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js回溯法計算最佳旅行線路代碼實例

2019-11-19 10:50:01
字體:
來源:轉載
供稿:網友

回溯法

假如有 A,B,C,D四個城市,他們之間的距離用 G[V][E] 表示,為 無窮大,則表示兩座城市不相通

現在從計算從某一個城市出發,把所有的城市不重復旅行一次,最短路徑

其中G為: (Infinity表示城市不相通)

var g = [  [Infinity,3    ,Infinity,8    ,9],  [ 3   ,Infinity,3    ,10   ,5],  [Infinity, 3   ,Infinity,4    ,3],  [8    ,10   ,4    ,Infinity,20],  [9    ,5    ,3    ,20   ,Infinity]]

分析,如果確定從 A城市開始,則需要探索 剩下的幾個城市,剩下的幾個城市再往里探索,如果失敗了,就廢棄,回到之前的狀態

var g = [    [Infinity,3    ,Infinity,8    ,9],    [ 3   ,Infinity,3    ,10   ,5],    [Infinity, 3   ,Infinity,4    ,3],    [8    ,10   ,4    ,Infinity,20],    [9    ,5    ,3    ,20   ,Infinity]  ]   var x = [0,1,2,3,4]; //城市的編號  var cl = 0;     //規劃過程中記錄的距離  var bestl = Infinity; //當前最優解  var bestx = [0,0,0,0,0]; //當前最優解的路徑  //var t = 0; //當前需要到達的城市  var n = x.length-1;  function Traveling(t){    if(t > n ){      //搜索到底部,如果滿足最優解則記錄      if(g[x[n]][0] < Infinity && (cl + g[x[n]][0] < bestl)){        for(var j = 0; j <= n; j++){          bestx[j] = x[j];        }        bestl = cl + g[x[n]][0];      }    }else{      for(var j = t ; j <= n; j++){        if(g[x[t-1]][x[j]] < Infinity && (cl + g[x[t-1]][x[j]] < bestl )){          swap(x,t,j);        //交換位置,將j點作為 當前需要到達的城市          cl = cl + g[x[t-1]][x[t]]; //加上選中的點          Traveling(t+1);       //搜索下一下節點          cl = cl - g[x[t-1]][x[t]]; //還原搜索之前          swap(x,t,j);        //還原        }      }    }  }    function swap(arr,x,y){    var temp = arr[x];    arr[x] = arr[y];    arr[y] = temp;  }     Traveling(1);  console.log(bestx);  console.log(bestl)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云龙县| 文登市| 南雄市| 莎车县| 金华市| 寻甸| 呼伦贝尔市| 夏邑县| 秦安县| 乌兰察布市| 临夏县| 吉安县| 尼木县| 和硕县| 溆浦县| 邳州市| 兴隆县| 柳江县| 宁海县| 灵璧县| 什邡市| 莱西市| 那曲县| 盐津县| 张家川| 彭泽县| 遵义市| 喀什市| 调兵山市| 云龙县| 马边| 乐昌市| 湘潭市| 绵阳市| 崇礼县| 寿宁县| 临沧市| 桐梓县| 黄梅县| 咸阳市| 称多县|