需要用java实现一个程序来求出根据所给出的起始节点和目标节点(在约束条件下,必须经过某些点,必须不经过某些点)来求出两个结点的最短路径。
我有思路,但是转化为代码,还有些困难,在算法方面想请教一下大虾们。
首先:实现本例的算法是否应选择Dsijkstra算法,有没有更优的算法?
第二:必须经过某些点的约束条件,我是这样想的,先求出起始节点到第一个约束节点的最短路径,再继续求出第一个约束点到第二个点的最短路径...一直到最后一个约束点到目标节点的最短路径。但是觉得这样效率不是很高。而且好像我试了好多次Dsijkstra算法实现的是一个结点到其他所有节点的最短路径,我只需要特定的两个节点的路径该怎么做呢?谢谢。
第三:在必须不经过某些点的约束条件,我认为,先把要求不能经过的那些点删除掉,然后再求出最短路径。
现在请求打下支支招,要是有个带注释的源码参考参考那就更好了,谢谢。