佇列式分支限界法 裝載問題

2021-10-23 06:31:23 字數 1136 閱讀 4650

今晚終於把老師發布的演算法題的思路理清楚了,很是開心。

這次的演算法是用佇列式分支限界法解決裝載問題。

下面對於演算法的幾乎每一步都給了詳細解釋。需要的同學可以借鑑一下。嘻嘻。

希望大家一起共同進步呀~

//佇列式分支限界法_貨櫃問題

public class fifobbloding

}//佇列類

private static class arrayqueue

//入隊(迴圈順序隊列入隊)

private static void put(qnode b)

//出隊(迴圈順序佇列出隊)

public qnode remove()

}//判空

public boolean isempty()

}private static void enqueue(int wt,int i,

qnode parent, boolean leftchild)

return; }

//非葉節點,將節點加入到活節點佇列

qnode b=new qnode(parent,leftchild,wt);

queue.put(b); }

public static int maxloading(int w,int c,int xx)

//檢查右兒子結點

if(ew+r>bestw) enqueue(ew,i,e,false);

e=(qnode)queue.remove();//取下一擴充套件結點

if(e==null)

ew=e.weight;}

return bestw;

}public static void main(string args) ;

int w=new int;

system.out.println("最優載重量為"+maxloading(w,120,x));

for(int i=n-1;i>=1;i--)

system.out.println("最優解為:");

for(int i=1;i<=n;i++)//輸出最優解

system.out.print(bestx[i]);

}

裝載問題 BFS(佇列式)分支界限法

bfs即佇列分支界限法 如下 include include include using namespace std typedef struct node node int c 最大裝載重量 int n 裝載個數 int bestw 0 最佳裝載重量 int ew 0 當前裝載重量 int wei...

分支限界法 0 1揹包問題 佇列式

一.分支限界法概述 1 分支限界法就是採用廣度優先的策略,依次搜尋活結點所有的分枝,也就額是所有的相鄰結點。在求最優解時採用乙個限界函式,計算限界函式值,選擇乙個最有利的子節點作為擴充套件結點,使搜尋樹朝著解空間樹上有最優解的分支推進,以便盡快找出乙個最優解。2 常見的兩種分支限界法 先進先出 fi...

回溯法與分支限界法 裝載問題

分支限界法和回溯法都屬於搜尋演算法,但是他們的搜尋策略是不同的。分支限界法 廣度優先搜尋 bfs 剪枝函式,回溯法 深度優先搜尋 dfs 剪枝函式 回溯法 找出滿足約束條件的所有解 分枝限界法 找出滿足約束條件的乙個解或特定意義下的最優解 裝載問題 有兩艘船,載重量分別是c1 c2,n個貨櫃,重量是...