2
高校数学解説
文献あり

【Google入社問題】正多面体の塗り分けを考えてみる

465
0

初めに

世界的な大企業「Google」の入社試験に、以下のような問題が出題されました。

「正二十面体の各面を3色のいずれかで塗っていく時、何通りの塗り方が存在しますか?」

一見簡単そうに見える問題ですが、正多面体の塗り分けは回転させることにより重複が発生するため、その重複を排除する必要があります。

範囲を考える

20面を3色に分けるのですから、最大3^20通りであることは容易に想像できます。
従って、
0<Ans<3486784401

集合として考える

正二十面体の回転やひっくり返しを行うと重複してしまう訳ですが、その重複を人間の頭でシミュレーションしながら考えることは困難です。

そこで、多面体から各色への写像として考えてみます。

f:{1,2,3,4,19,20}{ColorA,ColorB,ColorC}

正多面体の回転やひっくり返しは、集合の順番の置換に対応しますから、ポリア(ポーヤ)の数え上げ定理で写像を計算できます。

ポリアの定理Iより、
P(x1,x2,,xn)=1|G|πG|D2|k(π)=1|G|πGmk(π)

ここで、置換群 |G| = 60 (個) より、5次対称群の部分群である交代群として考えると、
正二十面体のn色塗り分けは、
Ans=160n20+14n10+13n8+25n4

n = 3 より、Ans = 58,130,055 と求まりました。

0<58130055<3486784401

であるから、これは題に適しています。

(158130055/3486784401)10098.3328463044

より、実に約98.3%の塗り方が重複してしまうという事ですね。

色の種類を増やしてみる

nの値の変化に伴って、塗り分けの通り数はどのように変化するのか計算してみます。

もちろん手動で計算するのは大変ですから、JavaScriptで処理させます。

コード

      window.CalcColor = function(n) {
  return (
    (1/60) * Math.pow(n, 20) +
    (1/4) * Math.pow(n, 10) +
    (1/3) * Math.pow(n, 8) +
    (2/5) * Math.pow(n, 4)
  )
}
for (let i = 1; i <= 10; i++)
  console.log("n = " + i + " : Ans = " + window.CalcColor(i));
    

結果

n = 1 : Ans = 1
n = 2 : Ans = 17824
n = 3 : Ans = 58130055
n = 4 : Ans = 18325477888
n = 5 : Ans = 1589459765875
n = 6 : Ans = 60935989677984
n = 7 : Ans = 1329871177501573
n = 8 : Ans = 19215358684143616
n = 9 : Ans = 202627758536996400
n = 10 : Ans = 1666666669200004000

また、重複率は以下のようになります。

1^20 = 1, 重複率0%
2^20 = 1048576, 重複率98.3001708984375%
3^20 = 3486784401, 重複率98.33284630436776%
4^20 = 1099511627776, 重複率98.3333074953407%
5^20 = 95367431640625, 重複率98.33333063653785%
6^20 = 3656158440062976, 重複率98.33333290455174%
7^20 = 79792266297612000, 重複率98.33333324242055%
8^20 = 1152921504606847000, 重複率98.33333330956506%
9^20 = 12157665459056929000, 重複率98.33333332604536%
10^20 = 100000000000000000000, 重複率98.3333333308%

このように、重複率は 98.3˙に近づいていくことが分かります。

これを分数で表すと、limnt=98.3˙より

10t=983.3˙
10tt=983.3˙98.3˙
9t=885
t=885/9=295/3

となります。

参考文献

[1]
竹内 薫, [非公認] Googleの入社試験, 2008
投稿日:2023311
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

Web開発や情報セキュリティが得意です。 趣味は法関連や仮想通貨など多岐に渡ります。

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 初めに
  2. 範囲を考える
  3. 集合として考える
  4. 色の種類を増やしてみる
  5. コード
  6. 結果
  7. 参考文献