12

プロパティが1つある場合、そこで何が起こっているのか理解できます。プロパティが複数ある場合、ナップサック問題の理解に問題があります。

ここに画像の説明を入力してください

2つのプロパティを持つナップサックアルゴリズムを使用するプログラムを作成する必要があります。先生は私たちに言った、それは3D配列で行われなければならない。そのような配列がどのように見えるか想像できません。

これが私の入力だとしましょう:

4 3 4 // number of records below, 1st property of backpack, 2nd property  of backpack
1 1 1 // 1st property, 2nd property, cost
1 2 2 // 1st property, 2nd property, cost
2 3 3 // 1st property, 2nd property, cost
3 4 5 // 1st property, 2nd property, cost

そして、出力は次のようになります。

4    // the cheapest sum of costs of 2 records
1 3  // numbers of these 2 records

出力の説明:2セットのレコードが入力の1行目に収まります:

(1)-レコード番号1およびレコード番号3

  1 1 1
+ 2 3 3
-------
  3 4 4

(2)-レコード番号4

  3 4 5

レコードの最初のセットが最も安い(4 <5)ので、それを選択しました。そのようなレコードのセットが存在するかどうかを確認する必要があるだけでなく、合計したレコードも検索する必要があります。

しかし今のところ、私は3D配列がどのように見えるかを理解する必要があるだけです。あなたの何人かはそれを手伝ってくれて、私の画像のように、レイヤーごとに、これはどのように見えるでしょうか?ありがとう。

ここに画像の説明を入力してください

4

2 に答える 2

1

3 次元のテーブルを使用しているとします: A[x][y][z]=k, x: sum 1st property; y: 合計 2 番目のプロパティ; z: 3 番目のプロパティを合計します。k: 最小コスト (最大の報酬、私は報酬の使用を好みます)

したがって、アイテムを反復処理します。現在のアイテムが (p1, p2, p3, 報酬) (報酬 = - コスト) であるとします。ごと(x,y,z,k)に、更新式:

A[x+p1][y+p2][z+p3] = max(A[x+p1][y+p2][z+p3], A[x+p1][y+p2][z+p3] + reward)

RHS の第 1 項が大きい場合、スロットA[x+p1][y+p2][z+p3]では、ナップサックの構成はそのままです。A[x+p1][y+p2][z+p3]それ以外の場合は、現在のアイテムに加えてナップザックを更新します。

これで物事が明確になることを願っています。

于 2013-09-08T21:02:03.383 に答える
0

あなたは不可能なことをしようとしています - それがあなたの問題です。

ディメンションの数を追加すると、アイテムは追加のプロパティを取得します。したがって、テーブルの左側の列側 ( prop1) の代わりに、長方形の側 ( prop1x prop2) またはブロックの側(prop1x prop2x prop3) などがあります。ただし、テーブルの上部の行側を定義する既存の制約は、同じ数の次元を持つ必要があります。一次元だけじゃない!. したがって、2 プロパティの問題を 3 次元ブロックに入れることはできません。代わりに 4D ブロックが必要です3 つのプロパティの 6D ブロックなど。

于 2012-11-27T09:11:44.723 に答える