月刊「現代数学」数学パズルにトドメをさす?! 今月のFlash    おまけは→こちら
第40回
2014年 1月号
枠に詰め込め!(その1) 〜マニアックに省スペース〜
正方形への円の制約付き詰め込み問題の局所最適解の系列を観察する
Adobe Flash Player を取得

目的

同じ大きさのN個の円をなるべく小さい正方形に詰め込む際に、円の配置の規則性についての制約を設けた問題(本編記事の問題8/制約の内容は後述)についての、N≦1000における最適解を表示します。また、局所最適解となるような配置の4種類の系列(本編記事参照)について、パラメータを変化させた場合の具体的な配置例も表示できます。

Nを順次増やしていくにつれて、最適な配置がどのように変化していくかを観察してみましょう。また、規則性についての制約のない一般的な問題についての現状知られている最善解(外部サイトPackomania参照)と比較してみましょう。

操作方法

最適解表示モード

・初期状態では最適解表示モードとなっています。

・このモードでは、設定された個数(右上入力欄)に対する今回の問題の最適解と、その際の各パラメータを表示します。最適解は、局所最適解の系列のうちその個数以上の円を詰め込めるものの中での最善ケースとなるので、その系列におけるパラメータも表示します。

・その配置において、設定された個数より多い円を詰め込める場合は、余分に詰め込まれた分の円を薄い色で表示します。

・図中の赤線は、互いに接触している円の中心同士を結んだものです。この接触を表す線を隠すには"hide contacts"をクリックし、再び表示するには"show contacts"をクリックします。

・詰め込む円の個数を変更するには、右上の欄に入力して"change"をクリックするか、入力欄の右の"up""down"のボタンをクリックして増減させます。(このモードでは最大1000個まで)

・系列表示モードに切り替えるには、"show series"をクリックします。

系列表示モード

・このモードでは、局所最適解を系列毎にパラメータを設定して表示します。

・最適解表示モードから切り替えた際は、直前に表示していた最適解のパラメータの設定をそのまま引き継ぎます。

・系列を変更する際は、右上"Series"欄の数字をクリックします。

・変更可能なパラメータは、系列1ではn、系列2・4ではn,m1,m2、系列3ではn,mとなっています(系列1ではm1,m2の値も表示されますが、nが決まれば自動的に決定します).これらのパラメータを変更するには、各パラメータ名の右に表示される"up""down"のボタンをクリックします。ボタンが表示されないものは、それ以上変更できないことを意味します。

・mやm1についてはnを固定した場合の変更可能範囲で設定でき、m2についてはn,m1を固定した場合の変更可能範囲で設定できます。nを変更すると、m,m1,m2が変更される可能性があり、m1を変更するとm2が変更される可能性があるので、所定のパラメータに設定するには必ずnから順に設定して下さい。

・系列を変更した際の初期パラメータは、直前に表示されていた円の個数以上で、その系列が最適解となっているケースのパラメータに設定されます。ただし、その円の個数が1000を超える場合は、1000以下でその系列が最適解となっているNの最大値に対応するパラメータが設定されます。

・最適解表示モードに切り替えるには、"show optimum"をクリックします。

配置の制約

今回の問題では、配置に円の配置に以下のような制約が設定されています。

・全ての円は、正方形の縦の辺に平行な直線上に等間隔に並ぶk個またはk-1個のグループに属するようにする

・グループ内の円同士の間隔Dは、どのグループについても共通

・Dは円の直径の√3倍以下

・正方形の1辺はDのk+1倍未満

パラメータについて

系列パラメータについては、本編記事参照。ただし、系列1のnについては、問題2のnとは異なり、グループ内の円同士の間隔の個数(すなわち、グループ内の円の個数-1)となっています。

共通パラメータ

N:詰め込む円の個数

L:円の半径を1とした場合の正方形の一辺の長さ

r:正方形の一辺の長さを1とした場合の円の半径

l:円の中心間の距離の最小値を1とした場合の、円の中心を含む(最小の)正方形の一辺の長さ

d:円の中心を含む正方形の一辺の長さを1とした場合の円の中心間の距離の最小値(の最大値)

制約のない問題との比較

系列1・2・3については、配置についての制約がない問題においても局所最適解となりうるので、現時点での最善解がこれらの系列に含まれるようなNも存在しますが、系列4は配置についての制約がなければ局所最適解にもなりえません。

Packomaniaのサイトの最善解と一致する例:N=25(系列1)、N=56(系列2)、N=188(系列3)等

なお、今回の問題のN≦10000における最適解は、今月のおまけに収録しています。