程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#實現路徑規劃(最短路徑)算法(3)

C#實現路徑規劃(最短路徑)算法(3)

編輯:關於C語言
外,還需要一個表PlanCourse來記錄規劃的中間結果,即它管 理了每一個節點的PassedPath。

Code

[copy to clipboard]

CODE:

/// <summary>
  /// PlanCourse 緩存從源節點到其它任一節點的最小權值路徑=》路徑表
  /// </summary>
  public class PlanCourse
  {
     private Hashtable htPassedPath ;  
    #region ctor
    public PlanCourse(ArrayList nodeList ,string originID)
    {
      this.htPassedPath = new Hashtable() ;
      Node originNode = null ;
      foreach(Node node in nodeList)
      {
        if(node.ID == originID)
        {
           originNode = node ;
        }
         else
        {
          PassedPath pPath = new PassedPath(node.ID) ;
           this.htPassedPath.Add(node.ID ,pPath) ;
        }
       }
      if(originNode == null)
       {
        throw new Exception("The origin node is not exist !") ;
      }    
       this.InitializeWeight(originNode) ;
    }
     private void InitializeWeight(Node originNode)
    {
       if((originNode.EdgeList == null) || (originNode.EdgeList.Count == 0))
      {
         return ;
      }
      foreach(Edge edge in originNode.EdgeList)
      {
         PassedPath pPath = this[edge.EndNodeID] ;
        if (pPath == null)
        {
           continue ;
        }
         pPath.PassedIDList.Add(originNode.ID) ;
         pPath.Weight = edge.Weight ;
      }
    }
     #endregion
    public PassedPath this[string nodeID]
    {
      get
      {
         return (PassedPath)this.htPassedPath[nodeID] ;
      }
    }
  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved