ケーキを上手に切りたい

この記事は rogy Advent Calender 2020 18日目の記事です.
こんにちは, 15のとくちんです.

クリスマスにはクリスマスケーキを食べるといった方も多いかと思います. しかし, 複数人でケーキを食べる場合, ケーキを人数分等しく切り分ける問題に直面します.

ケーキの上手な切り方について検索すると, 多くの方法が見つかります.
いくつかの方法で共通するのは, ケーキの中心に印をつける, 中心に包丁を入れて切る, といったケーキの中心に当たりをつけることです.
しかし, どのくらいの精度でケーキの中心がとれればいいのでしょうか?

そこで, ケーキを等分するにはどれくらいの精度で中心を推定し, カットする必要があるのか考えてみました.

問題設定

今回は, ケーキを3等分する場合を考えました.
問題設定を下図に示しました.

今回は, ケーキ自体の形状の誤差やデコレーションといったケーキ内の位置に対する価値は考えず, ケーキは位置に対して価値が一様な円であると仮定します.
ケーキの切り口の1点は座標 (0,r) に固定して考えます.
ここで, r はケーキの半径です.

以下の2点を分散があるものとして考えます.

  • ケーキの中心 ( 図中の点 c = (x, y) )
  • ケーキを切る円周上の位置 ( 図中の角度 θ1, θ)

この際, それぞれの分布は独立であり, 分布については以下のように仮定します.

  • c   …  原点を中心とする 2 次元切断正規分布 ( ||c|| ≤ r/2,
    パラメータ : diag(σ2c2c) )
  • θ1 …  2/3π を中心とする切断正規分布 ( 1/2π ≤ θ≤ π )
  • θ2 … – 2/3π を中心とする切断正規分布 ( – π ≤ θ≤ -1/2π )

ここで, 切断正規分布とは, 確率変数の定義域を有限に制限することで正規分布から導出される確率分布です.

また, θ1, θ2 に関する分布のパラメータ σ2θ は同じとしました.

今回評価としては, 最も大きいケーキと最も小さいケーキの面積の差の, 3等分した時のケーキの面積に対する割合が n% (n= 5, 10) 以下である確率を用いました.

実験

今回は一般的なケーキのサイズ, 4号 ( 直径 : 12cm ) の場合で計算しました.
上で述べた分布のパラメータを変えながら, 実験を行いました.
今回実装は MATLAB を用いて行いました.
それぞれの分布からのサンプリングには, truncate 関数を用いました. c に関しては極座標で考え, 半径に関しては定義域が [-r/2, r/2] の切断正規分布, 角度に関しては定義域が [0, π] の一様分布からサンプリングし, c を生成しました.
各分布に対して 10^5 回サンプリングを行い, 確率を計算しました.

実験した結果を以下に示します. 左の図が 5% 以下の確率, 右が 10% 以下の確率を表したものです.
赤線は確率が 0.95 の等高線を表しています.

等高線の右上付近の点を参照すると, σc = 0.2, σθ = 0.027 のとき確率 0.95 以上でケーキの差を10%以下に抑えることができるようです.
具体的に述べると, 99.7%で中心から半径0.6cm以内に中心をとり, 99.7%で円周を 3 等分する点から誤差 ±4.75° 以内で切ることが求められます.
中心に関してはケーキの直径が 12cm であるため, ケーキの直径に対してだいたい 1/10 スケールの円の内部ということになります.
また, 確率 0.95 で 5% に抑える場合はより高い精度が要求されます.

まとめ

今回は中心からケーキを三等分に分ける際の分散と等分される確率について考えました. ケーキを切る練習をする際の参考になれば幸いです. また, 今回は切り方を限定しましたが, よりロバストな切り方について考えるのも面白そうだと思いました.

明日は, たくぽんくんの「低温調理機でおいしく鶏胸をいただく」です. お楽しみに!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です