ホームページへ戻る  書き込みリストへ戻る
「コンピュータ&パズル」訪問者の自由メッセージコーナー

お気づきの点や感想要望などなんでもOK!


re:ライツアウトの最長手数解/秤の問題の一般解 投稿者:高橋謙一郎  投稿日: 9月 5日(火)23時19分10秒

 見事な解析結果だと思います。こう言う事を思い付ける
deepgreenさんがとても羨ましいです。種明かしを見せら
れると「そうか」となるのですが、そういう事がなかなか
思い付かないんですよね。(驚きです)


「秤の問題」は確かに有名なパズルですね。それにしても
13個を3回でとは最初に思い付いた人に先ず敬意を評し
たいです。私には解けないですが、この問題の答えなら、

    (3^n - 1)/2 個

になるそうです。何故そうなるかは分かりませんし、具体
的に40個を4回で調べろと言われてもどうやったら良い
のか???(答えの式しか書いてないものを見ただけです)


Re.ライツアウトの最長手数解 投稿者:M.Hiroi  投稿日: 9月 5日(火)20時10分13秒

deepgreen さん、こんばんは。
0解から最長手数解を求める方法には驚きました。
力任せに探索するしか方法はない、と思い込んでいたので、
目からウロコが落ちました(笑)。
deepgreen さんは凄いです。


秤の問題の一般解 投稿者:eXor  投稿日: 9月 5日(火)09時52分23秒

 ライツアウトのような一見単純なパズルに、これだけの理論的背景が潜んでいようとは。
 これらの情報は、ライツアウトの問題を作る際にもかなり有用だと思います。
(どうやって解答可能解の存在範囲内でデザイン的に優れた問題を作るか、もしくは如何にして
手数のかかる難しい問題を作るか…優れた問題作成がかなり楽になりますよね。)


 さて、今回は題名の通り、秤を使った問題について皆さんのお知恵を拝借したいと思いまして。
 皆さんはこのような問題はご存じでしょうか?
『ここに13個の、外見上見分けのつかない球が存在する。
 そのうちの1個のみが、他の球と重さが異なっている。(他の球より重いか軽いかは不明)
 この他と重さが異なる球を、秤を使って探し当てる方法を述べよ。
 なお、秤は3回までしか使用できないものとする。』

 この問題の解法自体は、試行錯誤によって求めることが出来ました。
 しかし、秤の使用可能回数をnとした場合、玉の総数は何個の場合まで判別可能でしょう?

 もし、一つの玉の重さが他より重い(軽い)と最初から分かっている場合なら、秤の使用可能
回数をnとして、(3^n)個の球を判別できるのは自明と思われます。
 しかし、今回のケースでは本当に一般解は求められるのでしょうか?

 特殊な解法を用いれば手数を短縮できる可能性があるため、帰納法が使えるかどうか不明です。
 手始めに、n=4での最大識別可能個数を求めようとして挫折しました…。

 そういうわけで、よければ皆さんも考えてみて下さいませんか?

追記:
 この問題には更にバリエーションがあります。
 本当に他と重さの異なる球が混じっているのかどうか不明という場合です。
 この場合はn=3の時の最大識別個数が12個となるようです。
 こちらのケースの一般解についても、お知恵を拝借したいのですが…。


ライツアウトの最長手数解 投稿者:deepgreen  投稿日: 9月 5日(火)01時31分04秒

0解から最長手数解を求める方法です。(長文失礼)

ライツアウトの解の存在条件式のパターンと0解のパターンが一致することが
前提となります。(私のHPを参照してください)

5x5のライツアウトの0解は、以下の3パターンである。
  (p1) -BCD-F-H-JKL-NOP-R-T-VWX-
  (p2) A-C-EF-H-J-----P-R-TU-W-Y
  (p3) AB-DE-----KL-NO-----UV-XY
ただし、p1,p2,p3は互いに独立ではなく、他の2つのXORにより求めることができる。

push位置A〜Yを以下のように分類する。
 (1)p1,p2,p3のいずれにもでてこないもの :G,I,M,Q,Sの5個
 (2)p1,p2に共通にでてくるもの      :C,F,H,J,P,R,T,Wの8個 
 (3)p2,p3に共通にでてくるもの      :A,E,U,Yの4個
 (4)p3,p1に共通にでてくるもの      :B,D,K,L,N,O,V,Xの8個

最長手数の解を考えると、
(1)は無条件に1にすればよい(∵解の存在には関係ない)
(2)は、丁度半分を1にすることができる。半分を超えているものは0解
   とのXORにより半分未満の解が存在することになるので、丁度半分
   が最大となる。
(3),(4)も同様である。
なお、(2),(3),(4)を丁度半分づつ1にしたものは、解の存在条件をみたして
いることは明らかである。

よって、最長手数は、5+8/2+4/2+8/2=15となる。

次に、最長手数解の個数について考える。
(2)の候補の選び方は、8個から4個選ぶ組み合わせ=8!/4!=70
(3),(4)もそれぞれ、4!/2!,8!/4!となる。
全体としては 6x70x70=29400パターン

これは、pushパターンの数であるから、問題面の数としては、この1/4
になる。

   29400/4=7350通り

これは、広井さんの探索結果と一致する。

参考までに、最長手数解を示す。
   (pushパターン)   (問題面)
     11111       10001
     11111       01101
     11100       11111
     01010       00111
     00000       01010 

http://www2.tokai.or.jp/deepgreen/


リンクありがとうございます 投稿者:M.Hiroi  投稿日: 9月 4日(月)22時21分08秒

高橋さん、こんばんは。広井です。

高橋さんのHPからリンクしていただけるとのこと、ありがとうございます。

「実践アルゴリズム戦略」にはよくお世話になりました。単行本にはなっていない
ようなので、手に入れるのは難しいかもしれません。昔のCマガジンは、このような
アルゴリズムの解説記事が連載されていて、とても参考になりました。

ライトが全部点灯しているパターンが一番難しい問題というのは、ちょっとがっかりな
結果ですね。また、最長手数のパターンは少ないと思っていたので、7350 通りもある
とは意外な結果でした。
合計数に間違いがないことを確認した時は、本当にほっとしました(笑)。

こちらこそ、よろしくお願いいたします。


広井さん、はじめまして 投稿者:高橋謙一郎  投稿日: 9月 4日(月)20時05分52秒

広井さん、はじめまして。

HP拝見させて頂きました。パズル問題をプログラミングで解くことを
扱ったHPはとても少ないので貴重な存在だと思います。私のHPから
もリンクさせて下さい。(2〜3日後になりそうですが)

広井さんのパズル関係のページを見ていると、参考文献にCマガジンの
「実践アルゴリズム戦略 解法のテクニック」が目に付きます。これは
Cマガ電脳クラブに挑戦していた時に投稿者の参考文献としてときどき
目にしたもので直接的にその記事を読んだことは無いのですが、かなり
広い影響力のある記事だったようですね。

実は最近、私も某雑誌から執筆依頼があってパズルを解くアルゴリズム
の入門編を書かせて頂いたのですが、元ネタを辿っていくとどうやら
「実践アルゴリズム戦略」に行き着くものが多くあるようです。読んだ
ことのない記事であっても参考文献として載せない訳にはいかない重要
な存在なのでしょう。−−急いで原稿の訂正をお願いしなくては!−−
 ただし私の書いた原稿が本当に掲載されるかどうかは今のところ全く
不明です。(内容は私のHPにあるものとほとんど同じです)

 ところで広井さんのライツアウトの解析結果はとても面白いです。
最長手数が15手というのは貴重な情報ですね。ただ、ライトが全部点灯
しているパターンも最長手数のパターンに含まれるというのは意外性の
無いちょっと残念な結果だったかな。解の存在するパターンは理論的に
2の23乗通りなので広井さんの結果に「0手のパターン数=1」というのを
追加すると合計数が2の23乗=8,388,608個になるのでホッとする結果で
もあるようです。

これからも宜しくお願いします。


はじめまして 投稿者:M.Hiroi  投稿日: 9月 3日(日)20時27分13秒

はじめまして、広井と申します。
高橋さんのパズルゲームとパズル解法プログラムは素晴らしいですね。
私のホームページ M.Hiroi's Home Page から高橋さんのコンピュータ&パズルへ
リンクを張らせていただきました。よろしくお願いします。

ライツアウトの考察は丁寧な説明でよくわかりました。
それにしても、連立方程式によるライツアウトの解法には驚きました。
ライツアウトの解法は私も挑戦したことがあります。解くだけではなく、
最長手数(一番難しい問題)を求めてみました。

   1手のパターン数   25
   2手のパターン数   300
   3手のパターン数  2300
   4手のパターン数  12650
   5手のパターン数  53130
   6手のパターン数 176176
   7手のパターン数 467104
   8手のパターン数 982335
   9手のパターン数 1596279
  10手のパターン数 1935294
  11手のパターン数 1684446
  12手のパターン数 1004934
  13手のパターン数 383670
  14手のパターン数  82614
  15手のパターン数  7350

ライツアウトは最長でも 15 手で解けることがわかりました。
たとえば、ライトが全部点灯しているパターンが 15 手かかります。

長い書き込みで失礼しました。これからもよろしくお願いします。

http://www.geocities.co.jp/SiliconValley-Oakland/1680/


re:高橋の数  投稿者:deepgreen  投稿日: 8月31日(木)22時47分47秒

高橋さん、ありがとうございます。
そっくり写したのがまちがいでした。はずかしいので、早速修正しました。


re:高橋の数 投稿者:高橋謙一郎  投稿日: 8月31日(木)21時49分06秒

別件に浮気している間に高橋の数は総て解決してしまったんですね。
deepgreenさんは解析が早いなあ。ところでtypeBは以前に書いた通り、

 typeB: (1,4,6,7) x 1 + (3,6) x m

となります。最初の私の間違いが跡を引いているようですね。


re:高橋の数タイプ1   投稿者:deepgreen  投稿日: 8月29日(火)23時52分52秒

タイプ2の「高橋の数」を求めるアルゴリズム:A2を改造して、タイプ1の
「高橋の数」の記述式を求めてみました。
type A〜D は共通で、type F〜H はタイプ1固有です。

【高橋の数の記述式】

  type A :(4,5,9) x n
  type B :(1,4,6,7) x n + (3,6) x m
  type C :(1,2,3,4,5,6,7,8,9) x n + (3,6) x m
  type D :(1,2,3,4,5,6,7,8,9) x n
      + (2,2,2,3,4,4,5,5,6,7,7,7,9,9) x m
       ただし、m >= 0, n >= 1 の整数

<<タイプ1の場合>>

  type F : (0,2,5,6,6,8) x 1 + (3,6) x a
      ただし、a >= 0 の整数

  type G : (0,2,2,4,4,5,6,7,7,8) x 1 + (3,6) x a
      ただし、a >= 0 の整数

  type H : (1,2,4,5,7,8) x m
      + (0,9) x n
      + (3,6) x a
      + (1,2,3,4,5,6,7,8,9) x b
      ただし、m >= 1, n >= 1, a >= 0, b >= 1 の整数


 <<タイプ2の場合>> 参考

  type E : (1,2,4,5,7,8) x m
      + (0,9) x n
      + (3,6) x a
      + (1,2,3,4,5,6,7,8,9) x b
      ただし、m >= 1, n >= 1, a >= 0, b >= 0 の整数
 
 type E と type H は非常によく似ています。

これでようやく「高橋の数」を終わりにできました。 


 ホームページへ戻る  書き込みリストへ戻る