私がよく出張で行くところには7階建てのビルが2つあり、それらの間で行き来が多く発生する。そのため渡り廊下が1つ、5階に設けられている。
その渡り廊下を渡りながら、ふと「これが5階にあるのは最適なのか?」という疑問が頭をもたげた。
渡り廊下を設けるのは、上の方の階にいる人が隣のビルへ行くのにいちいち1階まで降りなくてもいいようにするためだが、あまり上につけると真ん中あたりの階の人が不便になる。ちょっと考えると、1階→1階、2階→2階、...、7階→7階という同じ階同士の移動の場合、5階に渡り廊下があれば、どの階からでも渡り廊下までの移動を両側でそれぞれ2階分以内に抑えることができる(4階〜7階からの移動は5階の渡り廊下を使う、1・2階からは1階経由、3階からはどちらを使ってもOK)。「おお、だから5階に作ってあるのか」と思ったが、よく考えると6階に渡り廊下があってもこの条件は満たされる(4階〜7階からの移動は6階の渡り廊下を使う、1階〜3階からは1階経由)。
そこで、同じ階同士でない場合も含めた全ての移動の組み合わせに対する移動階数の合計を求めてみることにした。つまり、(1〜7階)→(1〜7階)の移動49通りに対する「1階と渡り廊下を使った2通りの移動のうちの少ない方の移動階数」の総和を求める、という計算を行う。
例えば3階→4階の移動で渡り廊下が5階にある場合、1階経由だと2つ下がって3つ上がるから移動階数5、5階経由だと2つ上がって1つ下がるから移動階数3。したがって少ない方の3を採用。これを49通りの移動パターン全てについて足すのである。
Perlで書いて計算してみたところ、渡り廊下の位置(1階にある場合=渡り廊下がない場合も含む)に対する移動総数は以下のようになった。
渡り廊下の階 | 移動総数 | 平均移動階数 |
---|---|---|
1(なし) | 294 | 6 |
2 | 222 | 4.53 |
3 | 174 | 3.55 |
4 | 148 | 3.02 |
5 | 142 | 2.90 |
6 | 154 | 3.14 |
7 | 182 | 3.71 |
移動総数は5階が最小。やはり5階が最適だった。渡り廊下がない場合に比べ半分以下となり、平均移動階数も3を切っている。5階の次に優秀なのは6階ではなく4階である。
これで5階の渡り廊下をすがすがしい気分で利用できるようになったが、7階建てでないときのことも調べてみたくなる。2つのビルは同じ階数だとして、いろんな階数に対する最適な渡り廊下の位置は以下のようになる。
ビル階数 | 最適階 | 比率(最適階/階数) |
---|---|---|
2 | 2 | 1 |
3 | 2 | 0.667 |
4 | 3 | 0.750 |
5 | 4 | 0.800 |
6 | 4 | 0.667 |
7 | 5 | 0.714 |
8 | 5 | 0.625 |
9 | 6 | 0.667 |
10 | 7 | 0.700 |
20 | 12 | 0.600 |
30 | 18 | 0.600 |
40 | 24 | 0.600 |
50 | 30 | 0.600 |
100 | 59 | 0.590 |
200 | 118 | 0.590 |
300 | 176 | 0.587 |
400 | 235 | 0.588 |
500 | 294 | 0.588 |
1000 | 586 | 0.586 |
2000 | 1172 | 0.586 |
3000 | 1758 | 0.586 |
どうやら、階数が十分大きいときの渡り廊下の最適位置はその0.586倍付近になりそうである。階数を無限大に持っていったときの比率の極限値は正確にはどうなるのだろう。こういう極限値にはe(自然対数の底)が出てくることが多いが、この場合もeを使った式になるのだろうか。また、2つのビルの階数が異なる場合の最適位置とか、渡り廊下を2つ以上設ける場合のことについても考えてみるとおもしろいかもしれない。
(つづく)