プログラミングパズルに関心のある人は雑談しましょう!
ご無沙汰しています。塗り壁です。 現在の状況をアップさせてもらいます。 以下,(3、2)型のロト問題について一般論を考察する。 O(N)(N>=6)でN次の最適解全体を表わすとき、最終目標はO(N)の構造の決定(要するに,N次の最適解の分類) である。分類するためには,その基準としての同値関係を定めることが通例であるが,本問題の同値関係として下記の3つを考える。 交換同値:二つの最適解は,数字の適当な交換により一方から他方が得られるとき交換同値であると言うことにする。なお、最適解に対し,その数字を任意に交換したものが最適解になることは明らかである。例えば6次の場合{[123][456]} と{[135][246]}は交換同値である。交換同値である二つの解は本質的には同じ解と考えることができる。 頻度同値:最適解Xが与えられたときα(1)はXが含む3−集合((N,3)型の組合せ)で1を含むものの個数、・・・α(N) はXが含む3−集合でNを含むものの個数とすると多重集合{α(1)・・・α(N)}が定まる。これを頻度集合と言うこ とにする。二つの最適解が頻度同値であるとは同一の頻度集合を持つ事とする。定義から明らかに,交換同値ならば頻度同 値である。言い換えれば、頻度同値の関係は交換同値の関係より粗い。 成分同値:最適解Xにより連結成分分割(三吉氏定義のもの)が得られる。この分割の型(例えば,N=7のときは3+4型等) が同じであるとき成分同値であると言う。成分同値の関係も交換同値の関係より粗い。三吉氏の考察より、成分数は2個以 下である。即ち、成分同値の同値類の数は項数が高々2のNの自然数分割で各項が3以上のものの個数が上限となる。 上記同値関係により、O(N)を分類することが当面の課題になる。 ・6次の場合 最適解は共通点を持たない二つの3−集合の対である。従って、全ての最適解は交換同値であり、その個数はC(6,3)=20個になる。交換同値ならば頻度同値且つ成分同値であるから6次の場合は完全解決ができた。 ・7次の場合 一つの最適解は{[123][456][467][567]}である。この頻度集合は{1112223}であり、成分分割の型は3+4である。 逆にこの頻度集合を実現するには、頻度3の数字は7通り、残りの6個の中から頻度2の数字3個の選び方はC(6,3)=20通り。都合140通りの最適解があり、それらは交換同値である。従って、頻度同値類は一般的には複数の交換同値類を 含む(と思われる)が、今の場合には交換同値類と一致(且つ成分同値類とも一致)していることが分かる。 成分数が1個の場合が存在するかどうかを確認する。プログラムで探して次の解が見つかった。 {[123][124][345][567]}これの頻度集合は{1122222}である。 結論として、7次の場合は2種類の交換同値類があり共に成分同値類、頻度同値類と一致していることがわかり7次の場合も解決した。 8次以上は現在調査中。分かり次第投稿します。
> 3個から2個以上の場合、連結成分2個からなる最小解がかならず存在する 連結成分2個からなる最小解を持つ n の無限の系列 (n = 2^h - 1) が存在するという意味ですね。 ちなみに nC2 のペアを生成する組の個数の最小値については 上界: n*(n+1)/4 - [(n+1)/2] ([] はガウス記号) 下界: n が奇数のとき n*(n-1)/6 (n = 2^h - 1 のときは一致) n が偶数のとき n^2/6 上界の分母の4をどこまで大きくできるか興味があります。
> 3個から2個以上の場合、連結成分2個からなる最小解がかならず存在する 残念ながらそこまでは言えてないです。 連結成分2個に近い構造を持つということが言えた程度です。
三吉さん、有難うございました。 やっと、理解できました。 この結果は、3個から2個以上の場合、連結成分2個からなる最小解がかならず存在する ことを保証するもので、大きな意味があります。 しつこく、こだわったのはこの点を気にしていたからです。ご容赦あれ。 本当にありがとうございました。これをもとに5個から3個以上の場合を 考えてみます。
書くもでもないと思いますが、つっこまれる前に。 > (1,5,i) 1<=i<=7 が解と2個以上共通するためには 1<=i<=9 でした。(;_;)
訂正です。 > 56789側に生成されているペアの数は 2成分にわかれているわけではないのでこの書き方はまずかったですね。 ペア (i,j) と (j,i) を別物として数えたとしてのペアの総数は x*(x-1) + (n-x)*(n-x-1) 以上で、別物としなければその半分 なのでペアの個数は (x*(x-1) + (n-x)*(n-x-1))/2 以上。 と書くべきでした。(値は変わりません)
> 後半(n−x)の部分は、一般には保証できていないのではないでしょうか。 n=9 の例で説明を続けます。 要素 1 と直接つながっていない例えば 5 をとってきます。 (1,5,i) 1<=i<=7 が解と2個以上共通するためには(1 と 5 は 直接つながっていないので)1 と i か 5 と i が直接つながって いなければいけません。1 の方から直接つながっている 1234 の 4個が提供されるので少なくとも残りの 56789 の5個 (= 9 - 4 = n - x) は 5 の方から提供されないといけません。事実 5 の 列を見ると 56789 が並んでいます。(9 の場合はさらにおまけの 34 がついた 3456789 が並んでいます) 5以外の 1 と直接つながっていない 6789 についても同様なので 56789側の縦の長さはすべて 5 (= 9 - 4 = n - x)以上になります。 よって 56789側に生成されているペアの数は少なくとも 5*4/2 = (n-x)*(n-x-1)/2 になります。 > 以下の5個から3個の場合のN=13の例でやってみていただけませんか? まだやってませんが上記の話は「3個から2個以上」という制約を 使っての話なので「5個から3個以上」の場合にどうなるかはわか りません。
三吉さん、丁寧な解説ありがとうございました。 >Re: 簡易ロト問題、3個から2個以上 投稿者:三吉 投稿日:03月04日(金)04時25分28秒 >n=9 の連結成分1個の解 {123,124,349,567,589,689,789} について >1行目に1〜9、その下に直接つながっている要素を縦に並べて >表に書いてみます。 >123456789 >211165553 >332277664 >444388875 >__9999996 >________7 >________8 >x というのはこの表の列(縦)の長さの最小値のことです。 >この例で言えば要素が 1 または 2 のとき最小値 4 をとります。 >例えば最小値 4 をとる要素 p として 1 の方を選べば(2 を >選んでも結果は同じですが)グループAは 1 と直接つながって >いる 1234、グループBは それ以外の 56789、AとBは 9 を >通して連結しています。 xの理解がまるで、違っていました。しかし、この方法では、 以前に提示された式 「x*(x-1)/2 + (n-x)(n-x-1)/2 以上」の前半は理解できますが、 後半(n−x)の部分は、一般には保証できていないのではないでしょうか。 x+1〜nまでのn−x個に関する任意のペアが存在することは言えてないと思います。 以下の5個から3個の場合のN=13の例でやってみていただけませんか? ==== (13, 8, 3) ==== 1 2 3 4 5 6 7 8 9 a b c d --------------------------- s1 1 1 1 1 1 . . . . . . . . s2 1 1 1 . . 1 . . . . . . 1 s3 1 1 1 . . . 1 1 . . . . . s4 . . . 1 1 1 . 1 1 . . . . s5 . . . 1 1 . 1 . 1 . . . 1 s6 . . . . . 1 1 . . 1 1 1 . s7 . . . . . . . 1 . 1 1 1 1 s8 . . . . . . . . 1 1 1 1 1 もちろん、私もやりますが。
> (4) n = 2^h - 1の場合は nC2/3個の組から重複なく nC2個のペアを > 生成できるだろう。 が解決しました。 a と b の排他的論理和が c となるような組 (a,b,c) すべてからなる 集合から nC2個のペアが無駄なく生成できるようです。
n=9 の連結成分1個の解 {123,124,349,567,589,689,789} について 1行目に1〜9、その下に直接つながっている要素を縦に並べて 表に書いてみます。 123456789 211165553 332277664 444388875 __9999996 ________7 ________8 x というのはこの表の列(縦)の長さの最小値のことです。 この例で言えば要素が 1 または 2 のとき最小値 4 をとります。 例えば最小値 4 をとる要素 p として 1 の方を選べば(2 を 選んでも結果は同じですが)グループAは 1 と直接つながって いる 1234、グループBは それ以外の 56789、AとBは 9 を 通して連結しています。 以下、余談です。 この例では 9 でつながらないように解の中の組 349 を 234 などと 入れ替えれば 123456789 211165555 332277666 444388877 ____99998 となって 1234 と 5678 の2成分からなる解になります。 このように1成分の解を2成分の解に変形する方法がないかと 考えていますが思いつきません。