<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 241,  comments - 116,  trackbacks - 0
    暑假寫的Java實現Dijkstra單源最短路徑,主要特點是以起始點為中心向外層層擴展,直到擴展到終點為止。描述就不寫了,看相關書籍吧。 Dijkstra是一個貪心算法。
    package Section9;


    /*第九章  貪婪算法   Dijkstra單源最短路徑*/

    public class Dijkstra {

        /**
    墻頭草

         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[][] weight = {
                    {0,3,2000,7,9999999},
                    {3,0,4,2,9999999},
                    {9999999,4,0,5,6},
                    {7,2,5,0,4},
                    {9999999,9999999,4,6,0}
            };
            
            int[] path = Dijsktra(weight,0);
            for(int i = 0;i < path.length;i++)
                System.out.print(path[i] + "  ");
        }
        

        public static int[] Dijsktra(int[][] weight,int start){
            //接受一個有向圖的權重矩陣,和一個起點編號start(從0編號,頂點存在數組中)
            //返回一個int[] 數組,表示從start到它的最短路徑長度
            int n = weight.length;        //頂點個數
            int[] shortPath = new int[n];    //存放從start到其他各點的最短路徑
            int[] visited = new int[n];        //標記當前該頂點的最短路徑是否已經求出,1表示已求出
            
            //初始化,第一個頂點求出
            shortPath[start] = 0;
            visited[start] = 1;
            
            for(int count = 1;count <= n - 1;count++)        //要加入n-1個頂點
            {
                int k = -1;    //選出一個距離初始頂點start最近的未標記頂點
                int dmin = 1000;
                for(int i = 0;i < n;i++)
                {
                    if(visited[i] == 0 && weight[start][i] < dmin)
                    {
                        dmin = weight[start][i];
                        k = i;
                    }    
                }
                
                //將新選出的頂點標記為已求出最短路徑,且到start的最短路徑就是dmin
                shortPath[k] = dmin;
                visited[k] = 1;
                
                //以k為中間點想,修正從start到未訪問各點的距離
                for(int i = 0;i < n;i++)
                {
                    if(visited[i] == 0 && weight[start][k] + weight[k][i] < weight[start][i])
                         weight[start][i] = weight[start][k] + weight[k][i];
                }    
        
            }
            
            return shortPath;
        }
    }
    posted on 2011-10-09 10:52 墻頭草 閱讀(3502) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    人人游戲網 軟件開發網 貨運專家
    主站蜘蛛池模板: 亚洲国产成人久久精品软件| 国产成人亚洲精品青草天美| 黄色网址免费大全| 最近中文字幕完整免费视频ww| 亚洲最大免费视频网| 国产精品视_精品国产免费| 免费国产a国产片高清| 久久精品国产精品亚洲精品| 国产黄色片免费看| 最近中文字幕高清免费中文字幕mv| 好看的亚洲黄色经典| 亚洲AV无码男人的天堂| 青柠影视在线观看免费高清| 最近免费中文字幕高清大全| 亚洲综合一区二区精品导航| 麻豆亚洲AV成人无码久久精品| a级成人毛片免费视频高清| 男人的好看免费观看在线视频 | 97无码人妻福利免费公开在线视频| 国产亚洲成人久久| 亚洲国产成人综合| 免费夜色污私人影院网站| 免费高清国产视频| 亚洲福利精品一区二区三区| 亚洲手机中文字幕| 中国毛片免费观看| 亚洲高清无码在线观看| 免费人成在线观看视频高潮| 亚洲综合免费视频| 无码人妻精品中文字幕免费| 免费a级黄色毛片| a级午夜毛片免费一区二区| 91亚洲精品第一综合不卡播放| 久久久久女教师免费一区| 免费一级毛片女人图片| 中文字幕无码免费久久9一区9| 亚洲福利一区二区三区| 成人毛片视频免费网站观看| 亚洲精品视频观看| 大胆亚洲人体视频| 日本亚洲欧美色视频在线播放 |