1.涉嫌dijkstra算法:设置一个集合S存放已经找到最短路径的顶点,S的初始状态只包含源点v,对vi∈V-S,假设从源点v到vi的有向边为最短路径。以后每求得一条最短路径v, …, vk,就将vk加入集合S中,并将路径v, …, vk , vi与原来的假设相比较,取路径长度较小者为最短路径。重复上述过程,直到集合V中全部顶点加入到集合S中。声明一个数组distance来保存源点到各个顶点的最短距离和一个已经找到最短路径的顶点的队列visited,以及一个用于存储具体路线的HashMap集合path;
一个类的写法
public void dijkstra(int[][] weight,Object[] str,int v)
{
HashMap path;
path=new HashMap();
for(int i=0;i<str.length;i++)
path.put(i, "");
//初始化路径长度数组distance
for(int i=0;i<str.length;i++)
{
path.put(i, path.get(i)+""+str[v]);
if(i==v)
distance[i]=0;
else if(weight[v][i]!=-1)
{
distance[i]=weight[v][i];
path.put(i, path.get(i)+"-->"+str[i]);
}
2.计划明天继续完善要用到的类,理解其实现其功能,
3.问题依然没有找到一个比较完整详细的教程,一些定义规范还不太明确,代码还不知道写的对不对打算完成后再测试