
1年ほど前、世界最大級のコンテナ船が大規模な荷崩れを起こして横浜港に入港し、港湾関係者の努力によって無事に修復されて出航できた、というニュースがありました。様々なメディアで報道されていたので記憶されている方もいるかもしれませんね。このときのコンテナ船は20フィート長のコンテナを9000個積載可能と紹介されており、船にコンテナを積込む手順を思いやると何やら気が遠くなるような気分になったのを覚えています。
積み替えゲーム?

船上のコンテナは送付先の港で下され、陸上から港にやってきたコンテナは船に積み込まれます。上述のような大型船は複数の港でコンテナの積み下ろしを行うので、寄港先で余計な積み下ろしが発生しない順番に、船に積み込むコンテナを並べておきます。ところが、コンテナは陸上の様々なところから港にやってくるので、船に積む順番に到着するとは限りません。しかたがないので、到着順に積み上げておいて全部そろってから並べ替えます。積み木の積み替えゲームみたいですね。
天文学的数値?
この積み替えゲーム、決めておいた順番に並べ替えるのが早ければ早いほどいいので、あらかじめ積み替えの手順を全部覚えておきたくなるのですが、到着順に積み上げたコンテナの並び方、いくつくらいのパターンがあると思いますか?1列につきコンテナを3個積み上げておくと9000個のコンテナで6000列になりますが、このときのコンテナの並び方は約0.81×1031682(10の31682乗)通りです。私たちの研究室では、200個のコンテナに対して初めの並び方が1つ定まれば、5分ほどで最も早く並べ替えられそうな手順を求めることができますが(結構早いのですよ)、1パターン5分で解けるとしても全パターンを解こうとすると約0.76×1031677(10の31677乗)年もかかってしまいます。
チャレンジ!
現在私たちは、初期パターンが決まるごとにコンテナを並べ替える手順を求める、というやり方で、9000個のコンテナ並べ替えに挑んでいます。この方法なら初期パターン1個分だけ計算すればよいのでぐっと計算量が小さくできるからです。ただし、船ごとに計算を実行しなければならないので、手順を見つけるための計算時間と積替え作業にかかる時間の合計をいかに小さくするかがポイントになります。短い計算で見つけたそこそこよい手順の方が、長い間計算してようやく見つけた最高の手順より早く作業が終わるのなら、前者の方がよいのです。かなり、手ごわい研究課題ですが、学生を含め、研究室のメンバーが一丸となって研究を進めた結果、解決の糸口が見えてきました。これから先、本当に解決に至るまでには、まだいくつも壁を乗り越えなければなりませんが、1つ壁を乗り越えたときにはえもいわれぬ爽快感が得られます。ちょうどこの時期、卒論や修論で扱う成果が上がって「いい気分」を味わっている学生も出てきていますよ。