以前空閒的時候用C#實現的路徑規劃算法,今日貼它出來,看大家有沒有更 好的實現方案。關於路徑規劃(最短路徑)算法的背景知識,大家可以參考 《C++算法--圖算法》一書。
該圖算法描述的是這樣的場景:圖由節點 和帶有方向的邊構成,每條邊都有相應的權值,路徑規劃(最短路徑)算法就是 要找出從節點A到節點B的累積權值最小的路徑。
首先,我們可以將 “有向邊”抽象為Edge類:
Code
[copy to clipboard]
CODE:
public class Edge
{
public string StartNodeID ;
public string EndNodeID ;
public double Weight ; //權值,代價
}
節點則抽象成Node類,一個節點上掛著以此節 點作為起點的“出邊”表。
Code
[copy to clipboard]
CODE:
public class Node
{
private string iD ;
private ArrayList edgeList ;//Edge的集合--出邊表
public Node(string id )
{
this.iD = id ;
this.edgeList = new ArrayList() ;
}
property#region property
public string ID
{
get
{
return this.iD ;
}
}
public ArrayList EdgeList
{
get
{
return this.edgeList ;
}
}
#endregion
}