本周我发现了这个库,我的第一个项目有效,我模拟了简单的航班预订。
作为边缘,我创建了一个飞行类作为顶点,我创建了一个机场类
我为每个航班设置了持续时间并成功关联了 dijsktra 算法(DijkstraShortestPath)
class Airport {
String name;
}
class Flight {
String flight;
int duration;
}
g = new DirectedSparseMultigraph<Airport, Flight>();
Flight AXXX = new Flight("A57",3);
Flight AYYY = new Flight("A53",1);
ORY = new Airport("ORY");
LYS = new Airport("LYS");
g.addEdge(AXXX, ORY, LYS);
g.addEdge(AYYY, LYS, ORY);
Transformer<Flight, Integer> wtTransformer = new Transformer<Flight, Integer>() {
@Override
public Integer transform(Flight link) {
return link.duration;
}
};
DijkstraShortestPath<Airport, Flight> alg = new DijkstraShortestPath(g, wtTransformer);
Number dist = alg.getDistance(ORY, LYS);
这个简单的案例效果很好,但现在我将计算持续时间为:Flight1 于 12:00 开始 12/01/13 并于 13/01/13 于 14h 到达 Flight2 于 13/01/13 于 18:00 开始并到达2013 年 13 月 1 日 20 点
在这种情况下,我想计算飞行时间和飞行之间的时间。因为要获得从一个航班到另一个航班的最短路径,我们需要注意航班之间的等待时间,而不仅仅是飞行时间。但是 DiskstraShortestPath 只允许 Transformer as: Transformer 所以我无法参考以前的航班来计算总持续时间(等待 + 航班)。
所以我的问题是:我的情况最好的方法是什么?创建新算法(继承 DijsktraShortestPath...) 创建新 GraphType(继承 DirectedSparseMultigraph...)
谢谢你回答家伙;)!