最小限の引き出しの動きで、順序付けられていないアイテムの山を引き出しに分類する


7

しばらく前、私は夜遅くに洗濯をしていました。洗濯物を寮に持ち帰ると、片付け始めました。

私のワードローブは次のように設定されています:

  • 私の引き出しは、持っている衣類の種類によって分類されており、私はそのことに非常にこだわっています。これは、パンツの引き出しにTシャツを入れられないことを意味します(それ以外の場合は、毛羽立ちすぎて寝ることができません)。もちろん、私はこの分類を知っており、暗闇の中でもどの引き出しがどれであるかを知っています。
  • 私はきれいな洗濯物を個持っており、引き出しが縦に並んでいます(引き出しの一番上が)NMD0
  • 引き出しは開閉可能ですが、引き出しが開いていると、衣類を引き出し入れることができません(ブロックされているため)。DiDi+1Di
  • 部屋に入ると、引き出しはすべて閉じています。
  • 終了したら、開いている引き出しをすべて閉じなければなりません。

私は思いやりのある紳士で、ルームメイトを起こしたくありません(これは大学の寮だったので、同じ部屋で寝ていました)。私はライトをオンにしないで、できるだけノイズを少なくすることにしました。

これは、以下の制約の下で洗濯物を片付けなければならないことを意味します。

  • 洗濯物が見えないので、引っ張った瞬間に何を掴んでいるか分からない。
  • 引き出しを開閉すると音がします。ランドリーバッグからアイテムを引き出したり、実際に引き出しに入れたりしても、そうはいきません。
  • 一度に片方の衣類しか片付けることができません。床が汚れすぎて手が届かない家具のスペースがないので、私は服のように折りたたんで積み重ねることができません(それからそれらの積み重ねを置きません)。
  • 衣類をバッグに入れて別のアイテムを取り出すことはできますが、次に取り出すのは、入れたばかりのアイテムである可能性があります(バッグから何を取り出すかは制御できません)。

このことから、3つの質問があります。

  • 引き出しの開閉をできる限り少なくするために、洗濯物をどのように片付けることができますか?
  • 他の誰かがこの問題または同様のことを考えましたか?
  • この問題には実用的な用途がありますか?

アイテムを洗濯バッグに静かに詰め込んで別のものを抽出できますか、それともスタックとして扱う必要がありますか?
カイルジョーンズ

これを変数として考えたことはありません。アイテムを元に戻して別のものを引き出すことができるとしましょう(ただし、もう一度引き出すアイテムは、元に戻したばかりのアイテムである可能性があります)。
JesseTG 2015年

@KyleJonesその戦略では、ジェシーは高い確率で睡眠をとらないかもしれません。
ラファエル

1
もちろん、いくつかの実用的な答えがあります。1)ルーミーが眠っている間は行わないでください。2)事前に並べ替えて折りたたむためのクリーンな領域を作成します。3)種類別に洗います。4)洗濯機からアイテムを引き出しながら、ランドリールームの引き出しで事前に並べ替えます。(そこにクリーンスペースがない場合は、引き出しごとに1つのバッグを取得します。)
ラファエル

1
コンピュータサイエンスの質問に関しては、興味深い。それは主に確率論の演習だと思います。次に取得するアイテムをある程度制御できない限り、アルゴリズムはほとんど機能しません。
ラファエル

回答:


4

次はどうですか:

  1. あなたのバッグを通過します。折りや引き出しのためのスタック項目及び 、、内/引出しに (あなたは、オンデマンドで開いています)。DiDi+1i2NDi

    アイテムが上にあることを確認してください。それはかなりのパンケーキスタイルの並べ替えを必要とするかもしれませんが、あなたはそのような操作について心配していないようです。Di+1

    引き出しがほぼ同じで、衣類がそのまま収納できると仮定すると、これを行うのに十分なスペース(引き出しの高さは2つ)が常にあることに注意してください。

  2. 開いている引き出しごとに、Di

    • のスタックを受け取り(必要に応じてバッグに入れます)、Di+1
    • 近く、Di
    • 開く、Di+1
    • そこにスタックを置き、
    • 閉じます。Di+1

このアルゴリズムでは、すべての引き出しに衣類が付着した場合、引き出しの動きが必要になるため、最悪の場合に最適です。2M

ではなくアイテムがある場合、一部の移動が無駄になります。場合のみ、奇数の引き出しがアイテムを取得し、我々は必要な二回の引き出しの動きを実行します。これは発生する可能性のある最悪の事態であるため、近似があります。Di+1Di2


2
このアルゴリズムの良い点の1つは、決定論的であることです。ルームを目覚めさせる可能性のあるサイコロを振る必要はありません。
ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.