Set Coverの問題を解決するためにブランチとバインドされたメソッドを使用するJavaプログラムを誰かと共有できますか? 以下は私がこれまで持っていたものです。したがって、各段階で、アルゴリズムは1組をとり、問題の2つのインスタンスを取得することになっています。1.配列リストから最初のセットを選択します。2. arraylistから最初のセットを取りません。 この時点では、ブランチを開始してバインドする方法について固執しています。Set Cover問題のブランチとバインドされたアルゴリズム?
import java.util。*;
public class BranchAndBound {
static int bestSoFar=100;
static int count=0;
public static void main(String args[]){
//create the universe
int numU = 10;
MySets universe = new MySets();
for(int i=1;i<=numU;i++){
universe.add(i);
}
//create each set
MySets s1 = new MySets();
MySets s2 = new MySets();
MySets s3 = new MySets();
MySets s4 = new MySets();
MySets s5 = new MySets();
ArrayList<MySets> s=new ArrayList<MySets>();
//elements
s1.add(1);s1.add(2);s1.add(3);s1.add(8);s1.add(9);s1.add(10);
s2.add(1);s2.add(2);s2.add(3);s2.add(4);s2.add(5);
s3.add(4);s3.add(5);s3.add(7);
s4.add(5);s4.add(6);s4.add(7);
s5.add(6);s5.add(7);s5.add(8);s5.add(9);s5.add(10);
s.add(s1);s.add(s2);s.add(s3);s.add(s4);s.add(s5);
branchAndBound(universe,s,0);
}
public static void branchAndBound(MySets U,ArrayList<MySets> listSets,int countSelected){
MySets universe = new MySets();
universe.addAll(U);
ArrayList<MySets> s=new ArrayList<MySets>();
s.addAll(listSets);
MySets selectedSet= new MySets();
selectedSet.addAll(listSets.get(0));
count++;
universe.removeAll(selectedSet);//the universe now contains the elements still need to be covered
listSets.remove(0);//remove the first elemeent from the list
displaySet(selectedSet, "selected set");
displaySet(universe, "universe");
while(!universe.isEmpty() && !listSets.isEmpty()){
branchAndBound(universe,listSets,count);
}
}
public static void displaySet(MySets s, String name){
System.out.print(name+"==>");
Iterator it=s.iterator();
while(it.hasNext()){
Integer value=(Integer)it.next();
System.out.print(+value+" ");
}//while
System.out.println();
}//displaySet
}
はい私はしました。ポリ時代はありません。セットカバーが分を見つけるために。セットカバー、私は同意する。ブランチとバインドされたalgを設計することができます。分を見つけるにはポリ時間ではないが、分を生成する。セットカバー。 – sap
@user:なぜあなたはB&Bアルゴリズムを "設計"する必要があるのか分かりません。私はあなたが '宿題 'タグを持っているのを見ることができます...私はあなたの宿題のためにゼロからB&Bアルゴリズムを設計しなければならないと本当に驚いています。どんな大きさの問題も解決できるようにプログラムされていますか?あるいは、ブラッグ・アンド・バウンド・アルゴリズムが解決する際の手順を(手作業で)表示する必要のある小さな問題がありますか? – Tryer
私は本当にその宿題タグを私の質問に入れませんでした。誰かが混乱して謝罪した。宿題の問題ではありません。私はそれがnpの難しい問題であることを知っている、私はB&Bを使用して最小カバーを見つけるJavaプログラムを書くしようとしていると私はどこから始めるべきか分からない。私はこれまでに書いたことを示すために投稿を更新しています。ありがとうございます – sap