このクイズのヒント
-
ヒント知らないよ
このクイズの参加者(6人)
広告
広告
広告
広告
広告
広告
広告
広告
広告
広告
広告
クイズ大陸関連書籍
|
品質証明試験
難易度:★★★★★
いはら 2010/03/31 17:43 みなさんお久しぶり。スライマンです。
先日ある国を訪れたときのこと。 その国ではロボットの開発が盛んで、性能試験の様子を見せてもらったんだ。 試験の一つは次のような内容だったよ。 この試験は、自分に割り当てられたグループ番号を論理的に推論するというものである。 王様はロボットの性能を自慢していたけど、単純にすべての可能性を調べているだけで、 論理能力が優れているわけではないんだよ。 その証拠に、次の問題をロボットに出題したら解くことはできなかった。 この問題を解いて、人間の方が優れていることを証明してくれたまえ。 あるとき上記の試験を行ったところ、全参加ロボットは試験に合格し、品質は証明された。 解答はNo.42以降にあります。
|
「なんだいなんだい、この問題は!?」
「本質的には帽子パズルだね」 「一体ロボットの台数は何台なんだい」 「それは自分で考えてみよう」 「さっぱり分からないよ」 「ふっふっふ。この問題は・・・」 「なんなんだい!」 〜〜〜 というわけで、本格論理パズルのお時間です。 タイトルは「品質証明試験」。サブタイトルは「なんだいなんだい」。 参考までにグループ番号の決め方の一例を書いておきます。 ロボットの全台数をNとしたとき、1以上N以下の自然数の中から一つの数nを無作為に選び、 それを全グループの数とします。 N台のロボットの中から無作為に1台を選び、1グループに割り当てます。 残りN-1台の中から無作為に1台を選び、2グループに割り当てます。 以下同様に1グループからnグループに1台ずつ割り当てます。 残ったロボットがあれば、各ロボットに対して1以上n以下の自然数を無作為に選び、 それをそのロボットのグループ番号とします。 試験が1回目で終わる場合は、最小公倍数の条件を満たすものとして構いません。 具体的な構成を、とは、 1番グループは○台、2番グループは○台、・・・というように、 すべてのグループの台数を決めて下さい、ということです。 最大値となる組み合わせは複数あるかもしれませんが、 そのうちの一つだけを書いていただければ結構です。 答えがあっていれば金メダル、証明できていれば感服メダルを進呈します。
いはら
既にお気づきのとおり、まだまだ大きくできます
いはら
鋭い勘ですね
惜しい数字ですが、正解ではありません。
ふっふっふ。この問題は難題なんだい!
いはら
はい。そのとおりですね
まだまだ大きくできます。
いはら
なかなか詳しいご説明ありがとうございます
まだまだ大きくできますよ。 ヒミツ
訂正です。もすこし多くなりました
間違ってるかもしれませんがこの問題おもしろいっす それから決め方の一例とありますが ・0台になるグループは存在しない(各グループには必ず1台はロボットがいる) ・全体で何グループ存在しているかはロボットたちは知っている という解釈でよろしいでしょうか? (それぞれのロボットはめちゃくちゃ賢い&他のロボットも同じくらい賢いことを知っている ってのは当たり前の前提条件ですよね )
いはら
ありがとうございます
>0台になるグループは存在しない(各グループには必ず1台はロボットがいる) そのとおりです。 0台のグループもあり得るとすると、誰も自分のグループ番号を推論できませんので、 問題として成立しませんし。 >全体で何グループ存在しているかはロボットたちは知っている 知っていません。 試験中に得たデータから推論できるかもしれませんが、 試験開始前には何も知りません。 >それぞれのロボットはめちゃくちゃ賢い&他のロボットも同じくらい賢いことを知っている 実はこの試験では、 それぞれのロボットが完璧な推論をしたのかどうかは分からないのですが、 完璧な推論をした場合と同じ結果を出したということが分かっていますので、 そう考えて問題ありません。 囁きは惜しい数字なのですが、正解ではありません。
いはら
やっぱり困難なようですね
惜しい数字ですが、正解ではありません。 ヒミツ
>>全体で何グループ存在しているかはロボットたちは知っている
>知っていません。 >試験中に得たデータから推論できるかもしれませんが、 >試験開始前には何も知りません。 ということでしたらこうなるのかな? 自信はないです
いはら
具体的な構成がよく分からないのではっきりとは言えませんが、
恐らくだごさんの考えているような結果にはならないと思いますよ。 この台数も私の用意した答えとは違っています。 少ない台数でどういう結果になるか調べてみてはいかがでしょうか。
いはら
特に勘違いはされていないと思います
その構成の場合は確かにその結果になります。 ただ、台数の最大値はもっと大きな値になるのです。
いはら
そういう意味でしたか
構成と結果の組み合わせは正しいですが、台数は最大ではありません。
いはら
着々と正解に近づいていますね
その構成だと確かに条件を満たしています。 しかし、その台数は最大値ではありません。 書いてある説明はまだ完璧なものではないのです。
いはら
その構成だと確かに問題の条件を満たしていますが、
残念ながら、それは最大値ではありません。
いはら
この台数があっているかどうかは秘密にしておきます
具体的な構成が分からないと判定できませんので、 構成の記入もお願いします。 台数があっていても構成が問題の条件を満たしていない場合は、 条件を満たしていないことだけ指摘して、台数があっていることは告げません。 それでは、ちょっとしたヒントです。
第1グループが1台、第2グループが3台の場合に結果がどうなるのか調べてみましょう。 1回目は1グループの1台だけが分かります。 2回目は誰も分かりません。 2グループのロボットはこの段階では自分が2グループなのか3グループなのか判断できません。 3回目に2グループのロボットが分かり、試験は終了します。 この場合は0台の回が発生するため、問題の条件を満たしていません。 「惜しい数字ですが、正解ではありません」とコメントをつけた回答の構成ですと、 この例のように0台の回ができてしまい、条件を満たしません。 (具体的な構成を書いていない方もいましたが、多分同じでしょう) この点を踏まえて考え直してみましょう。
いはら
はい。確かに
まだまだ多くできますよ。
いはら
え〜と。この構成だと最小公倍数が500を超えると思います。
ご確認下さい。
いはら
グループ番号はちょっと調整しました。
おめでとうございます。正解です! あとはこの台数が最大であることを証明していただければ、完璧ですね。
いはら
これも条件を満たしていますね
まだ増やせます。
いはら
番号が指定されていないグループは、
台数の少ない順に番号がついているものとみなします。 この構成ですと、書いてあるような結果にはならないと思います。 (訂正の内容を含めても) ご確認下さい。
いはら
まだまだいけます
いはら
だいぶ多くなりましたが、まだまだいけます
いはら
確かに混乱しているようですね。
最後の2回はそういう結果にはならないです。 ヒント第二弾です。
第1グループが3台、第2グループが1台、第3グループが1台の場合、 1回目には2グループの1台だけが分かります。 2回目には3グループの1台が分かります。 2グループの1台が1回目に分かったということは、 2より大きいグループ番号が存在するはずだと分かるのです。 3回目に1グループの3台が分かり、試験は終了します。 一番大きい番号のグループが最後に分かるとは限らないのです
いはら
果敢なご挑戦ありがとうございます
この結果は正しいです。 しかし、これはまだ最大値ではないのです。 No.24のヒントを踏まえて考えてみましょう。 ヒミツ
ということは、こういうこと???
↓ 2回目にわかるのは、2台のグループです。書いてあるのは、最初に配られたリストのうち、1台のグループが実は2台だということがわかるという意味です。 もう少し頭を冷やして考えてみます。
いはら
毎回、構成と結果に書いてある台数が食い違っていますが、
構成に書いてあるほうが正しいのですよね 例えば2回目に分かるのは2台のグループですね。 今回の結果も正しいです かな〜り増えましたが、これでも最大値ではありません。 No.24はあくまでもヒントですから、 他にこういうことが起こる場合はないのか考えてみましょう。 ↑そういう意味でしたか。失礼しました。
いはら
構成と結果の組み合わせは正しいです。
実に惜しいところまできています。あと一歩で正解できるでしょう
いはら
前回のコメントは、
説明が間違っているという意味ではありませんよ。 あの構成であればああいう結果になりますが、 台数が最大でないということです。 少し考えればさらに台数を増やせることに気づけると思います。
いはら
またも構成が条件を満たしていない…
と思ったら、6台のグループ数を間違えているようです。 正しくはこれより1大きい値と思われます。 するとstarさんの回答と同じになり、 条件は満たしますが、正解まであと一歩です。
いはら
正解です!
おめでとうございます お疲れ様でした。 やった!嬉しい。
>>17の後、問題の手ごわさにちょっとへこたれかけましたが、他の方も挑戦しているのを見て、やる気が出てきたのです。 ちょっとした空き時間があると、考えていることもありました。帽子クイズもこういう発展形ができるのですね〜。驚きです。
いはら
最後まで諦めずご挑戦いただき、ありがとうございました
私も完全解決するのにかなり時間がかかりました。 発展形は色々考えてみましたが、なかなか綺麗な問題になったと思います。
いはら
そのとおりです。これが最大値のはずです。
正解おめでとうございます
いはら
この構成ですとその台数になりますが、まだ最大値ではないんですね〜
せっかくお考えいただいているので、後ほどヒントを出して解答発表を延期します。 ヒミツ
最大値であることを考えてみようと思いましたが、うまく説明できない…
"しっくりこない感" を持った解答になってしまいました 長いので分割しました。
いはら
長文ありがとうございます
しっかり検証しますので、少々お時間をいただきます。 --- 証明としてはちょっと問題があるようですね。 長くなりそうですので、後ほど別途書き込みます。
いはら
こちらは完璧ですね
各ロボットが分かる回数が上の囁きのようになっているのであれば、 最大値はそのように決まりますね。 本日解答発表開始の予定でしたが、
お考えいただいている方もいますので、少々延期いたします。 連休明けになりそうです。 さらにヒントも出しておきます。 1番グループが4台、 2番グループが2台、 3番グループが1台、 4番グループが2台、 の場合。 1回目には3番グループの1台が分かります。 2回目には2番グループの2台が分かります。 3回目には4番グループの2台が分かります。 4回目には1番グループの4台が分かり、試験は終了します。 なぜこうなるのかを考えれば、正解にたどり着けるのではないかと思います。
いはら
6回目のグループ番号は違っているようですが、
各回の台数はそのようになりますね。 まだいけるのですよ 最大番号のグループが分かる条件をしっかり考えてみましょう。 >ボムボムさん
証明にもお取り組みいただき、ありがとうございます 結論として述べていることは正しいと思います。 整理すれば証明になるような気もしますが、いくつか問題があるようです。 まず、言葉の定義がはっきりしていません。 >属していても矛盾しないグループ=「所属可能グループ」ということにする。 t回目まで済んだ時点での所属可能グループとは、 自分がそのグループだと仮定して試験の結果をシミュレートしたときに、 1回目からt回目までの結果が、実際の試験の結果と一致する ようなグループのことかと思いましたが、その後の議論を見ると違うようです。 既に分かっているグループを除外した残りのグループ、 リスト中まだ分かってないグループと、リスト中の最大番号+1番のグループのことと思われます。 @ABの場合分けもはっきりしません。 所属可能グループは回数によって変動するはずですから、 そのような場合分けをするのであれば、回数を固定しないといけないと思います。 数学的帰納法も成立していない気がします。 >[k]グループに属している任意のロボットXにとって、資料を見れば[k]グループには少なくともN[k]台が属していることが分かる。 >[k]グループのロボットは、少なくともN[k]-1回目の手続き終了の段階でも確定できない状況である(帰納法の仮定)。 としていますが、これは帰納法の仮定とは異なっているのでは? 仮定してあるのは[k]グループがN[k]台のときであって、N[k]台以上のときではありませんから。 >また所属可能グループが複数あるため、N[k]回目も確定できず待機することになる。 これも明らかではありませんね。 自分があるグループだと仮定したとき、実際の結果と矛盾するのであれば、 自分はそのグループではないと分かります。 そのようにして、ただ一つの可能性だけが残れば、自分はそのグループだと分かるはずです。 とりあえず解答発表(開始)は5/10(月)に延期しますので、ごゆっくりお考え下さい。 ヒミツ
私の頭ではこれが限界です
こちらこそありがとうございました。 いろいろとヒントをいただいたにもかかわらず手間取ってしまいました。 (7回目の仕組みに気がつくまで時間がかかってしまいました)
いはら
もはやこれまで! と思いきや、これが正解なのです!
おめでとうございます。 長い道のりをありがとうございました ヒミツ
返信ありがとうございます
この囁きは返信コメントへのコメントでございます。 解答は別方向からのアプローチを、アンチューモサクでゴザイマス
いはら
>「所属可能グループ」は
>属していても、今までの結果と矛盾しないグループ=「所属可能グループ」 >のほうが本来意図したほうです。 あれ!?そちらの意味でしたか。 所属可能グループが一つしかなければ、その時点でそのグループだと確定しますし、 所属可能グループが複数あれば、どんな推論をしてもどれかに決めることはできないはずです。 ですので、そちらだと以後の議論の意味がないと思ったのでした。 よく読んだらこちらの意味とも微妙に違うようですね。 やっぱりよく分からないです 私はグループ番号に対してある自然数を対応させる特別な関数Fを定義しまして、 i番グループのロボットがt回目に分かるということと、F(i)=tであることは同値だということを証明しました。 この証明はtについての数学的帰納法で行いました。 それでは、全何回になるか分かりませんが、解答発表を開始します。
証明は後ほどしますが、まずは各グループのロボットが何回目に分かるのかを 式で表してみます。 全グループ数をnとし、iを1以上n以下の自然数とします。 i番のグループに属するロボットの台数をR(i)とします。 また、R(0)=0と定義します。 R(0),R(1),・・・,R(n)の中からR(i)を除いた残りのn個の数の最大値をX(i)と書くことにします。 F(i)を次のように定義します。 i=nのとき、F(i)=min(R(n-1)+R(n),max(R(n),X(n)+1)) i≠nのとき、F(i)=min(R(i),max(R(n-1)+R(n)+1,X(i)+1)) max(a1,a2,・・・)はa1,a2,・・・の中の最大値、 min(a1,a2,・・・)はa1,a2,・・・の中の最小値です。 F(i)=tは、i番グループのロボットがt回目に分かるための必要十分条件です。 F(i)=tは、i番グループのロボットがt回目に分かるための必要十分条件。
これを証明するにあたり、まずはF(i)の取り得る値を考える。 関数R,Xは整数値しかとらないので、F(i)が整数値となることは明らか。 R(n)≧1なのでR(n-1)+R(n)≧1,max(R(n),X(n)+1)≧1であり、F(n)≧1 i≠nのとき、R(i)≧1なので同様にしてF(i)≧1 つまり、F(i)は1以上の整数である。 よって、すべての自然数tについて証明すればよい。 tについての数学的帰納法で証明する。 1.t=1のときに成立することを示す。 2.1以上k以下のtについて成立すると仮定すると、t=k+1のときにも成立することを示す。 これができれば、すべての自然数tについて成立するという証明になる。 1.t=1のとき i番グループのロボットが1回目に分かる⇒F(i)=1、の証明: i番グループのロボットが1回目に分かるとする。 リストに1番からある番号までの連続するグループ番号が存在している場合は、 1番からリスト中の最大番号+1番までが、自分のグループ番号の候補になり、 特定できない。 R(i)≧2のときはリストに1番からn番までのすべての番号が現れるので、R(i)=1。 i=n≧2の場合、R(i)=1であっても、リストには1番からn-1番までのすべての番号が現れる。 よって、i=nの場合はn=1でなくてはいけない。 この場合、全ロボット台数は1となりリストには何も記載されず、自分は1番だと分かる。 このとき、F(i)=min(R(n-1)+R(n),max(R(n),X(n)+1))=min(1,max(1,1))=1 i≠nの場合、R(i)=1,R(n)≧1,X(i)≧R(n)≧1なので、 F(i)=min(R(i),max(R(n-1)+R(n)+1,X(i)+1))=min(1,max(R(n-1)+R(n)+1,X(i)+1))=1 となり、証明された。 F(i)=1⇒i番グループのロボットは1回目に分かる、ことの証明: F(i)=1とする。 i=nであれば、F(i)=min(R(n-1)+R(n),max(R(n),X(n)+1)) すると、R(n-1)+R(n)=1またはmax(R(n),X(n)+1)=1が成り立つ。 R(n-1)+R(n)=1となるのは、n=1,R(n)=1のときだけ。 これは全ロボット台数が1ということなので、1回目に分かる。 max(R(n),X(n)+1)=1のときは、R(n)=1,X(n)=0なのでn=1となり同じことになる。 i≠nであれば、min(R(i),max(R(n-1)+R(n)+1,X(i)+1))=1。 R(i)=1またはmax(R(n-1)+R(n)+1,X(i)+1)=1が成り立つ。 R(i)=1であれば、リスト中にi番が現れずi+1番が存在するので、 自分がi番だということが1回目に分かる。 max(R(n-1)+R(n)+1,X(i)+1)=1のとき、 R(n-1)+R(n)≦1かつ、X(i)≦1。 これを満たすのは、R(n)=1,n=1のときだけなので、1回目に分かることになる。 以上より、t=1のときには証明された。 続く。 続いて2の証明。
任意の自然数kについて、 tが1以上k以下のときに成立すると仮定すると、t=k+1のときにも成立することを示す。 つまり、 1≦t≦kのときには、 i番グループのロボットがt回目に分かる⇔F(i)=t が成り立つならば、 2-1.i番グループのロボットがk+1回目に分かる⇒F(i)=k+1 2-2.F(i)=k+1⇒i番グループのロボットはk+1回目に分かる が成り立つことを示す。 1≦t≦kのときには、 i番グループのロボットがt回目に分かる⇔F(i)=t が成立すると仮定。 2-1.i番グループのロボットがk+1回目に分かるとき、F(i)=k+1になることの証明: 帰納法の仮定から、F(i)≦kであればk回目までに分かるので、F(i)≧k+1である。 F(i)≧k+2であればk+1回目には分からないことを示せば、 k+1回目に分かるときF(i)=k+1となることが証明できる。 k+1回目に分からないということは、iとは異なるあるグループ番号jがあって、 自分がj番グループだと想定したときのk回目までの結果が現実の結果と全く同じになる、 ということである。 sを1以上n以下の自然数とすると、帰納法の仮定により、 F(s)≦kのときは、s番グループのロボットはF(s)回目に分かり、 F(s)≧k+1のときは、s番グループのロボットはk回目までには分からない。 そこで、F(s)≦kのときにはF(s)と同じ値をとり、 F(s)≧k+1のときにはk+1となる関数fを考えてみる。 f(s)=min(F(s),k+1) とすればよい。 iとjについての2つの関数の値が、リスト中のすべてのグループ番号sについて一致するとき、 自分はi番かj番が判断できないので、k+1回目には分からないということになる。 同じ記号を使うと紛らわしいので、自分がj番グループだと想定したときの、 全グループ数をmとし、 R,X,fの代わりにVR,VX,Vfを使うことにする。 添え字のjをつけるべきであるが、それは省略することにする。 i=mのとき、Vf(i)=min(VR(m-1)+VR(m),max(VR(m),VX(m)+1),k+1) i≠mのとき、Vf(i)=min(VR(i),max(VR(m-1)+R(m)+1,VX(i)+1),k+1) である。 次の3つの場合に分けて考える。 2-1-1.i=n,R(n)=1 2-1-2.i=n,R(n)≧2 2-1-3.i≠n F(i)≧k+2であれば、i番グループのロボットはk+1回目には分からないことを示す。 2-1-1.i=n,R(n)=1の場合 R(n-1)≧0,X(n)≧0,R(n-1)≦X(n)なので、 F(n)=min(R(n-1)+R(n),max(R(n),X(n)+1))=min(R(n-1)+1,max(1,X(n)+1)) =min(R(n-1)+1,X(n)+1)=min(R(n-1),X(n))+1=R(n-1)+1 よって、F(i)≧k+2であれば、R(n-1)≧k+1であり、n-1番グループのロボットは存在する。 R(n-1)+R(n)≧k+2なので、 F(n-1)=min(R(n-1),max(R(n-1)+R(n)+1,X(n-1)+1))≧k+1 であり、n-1番グループのロボットはk回目までに分かっていないことになる。 そこで、j=n-1と想定してみる。 m=n-1,VR(n-1)=R(n-1)+1,VR(n)=0であり、 1≦s≦n-2のときは、VR(s)=R(s)である。 リスト中に現れるグループ番号は1からn-1までなので、 1≦s≦n-1のときに、f(s)=Vf(s)となることを示せばよい。 f(n-1)=k+1 Vf(n-1)=Vf(m)=min(VR(m-1)+VR(m),max(VR(m),VX(m)+1),k+1) =min(VR(n-2)+VR(n-1),max(VR(n-1),VX(n-1)+1),k+1) =min(R(n-2)+R(n-1)+1,max(R(n-1)+1,VX(n-1)+1),k+1) R(n-1)≧k+1なので第一項、第二項ともk+1以上。 よって、Vf(n-1)=k+1=f(n-1) 1≦s≦n-2のとき、 f(s)=min(R(s),max(R(n-1)+R(n)+1,X(s)+1),k+1) Vf(s)=min(VR(s),max(VR(n-1)+VR(n)+1,VX(s)+1),k+1) =min(R(s),max(R(n-1)+R(n)+1,VX(s)+1),k+1) f(s)とVf(s)の式で異なっているのは、X(s)とVX(s)の箇所だけである。 X(s)≠VX(s)となるのは、 どちらかがR(n-1),R(n),VR(n-1),VR(n)のいずれかと等しくなるときに限られる。 R(n-1),R(n),VR(n-1),VR(n)≦R(n-1)+R(n)なので、 その場合は、max(R(n-1)+R(n)+1,X(s)+1)=max(R(n-1)+R(n)+1,VX(s)+1)となり、 f(s)=Vf(s)となる。 以上より、1≦s≦n-1のときにf(s)=Vf(s)が成り立つことが分かった。 よって、i番グループのロボットはk+1回目には分からず、2-1-1の場合が証明された。 続く。 2-1-2.i=n,R(n)≧2の場合
F(n)≧k+2であれば、 R(n-1)+R(n)≧k+2かつ、max(R(n),X(n)+1)≧k+2である。 よって、R(n)≧k+2またはX(n)≧k+1である。 R(n)≧k+2のとき、 j=n+1と想定してみる。 m=n+1,VR(n)=R(n)-1,VR(n+1)=1であり、 1≦s≦n-1のときは、VR(s)=R(s)である。 リスト中に現れるグループ番号は1からnまでなので、 1≦s≦nのときに、f(s)=Vf(s)となることを示せばよい。 n番グループはk回目までに分かってないので、f(n)=k+1 Vf(n)=min(VR(n),max(VR(m-1)+VR(m)+1,VX(n)+1),k+1) =min(R(n)-1,max(VR(n)+VR(n+1)+1,VX(n)+1),k+1) =min(R(n)-1,max(R(n)-1+1+1,VX(n)+1),k+1) =min(R(n)-1,max(R(n)+1,VX(n)+1),k+1) R(n)≧k+2なので、これはk+1に等しく、f(n)に一致する。 1≦s≦n-1のとき、 R(n)≧k+2なので、 f(s)=min(R(s),max(R(n-1)+R(n)+1,X(s)+1),k+1)=min(R(s),k+1) Vf(s)=min(VR(s),max(VR(m-1)+VR(m)+1,VX(s)+1,k+1) =min(R(s),max(R(n)+1,VX(s)+1),k+1) =min(R(s),k+1)=f(s) となり、一致する。 X(n)≧k+1のとき、 1以上n-1以下のあるjがあって、R(j)≧k+1が成り立つ。 j番グループだと想定すると、 m=n,VR(n)=R(n)-1,VR(j)=R(j)+1であり、 1≦s≦n-1,s≠jのときには、VR(s)=R(s)である。 リスト中に現れるグループ番号は1からnまでなので、 1≦s≦nのときに、f(s)=Vf(s)となることを示せばよい。 Vf(n)=Vf(m)=min(VR(m-1)+VR(m),max(VR(m),VX(m)+1),k+1) =min(R(n-1)+R(n)-1,max(R(n)-1,VX(n)+1),k+1) R(n-1)+R(n)≧k+2,VX(n)≧VR(j)=R(j)+1≧k+2なので、 この値はk+1に等しく、f(n)に一致する。 1≦s≦n,s≠jのとき、 R(n-1)+R(n)≧k+2なので、 f(s)=min(R(s),max(R(n-1)+R(n)+1,X(s)+1),k+1) =min(R(s),k+1) VR(n-1)+R(n)≧R(n-1)+R(n)-1≧k+1なので、 Vf(s)=min(VR(s),max(VR(m-1)+VR(m)+1,VX(s)+1),k+1) =min(R(s),max(VR(n-1)+R(n),VX(s)+1),k+1) =min(R(s),k+1)=f(s) f(j)=min(R(j),k+1)=k+1 Vf(j)=min(R(j)+1,k+1)=k+1 となり、すべて一致する。 以上より、i番グループのロボットはk+1回目には分からず、2-1-2の場合の証明終了。 続く。 2-1-3.i≠nの場合
F(i)=min(R(i),max(R(n-1)+R(n)+1,X(i)+1))なので、 F(i)≧k+2であれば、 R(i)≧k+2かつ、max(R(n-1)+R(n),X(i))≧k+1である。 R(n-1)+R(n)≧k+1またはX(i)≧k+1が成り立つ。 R(n-1)+R(n)≧k+1のとき、 j=nと想定する。 m=n,VR(i)=R(i)-1,VR(n)=R(n)+1であり、 1≦s≦n-1,s≠iのときには、VR(s)=R(s)である。 リスト中に現れるグループ番号は1からnまでなので、 1≦s≦nのときに、f(s)=Vf(s)となることを示せばよい。 f(n)=min(R(n-1)+R(n),max(R(n),X(n)+1),k+1)=k+1 VR(i)=R(i)-1≧k+1なので、VX(n)≧k+1 よって、 Vf(n)=min(VR(n-1)+VR(n),max(VR(n),VX(n)+1),k+1) =min(VR(n-1)+R(n)+1,max(R(n)+1,VX(n)+1),k+1) =k+1=f(n) 1≦s≦n-1,s≠iのとき、 f(s)=min(R(s),max(R(n-1)+R(n)+1,X(s)+1),k+1) =min(R(s),k+1) Vf(s)=min(VR(s),max(VR(n-1)+VR(n)+1,VX(s)+1),k+1) =min(R(s),max(VR(n-1)+R(n)+1,VX(s)+1),k+1) =min(R(s),k+1)=f(s) Vf(i)=min(R(i)-1,max(VR(n-1)+R(n)+1,VX(i)+1),k+1) =k+1=f(i) となり、すべて一致する。 X(i)≧k+1のとき、 1以上n以下でiと異なるjがあって、R(j)≧k+1 j番グループだと想定すると、 m=n,VR(i)=R(i)-1,VR(j)=R(j)+1であり、 1≦s≦n,s≠i,jのときには、VR(s)=R(s)である。 リスト中に現れるグループ番号は1からnまでなので、 1≦s≦nのときに、f(s)=Vf(s)となることを示せばよい。 f(n)=min(R(n-1)+R(n),max(R(n),X(n)+1),k+1) =min(R(n-1)+R(n),k+1) VX(n)≧VR(i)=R(i)-1≧kなので、 Vf(n)=min(VR(n-1)+VR(n),max(VR(n),VX(n)+1),k+1) =min(VR(n-1)+VR(n),k+1) i=n-1であれば、R(n-1)≧k+2,VR(n-1)≧k+1なので、f(n)=Vf(n)=k+1 jがn-1またはnであれば、R(j)≧k+1より、f(n)=Vf(n)=k+1 それ以外の場合は、VR(n-1)=R(n-1),VR(n)=R(n)なのでf(n)=Vf(n) 1≦s≦n-1,s≠iのとき、X(s)≧k+1なので、 f(s)=min(R(s),max(R(n-1)+R(n)+1,X(s)+1),k+1) =min(R(s),k+1) VX(s)≧kなので、 Vf(s)=min(VR(s),max(VR(n-1)+VR(n)+1,VX(s)+1,k+1) =min(VR(s),k+1) s=jであれば、R(j),VR(j)≧k+1なので、f(s)=Vf(s)=k+1 s≠jであれば、R(s)=VR(s)なので、f(s)=Vf(s)=min(R(s),k+1) R(i)≧k+2,VX(i)≧kなので、 Vf(i)=min(VR(i),max(VR(n-1)+VR(n)+1,VX(i)+1),k+1) =min(R(i)-1,max(VR(n-1)+VR(n)+1,VX(i)+1),k+1) =k+1=f(i) となり、すべて一致する。 以上で、2-1-3の場合の証明も終わり、2-1が証明された。 残るは2-2の証明のみ。 2-2.F(i)=k+1のとき、i番グループのロボットはk+1回目に分かることの証明:
F(i)=k+1とする。 i番グループのロボットがt回目に分かるとして、 t≦kであれば、F(i)=tである(帰納法の仮定)。 k回目までに分かる場合はF(i)≦kなので、k回目までには分からなかったことになる。 よってk+1回目までに分かったことを示せばよい。 2-2-1.i=n 2-2-2.i≠n の2つの場合に分けて調べる。 2-2-1.i=nの場合 F(i)=min(R(n-1)+R(n),max(R(n),X(n)+1)) F(i)=R(n-1)+R(n)またはF(i)=max(R(n),X(n)+1)のどちらかは成り立つ。 F(i)=R(n-1)+R(n)のとき R(n-1)+R(n)=k+1であり、R(n)≧1なのでR(n-1)≦k よってn-1番のロボットはk回目までに分かっており、自分はn-1番ではないと分かっている。 R(n)≠1であれば、リストにn番が存在している。 自分がn番グループでないとすると、 R(n-1)+R(n)=kとなるので、n番はk回目までに分かったことになり矛盾。 R(n)=1であれば、 R(n-1)+R(n)=k+1より、R(n-1)=k よって、n-1番グループはk回目までに分かっている。 リストに現れている番号は1からn-1までなので、 自分の番号の候補は1からnまで。 n-1番は既に分かっているので自分はn-1番ではない。 n≦2であれば、自分はn番だと分かる。 n≧3のとき、自分は1からn-2番のいずれか。 自分がn番でないj番だと想定すると、 m=n-1,VR(j)=R(j)+1,VR(m)=R(n-1) 1≦s≦n-2,s≠jのときは、VR(s)=R(s) R(n-1)≧k,R(n-2)+R(n-1)≧k+1なので、 Vf(n-1)=Vf(m)=min(VR(m-1)+VR(m),max(VR(m),VX(m)+1),k+1) =min(R(n-2)+R(n-1),max(R(n-1),VX(n-1)+1),k+1) =k+1 となり、n-1番はk回目までに分からなかったことになり矛盾。 よって、自分はn番だと分かる。 F(i)=max(R(n),X(n)+1)=k+1のとき 1以上n-1以下のsについて、R(s)≦kである。 F(s)=min(R(s),max(R(n-1)+R(n)+1,X(i)+1))≦kとなるので、 1からn-1番はk回目までに分かっている。 さらに、R(n)≦k+1も成り立つ。 R(n)=1であれば、自分の番号の候補は1からnなのでn番だと分かる。 R(n)≧2のとき、候補はnまたはn+1。 n+1番だと想定すると、 Vf(n)=min(VR(n),max(VR(n)+VR(n+1)+1,VX(n)+1),k+1) =min(R(n)-1,max(VR(n)+VR(n+1)+1,VX(n)+1),k+1)≦k となるので、n番はk回目までに分かっている。 よって、自分はn+1番ではなくn番だと分かる。 以上より、i=nの場合にはk+1回目までに分かることが証明された。 2-2-2.i≠nの場合 F(i)=min(R(i),max(R(n-1)+R(n)+1,X(i)+1))=k+1 F(i)=R(i)またはF(i)=max(R(n-1)+R(n),X(i))+1のどちらかは成り立つ。 F(i)=R(i)=k+1のとき 自分がi番でないと想定すると、 Vf(i)=min(VR(i),max(VR(m-1)+VR(m)+1,VX(i)+1),k+1) ≦VR(i)=R(i)-1=k となり、i番がk回目までに分かったことになってしまう。 よって、自分はi番だと分かる。 F(i)=max(R(n-1)+R(n),X(i))+1=k+1のとき max(R(n-1)+R(n),X(i))=kである。 R(n-1)+R(n)≦kなので、n番はk回目までに分かっている。 1≦s≦n-1,s≠jのとき、R(s)≦kなので、s番もk回目までに分かっている。 よって、自分はi番またはn+1番でしかあり得ない。 n+1番だと想定すると、 Vf(i)=min(R(i)-1,max(VR(n)+VR(n+1)+1,VX(i)+1),k+1)≦R(i)-1=k となり、i番がk回目までに分かったことになってしまう。 よって自分はi番だと分かる。 これでi≠nの場合にもk+1回目までに分かることになり、2-2が証明された。 以上で2の証明が終わり、 任意の自然数tについて成立することが証明された。 証明終わり これでようやく台数を考える準備が整ったと思われます
あれで厳密な証明になっていると思いますが、いかがでしょうか。 問題があればご指摘下さい。 長文ご苦労様です
僕がNo.41で囁いた気になるポイントが解消されていないようなので質問します。 確かに関数F(i)がNo.42で書かれているような定義であれば、 「F(i)=t⇔i番グループはt回目にわかる」 になると思うのですが、このF(i)は今回の問題の十分条件ではないですか? つまり他のある関数G(i)でも説明できてしまっては意味がないと思うのです。 本来は「i番グループがt回目にわかることからF(i)=tとなる関数の形を決めること」が問題だと思うのですが、いかがでしょうか?
いはら
ご意見ありがとうございます
No.41を読み返してみましたが、論点がよく分かりませんでした。 関数の記述の仕方としてはF以外に考えられるかもしれませんが、 F(i)=G(i)となることは明らかですから問題ないと思います。 各グループの台数の組み合わせと、グループ番号に対して、 そのグループの番号のロボットが分かる回数を対応させる関数ですので、 その対応が全く同じであれば、記述が違っていても同じ関数といえるでしょう。 それに、他の関数のあるなしにかかわらず、 i番グループのロボットがt回目に分かる⇒F(i)=t が成り立つのは間違いありません。 台数の最大値を決定するにはこの事実だけで十分ですので、 何の問題もありません。 それとも、 関数の形を決めることを論理的に行わなければいけないという主張なのでしょうか。 過程がどうあれ、必要な条件を満たしていれば答えは答えです。 例えば、x^2-3x+2=0という方程式があったとします。 答えはx=1,2です。 x=1,2を左辺に代入したら0になった。 二次方程式の解は高々2つだから、これがすべての答え。 として全く問題ありません。 いかがでしょうか。 題意を満たす関数F(i)が(表記の違いは無視して)唯一かどうか?というところは証明されていないと思います。
二次方程式の例では、異なる解が高々二つだということが分かっているから答えがx=1,2が解だと分かった時点で他に解はないのですが、 この問題において、他のF(i)、No.42と表記が違うのではなくて本質的に異なる関数F(i)、これが解になる可能性はないのか?という点を議論しないといけないと思うのですが…?
いはら
>題意を満たす関数F(i)が(表記の違いは無視して)唯一かどうか?
唯一であることは明らかだと思います。 題意を満たす関数とは、 i番グループのロボットが何回目に分かるかを表す関数ということですよね? 本質的に異なる関数Gが存在するとすると、 F(i)≠G(i)となるiが存在するはずです。 すると、i番グループのロボットはF(i)回目とG(i)回目に分かるという おかしなことになりませんか? >F(i)回目とG(i)回目にわかる
というよりも、どの関数が正しいのか決定できないということになると思います。 つまり、与えられた条件からロボットがどのように判断できるか決定できない問題になるのでは?という懸念があります。 僕のNo.41での疑問点を、いはらさんの証明に出てきたF(i)という関数を使って書くと、下のような疑問点が生じたということになると思います。 No.42のような定義でF(i)を作ってみて、F(i)≦kの値をもつようなiについて、「F(i)=k⇔k回目にわかる」が正しいと仮定する。 その仮定の下で、 「i番のグループがk+1回目に分かる⇒F(i)=k+1となるような関数としてNo.42の定義しかない」 こういう証明をすれば、F(i)が唯一になると思うのですが、これができないのでは? ということです。
いはら
???
関数Fは最初に完全な定義がしてあり、 証明の終わりまで一貫して変わりません。 その関数Fについて、 「i番のグループがk+1回目に分かる⇒F(i)=k+1」 が成り立つことが証明してあるのです。 この条件を満たす関数が他にあったとしても 私の行った証明の有効性は損なわれないと思うのですが、どうでしょうか。 F(i)の定義を最初に決めたということは、F(i)≧k+2となる関数の形もすでに分かっていることになりますよね。
僕が考えているのは、 F(i)≧k+1のF(i)の形は分からない状態で、F(i)=k+1の関数の形を決めようとする証明が、唯一性、必要十分性の証明になると思う、 ということです。 いはらさんの証明を、 「F(i)=k+1となるような関数としてNo.42の定義しかない」 という証明だと見ようと思ったときに僕が感じたのは、 「F(i)=k+1となる関数の形がNo.42で正しいことを証明するために、F(i)≧k+2の関数の形がNo.42で正しいことを前提として使っているように見える」 ということで、これだとF(i)として十分性しか得られないように思うのです。
いはら
>「F(i)=k+1となるような関数としてNo.42の定義しかない」
>という証明だと見ようと思ったときに〜 あの証明にそのような意図はありません。 私が主張して証明したのは、 『Fという関数をあのように定義すれば、 「任意の自然数tについて、 F(i)=t⇔i番グループのロボットはt回目に分かる」 が成り立つ』 というだけのことです。 「任意の自然数tについて、 F(i)=t⇔i番グループのロボットはt回目に分かる」 が成り立つならば、Fはあのように定義できる という証明ではありません。 もちろんNo.42のF(i)が解の一つであることに疑問はありませんし、No.42以降のいはらさんの証明も、
>『Fという関数をあのように定義すれば… として見るのなら問題ないと思っています。 ただ、僕は他のG(i)がどうしても排除できなかったので… いはらさんは唯一性についてどう思いますか?
いはら
なぜそんなに唯一性を気にされているのでしょうね
グループ数と、各グループのロボットの台数が与えられたとき、 各グループのロボットが何回目に分かるのかは一意に決まります。 従って、それを値とする関数が一意に決まるのも当たり前のことです。 ですから、唯一性はほとんど自明だと思っているのですが、 ボムボムさんと私とで何か考えの食い違いがあると思われます。 まず気になるのが関数が同じとはどういう意味なのか、ということです。 二つの関数 f:X→Y,g:X→Y について、 任意のXの元xについてf(x)=g(x)となるならば、fとgは同じ関数 と私は考えています。 式や記述が異なっていても、対応関係が同じであれば同じ関数とみなします。 例えば、 X={1,2}、f(x)=x^2-3x+2,g(x)=0 の場合、 f(1)=g(1)=0,f(2)=g(2)=0 ですので、fとgは同じ関数ということになります。 ボムボムさんはこの場合、 fとgは同じとみるのか、異なるとみるのかどちらでしょうか。 異なるとお考えでしたら、唯一には決まりませんね。 もしくは「各グループのロボットが何回目に分かるのかは一意に決まる」 ということに疑問を持っているのでしょうか。 万一、推論の仕方によっては何回目に分かるかが変わることがある、 とお考えでしたら、そんなことはないということを説明しますが。 僕が思っている「関数が本質的に同じ」ということは、いはらさんがおっしゃっていることと相違ありません。
「F(i)=G(i)がi=1,2,...,nで一致すれば同じ関数と見なす」でいいと思います。 気になっているのは、一番最後のところの >「各グループのロボットが何回目に分かるのかは一意に決まる」 が本当なのか? ということです。
いはら
それでは、
「各グループのロボットが何回目に分かるのかは一意に決まる」 ことを証明しておきます。 (あの証明にほとんど含まれているのですが) グループ数、各グループの台数が与えられたとき、 任意の自然数tについて、 t回目にどのロボットが分かるかは一意に決まる ということを証明すれば十分です。 tについての数学的帰納法で証明します。 t=1のときに成り立つことは明らかです。 tが1以上k以下の自然数のときには成り立つと仮定します。 k回目終了時点でまだ分かっていないロボットについて考えます。 自分の番号の候補は有限個です。 候補の一つがj番だとして、自分の番号がj番だと想定すると、 グループ数、各グループの台数は確定します。 すると、帰納法の仮定により、1回目からk回目までの各回において、 その回に分かるロボットは一意に決まります。 実際の結果と比較して、一致しなければ、自分はj番ではないと分かります。 一致した場合は、自分がj番ではないと論理的に推論することは不可能です。 従って、一致する場合が2つ以上ある場合には 自分の番号を推論することはできません。 一致する場合が少なくとも一つあることは明らかですので、 一致する場合がただ一つだけのときのみ、自分の番号が推論できることになります。 各ロボットは完璧な推論をすることになっていますので、 k+1回目にも自分の番号が分かるロボットは一意に決まります。 証明終わり 各ロボットは上記の方法で機械的に判断を下したという想定で問題を作りました。 どんな推論を行おうと、完璧な推論であれば、 この方法による結論と同じになるはずです。 反論がないようですので、納得していただけたものとみなして、解答発表を続けます。
i番グループのロボットが分かる回数は次のF(i)で表せることが分かりました。 i=nのとき、F(i)=min(R(n-1)+R(n),max(R(n),X(n)+1)) i≠nのとき、F(i)=min(R(i),max(R(n-1)+R(n)+1,X(i)+1)) i≠nのとき、i番グループのロボットがt回目に分かるとすると、 F(i)=tなので、R(i)=tまたはmax(R(n-1)+R(n),X(i))=t-1です。 max(R(n-1)+R(n),X(i))=t-1の場合、i番以外のロボットはt-1回目までに分かります。 i番グループが最終回に分かる唯一のグループとなります。 つまり、n番グループを除くと、F(i)=R(i)とはならないグループは高々1個であり、 そのグループは最終回に分かります。 t回目に分かるロボットがいて、その回は最終回でもn番グループが分かる回でもないとすると、 その回に分かるのは、ロボットの台数がtのグループだけです。 この場合、t回目に分かるロボットの台数はtの倍数であることが分かります。 t回目に分かるロボットの台数をA(t)と書くことにします。 試験が3回以上かかる場合、A(t)がtの倍数でないのは高々2回です。 1から7までのすべての自然数の最小公倍数は420で、 1から8までのすべての自然数の最小公倍数は840です。 よって、1≦t≦7のときにA(t)がtの倍数となり、9回で終わる試験を考えることができます。 A(t)>420となる回があると、A(t)の最小公倍数は420より大きい420の倍数になります。 すると500を超えてしまうので、1以上9以下の任意のtについて、A(t)≦420です。 よって、この場合の台数の最大値は420×9=3780です。 3780>3500=7*500ですので、最大値をとるときの試験は8回以上です。 試験が8回で終わる場合、 1≦t≦7で、A(t)がtの倍数となるものは少なくとも6個あります。 1,2,3,4,5,6,7の中の6個の数の最小公倍数は60,84,210,420の4つ。 この4つの数字のどれかの倍数で、500以下で、500に最も近い数は480。 よって、この場合の台数の最大値は480×8=3840 試験が9回で終わる場合、 1≦t≦8で、A(t)がtの倍数となるものは少なくとも7個あります。 1,2,3,4,5,6,7,8の中の7個の数の最小公倍数は120,168,420,840の4つ。 この4つの数字のどれかの倍数で、500以下で、500に最も近い数は480。 よって、この場合の台数の最大値は480×9=4320 試験が10回で終わる場合、 1≦t≦9で、A(t)がtの倍数となるものは少なくとも8個あります。 1,2,3,4,5,6,7,8,9の中の8個の数の最小公倍数は360,504,840,1260,2520の5つ。 この5つの数字のどれかの倍数で、500以下で、500に最も近い数は360。 よって、この場合の台数の最大値は360×10=3600 試験が11回で終わる場合、 1≦t≦10で、A(t)がtの倍数となるものは少なくとも9個あります。 1,2,3,4,5,6,7,8,9,10の中の9個の数の最小公倍数は360,504,840,1260,2520の5つ。 この5つの数字のどれかの倍数で、500以下で、500に最も近い数は360。 よって、この場合の台数の最大値は360×11=3960 試験が12回以上かかる場合、 1≦t≦11で、A(t)がtの倍数となるものは少なくとも10個あります。 1,2,3,4,5,6,7,8,9,10,11の中の10個の数の最小公倍数は2520,3960,5544,9240,13860,27720。 どれも500を超えますので条件を満たすものはありません。 以上より、4320台になる場合が実際にあれば、それが最大値であることがいえます。
各回の台数が480ですので、 1≦t≦9において、A(t)がtの倍数でないのは、t=7,9のときです。 よって、n番グループのロボットが分かるのは7回目であり、 R(n-1)+R(n)=7ですので、R(n)<7です。 n番グループ以外で7回目に分かるグループの台数は7ですので、 R(n)は480を7で割った余りであることが分かり、R(n)=4です。 よって、R(n-1)=3であり、n-1番グループは3回目に分かることになります。 1回目は1台のグループが480個、 2回目は2台のグループが240個、 3回目は3台のグループが160個(n-1番グループ含む)、 4回目は4台のグループが120個(n番グループは除く) 5回目は5台のグループが96個、 6回目は6台のグループが80個、 7回目は7台のグループが68個とn番グループ、 8回目は8台のグループが60個、 9回目は480台のグループが1個、 分かることになります。 グループ数は1306個ですので、n=1306です。 上記の台数と個数を満たせばどんな組み合わせでもいいのですが、 台数の少ないグループから順に番号をつけていくと次のようになります。 1番から480番が1台(480グループ)、 481番から720番が2台(240グループ)、 721番から879番が3台(159グループ)、 880番から999番が4台(120グループ)、 1000番から1095番が5台(96グループ)、 1096番から1175番が6台(80グループ)、 1176番から1243番が7台(68グループ)、 1244番から1303番が8台(60グループ)、 1304番が480台、 1305番が3台、 1306番が4台。 これは問題の条件を満たしますので、最大値は4320台です。 >いはらさん
すいませんm(__)m 最近諸事情により忙しくて、纏まって上陸する時間がとれないことが多いのです No.54のレスを読んでみて、自分でもなに馬鹿なことを考えていたんだと… 一意に決まるのは当たり前ですね 上記の解答でいいと思います
いはら
お忙しいところ、ありがとうございます
ボムボムさん今回はどうしてしまったんだろう、まさかニセモノ!? なんてちらっと思ったりしましたが、安心しました |