先日,知り合いから,このページを見たよという電話をもらい,「1回目の記事の回答がないじゃないか」と指摘されてしまいました。

 ということで,今回は1回目の記事の一部をフォローします。掃除機の話です。

 壁にぶつかりながら掃除をしてくれる自動掃除ロボットがあります。私が知っているものは,結構値段も高く,7万円以上します。この掃除機メーカーのホームページでは,家具などをうまく避けてかつ,それ以外のところはきちんと掃除する様子を見ることができます。家電量販店などでもデモをしていることがあり,私などは見とれて30分以上デモを見ていることがあります。

 さて,このロボットは非常によくできていると思うのですが,数学的にこれを扱うとすると,どうすればいいか,というのが今回のテーマです。

 部屋は形もいろいろで家具もいろいろ,広さもいろいろなので,まず最初のステップとして,

部屋は正方形,障害物なし
で考えてみましょう。

 単純化のため,

掃除機は壁に当たったら反射する
場合を考えます。
正方形反射
 上の条件のもとで
(命題)掃除機が壁に当たる角度,あるいは掃除機の最初の位置によって,部屋中の掃除ができるかどうか判断せよ
という命題を考えることになります。

 実は,この問題は「エルゴード理論」と呼ばれる分野の「billiard」問題として,古くから研究されているものです。

 結論を言うと,発射角が 360×無理数(「発射」という状況を考えると0から180度の間)のとき,部屋中をくまなく掃除できます。発射角が,360×有理数だと,有限回の反射のあと,元の位置に戻ってきてしまい,部屋中くまなく掃除することはできません。なお有理数とは,「整数/ゼロ以外の整数」という形で書ける数のことで,無理数は有理数以外の数のことを言います。

 じゃあ,逆問題として,

(命題)どんな形の部屋でも,適切に発射角を設定すれば,部屋中を掃除できるかどうか判断せよ
を考えてみましょう。

 これは,実は容易に反例が作れます。部屋の形が円のときに,壁面に対して,x度の角度で発射する場合,

x=90度のとき,単純に往復運動するため,部屋の大部分は掃除できない
x≠90度のとき,部屋の中心は掃除できない
ことが分かります。
円

 つまり,単純に壁面で反射するような掃除ロボットを作ってもうまくいかない,ということが分かるのです。

 実用的な掃除機を作る場合は,「有限時間」で掃除しなければいけない,という条件もあり,上の数学的アプローチで,さらに「どういう角度なら短時間で部屋を均等に効率よく掃除できるのか」まで研究する必要があります。

 ということで,掃除機を設計するに当たり,単純に壁に当たったら反射するというのは駄目であろうことが,数学的考察から分かります。

 実際,家電量販店でデモ動作している掃除ロボットを見ると,部屋全体を掃除したかどうかをメモリー上に持っているような感じがします。

 部屋が大きすぎると掃除できないらしいので,移動距離と反射の角度を覚えていて,掃除していなさそうなところに向かって移動するようにプログラムされている,というのが私の見解です(実際のところは,企業秘密なので不明です)。

 今回は,数学を使うとスイスイ物事を解決できる,というのではなくて,数学を使うと「簡単ではないから違う方法を考えないといけない」ことが証明できる,というお話でした。