我目前正在進行編程分配:給定大的加權無關圖(1 < V < 2000, E < 100000)。沿着從「源」到點「目的地」的最小加權路徑查找最大加權邊緣。在Minimax路徑尋找解決方案中尋找路徑和最大稱量的邊緣?
到目前爲止我所得到的是將圖存儲在AdjacencyList(IntegerPair向量的向量中,其中第一個整數是鄰居,第二個是邊的權重)。
我也用Prim算法獲得的最小生成樹:
private static void process(int vtx) {
taken.set(vtx, true);
for (int j = 0; j < AdjList.get(vtx).size(); j++) {
IntegerPair v = AdjList.get(vtx).get(j);
if (!taken.get(v.first())) {
pq.offer(new IntegerPair(v.second(), v.first())); //sort by weight then by adjacent vertex
}
}
}
void PreProcess() {
Visited = new Vector<Boolean>();
taken = new Vector<Boolean>();
pq = new PriorityQueue<IntegerPair>();
taken.addAll(Collections.nCopies(V, false));
process(0);
int numTaken = 1;
int mst_cost = 0;
while (!pq.isEmpty() && numTaken != V) { //do this until all V vertices are taken (or E = V - 1 edges are taken)
IntegerPair front = pq.poll();
if (!taken.get(front.second())) { // we have not connected this vertex yet
mst_cost += front.first(); // add the weight of this edge
process(front.second());
numTaken++;
}
}
}
我停留在現在的是如何找到源路徑到目的地,並在下方返回的最大完全重邊緣查詢:
int Query(int source, int destination) {
int ans = 0;
return ans;
}
我被告知要使用深度優先搜索遍歷導致MST但我認爲DFS將穿越不在正確的路徑上的所有頂點(是嗎?)。以及如何找到最大優勢?
這似乎與minimax沒有任何關係。 – 2014-10-06 19:44:31