はじめに
本記事では「くどー問題」を扱います。くどー問題の内容、および本記事で用いられる表記については以下をご参照ください(項目をクリックすると展開されます)
くどー問題とは
そろそろ誰かに解いてほしい自作問題(未解決)
から引用させて頂きます:
からまでの整数が書かれたカードが1枚ずつある。この時、以下の条件を満たしながらカードを1枚ずつ取り除いていくことを考える。
【条件】
1. どの時点においても「カードに書かれた数の3乗和」が「カードに書かれた数の和」で割り切れる
2. とのカードは最後の2枚になるまで残す
この時、条件を満たしながらカードがなくなるまで取り除くことができるようなは無数に存在するか?
表記に関して
- : カードに書かれた数の集合のうちの最大の数
- : 削除されたカードの枚数
- : 削除されたカードに書かれた数(枚目に削除されるカードに書かれた数)。「削除する数」、「削除可能な数」などとも呼ぶ
- 削除列: 削除されたカードに書かれた数の列。のこと。「削除可能な数の列」、と記すこともある
- : あるに対し、削除可能な数が存在する最大の
- : 残りのカードに書かれた数の和 (枚の削除後の残りのカードに書かれた数の和)。
- :残りのカードに書かれた数の3乗和 (枚の削除後の残りのカードに書かれた数の3乗和) 。
- : (残りのカードに書かれた数の3乗和)/(残りのカードに書かれた数の和)。すなわち
- : 以下で定義される
このとき以下が成立する(
【くどー問題】Y.K.さんの方法
参照のこと)
が整数になるようにを選ぶことで削除列を構成することができる。
また、関連記事にRefs.kudoprob_01kudoprob_02kudoprob_03kudoprob_04があります。
数値計算でわかること
本記事では「くどー問題」の理論的な解析に関して述べます。その前に本章では数値計算からわかっていることを記します。そしてこれらの事実を理論的な観点からどれだけ説明できるかを示します。
まず現在のところ、において、最後まで削除可能なはしか見つかっていません。
図1がに対するのグラフです(に関しては「表記」の項目参照のこと):
vs のグラフ。青い点は計算が終わっているデータ。黄色い三角は計算が終わっておらず、の下限値を示している。緑の直線はであり、これにデータが乗ればその数は最後まで削除可能。
黄色い三角の点は計算量が多くなるため計算が未完了なに関するの下限です。緑の線はです。これにデータが乗ればそのは最後まで削除可能です。上の図のデータにアクセスできるインタラクティブな図は以下です:
図1のインタラクティブな図
この図は拡大・縮小することができ、データ点にカーソルを合わせるとが表示されます。また、削除列に関する特徴の解説が
「くどー問題」再び
の「の依存性」の章にあるのでご参照ください。
これらのデータから明らかにわかることが4つほどあります:
数値計算からわかる事実
- 大きなでは基本的にとなる。時折例外が存在する。
- となる一群のが存在する。
- 最初に削除できる数字はまたはである場合が多い
- 削除列には連続した整数が並ぶことが多い。特にとなるの場合、削除列は基本的に1つのみ、かつずっと連続する整数が並ぶ
1.2.は上に挙げた図から、3.4.は削除列を見ることでわかります。以下これらを(ある程度)理論的に説明します。
理論的にわかること
m=1,2で削除できる数に関して
で削除可能な数に関して考察します。
を4で割った余りで分類します。このとき以下が示せます:
- のとき、においては削除できる。これに続き、では が削除できる
- のとき、においては削除できる。これに続き、ではが削除できる
- のときでは削除できない。
- のときでは削除できない。
1.2.は具体的に代入すればすぐに証明できますし、3.4.も簡単にわかると思います。
ここでが大きい時、
【仮定1】 ではほとんどの場合 or しか削除できない
【仮定2】 上に示したにおけるの削除列は殆どの場合途切れ、では削除可能な数字が存在しない
を仮定します。公式1および【仮定1】【仮定2】は
という、数値計算でわかっている振る舞いを導きます。
【仮定1】【仮定2】が成立する理由は今のところちゃんとはわかっていません。ただしわかっていることもあります。【仮定1】に関連し、Y.K.さんの以下の証明が存在します:
【仮定1】に関連した定理(Y.K.さんによる)
で削除可能な数に関し、とが互いに素なら、は削除できない
くどー問題のメモ
を参照のこと(ただし定理1でと記したものは、Y.K.さんの記事ではと記されていることに注意)
これらの仮定に関してはもうすこし考察の必要がありそうです。
「数値計算からわかる事実」の2.4.に関して
本章では、前記した「数値計算からわかる事実」の2.4.が密接に関連しており、説明が可能であることを述べます。すなわちとなる一群のの存在と削除列に連続した整数が並ぶことの関係とその説明を与えます。
前回の記事
でY.K.さんに教えて頂いたくどー問題の数値計算法に関して説明しました。実はこの方法で計算すると、との間に著しい特徴があることに気付きます(記号の意味に関しては「表記」参照のこと)。例えばの削除列の最初の方を見てみましょう:
#########
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])]
︙
##########
丸括弧内の最初の数値はです。の隣の角括弧の中の数字が削除列です。で削除可能な数はのみです。では削除可能な数が2つ、とが存在します。削除列の次に削除できる数字が存在しないため、では削除列は1つに戻ります。
この結果を見ると
がの1つ目の削除列で成立し、その後ずっとこの関係が保たれるという著しい特徴があることがわかります。実はある程度が大きくなるでは、多くの場合、のどれかからこの関係が成立する削除列が存在します。その理由は以下の事実によります:
あるに対してが削除可能であり、かつ以下を満たすとする:
このときは削除可能であり、かつ以下が成立する:
定理1からわかるのは、あるでが成立するなら、()回目の削除ではが削除可能であり、かつが成立するということです。これが削除列に連続した整数が存在する理由かと思います。公式1が成立することは
からすぐにわかります。
さらにこのことからとなる一連のが存在することもわかります。なぜならが大きくなるに関して or は多くの場合最初に削除されてしまっているので、がこの値まで到達すると連鎖が途切れるからです。
また、たとえ最初に or が削除されていなかったとしても、最初にが成立するがより2以上大きいなら、すべての数字が削除されることはなく、この削除列は必ず途切れます。すなわちこのような削除列はそれ単独で最後の数字まで削除できるということはないです。
ちなみに最後まで削除可能なにおけるとは以下のようになります:
これらのではが成立することはないです。
計算が終わってないにおけるinf(mmax)の改善
前章の考察から、計算が重く探索の終わっていない(図1の黄色い三角の点)のの下限を改善することができます。
上記したの削除列の連続した整数がどこまで続くか考えると、が最初に削除されているためまで続いて途絶えます。ということは、この削除列はまで続くことになります。これはの下限です。これ以外の系列の削除列が存在する可能性はありますし、では実際存在します。
このようにして計算が終わっていないに対しての下限を改善した図が以下です:
図1において、理論的な考察から計算が未完了のデータ(黄色い三角の点)のの下限の改善を行ったもの
対応するインタラクティブなグラフは以下です:
図2のインタラクティブなグラフ
計算の終わってないのうちひとつだけ、のの下限に関しては、理論的な考察よりも現在完了している数値計算による下限の方が大きな値を与えます。
まとめ
本記事では、くどー問題に関して理論的にわかっていることを述べました。がの大きいところでという繰り返しの構造を持つこと、削除列が連続した整数から構成されること、さらにとなる一群のが存在する理由に関して(大雑把に)説明を与えました。
ここまで行った考察以外に、理論的にも数値的にもできることとして、「逆方向の探索」があります。これはから始め、「3乗和/1乗和が整数となる」ように数を追加していく方法です。コメント欄でtanuさんにご指摘頂いたのですが、これを考察すると、順方向の探索において「最後まで残しておかなければならない数」(=「追加する数の列」の全てに共通して存在する数)が見つかるかもしれません。順方向の探索でどの削除列にもこの数が存在するなら、そのにおいて最後まで削除することは不可能です。特に数値計算が重くなるに対してこの考察をすることは有益かと思います。
おしまい。