2
未解決問題議論
文献あり

【くどー問題】 理論的にわかること

323
4

はじめに

本記事では「くどー問題」を扱います。くどー問題の内容、および本記事で用いられる表記については以下をご参照ください(項目をクリックすると展開されます)


くどー問題とは そろそろ誰かに解いてほしい自作問題(未解決) から引用させて頂きます:

1からn(3)までの整数が書かれたカードが1枚ずつある。この時、以下の条件を満たしながらカードを1枚ずつ取り除いていくことを考える。

【条件】
1. どの時点においても「カードに書かれた数の3乗和」が「カードに書かれた数の和」で割り切れる
2. 1nのカードは最後の2枚になるまで残す

この時、条件を満たしながらカードがなくなるまで取り除くことができるようなnは無数に存在するか?

表記に関して
  • n: カードに書かれた数の集合{1,2,,n}のうちの最大の数
  • m: 削除されたカードの枚数
  • d (dm): 削除されたカードに書かれた数(m枚目に削除されるカードに書かれた数)。「削除する数」、「削除可能な数」などとも呼ぶ
  • 削除列: 削除されたカードに書かれた数の列。[d1,d2,,dm]のこと。「削除可能な数の列」、Delete(n;m)と記すこともある
  • mmax(n): あるnに対し、削除可能な数が存在する最大のm
  • S (Sm): 残りのカードに書かれた数の和 (m枚の削除後の残りのカードに書かれた数の和)。S0:=n(n+1)/2
  • T (Tm):残りのカードに書かれた数の3乗和 (m枚の削除後の残りのカードに書かれた数の3乗和) 。T0:=(n(n+1)/2)2
  • km: (残りのカードに書かれた数の3乗和)/(残りのカードに書かれた数の和)。すなわちkm:=Tm/Sm
  • km(diff): 以下で定義される
    km(diff):=dm(km1dm2)Sm1dm    (m1)
    このとき以下が成立する( 【くどー問題】Y.K.さんの方法 参照のこと)
    km=km1+km(diff)    (m1, k0:=T0/S0=S0N)
    km(diff)が整数になるようにdmを選ぶことで削除列を構成することができる。


また、関連記事にRefs.kudoprob_01kudoprob_02kudoprob_03kudoprob_04があります。

数値計算でわかること

本記事では「くどー問題」の理論的な解析に関して述べます。その前に本章では数値計算からわかっていることを記します。そしてこれらの事実を理論的な観点からどれだけ説明できるかを示します。

まず現在のところ、3n10000において、最後まで削除可能なnn=3,6しか見つかっていません。

図1が3n10000に対するmmax(n)のグラフです(mmaxに関しては「表記」の項目参照のこと):

!FORMULA[35][38042][0] vs !FORMULA[36][1665667463][0]のグラフ。青い点は計算が終わっているデータ。黄色い三角は計算が終わっておらず、!FORMULA[37][1665667463][0]の下限値を示している。緑の直線は!FORMULA[38][2010706321][0]であり、これにデータが乗ればその数は最後まで削除可能。 n vs mmax(n)のグラフ。青い点は計算が終わっているデータ。黄色い三角は計算が終わっておらず、mmax(n)の下限値を示している。緑の直線はmmax(n)=n2であり、これにデータが乗ればその数は最後まで削除可能。

黄色い三角の点は計算量が多くなるため計算が未完了なnに関するmmax(n)の下限です。緑の線はmmax(n)=n2です。これにデータが乗ればそのnは最後まで削除可能です。上の図のデータにアクセスできるインタラクティブな図は以下です:

図1のインタラクティブな図

この図は拡大・縮小することができ、データ点にカーソルを合わせると(n,mmax(n))が表示されます。また、削除列に関する特徴の解説が 「くどー問題」再び の「Delete(n;m)m依存性」の章にあるのでご参照ください。

これらのデータから明らかにわかることが4つほどあります:

数値計算からわかる事実
  1. 大きなnでは基本的にmmax(n)=0,0,2,2,0,0,2,2,となる。時折例外が存在する。
  2. mmax(n)n/2となる一群のnが存在する。
  3. 最初に削除できる数字はn/2または(n+1)/2である場合が多い
  4. 削除列には連続した整数が並ぶことが多い。特にmmax(n)n/2となるnの場合、削除列は基本的に1つのみ、かつずっと連続する整数が並ぶ

1.2.は上に挙げた図から、3.4.は削除列を見ることでわかります。以下これらを(ある程度)理論的に説明します。

理論的にわかること

m=1,2で削除できる数に関して

m=1,2で削除可能な数に関して考察します。

nを4で割った余りで分類します。このとき以下が示せます:

  • n=4k+2   (kN)のとき、m=1においてn/2=2k+1は削除できる。これに続き、m=2ではn/2+1=2k+2 が削除できる
  • n=4k+3のとき、m=1において(n+1)/2=2k+2は削除できる。これに続き、m=2では(n2)/2=2k+1が削除できる
  • n=4kのときm=1n/2=2kは削除できない。
  • n=4k+1のときm=1(n+1)/2=2k+1は削除できない。

1.2.は具体的に代入すればすぐに証明できますし、3.4.も簡単にわかると思います。

ここでnが大きい時、


【仮定1】 m=1ではほとんどの場合n/2 or (n+1)/2しか削除できない
【仮定2】 上に示したn=4k+2,4k+3におけるm=1,2の削除列は殆どの場合途切れ、m=3では削除可能な数字が存在しない


を仮定します。公式1および【仮定1】【仮定2】は
mmax(n)=0,0,2,2,0,0,2,2,    for large n
という、数値計算でわかっている振る舞いを導きます。

【仮定1】【仮定2】が成立する理由は今のところちゃんとはわかっていません。ただしわかっていることもあります。【仮定1】に関連し、Y.K.さんの以下の証明が存在します:

【仮定1】に関連した定理(Y.K.さんによる)

m=1で削除可能な数dに関し、S0=n(n+1)/2dが互いに素なら、dは削除できない

くどー問題のメモ を参照のこと(ただし定理1でdと記したものは、Y.K.さんの記事ではmと記されていることに注意)

これらの仮定に関してはもうすこし考察の必要がありそうです。

「数値計算からわかる事実」の2.4.に関して

本章では、前記した「数値計算からわかる事実」の2.4.が密接に関連しており、説明が可能であることを述べます。すなわちmmax(n)n/2となる一群のnの存在と削除列に連続した整数が並ぶことの関係とその説明を与えます。

前回の記事 でY.K.さんに教えて頂いたくどー問題の数値計算法に関して説明しました。実はこの方法で計算すると、dmkm(diff)の間に著しい特徴があることに気付きます(記号の意味に関しては「表記」参照のこと)。例えばn=1322の削除列の最初の方を見てみましょう:

      #########
n: 1322
- m: 1
(diffk,list_d): [(331, [661])]
- m: 2
(diffk,list_d): [(32, [661, 32]), (331, [661, 662])]
- m: 3
(diffk,list_d): [(33, [661, 32, 33])]
- m: 4
(diffk,list_d): [(34, [661, 32, 33, 34])]
- m: 5
(diffk,list_d): [(35, [661, 32, 33, 34, 35])]
︙
##########
    

丸括弧内の最初の数値はkm(diff)です。km(diff)の隣の角括弧の中の数字が削除列です。m=1で削除可能な数は661のみです。m=2では削除可能な数が2つ、32662が存在します。削除列[661,662]の次に削除できる数字が存在しないため、m=3では削除列は1つに戻ります。

この結果を見ると
km(diff)=dm
m=2の1つ目の削除列で成立し、その後ずっとこの関係が保たれるという著しい特徴があることがわかります。実はある程度mmax(n)が大きくなるnでは、多くの場合、m=2,3,4のどれかからこの関係が成立する削除列が存在します。その理由は以下の事実によります:

あるmに対してdm=aNが削除可能であり、かつ以下を満たすとする:
a(km1a2)Sm1a=a   (km1a2=Sm1a)
このときdm+1=a+1は削除可能であり、かつ以下が成立する:
(a+1)(km(a+1)2)Sm(a+1)=a+1

定理1からわかるのは、あるmkm(diff)=dmが成立するなら、(m+1)回目の削除ではdm+1=dm+1が削除可能であり、かつkm+1(diff)=dm+1が成立するということです。これが削除列に連続した整数が存在する理由かと思います。公式1が成立することは
km(a+1)2=km1+a(a+1)2=km1a2(a+1)=Sm1a(a+1)km(a+1)2Sm(a+1)=Sm1a(a+1)Sm1a(a+1)=1
からすぐにわかります。

さらにこのことからmmax(n)n/2となる一連のnが存在することもわかります。なぜならmmaxが大きくなるnに関してn/2 or (n+1)/2は多くの場合最初に削除されてしまっているので、dがこの値まで到達すると連鎖が途切れるからです。

また、たとえ最初にn/2 or (n+1)/2が削除されていなかったとしても、最初にkm(diff)=dmが成立するdmmより2以上大きいなら、すべての数字が削除されることはなく、この削除列は必ず途切れます。すなわちこのような削除列はそれ単独で最後の数字まで削除できるということはないです。

ちなみに最後まで削除可能なn=3,6におけるdk(diff)は以下のようになります:
n=3: d1=2,k1(diff)=1n=6: d1=3,k1(diff)=2 d2=4,k2(diff)=2 d3=5,k3(diff)=0 d4=2,k4(diff)=6
これらのnではdm=km(diff)が成立することはないです。

計算が終わってないnにおけるinf(mmax)の改善

前章の考察から、計算が重く探索の終わっていないn(図1の黄色い三角の点)のmmaxの下限を改善することができます。

上記したn=1322の削除列の連続した整数がどこまで続くか考えると、661が最初に削除されているため660まで続いて途絶えます。ということは、この削除列はm=66032+2=630まで続くことになります。これはmmaxの下限です。これ以外の系列の削除列が存在する可能性はありますし、n=1322では実際存在します。

このようにして計算が終わっていないnに対してmmaxの下限を改善した図が以下です:

図1において、理論的な考察から計算が未完了のデータ(黄色い三角の点)の!FORMULA[147][1665667463][0]の下限の改善を行ったもの 図1において、理論的な考察から計算が未完了のデータ(黄色い三角の点)のmmax(n)の下限の改善を行ったもの

対応するインタラクティブなグラフは以下です:

図2のインタラクティブなグラフ

計算の終わってないnのうちひとつだけ、n=1456mmaxの下限に関しては、理論的な考察よりも現在完了している数値計算による下限の方が大きな値を与えます。

まとめ

本記事では、くどー問題に関して理論的にわかっていることを述べました。mmax(n)nの大きいところで0,0,2,2,0,0,2,2,という繰り返しの構造を持つこと、削除列が連続した整数から構成されること、さらにmmax(n)n/2となる一群のnが存在する理由に関して(大雑把に)説明を与えました。

ここまで行った考察以外に、理論的にも数値的にもできることとして、「逆方向の探索」があります。これは{1,n}から始め、「3乗和/1乗和が整数となる」ように数を追加していく方法です。コメント欄でtanuさんにご指摘頂いたのですが、これを考察すると、順方向の探索において「最後まで残しておかなければならない数」(=「追加する数の列」の全てに共通して存在する数)が見つかるかもしれません。順方向の探索でどの削除列にもこの数が存在するなら、そのnにおいて最後まで削除することは不可能です。特に数値計算が重くなるnに対してこの考察をすることは有益かと思います。

おしまい。

参考文献

投稿日:2024528
OptHub AI Competition

この記事を高評価した人

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

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

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

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

投稿者

bisaitama
bisaitama
143
66728

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. はじめに
  2. 数値計算でわかること
  3. 理論的にわかること
  4. m=1,2で削除できる数に関して
  5. 「数値計算からわかる事実」の2.4.に関して
  6. 計算が終わってない$n$におけるinf(mmax)の改善
  7. まとめ
  8. 参考文献