Java中的最佳路径(tsp)

时间:2017-03-18 13:52:22

标签: java json traveling-salesman

我是Java的新手,试图在几个城市之间找到最短路径。

  • Start在某个时间点(城市)通过all其他城市和end same city

从JSON文件中解析日期:

{ "city": "City1", "latitude": 43.1641506, "longitude": 19.7600896 },
{ "city": "City2", "latitude": 60.4317477, "longitude": 10.0853171 },
{ "city": "City3", "latitude": 21.4317477, "longitude": 16.1854121 },
  • output可能是City1的最佳路线 - >请分享帮助 - > City2 - > City4 ....

我的问题和问题是如何实施City类,任何建议?

1 个答案:

答案 0 :(得分:2)

忽略问题的标题并直接回答您的实际问题:

  • 我建议将名称更改为City。看起来这个课程的目的是代表一个城市,而不是一个任意点。
  • 除非有理由通过吸气剂暴露纬度和经度,否则我建议不这样做。最好将它们封装在自己的不可变类中,并对该类中的位置有任何逻辑。

所以我建议像:

public class Position {
    private final double latitude;
    private final double longitude;

    public Position(double latitude, double longitude) {
        this.latitude = latitude;
        this.longitude = longitude;
    }

    public double distanceTo(Position other) {
        ...
    }
}

public class City {
    private final String name;
    private final Position position;

    public City(String name, double latitude, double longitude) {
        this.name = name;
        this.position = new Position(latitude, longitude);
    }

    public double distanceTo(City other) {
        return this.position.distanceTo(other.position);
    }
}

这些是简洁的简单类,只有一个目的,使您的代码更容易阅读,更容易更改。它们也是不可变的(即它们的值在构造之后没有变化),这有很多优点(详见this question的答案)。