簡體   English   中英

使用哈希碼在Java中實現Dijkstra算法

[英]Implementing Dijkstra's algorithm in Java using hash code

我的圖的實現是以下哈希表:

public class DiGraphHash{

private int numNodos, numArcos;
private TheList<Nodo> nodos[];
private TheList<Arco> arcos[];
private TheList<Arco> preds[];

}

TheList是我自己創建的列表。

對於Dijkstra的算法,我需要映射每個節點的成本以及到達該節點的路徑。 我有以下兩個數組:

   int[] cost = new cost[num_nodes];
   Nodo[] path = new Nodo[num_nodes];

另一個重要的細節是,我的節點將是字母A,B,C,D。

因此,舉例來說,當我映射節點時,我必須將成本分配給節點A,如何找到陣列中的位置?

我當時在考慮使用哈希碼%array.length,但是我不確定是否會發生沖突(考慮到它將只有1個字符)

我不是在問代碼,而是需要這個主意。

兩個想法:

  1. cost字段添加到您的Nodo類。 這樣,您只需要管理一個節點陣列,而不是單獨的成本陣列。 您可以在實例化節點時分配成本,並在以后輕松地查找它們。

  2. 比兩個數組更好的數據結構可能是映射,其中鍵是節點本身,值是節點的成本。 這是一個例子:

 HashMap<Nodo, Integer> nodesToCosts = new HashMap<Nodo, Integer>(); nodes.put(nodeA, new Integer(5)); nodes.put(nodeB, new Integer(20)); nodes.put(nodeC, new Integer(10)); nodes.put(nodeD, new Integer(5)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM