• 締切済み

アルゴリズムについて

<課題> A列、B列に各20個の箱があったとします。この箱には1個までのボールが入ります。A列の箱にボールをランダムに10個入れました。この10個のボールを上から順番に隙間なくB列の箱に移し替える事が目的で、移し替える手段としてボール1個のみ掴むことの出来るアーム(アーム1)とボールを5個一括で掴むことの出来るアーム(ただし箱1個間隔のアームとする)(アーム5)を使って最短回数でB列に移すアルゴリズムを教えてください。 条件1.今回は10個のボールと書きましたが動的な数値であると解釈してください。 条件2.A列の箱内で移し替えを行ってもいいですが回数はカウントされるものとします。 条件3.アーム5は列の両端の箱からはみ出してはいけないものとします。 以上、よろしくお願いします。

みんなの回答

  • bikkuri
  • ベストアンサー率33% (23/68)
回答No.2

「最短回数のアルゴリズム」とありますが、数学的に証明できるようなものでないと 最短回数を保証できないですよ。 ある開始状態からの最短回数と手順をプログラムで求めればいいのでしたら、 全ての可能な手順を順に行ってみるのが単純で理屈もいらないです。

  • Largo_sp
  • ベストアンサー率19% (105/538)
回答No.1

難しい問題なのかなぁ... まず、単純に、 1.全部ばらばらな時...アーム1ですべて移し変えるのが最短 ですよね...5つ並べても運ぶ動作を含めて5回ですから 2.単独で2~4個が隣り合っているいる時...その集まりに寄せるように集めてアーム5を使う... 3.複数ある場合...最多で集まっているところに集める  このとき、サイドに近い部分から集める。 (正確にはできるだけ5(n-1)個目から5n個めの部分であつめる) これをアルゴリズム化すればいいのではないでしょうか... もっと細かい条件が必要かなぁ....

cyan1110
質問者

補足

返答ありがとうございます。私にはまだ上記の3項をプログラムに変換するだけの能力がないです。もし差し支えなければ中心核となるアルゴリズム化のプログラムを教えていただけないでしょうか?

関連するQ&A