码迷,mamicode.com
首页 > 编程语言 > 详细

Dijkstra算法-Java实现

时间:2018-12-07 20:43:58      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:java   ini   double   span   a算法   数组   添加   code   一个   

给定n个城市,并创建一个n*n的距离矩阵来存放两两城市之间的距离,当两个城市之间不能直达时,将距离记为无穷大。对矩阵进行初始化:

        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++) {
                arcs[i][j] = Double.POSITIVE_INFINITY;
                if (i == j) {
                    arcs[i][j] = 0;
                }
            }
        }

check数组记录此城市是否已经被添加到树中,dist数组用于表示起始点到i点的距离。给出起始点C1:

    for (int i = 0; i < N; i++) {
            check[i] = false;
            dist[i] = arcs[C1][i];
}

每次找出距离当前点最近的下一个点,进行放松

        int c = -1;
        while (c != C2) {
            double d = Double.POSITIVE_INFINITY;
            for (int i = 0; i < N; i++) {
                if (check[i] == true) {
                    continue;
                } else {
                    if (dist[i] < d) {
                        c = i;
                        d = dist[i];
                    }
                }
            }
            check[c] = true;
            for (int i = 0; i < N; i++) {
                if (check[i] == true) {
                    continue;
                } else {
                    if ((dist[i] - dist[c] - arcs[c][i]) > 0) {
                        dist[i] = dist[c] + arcs[c][i];
                    } 
                }
            }
        }

 

Dijkstra算法-Java实现

标签:java   ini   double   span   a算法   数组   添加   code   一个   

原文地址:https://www.cnblogs.com/tenghaoxiang/p/10084477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!