質問編集履歴

1

不明確であった問題点の修正

2018/08/05 04:31

投稿

SABA01
SABA01

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,9 +1,93 @@
1
+ 【編集いたしました】
2
+
1
- ### 前提・実現したいこと
3
+ 前提・実現したいこと
4
+
5
+ 私は現在JavaScriptを用いて01ナップサック問題を分枝限定法で解くプログラムを書いています。
6
+
7
+ 流れとしては荷物の個数をもとに列挙木を作り、暫定解をもとに最適でない解が見つかれば再起を用いて1つ前の葉に戻ればよいのではないかと考えておりますがうまく実装ができません。
2
8
 
3
9
 
4
10
 
5
- 現在C言語を用て分枝限定法を使って01ナップザック問題を解こうとしています。
11
+ #発生して問題
6
12
 
7
- ですが、どら手つければいかわからず再起条件や枝刈り条件も何を設定れば良いのわかりません
13
+ そこ質問なのですが、上限値及び、下記コード内の「ナップザック内の荷物を解の候補とする」はのように実装すればよいのでしょう。荷物の有無保存する配列を作ればのです?また、再起条件はあっていまでしょうか。
8
14
 
15
+ #ソースコード
16
+
17
+
18
+
19
+ w = 重量
20
+
21
+ z = 暫定解
22
+
23
+ c = 容量
24
+
25
+ x[] = 木の高さ
26
+
27
+ n = 荷物の個数
28
+
29
+
30
+
31
+ Napsack(level){
32
+
33
+ if(level > n){//列挙木の葉の部分?
34
+
35
+ w =
36
+
37
+ v =
38
+
39
+ if((w <= c) && (v > z)){
40
+
41
+ z = v;
42
+
43
+ ナップザック内の荷物を解の候補とする;
44
+
45
+ }
46
+
47
+ }else{
48
+
49
+ w =
50
+
51
+ v =
52
+
53
+ if(!(w > c)){//重量が荷物の重さを上回ったら打ち切り
54
+
55
+ if(w == c){//暫定解の更新
56
+
57
+ if( v > z ){
58
+
59
+ z = v;
60
+
61
+ ナップザック内の荷物を解の候補とする;
62
+
63
+ }
64
+
9
- どなたかコードと共に教えてくださいませんか?
65
+ }else if(上限値が暫定解より小さい){
66
+
67
+ x[level] = 0;
68
+
69
+ Napsack(level + 1);
70
+
71
+ x[level] = 1;
72
+
73
+ Napsack(level + 1);
74
+
75
+ }
76
+
77
+ }
78
+
79
+ }
80
+
81
+ }
82
+
83
+
84
+
85
+
86
+
87
+ 追記
88
+
89
+ 私の不適切な質問のせいで多くの方に不快感を与えてしまい申し訳ありません。
90
+
91
+ 当方このようなサイトを使うことが初めてであり、情報不足、モラル不足だったのだと実感しました。
92
+
93
+ プログラムの程を実際に書いてみましたのでぜひ皆様のお力を借りれたら幸いです。