1 :
名無しさん@3周年 :
04/07/23 11:16 白黒それぞれが先攻の場合を合計して 何通りあるのだろうか。
2 :
名無しさん@3周年 :04/07/23 12:03
親不孝通り
3 :
名無しさん@3周年 :04/07/23 14:44
6*6=36 2の36乗=68719476736 68719476736*2(黒白)=137438953472 ∴137438953472通り かな?
訂正) 8*8=64 2の64乗=18446744073709551616 18446744073709551616*2=36893488147419103232 ∴36893488147419103232通り
>>4 話はそう簡単じゃない。
まず、打てる場所は8*8-4=60だし(最初の4個はゲームの前から置かれている)、
最初から隅に打てるわけではないので、盤を回転させていいなら最初の1手目は
一通りしかない。
ひゃくおくまん
7 :
名無しさん@3周年 :04/07/23 21:45
>>5 意外に少なくて済みそうだな。最初の1手目は2通りだろ?盤には
裏表が存在するんだから。
たかだか60回の再帰呼び出しならなんとかなりそうな気がしてしまう
>>5 試合の経過を考えるとそうだけど、ここで考えているのは試合結果なので
4の考え方でも良いような気がする。
ただ、5の言うルールとかから推測されるあり得ない試合結果を排除したり
とか、ゲーム途中でパーフェクトになるパターンとかも考えなくてはなら
ないので、実は場合分けは結構難しいと思われ。
そうすると8の言うように60回の再帰呼び出しが一番効率良いアルゴリズム
というのに漏れも一票。
1手目は1通り、2手目は3通り、3手目は14通り、4手目は・・・もうだめ。
ランダムに打ったとき、手数ごとの「打てる場所」の積が、 「全部で何通りか」の近似値になると仮定すると、 だいたい10の45乗から10の55乗の範囲になるようです。 正確に出すのは不可能に近い。白と黒どちらが先手かは関係ない。
あっ、でも4の結果より小さくなければいけないのだから、おかしいな。 俺はアホか。
試合の結果は3通りです。 黒から見た場合、勝 負け 引き分け の3通り。 駒の数から考えると、64対0から始まり、0対64まで 64通り? ここでは盤面がいくつあるかは問うてる、様なので自分には計算できません。 申し訳無い。さらばです。
14 :
名無しさん@3周年 :04/09/04 04:32
?
横スレ悪いのだが、オセロの全検索は為されていなかったと記憶にあります。 3の36893488147419103232通りより少ないと考えただけでも、 さほど大きな数では無いと思われるのだが。 どなたかご説明して頂けませんか?
試合結果だけなら少ないけど、結果に至るプロセスはそれよりも遥かに多い。
それに、何通りか判断するにはカウントしなければわからない。
1秒間に1000通り検索できるコンピュータがあったとしても、1年間かけて300億通りしか
カウントできないので
>>4 の結果を確認することさえできないのでは。
17 :
名無しさん@3周年 :04/09/06 02:27
もし、どこにでも置けるとしたならば、 (8*8-4)!通りなのだから、これ以下なのは間違いない。
おける場所の検索の式が難しいんだよね。 必ず、他の色をはさむように置かないといけないし… 割と少ないとは思うんだけど…
>>19 そっちのスレの趣旨が違ってきてるから良いんじゃないの。
hosyu
22 :
名無しさん@3周年 :04/09/27 12:12:56
試合が終わったとき64マス全部埋まるとは限らないが・・・ そのへんはどうよ
「打てる手が何通りあるか」ではなく、 「最後の盤面が何通りあるか」ということでしょ? 盤面全体に白か黒が埋まっているはずだけど (それぞれのマスに白か黒かどちらがあるかを考えれば最大2^(8*8)通り?)、 そのうちありえない場合があるのかどうかをかんがえると どうだろうか?
24 :
名無しさん@3周年 :04/10/03 02:00:19
>>23 だーかーらー
>「最後の盤面が何通りあるか」ということでしょ?
>盤面全体に白か黒が埋まっているはずだけど
64ます埋まる前に白か黒がパーフェクトして
埋まらないパターンもありうるんだよ。
それを考えると難しいだろ?
25 :
名無しさん@3周年 :04/10/03 23:24:33
TAXAN
26 :
名無しさん@3周年 :04/10/05 12:51:57
27 :
名無しさん@3周年 :04/10/06 17:05:48
おれはインターネットリバーシじゃないとあまり強くない。 図形として頭に入ってるらしく 緑色の板ではどうにもならん・・・・・・・
28 :
名無しさん@3周年 :04/10/07 11:50:25
勝ち、負け、引き分け 3通り
29 :
名無しさん@3周年 :04/10/08 07:06:30
勝ち、負け、引き分け、途中でぐちゃぐちゃにしてやる 4通り
30 :
名無しさん@3周年 :04/10/08 14:31:59
オセロの黒い方が先にナンパされる青山通り
31 :
名無しさん@3周年 :04/10/09 01:33:35
いっぱい
32 :
名無しさん@3周年 :04/10/10 00:04:18
33 :
名無しさん@3周年 :04/10/14 21:42:38
貴方もオセロを や ら な い か
34 :
名無しさん@3周年 :04/10/16 01:59:14
わたしはまいこちゃん こまったまいこちゃん わたしはくびつりまいこちゃん あなたのせなか おににふす くろくにくさって ちだらけよ いおりあと うしろをむかないで
35 :
名無しさん@3周年 :04/10/16 04:05:47
┏━━━━━━━━━━━━━━━━━┓ _ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ,.^〈〉'´ ヽ〈〉ヽ. ┃│●│●│●│●│●│●│★│ │┃( (〈〉.ノ从))〈〉) ) ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ) )(li.゚ ヮ゚ノ! ( ( ┃│○│○│○│●│●│●│ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃いくみん ● 31 ┃│●│○│●│○│●│○│ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│●│●│○│○│○│○│ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│●│●│●│○│○│○│ │ │┃ ____ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ / `ミ ┃│●│○│●│●│○│○│ │ │┃i´ 从从ミ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃` リ;゚ -゚ノ ┃│●│●│○│●│●│○│ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ U - 1 ○ 18 ┃│●│●│●│●│●│●│ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛
36 :
名無しさん@3周年 :04/10/16 19:11:08
>>23 >>24 さらに言えば、ありえない形もありうる。
たとえ白黒すべてが盤面にあっても、その形で終わることは絶対にありえない形があるかもしれない。
やはり、最終形のみを考えて通り数を出すより、1手目から順に計算すべきだと思う。
37 :
名無しさん@3周年 :04/10/19 16:53:59
現実にまだ必勝法が見つかっていないくらいだから、
可能な盤面の数・最終盤面の形とかを厳密に確定するのは
まだまだ先のことだろうな。
60! ≒ 8.32 x 10^81よりも少ないことは、素人考えでも分かるが、
そこから更に絞るとなると...
第5手目は一通りだから 1*59! ≒ 1.37 x 10^80以下
第6手目は三通りだから 3*58! ≒ 7.05 x 10^78以下
第7手目は縦取りだと5通り 斜め取りだと4通り 並び取りだと5通り
よって14*57! = 5.67*10^77以下
もう飽きた...
珠型ルールと禁じ手のない15x15五目並べの必勝法を確立した
ヴィクター=アリスという人の博士論文によると
オセロには可能な盤面の数が10^58通りあるそうな。
ttp://www.cs.vu.nl/~victor/thesis.html
38 :
名無しさん@3周年 :04/10/24 17:43:21
保守
円周率は決して正確に求めることはできないが、 何桁まで求めたかで一つの成果として認められている。 オセロならば「最高でも何通り以下になる」というのが 一つの指標になる予感。
39の前提で最大の答えを上げておく。 「64マスにおいて、黒or白or無地であるので 3^64通り以下である。 」
42 :
名無しさん@3周年 :04/10/25 20:45:48
>>42 オセロ譜ってこと?同じ盤面に複数の到達ルートがある場合を考えて。
盤面だったらあくまで
>>40 の個数以下しかないと思うんだけど。
45 :
名無しさん@3周年 :04/10/26 14:47:41
結局、試してみるのが早そうだ。 じゃあ俺から ++++++++ ++++++++ ++++++++ +++●○+++ +++●●+++ +++●++++ ++++++++ ++++++++ 次○
++++++++ ++++++++ ++++++++ +++●○+++ +++●●+++ +++●++++ ++++++++ +++++++○<ワレワレハドクリツヲセンゲンスル!! 次●
47 :
名無しさん@3周年 :04/10/26 18:29:40
++++++++ ++++++++ ++++++++ ● <2Dオセロは時代遅れ。これからは4Dだ。 +++●○+++ +++●●+++ +++●++++ ++++++++ +++++++○ 次○ モウヤメヨウヨ
++++++++ +++++++角<異種格闘試合ってのはどうだい? ++++++++ ● +++●○+++ +++●●+++ +++●++++ ++++++++ +++++++○ 次j
49 :
名無しさん@3周年 :04/10/28 10:07:27
>>40-42 >>37 のサイトの文章によると、オセロは、
state space complexityが、3^64 ≒ 10^30
game-tree complexityが、10^58
と書いており、正に
>>40 が示した通りのことが書かれている。
「可能な盤面の数」という言葉が適切かどうかは知らないが。
ホッシュ
++++++++ +++++++角 ++++++++ ● +++●○+++ +++●●+++ +++●++++ 朝<一手だけなら誤手かもしれない ++++++++ +++++++○ 次◎
ほっしゅ
++++++++ ++++++++ ++++++++ 持ち駒● ● +++●○+++ +++●馬+++ <カーチャンオラ昇進シタダ! +++●++++ 朝 ++++++++ +++++++○ 次葱
ほっしゅ
++++++++ ++++++++ ++++++++ 持ち駒● ● +++●○+++ +++●馬+++ +++●++++ 朝 ++++++++ +++++++●<明日は雨でしょう。 次でボケて!
ぼっしゅ
めりーくりすます
もう年の瀬ですが、保守
あけおめ
60 :
名無しさん@3周年 :05/01/16 07:21:39
4x4オセロ 6x6オセロ あたりならできそう?
61 :
名無しさん@3周年 :05/01/17 00:04:47
まぁ、60!以下だ
QNYqzJfs _ _ r〜f⌒i しj__ ト√¨トー、 _ 厂ノ,..-ーt´¨i´:::::|⌒i;¬…tク-、 r〈 ,>イ:::|:::::|:::::|:::::|:::::::|::::::|::::::|:::::i¬ん、 >/l::::|:::⊥亠¬冖⌒ i冖ハ¬ト、,|::::|:::ヽ〉、 {シ,.:!ー'' r´/(⌒て_厂¬r⌒ヒ_ト、ゝ、i_::|:||:i:} ∠/rーtノ⌒ー’....................../.ト、゙i ゝr-、|:||:;ト、 ソー' i.............................../...〃.j\i........... しヘ::|( { ......|............./.. /..// / V......... しうノ l .....l.| /... // //─ - 、..........}Σト、ヽ、 ちゅぱちゅぱ美味しい ゙i i| ../ _≦./ =ー- 、|.. .. |⌒) \ヽ ゙i.....::゙i../,r):::;:d |ドく;;d |...........|.:::} l ヾi /∧ ...}〈ヘ{qトj」 └-''、⊥!........レ´ ゙i.i i‖ // ∧...::トヽ ̄ 、 j!.........,il' ゝi || 〃〃 i..::ト-ヽ、 ri、 ィ´|..... ,'| ヽi、 《 《 i、:|_ ` ー,- | ├<´ ト、|....../..|__,.-、 ||j /⌒\ ( ) | | | | │ │ ___________________________________ このスレを見た人は、10年以内にかならず氏にます。 でも、逃れる方法はあります、 ※10日以内に20箇所のスレにこれをはるのです。
63 :
名無しさん@3周年 :05/01/22 20:52:17
3^(8*8)通りです
保守
喪主
67 :
名無しさん@3周年 :05/02/09 08:31:06
単純な状態空間なら
>>63 より遥かに小さいのだが、
プランニングを考えるとなると打つ場所の履歴を保存しなきゃならんわけで、
その場合の数はめちゃくちゃに膨れ上がる。
オセロだと10^60通り程度、チェスだと10^120通り程度、
将棋だと10^220通り程度、囲碁だと10^360通り程度、
と、この手の研究をやってる人は言ってる。
ちなみに今のコンピュータではオセロでも完全解析は全然無理。
それでもオセロに関してはコンピュータは人間より遥かに強い。
チェスは、有名だと思うけど、
IBMがdeep blueっていうそれ専用のコンピュータを作ってようやくチャンピオンに勝った。
(但し、他の人には対応できないし、数回の対局の合間にプログラマが手を入れたりしていた。
短時間で完璧にアルゴリズムを弄る腕は素晴しいが・・・。)
将棋はやっとアマチュア5段に達するかどうかというところ。
囲碁は・・・だめぽ。
∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
...これからも僕を応援して下さいね(^^)。 ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━― ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉 __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄ ∧_∧ ( ^^ )< ぬるぽ(^^) (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン ∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
hossshu
72 :
名無しさん@3周年 :05/03/05 22:49:35
やっと計算終わった。 894756924789312通りだったよ。ああ、つかれた
>>72 Zカレー
ところで、手計算ですか?
計算方法示してぷりーず
74 :
名無しさん@3周年 :05/03/18 09:35:22
廃れてしもうた…
76 :
名無しさん@3周年 :2005/03/22(火) 17:49:28
どっちにしても人間じゃコンピュータオセロに勝てない時代になったわけでな
少なくとも、中央の4マスにコマが無いという局面と、 隣接するマスに他のコマが一つも無い(一個に限らず、 島状態でも同じ)という局面は除外できますね。
盤面に置かれている一つのコマに対して、 隣接したマスに新たにコマの置く場合、 置けるマスは7個所以下。
79 :
名無しさん@3周年 :2005/03/30(水) 21:59:08
ゲームの開始状態(白黒2枚ずつ計4枚が配置された状態)から可能な盤面の状態を数え上げる計算はどれくらい時間かかるんだろう?
80 :
!baka :皇紀2665/04/01(金) 01:54:19
QNYqzJfs _ _ r〜f⌒i しj__ ト√¨トー、 _ 厂ノ,..-ーt´¨i´:::::|⌒i;¬…tク-、 r〈 ,>イ:::|:::::|:::::|:::::|:::::::|::::::|::::::|:::::i¬ん、 >/l::::|:::⊥亠¬冖⌒ i冖ハ¬ト、,|::::|:::ヽ〉、 {シ,.:!ー'' r´/(⌒て_厂¬r⌒ヒ_ト、ゝ、i_::|:||:i:} ∠/rーtノ⌒ー’....................../.ト、゙i ゝr-、|:||:;ト、 ソー' i.............................../...〃.j\i........... しヘ::|( { ......|............./.. /..// / V......... しうノ l .....l.| /... // //─ - 、..........}Σト、ヽ、 ちゅぱちゅぱ美味しい ゙i i| ../ _≦./ =ー- 、|.. .. |⌒) \ヽ ゙i.....::゙i../,r):::;:d |ドく;;d |...........|.:::} l ヾi /∧ ...}〈ヘ{qトj」 └-''、⊥!........レ´ ゙i.i i‖ // ∧...::トヽ ̄ 、 j!.........,il' ゝi || 〃〃 i..::ト-ヽ、 ri、 ィ´|..... ,'| ヽi、 《 《 i、:|_ ` ー,- | ├<´ ト、|....../..|__,.-、 ||j /⌒\ ( ) | | | | │ │ ___________________________________ このスレを見た人は、10年以内にかならず氏にます。 でも、逃れる方法はあります、 ※10日以内に20箇所のスレにこれをはるのです。
81 :
名無しさん@3周年 :皇紀2665/04/01(金) 19:47:21
年号チェッ9
82 :
名無しさん@3周年 :2005/04/08(金) 16:31:51
あがれぇぇぇぇ
>>13 でこの議論は終わってるべ。
試合結果は
黒勝ち
白勝ち
引き分け
の3通りだろ。
84 :
名無しさん@3周年 :2005/04/08(金) 21:14:42
60 ! = 8.32098711 × 10^81 2^64 = 1.84467441 × 10^19 3^64 = 3.43368382 × 10^30
85 :
名無しさん@3周年 :2005/04/08(金) 21:25:06
3通りでいいんじゃ?
87 :
名無しさん@3周年 :2005/04/09(土) 10:59:59
sage
89 :
名無しさん@3周年 :2005/04/10(日) 01:45:20
経路積分
90 :
名無しさん@3周年 :2005/04/10(日) 02:13:53
盤面は64マスあるので2^64個の64次元ベクトルの 可能な時系列展開をすべて数え上げればいいんじゃないの?
91 :
名無しさん@3周年 :2005/04/10(日) 04:56:49
>>90 それは、
チェスで人間に勝ったスパコン(ディープブルー)がやっていた方法で、
いわゆるブルドーザー方式とか言うやつだね。
パワープレイで計算するのも一つの方法かもしれないが、頭の悪いやり方だね。
よって、ゲームを効率的に考えるにはどうする?
sage
93 :
名無しさん@3周年 :2005/04/10(日) 16:30:19
>>90 せめて初期配置の4マスを省くくらいは言ってもらわないと
>>91 代案も出さずに批判だけするのは頭の悪いやり方だね。
sage
95 :
名無しさん@3周年 :2005/04/10(日) 23:19:09
勝つか負けるか 2通り
96 :
名無しさん@3周年 :2005/04/11(月) 01:13:08
97 :
名無しさん@3周年 :2005/04/11(月) 01:22:15
俺はオナニーをした、別に楽しくもない。 俺は一ヶ月ほどオナニーをしていなかった。というよりオナニーをすること を忘れていた。 俺は女には興味はない、もちろん男にもない。ただし仲間の前では女に 興味のあるふりはしている。 俺は一言で言うと病気なのだ。オナニーをまったくしないのは健康上 悪いらしい、それでしかたなくやっている。通常は2週間に一度くらいは しているが、ときどき面倒になり、数ヶ月忘れたこともある。 まあ別に自分では困ったと思ったこともないし、これからもそうだろう。
98 :
91 :2005/04/11(月) 04:40:49
sage
100 :
名無しさん@3周年 :2005/04/11(月) 14:58:08
>95 正解 流石95だ 他のものと考え方が違う
101 :
名無しさん@3周年 :2005/04/11(月) 15:34:46
102 :
名無しさん@3周年 :2005/04/11(月) 15:36:26
sage
104 :
93 :2005/04/13(水) 22:34:43
>>98 >>93 では「代案を出せばよい」という解決策も提示している。
恥の上塗り乙。
105 :
名無しさん@3周年 :2005/04/14(木) 03:38:30
1は「試合結果」じゃなく「可能な試合展開の数」が知りたいわけだよね?
試合結果なら勝ち負け引き分けの3通りしかないのは自明。
そんなこと聞きたいわけじゃないことぐらい余程馬鹿じゃない限りわかるよね?w
# まぁ馬鹿も何匹か混じってるようですがw
>>93 初めの4マスを何で省くわけ?w ってかあんた素人?www
この4マスは可変量だろが!単に64次元ベクトルの初期値なだけだろ!
例えば、白を1、黒を−1、何もなしを0としてこれら3値をとる変数が
64個集まったベクトルを考えることがまずは出発点になるわけね。
で、初期ベクトルから展開可能な次のベクトルが4つしかないことは自明。
この4つの分岐からさらにそれぞれ分岐させてたものをコンピュータか何かで
しらみつぶしに調べれば原理的には数えることはできます。
しらみつぶしと言ってもオセロ盤には対称性があるので実際には初期分岐のうち
1つだけ調べて4倍すれば良いわけだけど。
まずは64次元でなくもっと小さい盤面、例えば4×4、6×6でやってみて
様子をみて8×8でやってみたら?
3通りじゃね?
107 :
名無しさん@3周年 :2005/04/14(木) 20:05:12
108 :
名無しさん@3周年 :2005/04/14(木) 22:25:05
>>105 もっともらしく書き並べてあるが内容は既出だな
3ge
すげーなおまえら!! 天才の集合体だ! オレ数学とか本気でさっぱりだから言ってること 理解不能だが、おまえらのカッコよさを びんびんに感じるぜ! この板の言葉の羅列を理解できる人間が いったいどれくらいいるんだろうか 大学院クラスだよな?サイテーでも
sage
112 :
名無しさん@3周年 :2005/04/29(金) 09:26:22
GWage
今のパソコンなら終盤残り20手なら完全読みできているんじゃあ? 昔のアスキーマイクロオセロリーグではZ80マシン語で終盤12手 完全読みだったような記憶が。 序盤は膨大な定石データベース(初手から30手以上)終盤は 20カ所空きがある状態で完全読みされたらα−β法だの評価 関数だのを使うのは中盤の数手のみになって人間が勝てる見込み はない。実際に世界チャンプでも完膚なきまでにやられている。
sage
115 :
名無しさん@3周年 :2005/05/01(日) 01:19:40
あげ
116 :
名無しさん@3周年 :2005/05/01(日) 10:41:27
117 :
名無しさん@3周年 :2005/05/09(月) 23:57:09
結局どうなんよ?
118 :
名無しさん@3周年 :2005/05/13(金) 21:20:12
計算始めました。 死ぬまでに結果が出たらいいのだが。
119 :
名無しさん@3周年 :2005/05/13(金) 23:55:29
>>118 まさかとは思うが全通り計算してるのか?
4×4 ++++ +●○+ +○●+ ++++ 初手 1通り ++++ +●○+ +●●+ +●++ 二手 3通り ++++ ++++ ++++ ○○○+ +●○+ +●○+ +●●+ +○●+ +●○+ +●++ ○●++ +●○+ 三手 11通り ●+++ +●++ ++●+ +++● ++++ ++●+ ++++ ○●○+ ○●○+ ○○●+ ○○●+ +●○+ +●●+ +●●● +●●+ +●●+ +●●+ +●●+ ●●●+ +○●+ +○●+ +●++ +●++ +●++ +●++ ○●++ ○●++ ○●++ +++● ++++ ++++ ++++ +●●+ +●●● +●○+ +●○+ +●○+ +●●+ +●●● +●●+ +●○+ +●○+ +●○+ +●●●
四手 31通り ●+++ ●+++ +●++ +●++ ++●+ ++●+ ++●+ ○●○+ ○●○+ ○●○+ ○●○+ ○○●+ ○○○○ ○○●+ +○●+ +○○+ +○●+ +○○+ +○●+ +●●+ +●○+ ○●++ +●○+ ○●++ +●○+ +●○+ +●++ +●+○ +++● +++● +++● ++++ +○●+ ++●+ ++●○ ++●+ ○○●+ ○○○○ ○○●+ ○○○+ +○●+ +●●+ +●○+ +●●+ +○●+ +●●+ +●○+ ○●●+ +○●+ +○●+ +○●+ +○○○ +●○+ +●++ +●+○ ○●++ ○●++ ○○○+ ○●++ ○●++ +○++ ++++ +++○ ++++ ○++● +++● +++● +++● ++○● +○●● +●●● +●○● +●●● +○●+ ○●●+ +●●+ +●●+ +●○+ +○●+ +○●+ +○●+ +○○○ +●○+ +○○+ ○○○+ +●○+ +●○+ ○●++ ○○○+ ○●++ ○●++ +●○+ +●○+ +●○+ ○○○+ +●○+ ++++ ++++ ++○+ ++++ ++++ ++++ ++++ ○●●● +●●● +●○● ○○○+ +●○+ ○○○+ +●○+ +○●+ +●●+ +●○+ +○●● +○●● +●●+ +○●+ +●○+ ○○○+ +●○+ +●○+ ○○○+ +●●● ○●●●
122 :
名無しさん@3周年 :2005/05/14(土) 23:06:42
>>118 おまいが死ぬ前にパソコムが昇天するに3000ガバス
123 :
名無しさん@3周年 :2005/05/14(土) 23:44:46
升の数等で、法則を見つけ出すのは至難の技ですかね。 良スレage
>>67 オセロでも地球上の全ての物質を素粒子メモリーに変換したとしても間に合わんのね。
チェス以降だと宇宙の全素粒子を使用しても記録できない、と。
125 :
名無しさん@3周年 :2005/05/16(月) 20:34:10
126 :
名無しさん@3周年 :2005/05/16(月) 21:39:41
>>29 正確には5通りじゃないか?
「勝ち、負け、引き分け、途中でぐちゃぐちゃにしてやる」
それプラスほったらかし。
>>125 終局までやると100レス以上必要になるだろうから自分でガンガレ!
128 :
名無しさん@3周年 :2005/05/20(金) 03:35:17
トリビアの種に送って計算してもらおうぜ。そうすれば、きっと答えは出るよ。
129 :
名無しさん@3周年 :2005/05/20(金) 22:18:01
131 :
名無しさん@3周年 :2005/05/26(木) 00:14:45
>>128 取り合えず、分かり易いようにペンネームは「名無しさん@3周年」
で投稿して下さいです。
133 :
名無しさん@3周年 :2005/06/01(水) 23:32:31
投稿してきたぜ
134 :
名無しさん@3周年 :2005/06/05(日) 10:38:36
135 :
名無しさん@3周年 :2005/06/21(火) 00:33:37
age
136 :
名無しさん@3周年 :2005/06/21(火) 11:01:09
3通り
試合結果だけなら。 勝つか、負けるか、引き分けの3通り。
138 :
名無しさん@3周年 :2005/06/24(金) 10:58:37
++++++++ ++++++++ ++++++++ +++●○+++ +++○●+++ ++++++++ ++++++++ ++++++++
139 :
名無しさん@3周年 :2005/06/24(金) 15:47:51
初手は1手、以降2手づつ打っていくとどうなるだろう。
140 :
名無しさん@3周年 :2005/06/26(日) 15:22:20
>>139 もうすこし判り易く詳しく説明してクレマイカ
141 :
名無しさん@3周年 :2005/06/29(水) 10:01:44
で、結局全局面は何通りあるの?
>>124 1局面100バイトとして、89,475,692,478,931,200バイト
1000で考えて89ペタ。
1テラ=1000円レベルでコスト的にも不可能じゃなくなる
142 :
名無しさん@3周年 :2005/06/29(水) 10:25:08
143 :
名無しさん@3周年 :2005/06/29(水) 13:56:56
>>4 により、最大36893488147419103232通り。
>>141 と同様に1局面につき100バイトかかるとする。
3,689,348,814,741,910,323,200バイトとなる。
Z E P T G M K
これが何割かに減っても無理だべ
145 :
名無しさん@3周年 :2005/06/29(水) 18:51:35
試合結果って決着のついた盤面図のことなの? 普通は初手からの総手順のことだと思うんだけど。
>>145 1)「試合結果」そのもの→3通り
2)終了盤面の状態→2^64未満
3)終了までの手順→60!未満
それぞれの結論を導き出してみては?
141の論点が124の想定している状況とずれているという 流れになってたと思うんだけど違ったみたいね。
148 :
名無しさん@3周年 :2005/06/30(木) 13:05:25
ねえ何か思いついたから聞いて。プログラミングの素人ですが。。 まず、一局目から始まり、最後まで勝負つくまでの全通りはツリー状でイメージできるよね。 んで全通りの計算方法なんだけど まず適当に勝負つくまで局を進ませる。一局一局の手は記憶させておく。 んで次に最後の一手が他に無いか探す(特殊な場合以外最後は一通りだけど)。 最後の一手が他に無かったら、最後の一手の情報を消す。 最後の一手の情報を消すごとにカウントを一つ増やす。 一手戻り最後から二手目が他に手がないか探す。 あったら、局を進ませる。 以下つづける。。。 この方法だと今カウントしている属のみの手を記憶してればいいから容量がなくてもいいんじゃない?
深さ優先探索だね。まぁ確かに容量は無くてもいけるかも知れんが、やってみ? 先に結論を言っておくと時間が足りない。4×4で実験してみてどれくらい時間がかかるか報告よろしく
でもこれで容量の問題は解決するよね? かなり説明は省いたけど。 時間短縮は途中十局目ぐらいまで横ローラー探索をして、そのあとその結果をネットに載っける。 んで個々のPCがそれぞれの通りから縦探索をすればかなり時間短縮になるのでは?
151 :
名無しさん@3周年 :2005/06/30(木) 20:00:09
これは面白くなってきたな。 呼びかけるか?
へへーん。もしかして俺凄い?(・∀・) 世界的にもまだ算出されていないんでしょ? 数年掛かりでもヤる価値はあると思うよね。。
153 :
名無しさん@3周年 :2005/07/01(金) 17:27:04
第一手目を固定したとき。 証明1 違う手順で全く同じ局面になる2組の局面は存在しない。 証明2 証明1が真のとき、点対照、線対照となる関係の2組の局面は存在しない。 証明2はできた。けど証明1ができない。 これらが証明できたとき、全て埋まっている状態での全終局は 3^60より少ない 3^60÷4÷2÷2以下 となるorz こうやって削ってけばどんどん少なくなるんじゃん?
154 :
名無しさん@3周年 :2005/07/01(金) 22:01:46
>>148-149 ものすごいプリミティブな発想が出てきたことに(良い意味で)感銘を受けた
155 :
名無しさん@3周年 :2005/07/02(土) 08:56:38
プリミティブ?原始的なってこと?
どうせ俺は素人だよ!!(`ε´)
>>153 を訂正。2組→1組。3^60→2^60。
また閃いた。
全て埋まっている状態の終局面の全通りの予想値なんだけど
まずランダムに面を白黒埋める。んで開始の四マス白黒の状態になるように逆に局を進める。この方法は縦探索でね。
おそらく探索をかけても最初の状態にならないのが存在する。
んで例えば10パターン実行して1パターン…
ん?まてよ…
ごめん何でもなかった。。
156 :
名無しさん@3周年 :2005/07/03(日) 06:01:27
あるソフトをネットを通してバラまく。このソフトは、一つの局面から一手すすんだ全ての局面を計算する簡単なソフト。 まず1台のPCからスタートする。一手目はルール上黒f5と決まっているらしいから。一局目は初期状態からf5に黒をおいた一通りの棋譜となる。 んでこの棋譜を同じソフトが入っている別の任意の一台のPCに送る。 棋譜を送ったら棋譜の情報を消す。 受け取ったPCは受け取った棋譜から二局目を弾きだす。 実際二局目は三通りある。 んでこの三通りの棋譜を今度は三台のPCに一通りづつ送る。 送ったら、棋譜の情報を消す。 以下続ける。 終局の棋譜を受け取ったPCは、この終局の棋譜はソフトネットワーク上唯一無二なので、「終局の棋譜が来た」という情報だけで棋譜の情報を消してもいい。 んで何回終局の棋譜が来たかを 代表のサーバーに送って それを足していけば答えがでるんじゃん?
>156
既に指摘されているようだが、やっぱり時間が足りないと思われ。適当に概算してみよう。
この場合、木をそのまま辿っていくから可能な状態は >37 によると 10^58。
超大雑把に IPv4 アドレス全域に属するノードが使えるとして 2^32 ≒ 4*10^9。
どんどんノードが増加していくから処理が進む、というのは典型的なネズミ講発想で残念ながら頭打ちする。
つまりノード全域に盤面が行き渡ってしまえば他に渡せるやつがいなくなるので単位処理あたりに進む
手数はノード数と等しくなると考えて良かろう。結局、探索空間をノード数で分割しただけと考えて良い。
1ノードで 1μs で1手進むとして、1年間に 60*60*24*365*1000*1000 ≒ 3*10^13 進む。
結局全体で 1 年間で 4*10^9 * 3*10^13 = 12 * 10^22。
10^58 を割ってやると 8 * 10^34 年程度ということになる。
ttp://ja.wikipedia.org/wiki/宇宙の終焉 によると
> 10^14 年 -- すべての恒星が燃え尽きるまでの時間
だそうです。
レス有難う。 そっかあ。駄目かあ。うーんどうしょう。 感情的にだが10^58は予測値として多すぎると思う。 よし減らそう
159 :
名無しさん@3周年 :2005/07/04(月) 00:00:13
漁師アルゴリズムを考えたらどうだろう? んで漁師コンピューター開発までスレ保存 漁港の人にがんばってもらうしか
160 :
名無しさん@3周年 :2005/07/09(土) 01:27:15
自分は素人ですが、真ん中に線を引いて対象的に動かしたら(鏡に写す様に)、もう一通りの結果がわかりますよね?これってみなさんの計算のプラスになりませんでしょうか? 無知の自分がレスってすみませんです。。。
161 :
名無しさん@3周年 :2005/07/09(土) 03:06:19
最終盤面のみを考えて、 絶対にありえない形のパターン化ができれば ありえない形の数を計算できて、最終盤面の通り数がでるのではないでしょうか。 (ただし投了の場合除く) ありえないパターン@ 真ん中らへんの4つのどれかが無地 あーーつかれた。あとは他の人に任せよう
162 :
名無しさん@3周年 :2005/07/09(土) 20:42:05
>>160 そうすれば探索範囲が半分になりますね
ほかにも盤面を回転させると同じになる分を省いたりします。
殆どの人が割りとすぐ思いつくようなアイデアだけど
貴方が自分で思いついたならそれは貴方のアイデアです。
どうせみんなもう知ってるんだ、と考えるのをやめるのはもったいない。
めげずにアイデアを考えつづけていれば、
その内まだ誰も思いついてないアイデアが浮かぶかも知れません。
hosyu
164 :
名無しさん@3周年 :2005/08/05(金) 22:59:36
補習
予測値の出し方なんだけど まず何本か(多ければ多いほどいい)終局までの棋譜を適当につくる。 つぎに一本一本に対して局ごとの手の数を出す。 そして局ごとに何通りあるかの平均を出す。 その値を掛けて予測値を出す。 っていうのはどう?
166 :
名無しさん2周年 :2005/08/12(金) 19:54:02
いいサイトない? って、Aちゃんに・・・・。(:::)
反応がない。。 とりあえずこの方法で計算した予測値を近々載っけますね。
168 :
名無しさん@3周年 :2005/08/13(土) 18:48:52
ワクワクテカテカ(AA略
試しに動かしたら 7.29E+53 とか出た。頼むから論理エラーであってくれ
170 :
167 :2005/08/17(水) 20:52:23
百本、千本の棋譜で試した所、共に予測値の桁が48桁になりました やっぱだみだこりゃ
171 :
名無しさん@3周年 :2005/08/18(木) 21:14:29
>>167 K3乙
48桁という目星がついただけでも(少なくとも俺は)すごいと思うよ
>>170 GJ!
これはまったく新しいアプローチでしたね。
173 :
167 :2005/08/19(金) 18:36:37
174 :
名無しさん@3周年 :2005/08/22(月) 18:50:17
>>173 Page Not Found って出るのは
俺だけ?
175 :
名無しさん@3周年 :2005/08/24(水) 00:57:39
あ〜!!!!!!!!!!! 時間さえあれば!!!!!!!!!!!! UDみたいに分散コンピューティングは使う事は出来ないの?
分散コンピューティングでの予想経過時間
仮定1 コンピュータの速さは平均3GHzとする
仮定2 1クロックで1手探索できるとする
仮定3
>>173 の慨算が正しいとする
仮定4 コンピュータは常時100億台使えるものとする
結構非現実的な仮定もあるけど、これで計算すると
10^52 / (3*10^9 * 10^10) ≒ 3.3*10^32 [sec] ≒ 1.05*10^25 [年]
(´・ω・`)ムリポ
>>176 オセロの勝敗を計算する事って
たんぱく質とかガンの特効薬の開発よりも時間がかかる事tなんだ・・・
すごい事にチャレンジしているな・・・
178 :
名無しさん@3周年 :2005/08/24(水) 04:59:32
このままではどんなにコンピュータが発達しても答えが出ないことになってしまう。 目玉が飛び出るぐらい画期的な計算方法を発案しないと… 52桁まで有効な予測値を出すとかw
179 :
名無しさん@3周年 :2005/08/24(水) 09:37:29
原始的な方法かもしれないけれど、 現在あるアルゴリズムと、分散コンピューティングを使って、 それぞれのPCでオセロを1試合ずつやらせる。 その試合結果をひたすら中央のサーバに集積していって かぶらないものだけを抽出していく。 こうすることによって、過去の戦いの経験値を増やしていくと同時に 計算する事ではなくて実際的なカウントをしていく事ができるのでは? でも時間もかかるし、実際的じゃないか・・・ 素人考えでゴメン・・・
181 :
名無しさん@3周年 :2005/08/24(水) 11:39:54
>>180 計算する事ではない実際的なカウント
って何?
詳細キボンヌ
182 :
名無しさん@3周年 :2005/08/24(水) 14:10:11
>>180 がいいたかった事って
一つ一つ実際の戦局を打ち出すことによってありえない盤面を省く事が出来るってことでは?
人間の脳ってすごいよな
183 :
名無しさん@3周年 :2005/08/24(水) 18:29:26
>>180 >>182 なるほど、もすこし具体的に言うと
盤面をデータベースに蓄えていって、
そのデータベースからコンピュータが自動的に
法則性を見つけ出し、
あらゆる盤面の可能性(3^64)の中から
ありえない盤面を削ってゆく。
そしてしばらくして盤面が減らなくなったら
のこった盤面数がオセロの試合結果ということになる。
ってことか。なるほど。
ルールを覚えるのなら記憶容量そんなに増えないかもしれないしな。
問題はルールの自動抽出の部分か...
184 :
183 :2005/08/24(水) 18:31:50
>>183 記憶容量そんなに増えない -> 記憶容量そんなに食わない
すまん
185 :
名無しさん@3周年 :2005/08/24(水) 19:00:16
いっちょやってみっか ┏━━━━━━━━━━━━━━━━━┓ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │○│●│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │●│○│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛
186 :
名無しさん@3周年 :2005/08/24(水) 23:14:36
↑もうええっちゅに
187 :
名無しさん@3周年 :2005/08/25(木) 22:58:32
>>183 そこんところ、自分素人なんでわからんのだけどでかくなっちゃうの?
188 :
名無しさん@3周年 :2005/08/26(金) 10:52:22
>>187 覚えなければならない量のこと?
覚えなくてもいいけど、覚えたほうがいいってこと。
すべての盤面を一つ一つ数えるときに
何も覚えないと10^52すべてを数えないといけない。
もし仮にメモリが無尽蔵にあるとすれば、
一度出現したことのある盤面を覚えておくことができ、
最大でも3^64(= 約10^30)回数えればいいってことになる。
ただしそんな馬鹿でかい記憶装置はないんだよね。
1 テラ = 10^12
だからもっと効率のよい方法はないかなってなっちゃうのよ。
189 :
名無しさん@3周年 :2005/08/26(金) 23:15:51
┏━━━━━━━━━━━━━━━━━┓ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │○│●│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │●│●│●│ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛
↑そやからもうええっちゅうねん
┏━━━━━━━━━━━━━━━━━┓ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │●│●│●│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │●│●│●│ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛
問題を簡単にしようぜ。 黒ゴマ白ゴマあわせて10^52個ほどある。 効率よく何粒あるか数えるにはどの様な手法がいいでしょう?
193 :
183 :2005/08/28(日) 21:20:32
>>192 ゴマで惑星がいくつかできそうな気がするが...
ゴマを一面にまいて、遠くから見て何色に見えるか
白→白ゴマ多い。
黒→黒ゴマ多い。
灰色→明度によって判断。
とか。
それだけの数のゴマを一面にまける平面がこの宇宙にあるのかは
知らないが。
要は「カウント」の限界だよね。正確に数を数えるには「カウント」以外ないのだが…
カウントしなければいい方法かぁ・・・ 逆転の発想! 演算時間や計算結果のメモリ消費量からカウント数を割り出す ナニ言ってんだ・・・俺・・・
196 :
名無しさん@3周年 :2005/08/29(月) 11:12:41
>>194 たしかに。
オセロは
ある局面の次の局面数はその盤面の状態に依存してしまう。
○×ゲームみたいに次の局面数がみんな同じじゃないからなぁ。
○×ゲームも正確には 9! ではなくて、途中で終わることも
考慮しなければならないが。
○×ゲームの試合結果の通り。 カウントではなく数式で答えを出すのはこの問題でさえむずかくね? やべー
○×ゲーム程度のサイズなら全探索でOKじゃね?
199 :
名無しさん@3周年 :2005/08/29(月) 23:41:11
>>197 ○×ゲームでは
理論上、最も早く勝負がつくのは5手目だから
それまでの9*8*7*6*5までは正確に分かる。
問題は残りの4ターンがどういう振る舞いをするかだな。
これをカウントせずに正確に算出できれば、
オセロの総手数算出の足掛かりになるかもしれないな。
200 :
名無しさん@3周年 :2005/08/30(火) 00:22:18
○×ゲームの全探索してみた。 数式での計算の答えあわせに利用してくれ。 引き分けは問題を簡単にするために全部埋まった時点でということにしておく。 つまり勝負が決まる以外での枝刈りはなし。 1ターン目の局面数: 9 2ターン目の局面数: 72 3ターン目の局面数: 504 4ターン目の局面数: 3024 5ターン目の局面数: 15120 6ターン目の局面数: 54720 7ターン目の局面数:148176 8ターン目の局面数:200448 9ターン目の局面数:127872 全ての局面数: 549946 先手の勝ち数: 131184 後手の勝ち数: 77904 バクの可能性もあるだろうから 信頼性向上のため誰か他にも作って確認してくれ。
201 :
名無しさん@3周年 :2005/08/30(火) 05:07:27
>>198 うん。でも探索はオセロでは使えないことが
今までのレスでほぼきまったと俺は思うのよ。
方法としてあとは計算で出すしかないかと。
>>199 が言ってくれたように○×はその練習問題として
いいんじゃない?
>>200 おつかれどす。
これで正解はでた。この数字に行き着く計算式を考えよっと。
つーかやっぱり後手超不利だなw
202 :
名無しさん@3周年 :2005/08/30(火) 19:29:43
6ターン目以降が全て144で割り切れるのは偶然?
203 :
名無しさん@3周年 :2005/08/30(火) 21:01:41
age
204 :
名無しさん@3周年 :2005/09/02(金) 21:36:36
>>200 1ターン目: 9
2ターン目: 72
3ターン目: 504
4ターン目: 3024
5ターン目: 15120
6ターン目: 54720
7ターン目:148176
8ターン目:200448
9ターン目:127872
一緒になりますたw乙!
205 :
名無しさん@5周年 :2005/09/03(土) 10:22:37
208 :
200 = 205 :2005/09/03(土) 15:55:41
209 :
200 = 205 :2005/09/03(土) 15:56:50
>>202 必然。
nターン目の局面数をPnとおくと
P2=P1x8
P3=P2x7
P4=P3x6
P5=P4x5
このようある局面はそれまでの局面から派生したものであるから
共通の局面というものが局面数の因子として数え上げられる。
211 :
名無しさん@5周年 :2005/09/07(水) 23:34:58
>>210 よくわからんのだけど、
それってP5の総盤面数は9,8,7,6,5を約数に持つって事?
でも、あるターン以降は勝敗を決しているから
そんなに単純にいかないのでは?
見当違いな意見だったらごめん
もちっと詳しく教えて
212 :
名無しさん@5周年 :2005/09/07(水) 23:57:11
>>210 6ターン目からは前のターンから掛け算的に派生したわけじゃないから、必然とはいい難くね?
213 :
名無しさん@5周年 :2005/09/08(木) 00:13:51
6ターン目の総ノード数が 9*8*7*6*5*4 - 5*4*3*2*1 * ((11*10*9*8)/(4*3*2*1)) になった。 だれか理由を考えてくれ。
214 :
名無しさん@5周年 :2005/09/08(木) 00:28:49
ソースは忘れたが 「オセロは後手必勝が証明された」 みたいなのを どこかで読んだような… スレ違いすまん
ん?今更だが
>>200 ,204は棋譜(というのか知らんが)が異なれば別、という探索?
てっきり盤面のパターン数を数えているのかとばかり…orz
〜5手は計算で分かるジャマイカ…orz
216 :
名無しさん@5周年 :2005/09/08(木) 00:46:01
217 :
名無しさん@5周年 :2005/09/08(木) 00:54:38
nターン目で勝負がきまった曲面数をQnとすると P6=9C6-Q5×4 ;Cは場合の数の時につかうアレね。 またQ5の話で、 ○を先手とした時に4ターン目で○がリーチになる通りは ○を固定したとき○が2つある次元に×がない場合だから 6C2=15通り 非リーチの場合は同じく○を固定したとき 6通り そしてリーチ状態から5ターン目でビンゴになる通りは 1通り リーチ状態から非ビンゴの場合は 4通り よって Q5=P4×15/(6+15)×1/(1+4) っつー等式ぐらいしか思い浮かばん。
218 :
200 :2005/09/08(木) 01:07:09
>>215 そう、単純にすべての盤面を並べただけ
だから言うとおり5手までは単純な掛け算で算出可能さ
まとめると総盤面数はだいぶ減るけど、計算式を出すのが
その分大変になるんよ
あまちごーた 誤 P6=9C6-Q5×4 正 P6=9×8×7×6×5×4-Q5×4 因みに 9!=Q5×4!+Q6×3!+Q7×2!+Q8+Q9 も成り立つよね。
hosyu
221 :
名無しさん@5周年 :2005/09/29(木) 07:24:49
ほしゅあげ
あたいこそが222ゲトー
223 :
名無しさん@5周年 :2005/10/04(火) 23:28:12
ちょこっとプログラムを作ってオセロの概数出してみたので報告。
>>167 =173とは違う方針2種類で。
データは同様に「ランダムに配置して置けるマス数を数える」を10000試合行った。
取り合えず今回は結果だけ。詳細なデータは纏めるまで待って。
1)
1手ずつの相加平均を出して掛け合わせる。1手目は4、2手目は3,3手目は4.67…という感じ。
60手目の平均選択肢数が0.9056だったのでここまで掛け合わせた結果、1.21e+52 通りくらい。
2)
>>167 に近い方針かも。選択肢の数ということで、1回1回のシミュレーションで1)のように掛け合わせた結果を出す。
選択肢の数なのでパスの場合も1通りと数える。で、その10000試合分平均を取るわけだが…
A.普通に相加平均取ってみた。1.8e+54 通り。
B.どうせなら最後まで掛け算だろ、相乗平均。1.0e+51通り。
さて、どれが近いのやら。
225 :
名無しさん@5周年 :2005/10/12(水) 12:17:17
>>224 乙。計算の仕方によって結構結果が変わるんだな。
でもこうなってくると、
真の値にどれが一番近いのか判別する手段ってあるのかな。
hosyu
( ´・ω・)ムズカシス
229 :
名無しさん@5周年 :2005/11/01(火) 14:25:49
>>228 順を追って考えればそうでもないよ
でも最近、滞ってんだよね (´д` )
解析的アプローチを取ってみたらどうだろう。 いや、具体的な手法は思いつかないんだけど。
231 :
名無しさん@5周年 :2005/11/07(月) 19:01:22
解析的アプローチってどんな感じ? 具体的でなくていいからおせえて
(可能な局面の)全探索ってことか?違うかな?よくわかんないや
233 :
230 :2005/11/08(火) 23:03:15
数値解析じゃなくて解析学の解析ね。 例えばサイズがnに近づくような極限をとってやると答えが出るような式を探索するとか・・・ サイズっていうのは石の数なのか手数なのか升目の数なのか、どれがいいのかはわからんけど。 あとはスケーリングの議論ができると面白い「かも」しれない。
234 :
名無しさん@5周年 :2005/12/15(木) 17:13:16
agege
235 :
名無しさん@5周年 :2005/12/16(金) 13:44:24
4×4なら全探索できたから載せようか?
>>235 うpよろりんごりらっぱんだちょうしくまんとヒヒーン!
237 :
名無しさん@5周年 :2005/12/26(月) 13:23:06
期待保守上げ
238 :
名無しさん@5周年 :2006/01/10(火) 22:35:07
将棋だともっと大変だろうな
ちなみにオセロは10^60通りだとか 囲碁は10^300通りって本に書いてあった。
240 :
名無しさん@5周年 :2006/01/15(日) 00:03:55
「大体」は分かるけど「正確」には難しいな。
>>239 オセロは必ず60手以下でゲームが終わる
で単純に盤面の可能な着手数を平均10としただけなのが10^60
まあそれぐらいのオーダーだろうと言うくらいの概算
242 :
名無しさん@5周年 :2006/02/01(水) 11:27:14
概算は既に色々出ているけど、どうなんだろね。
243 :
名無しさん@5周年 :2006/02/02(木) 01:41:24
概算はいいからこれは絶対に超えないというラインを攻めていこうよ。 まずは (64-4)!<=10^81.9202 だな。 これは絶対に超えない。
244 :
名無しさん@5周年 :2006/02/02(木) 01:53:34
(64-4)!っていうのは分かりやすくていいんだけど、
はじめの方の60*59*58…とかが現実的じゃないんだよね。
後ろのほうの…3*2*1とかはある程度絞れている感じがする。
なぜはじめの分岐が60パターンもないかというと
石が少なくて置ける場所が少ないからなんだよね。
例えば置ける場所っていうのは多くても
現在置かれている石についてその周り7つ(1箇所は必ず既に置いてある)だけだから、
5手目までは 既にある石の数*7 という絞り方ができる。これで
28*35*42*49*56*55*54*...*3*2*1 < 10^79.6125
ここまで絞れた。うーん。
>>243 から1/100しか絞れなかったな…道のりは長い…
245 :
名無しさん@5周年 :2006/02/08(水) 19:54:55
246 :
名無しさん@5周年 :2006/02/10(金) 02:51:54
六手目からは (64-4)! のルールの方が 少ない値で掛けられるからだとおもう。。
この世の中の勝負ごとには『勝ち』か『負け』の2通りのみだよ ちなみに俺は負け組
248 :
名無しさん@5周年 :2006/02/10(金) 13:32:39
毎日ここ見てる人いんのかな。
これからもよろしく
253 :
名無しさん@5周年 :2006/02/17(金) 12:34:41
毎日ではないけど、見てますよ
いいスレですよね。濃くて。
でも最近更新が無くて寂しい
256 :
256 :2006/02/19(日) 22:09:07
オセロで打てる箇所の数は最大で28かな?
例えばこういう↓局面。
++++++++
+○○○○○○+
+○●●●●○+
+○●●●●○+
+○●●●●○+
+○●●●●○+
+○○○○○○+
++++++++
「28」なのかは証明したわけじゃないけど、
この局面より打てる場所が多いのは思い浮かばなかった。
もし28で正しいなら28より大きいのは28にしてしまえるから
28*28*28*28*...*28*27*...*3*2*1=6.21e+75ってできると思う。
これだと
>>244 より4桁くらいしぼれるかな
誰か「28」の証明か反例探しお願い。
257 :
256 :2006/02/19(日) 23:10:46
>>256 もっと多いの見付けた・・。
これで打てる場所は32個。
++++++++
+○○+○○○+
+○●○○●○+
+○○●●○++
++○●●○○+
+○●○○●○+
+○○○+○○+
++++++++
32*32*32*32*...*32*31*...*3*2*1=3.67e+77
増えていく・・(泣
ちょっと試してみたがオレも32ヶ所以上はできなかった
259 :
256 :2006/02/20(月) 07:16:44
33個見つけました。 ++++++++ +○○●○○○+ +○●+○●○+ +●+●●+○+ +○○●○●○+ +○●+○●○+ +○○+○○○+ ++++++++ 33*33*33...*33*32*...*3*2*1=8.68e+77
260 :
256 :2006/02/20(月) 07:59:34
プログラムを作って実際の数を調べてみた。 1・・・4 2・・・12 3・・・56 4・・・244 5・・・1396 6・・・8200 7・・・55092 8・・・390216 9・・・3005320 10・・・24571192 24571192*33*33*...*33*32*...*3*2*1=1.39e+70 急ごしらえなのであんまり速くないからとりあえず10手まで。 あと、まだバグがあるかも知れないから誰か検証お願い。
>>259 お疲れ様です。
よくみつけたなあ
一万本適当に棋譜作ったとき最高25手という棋譜が一本だけあった。
30手〜はほとんど無視していいぐらいに少数になると思う。
>>260 それにしても計算早くないですか?
262 :
256 :2006/02/21(火) 03:14:21
>>261 >一万本適当に棋譜作ったとき最高25手という棋譜が一本だけあった。
>30手〜はほとんど無視していいぐらいに少数になると思う。
僕もそう思います。
ちなみに
>>256 の局面とは違いますが、28箇所置ける局面まで辿りつく棋譜は作れました。
F5D6C3D3C4F4F6G6E6E7F7G5E3C5F3B3B4B5B6B7C7G2G3G4D7G7C6B2C2D2F2E2
もっと多いのも探してみますが、
>>257 とか
>>259 みたいな局面を実際に並べて作れるかは疑問に感じてます。
>それにしても計算早くないですか?
プログラムの計算はあんまり速くないと思います。
今のプログラムのノード展開速度は220kn/s(@Pentium4 2.4GHz)くらいでした。
WZebraとかだとこの20倍くらいは速度が出てますし。
でも速くするアイディアはいくつかあるのでそのうち改良してみます。
263 :
名無しさん@5周年 :2006/02/21(火) 10:08:01
++++++++ +○○○+○○+ +○●○+●○+ +○○○○○○+ +++○○+++ +○●○+●○+ +○○○+○○+ ++++++++ こーいうの(36箇所)はダメなん?
264 :
256 :2006/02/21(火) 17:56:32
>>263 僕は空きの数ではなく返せる場所の数を数えてました。
その局面だと空きは36箇所で打てるのは20箇所ですね。
よく分かっていない
>>263 がいるスレはここですかw
267 :
名無しさん@5周年 :2006/02/21(火) 22:39:51
返せる場所の数?
全試合数の話題をしているわけだから着手可能数だろがボケ
>>264 打てるのが20箇所ってどういう意味ですか?
256っちの流れいいね。
まだ最大分岐数33と決まったわけじゃないけど。
一方試合数絞りの方は
>>260 の10手目=24571192を信じるとすると
全試合数 <= 24571192*50*49*...*1 < 7.4732e+71 (= 10^71.8736)
これは確実。
混乱してるみたいなので一応解説。 >僕は空き(☆ & +)の数ではなく返せる場所(☆)の数を数えてました。 >その局面だと空き(☆ & +)は36箇所で打てる(☆)のは20箇所ですね。 ☆+☆+☆☆+☆ +○○○+○○+ ☆○●○☆●○☆ +○○○○○○+ ☆+☆○○☆+☆ ☆○●○☆●○☆ +○○○+○○+ ☆+☆+☆☆+☆ 今回の論点は「打てる場所」です。
スレ始まって以来の有意義な盛り上がりが。
274 :
256 :2006/02/22(水) 03:27:33
違う手順で同じ局面になる事があるんだけど、
この扱いはどうすればいいかな?(transposition)
例えば次のような局面。
F5D6C3D3C4とF5D6C4D3C3
++++++++
++++++++
++●○++++
++●●●+++
+++○●●++
+++○++++
++++++++
++++++++
F5F6E6F4E3とF5F4E3F6E6
++++++++
++++++++
++++●+++
+++○●○++
+++●●○++
++++●○++
++++++++
++++++++
F5F6E6F4G5D6E7G6とF5F6E6F4G5D6E7F7
++++++++ ++++++++
++++++++ ++++++++
++++++++ ++++++++
+++○○○++ +++○○○++
+++○○○●+ +++○○○●+
+++○○○○+ +++○○○++
++++●+++ ++++●○++
++++++++ ++++++++
>>260 ではこれらを別物としてカウントしてます。
あー、あれですよ。「オセロの試合結果」というものをどう取るか次第。 1)勝ち・負け・引き分け派 → 3通りということでFinal answer 2)決着時の盤面が何種類あるか派 → 回転・対称な盤面は1つに 3)棋譜?が何通りあり得るか派 → 全部別物ということで プログラムとか組みやすいのは3)だろうね。自分は2)派。
>>262 >
>>259 みたいな局面を実際に並べて作れるかは疑問に感じてます。
このことに関してちょっと考えてみました。
ランダムに作った盤面の総通りaは、
a = 3^64 = 4.23912E+28
これはオセロの総棋譜数の予測値より格段に少ない値です。
だから、ランダムに作った盤面は棋譜で表現できるんじゃないかと。
しかしランダムで作った盤面の中には囲碁みたいに離れた石が存在するような盤面もありますし、
試合開始前からある真ん中の四つの石がない盤面もあります(3^60で済みますが)。
つまり置石の形からしてオセロでは表現できない盤面があります。
またさらに、存在してそうな形をしていてもオセロ棋譜で表現できないものもあります。
++++++++
++++++++
++++++++
+++○●+++
+++●○●++
++++++++
++++++++
++++++++とか。
すみません当たり前ですね。
ですがここで別の疑問が出てきます。
オセロで作られる局面は、aよりはるかに少ないです(おそらく桁ちがいに)。
オセロの棋譜数は、aよりはるかに多いです(おそらく桁ちがいに)。
ですから、
>>275 のような異棋譜同局面はものすごく多いのでは?
下手したら他の棋譜と局面上交わらない棋譜はないのでは?
という疑問がでてきます。
>>276 60展開後の局面数がもうめちゃくちゃ多く見積もって < 2^64 = 10^19 だから
かなり縮退してそうだね。
あと奇遇性とか連結性(離れ小島は発生しない)とかで絞ったらどうかな。
連結性でいえば、
2x2 の黒石で始まって隣8箇所のどこかに黒石がありさえすれば
黒石が置けるようなゲームを考えると、
必ずそのゲームの棋譜数(局面数)はオセロのそれらを下回るし
解析もやりやすいと思う。
まあオセロより解析が簡単と言えど
その局面数を数え上げるのも結構むつかしいんだが…。
>>275 終盤60手完全読み!をする計算量を求めたいんだと思ったから
3) でどうでしょう?
スレタイが変な気がしてきたw
完全先読みでしたら、2)と3)の混合(
>>274 を一緒とする)が現実的かと思います。
というより2)寄りなのでは?
281 :
よんけた ◆Tl2oC4lIZ2 :2006/02/23(木) 03:13:36
>>274 局面数と棋譜数の違いをとるかとらないかですね。
これらを同じにすると棋譜数=終局の局面数となると思う。
でもどっちにしろ、F5〜G6とF5〜F7を同じにするのはちょっと抵抗があります。
理由は、そもそも同じ局面なのか?ということです。たしかにその後の振る舞いは対称的に同じですが…
なんだろ…うーん。
感覚の問題なんですかね。
282 :
256 :2006/02/23(木) 07:56:46
>>275 >>260 のプログラムを作るときに2)で数えるか3)で数えるか迷いましたが、
作るのが簡単な3)でやってみました。
プログラムの改良にと思ってTransposition Tableをハッシュ法で実装してみたら、
ごく一部でハッシュ値の衝突(全く違う局面から同じハッシュ値が生成)が起きたようで、
値が少し違う結果が出てきてしまいました。(速くはなりましたが)
もうちょっとよく考えてみます。
>>278 石有り/空きの2値のみの局面をランダムに発生させて、
中央の2x2マスが埋まっている割合とそのうち全ての石が繋がっている割合を
モンテカルロ法で調べてみました。
その結果、10億回の試行で、
@ 中央の2x2マスが埋まっているもの:62503304(6.2503%)(1/15.999232≒1/16)
A @のうち全ての石が繋がっているもの:18267113(1.8267%)(1/54.743188)
@は予想通りでした。
Aは見当もつきませんでしたが、、、こんなもんなのかぁ。
283 :
よんけた ◆Tl2oC4lIZ2 :2006/02/23(木) 10:32:40
>>282 256氏お疲れ様です。仕事の早さに感動した
284 :
名無しさん@5周年 :2006/02/23(木) 13:01:49
>>282 ランダムに作った盤面 a=3^64=3.43368E+30 通り
そのうち中央4マスは空にならないとすると b=(3^60)*(2^4)=6.78259E+29
確率はb/a=(2^4)/(3^4)=1/5.06≒19.75%
>石有り/空きの2値のみの局面をランダムに発生させて
出来るなら石有りの発生確率を空きの2倍の確率にしたらどうだろう?
そうすれば@の確率は19.75%に近づくだろうしAの確率も変わるはず。
こんにちは
激安!大人気&バッグ.送料は無料になりました!価格は特恵を与える!
新しいデザインの腕時計とブランド、多くの種類のバッグ、財布、 新品かばん,流行かばん,本皮財布 かばん 財布
新型の腕時計、ローレックスの腕時計、
品質はよくて、価格は合理的だ!
お客さんのメールに 迅速返信します。
入金を確認して、 一日 の以内は出荷できます。
ご注文を期待しています
お世話になります
当店URL:
http://www.chaneljp.com/ [email protected] 以上
宜しくお願いします
>>284 それはオセロゲームの確率。
黒石ゲーム(
>>278 )は
a = 2^64
b = 2^60
で b/a = 1/16
ですよ
287 :
256 :2006/02/23(木) 21:08:46
>>282 のプログラムを改造して石の数毎に分布を調べてみました。
(待つのがめんどくさかったので1億回の試行。ちょっと精度は落ちますが。)
局面発生数のピークは石数が31・32個の付近にありました。(約9.77%)
中央の2x2が埋まったり石が繋がっている割合は石数が増えるほど多くなってました。
一部抜き出します。
石数--局面発生数--埋まてる数--繋がてる数--埋まてる割合--繋がてる割合
40----1079403----161591----103285----0.149704----0.095687
41----616058----102065----70461----0.165674----0.1143740
42----328628----60178----44581----0.183119----0.135658
43----163666----33264----25916----0.203243----0.158347
44----76032----16754----13726----0.220355----0.180530
45----32723----7869----6692----0.240473----0.204504
46----13226----3490----3093----0.263874----0.233858
>>284 >出来るなら石有りの発生確率を空きの2倍の確率にしたらどうだろう?
2倍の確率ってのは黒/白/空きの3値の盤面から石有/空きの2値の盤面に変換すると
石の存在確率が空きの2倍であるといったような事からですか?
上の表で石の存在割合が空きの2倍である42石や43石(64*2/3≒42.667)の辺りを見ると、
0.183119〜(19.75)〜0.203243となってますが、、。
2値の盤面は32ビットの乱数を2個発生させてつなげて作ってました。
各マス毎に乱数を発生させると発生確率を変えられそうですがちょと遅くなりそうな気が。
何かうまい方法はありませんか?
288 :
名無しさん@5周年 :2006/02/23(木) 21:49:53
>局面発生数のピークは石数が31・32個の付近にありました 中心極限定理ってことかな。 0〜60!/n!-1の乱数を発生させて組み合わせのハッシュの逆関数にかける方法で 黒石n個であるときの一様な試行が得られるよ。
289 :
284 :2006/02/23(木) 22:23:37
>>286 はい、それは了解しています。
>>284 は黒石ゲームからオセロゲームへのアプローチのつもりでした。
>>287 お疲れ様です。
石数が45の時任意のマスが埋まってる確率は45/64=0.703
中央4マスが埋まってる確率は0.703^4=0.244≒0.240473なので正解に近いでしょう。
石の発生確率2倍というのは仰るとおり黒/白/空き3値の盤面を想定してのことでした。
前出 b=(3^60)*(2^4)=6.78259E+29 に3値での発生確率を掛ければ概算の有効盤面数が割り出せるかと考えました。
乱数発生ですが、1マス3ビットで5/8=0.625の乱数は作れますが
乱数発生を3倍にしたにしては精度が低いですね。
8ビット乱数(2^8=256)で5マス(3^5=243)を作るのが効率良いのかな?
それより前出 b の式自体を変えたほうが良さそうですね。
290 :
256 :2006/02/24(金) 01:21:55
>>288 >0〜60!/n!-1の乱数を発生させて組み合わせのハッシュの逆関数にかける方法で
>黒石n個であるときの一様な試行が得られるよ。
よくわからなかったのですが、気になるのでもうちょっと詳しく教えてもらえますか?
n個の1をばらまくほうが簡単そうですが、、、これではだめでしょうか?
石数が14個くらいまでならオセロ盤で実際に10手以下の全探索をした盤面と比較できると思ったのですが、
今の方法だと石数が20個くらいまでの局面発生数はほとんどゼロにしかならなかったので、
一様な試行もできればいいなと思ってました。
>>289 石の発生確率を2倍にしてみました。(1億回試行)
乱数は、16個発生させて1マスあたり8ビット使い、
3で割った余りによって石有/空きを決めました。(遅い)
石数--局面発生数--埋まてる数--繋がてる数--埋まてる割合--繋がてる割合
34----810312----59684----14553----0.07366----0.01796
35----1391979----114885----33877----0.08253----0.02434
36----2237616----207915----73092----0.09292----0.03267
37----3388840----353598----144910----0.10434----0.04276
38----4814954----558985----260877----0.11609----0.05418
39----6420635----830327----436917----0.12932----0.06805
40----8024164----1153300----673413----0.14373----0.08392
41----9401529----1500247----959482----0.15957----0.10206
42----10292005----1814899----1251133----0.17634----0.12156
43----10535592----2045606----1508248----0.19416----0.14316
44----10053709----2147383----1673889----0.21359----0.16649
45----8931797----2095020----1712559----0.23456----0.19174
46----7381673----1897347----1613363----0.25703----0.21856
47----5646603----1586556----1394172----0.28098----0.24690
48----4002903----1227091----1109087----0.30655----0.27707
49----2617925----874116----807797----0.33390----0.30856
50----1568075----568807----535577----0.36274----0.34155
51----861444----339229----324220----0.39379----0.37637
ん〜、8ビット使って3の剰余で分ける…0が1と2より1/85だけ多い割合で出るからこの数のシミュには向かないのでは? 剰余にかかる時間 >> 乱数1個発生時間 だろうし、32ビットのまま行ってみては?
292 :
256 :2006/02/24(金) 01:49:06
今32ビットで、1億回試行中ですが、 さっき1000万回で比較したら処理時間が2倍ちょっとになっちゃいました。
お疲れ様です。
こっちは後発なので2)の方針でいこうと思います。(対称解は1つ扱い)
>>120 が正確ではない(4×4だから)けど参考になる、と自分用リンク。
294 :
256 :2006/02/24(金) 02:26:11
8ビットだと確かに精度が悪くなっているようです。
>>290 と同じ範囲でもだいたい1‰以上の誤差が出てきてます。
50〜58石あたりでは数%も誤差がありました。
石数--局面発生数--埋まてる数--繋がてる数--埋まてる割合--繋がてる割合
34----819799----59304----14654----0.07234----0.01788
35----1394987----113825----33552----0.08160----0.02405
36----2239644----206965----72737----0.09241----0.03248
37----3370795----349045----142996----0.10355----0.04242
38----4786955----553633----258442----0.11565----0.05399
39----6383626----825334----434910----0.12929----0.06813
40----7979411----1147014----670576----0.14375----0.08404
41----9371145----1492668----953573----0.15928----0.10176
42----10279583----1811139----1249041----0.17619----0.12151
43----10544519----2046793----1506964----0.19411----0.14291
44----10086594----2156237----1680278----0.21377----0.16659
45----8979083----2107749----1723086----0.23474----0.19190
46----7424025----1909494----1623887----0.25720----0.21873
47----5688036----1597364----1403921----0.28083----0.24682
48----4014876----1231054----1111899----0.30662----0.27694
49----2609923----870280----803689----0.33345----0.30794
50----1558130----564842----531864----0.36251----0.34135
51----847121----332688----317532----0.39273----0.37484
そろそろ難しくてついていけなくなりましたが、一生懸命レスさせていただきますw 僕はプログラムのプもかけません。もしかしたら勘違いしているのかもしれません。 空きの発生確率を Og 。石の発生確率を Ob 。(つまり Og + Ob = 1 ) とする。 石数が n の時の局面発生率は、 64Pn * Og^(64-n) * Ob^n です。 ---Og-----Ob A--0.3329--0.6671 B--0.3330--0.6670 C--0.3331--0.6669 D--0.3332--0.6668 E--0.3333--0.6667 F--0.3334--0.6666 G--0.3335--0.6665 H--0.3336--0.6664 I--0.3337--0.6663 と石空き発生率A〜Jに振り分ける。 例えばEで石数が40の局面発生率は、 64P40 * 0.3333^24 * 0.6667^40 = 0.080229095
続き 次にEを基準として次の表を作成する。 石数--A/E---B/E----C/E---D/E----E/E----F/E---G/E----H/E----I/E 3-----0.9310--0.9478--0.9649--0.9823--1.0000--1.0180--1.0363--1.0550--1.0740- 6-----0.9361--0.9517--0.9675--0.9836--1.0000--1.0166--1.0335--1.0507--1.0682- 9-----0.9412--0.9555--0.9701--0.9850--1.0000--1.0153--1.0308--1.0465--1.0624- 12----0.9463--0.9594--0.9728--0.9863--1.0000--1.0139--1.0280--1.0423--1.0567- 15----0.9514--0.9633--0.9754--0.9876--1.0000--1.0125--1.0252--1.0380--1.0510- 18----0.9565--0.9672--0.9780--0.9890--1.0000--1.0112--1.0224--1.0338--1.0454- 21----0.9617--0.9712--0.9807--0.9903--1.0000--1.0098--1.0197--1.0297--1.0397- 24----0.9669--0.9751--0.9833--0.9916--1.0000--1.0084--1.0169--1.0255--1.0341- 25----0.9722--0.9791--0.9860--0.9930--1.0000--1.0071--1.0142--1.0214--1.0286- 30----0.9774--0.9830--0.9887--0.9943--1.0000--1.0057--1.0115--1.0172--1.0230- 33----0.9827--0.9870--0.9913--0.9957--1.0000--1.0044--1.0087--1.0131--1.0175- 36----0.9880--0.9910--0.9940--0.9970--1.0000--1.0030--1.0060--1.0090--1.0120- 39----0.9934--0.9950--0.9967--0.9983--1.0000--1.0017--1.0033--1.0050--1.0066- 42----0.9988--0.9991--0.9994--0.9997--1.0000--1.0003--1.0006--1.0009--1.0012- 45----1.0042--1.0031--1.0021--1.0010--1.0000--0.9990--0.9979--0.9968--0.9958- 48----1.0096--1.0072--1.0048--1.0024--1.0000--0.9976--0.9952--0.9928--0.9904- 51----1.0151--1.0113--1.0075--1.0038--1.0000--0.9963--0.9925--0.9888--0.9851- 54----1.0206--1.0154--1.0102--1.0051--1.0000--0.9949--0.9898--0.9848--0.9798- 57----1.0261--1.0195--1.0130--1.0065--1.0000--0.9936--0.9872--0.9808--0.9745- 60----1.0317--1.0237--1.0157--1.0078--1.0000--0.9922--0.9845--0.9769--0.9693- 63----1.0373--1.0278--1.0185--1.0092--1.0000--0.9909--0.9819--0.9729--0.9641- ※A/Eは A割るE という意。少数5桁目を四捨五入しました。
続き つまりなにが言いたいかといいますと、石数42個らへんが一番コンピューター乱数の仕様誤差(?)の影響を受けにくく、石数42個らへんから、上にも下にも影響を受けやすくなる。ということです。 と思います。
298 :
名無しさん@5周年 :2006/02/24(金) 18:17:56
299 :
293 :2006/02/24(金) 22:20:33
前言撤回。複数がやるにしても同じ結果に到達しなきゃ確証得られませんし
自分も3)方向で行きます。取りあえずは
>>260 と同じ物が出るかを確認し、
もう少し先の手まで進めて上から押さえるつもりです。
300 :
284 :2006/02/24(金) 22:23:54
石の発生確立を2倍にするのは難しいようですね。
発生確率をRとし 0<R<1 とすると
64マスで石の個数 n となる確率は R^n*(1-R)^(64-n) となります。
(実際はこれに組み合わせ数を掛けないといけないが補正係数の算出には不要なので省略)
発生確率2/3と1/2の差を2値での個数ごとの結果に掛け合わせたらどうでしょうか。
石の個数nの時の補正係数は{(2/3)^n*(1-2/3)^(64-n)}/{(1/2)^n*(1-1/2)^(64-n)}
>>287 のデータに補正係数を掛けると
石数--補正係数------局面発生数----埋まてる数----繋がてる数
40----5.906894946---6375920.125---954501.0612---610093.6445
41----11.81378989---7277979.773---1205774.465---832411.4496
42----23.62757978---7764684.289---1421860.496---1053341.134
43----47.25515957---7734062.946---1571895.628---1224664.715
44----94.51031913---7185808.584---1583425.887---1297248.64
45----189.0206383---6185322.346---1487403.403---1264926.111
46----378.0412765---4999973.923---1319364.055---1169281.668
石数0〜64のすべてに補正係数を掛けて埋まってる数、繋がってる数のトータルを
出せれば石の発生確率2/3のときのデータになるはずです。
補正係数を掛けると局面発生数のピークも42〜43になるようです。
301 :
256 :2006/02/25(土) 00:47:27
>>287 >局面発生数のピークは石数が31・32個の付近にありました。(約9.77%)
見直してて気づいたのですが、このようになるのはおかしいですね。
0以上のの乱数を発生させてたようで常に0のビットが1箇所あります。
初歩的なミスですみません。石の発生確率が1/2のはやり直します。
302 :
293 :2006/02/25(土) 01:03:02
>>301 あ、よかった。試しに真ん中4つが埋まってるプログラムを作ったら
10億回のテストで約2倍(発生回数も、埋まってる回数もなので割合はほぼ一緒)
だったのでちょいと不安だったのですよ。
ついでにちょいと訪ねてみます。繋がりチェックはどううやってます?
303 :
293 :2006/02/25(土) 01:19:47
作った、ていうだけだと無意味なので一応結果。 1/2の割合で石を置いた場合、真ん中4つが埋まってるかどうかのチェック 石数-埋まる盤数/発生盤数-埋まる割合 26---1218966/-45486584---2.680% 27---1907062/-60649877---3.144% 28---2785026/-75805416---3.674% 29---3779166/-88870059---4.252% 30---4802368/-97776964---4.912% 31---5689156/100905325---5.638% 32---6306276/-97783629---6.449% 33---6517819/-88887714---7.333% 34---6304380/-75812328---8.316% 35---5693658/-60654246---9.387% 36---4801615/-45477307--10.558% 37---3783263/-31960276--11.837% 38---2779478/-21035323--13.213% 39---1907262/-12943552--14.735% 40---1217947/--7439856--16.371% 41----725024/--3994642--18.150% 42----400816/--1995761--20.083% 43----205262/---929754--22.077% 44-----97770/---401131--24.374% 45-----42627/---160050--26.634%
304 :
256 :2006/02/25(土) 01:26:04
305 :
名無しさん@5周年 :2006/02/25(土) 01:51:15
>>256 っちにひとつ質問。
パスは1手と数える?
>>260 と同じ結果を求めてるんだが9個目から答えが合わないんだ。
306 :
305 :2006/02/25(土) 01:51:32
ごめんあげちゃった
307 :
256 :2006/02/25(土) 02:01:36
>>256 >>260 ではパスは1手として数えてません。
>
>>260 と同じ結果を求めてるんだが9個目から答えが合わないんだ。
うーん・・自分の方が正しいという自信が無いので見直してみます・・。
308 :
305 :2006/02/25(土) 02:24:43
9手までの試合数は
passを1手と数えると 3005288
passを0手と数えると 3005320 (=
>>260 )
となりました。
まあどっちでもいいんじゃないでしょうか。ありがとう。
wikiとか作っちゃていいすかね
310 :
256 :2006/02/25(土) 10:30:54
石の発生確率が1/2のをやり直しました。(1億回試行)
乱数はメルセンヌ・ツイスタを実装して使いました。
石数--局面発生数---埋数-----繋数----埋割合(%)--繋割合(%)
26-----3259193-----76287-----2155-----2.341-----0.066
27-----4590786----127177-----4935-----2.770-----0.107
28-----6062081----193814----10284-----3.197-----0.170
29-----7532330----280764----19920-----3.727-----0.264
30-----8780535----378290----35483-----4.308-----0.404
31-----9634737----476656----58036-----4.947-----0.602
32-----9935619----560162----88116-----5.638-----0.887
33-----9634648----620294---121801-----6.438-----1.264
34-----8783902----641192---156250-----7.300-----1.779
35-----7533047----620987---182592-----8.244-----2.424
36-----6066048----562048---196924-----9.265-----3.246
37-----4592260----477504---195003----10.398-----4.246
38-----3262028----379078---177332----11.621-----5.436
39-----2172546----281015---148555----12.935-----6.838
40-----1355366----195240---114113----14.405-----8.419
41------794734----127204----81540----16.006-----10.260
42------435867-----76380----52814----17.524-----12.117
43------222876-----43355----32009----19.453-----14.362
44------106482-----22713----17578----21.330-----16.508
45-------47634-----11304-----9285----23.731-----19.492
局面発生数のピークが32に来ましたけど、
0〜64のちょうど真ん中だからこれでいいですよね?
>>309 どんなWikiですか?
>>310 話題の専門化が進むと、筋がみえなくなってくると思うんですよ。
Aの問題を解こうとするとBという問題にぶちあたる
↓
Bの問題を解こうとするとCという問題にぶちあたる
↓
…
みたいに。
この辺をどこかに提示するしないとではスッキリさが違うと思います。あとから来る技術者にもとっかかりやすくていいかと。
一番の目的はこれですね。
あとは自分のデータを載っけたり理論を載っけたり、討論用のホワイトボードとして使うのもいいと思います
でも僕はコテをつけてしまったので他の名無しさんが立ち上げるのがいいかもしれません
312 :
256 :2006/02/25(土) 11:56:23
>>311 便利そうですね。
他の皆さんの意見も聞いてみたいです。
>>308 あ、合ってましたか。
うれしいです。ありがとうございます。
313 :
293 :2006/02/25(土) 13:40:26
>>311 Wikiキボンヌ。実は誰かが纏めサイト作ってくれるのを待ってた。待ってただけで自分から行動してなかった訳ですが…orz
314 :
256 :2006/02/25(土) 14:40:55
ある石の周囲にある石の数をとりあえず接続数と呼ぶことにします。 接続数について考えてみました。 オセロで実際に存在する盤面は、(当たり前のもありますが、、) ・全ての石の接続数は1以上。 ・接続数が1の石に接続している石の接続数は2以上。 ・接続数が1の石とそれに接続している石は同じ色。 ↓こういうのは存在しない。 ●+++++++ +○++++++ ++●●○○++ ++●○●○○+ ++○●○○++ ++○●●○++ ++●●●●++ +●●●●●++ ・接続数が1の石から3個以下石を辿ると接続数が3以上の石がある。 ↓こういう細長いのは存在しない ++++++++ +●●●+●●+ +●+●++●+ +●+●●+●+ +●+●●+●+ +●++++●+ +●●●●●●+ ++++++++ 最後のは証明してませんが反例はまだ見つかってません。 どなたか検証お願いします。
315 :
293 :2006/02/25(土) 15:48:58
>>314 >・接続数が1の石とそれに接続している石は同じ色。
に対しては反例を挙げておきます。もう少し限定をかければ成立するかもしれませんが。
↓の石に関して。
●+++++++ → ●+☆+++++
+●++++++ → +○++++++
○○○○○○++ → ○○○○○○++
++●○●○○+ → ++●○●○○+
++○●○○++ → ++○●○○++
++○●●○++ → ++○●●○++
++●●●●++ → ++●●●●++
+●●●●●++ → +●●●●●++
>・接続数が1の石から3個以下石を辿ると接続数が3以上の石がある。
の具体例に関しては(極端な例だからかもしれないけど)他の点からも指摘できます。
++++++++
+CBA+●●+
+D+@++●+
+●+●●+●+
+●+●●+●+
+●++++●+
+●●●●●●+
++++++++
2と3の順番は逆になるかもしれませんが…とりあえず5は挟む物がないので置けません。
ついでに、最後のは分かりにくい気がするので言い換えを提案します。
・接続数が1の石から接続数が2以下の石だけを辿ると2個分までしか辿れない。
316 :
256 :2006/02/25(土) 15:57:36
>>315 ああ、なるほど。
もうちょっとよく考えて色んなふるいを作りたいと思います。
317 :
305 :2006/02/25(土) 18:54:36
反復深化で黒石ゲーム全探索してみました。 黒石ゲーム 7手目 679,519,480パターン, 最大36分岐 オセロ 7手目 55,092パターン, 最大12分岐 オセロ 11手目 212,260,880パターン, 最大18分岐 はい。
318 :
256 :2006/02/28(火) 10:31:21
黒石ゲームで石数が4〜64の範囲の一様な試行もやってみました。 データとかグラフを載せるとこが欲しいですね・・。
320 :
293 :2006/02/28(火) 13:03:45
Wikiキタ━━━━(゚∀゚)━━━━ッ!!
321 :
256 :2006/02/28(火) 16:38:04
>>319 すばらしい。うれしいです。感謝です。パチパチ
318のは今試行の数を増やしているところです。
終わってまとめたらアップします。
>>319 すません文字が小さくて読みずらいんですけど
323 :
名無しさん@5周年 :2006/02/28(火) 21:40:59
さっき、Iリばーしで、63-0を達成。相手はわざとやってだ訳ではないだろうけど?。 ちなみに64-0って可能なのかな?
可能です。 昔やられた事があります
326 :
284 :2006/03/01(水) 13:18:49
>>319 wikiいいね。乙です
>>314-315 あたりを読んでて気が付いたが、
オセロの場合石を置くには最低挟める石と挟む為の石が必要なので、可能盤面は
「初期配置の中央4石を除き、全ての石は3個以上の列に含まれる」と言える。
なので
>>314 の下の図は、オセロでは有り得ないことが証明出来る。
(
>>315 の反例を一般化してみた)
黒石ゲームのルール、「隣8箇所のどこかに黒石がありさえすれば黒石が置ける」
というのを「2連続(以上)の黒石の延長上に置ける」とすればどうだろう?
そうすれば、黒石ゲームでも同様のことが言えるようになる。
327 :
284 :2006/03/01(水) 22:34:19
10万回ランダムに棋譜を発生させてみた。パスは1手としない(必ず60手以内で終わる) 平均手数の積は1.4E+53 標準偏差も出して確からしさも出そうかと思ったが1手99%として0.99^60=54%なのでやめた。 パス、連パスによるゲーム終了は10〜16手目あたりと終盤に多く中盤は少ない。 手番---回数----最大--最小---総手数---Σ(総手数^2)--平均---標準偏差---パス--ゲーム終了 --1---100000-----4-----4-----400000----1600000----4.0000----0.0000------0-----0 --2---100000-----3-----3-----300000-----900000----3.0000----0.0000------0-----0 --3---100000-----5-----4-----466503----2198527----4.6650----0.8732------0-----0 --9---100000----15-----1-----755769----6092271----7.5577----1.6974-----72-----0 -10----99981----16-----1-----789548----6684874----7.8970----1.9073-----19----19 -11----99977----17-----1-----834035----7433175----8.3423----2.0992-----29-----4 -30----99952----24-----1----1202014---15378396---12.0259----2.8944------1-----0 -31----99951----25-----1----1185681---14989101---11.8626----2.8772------9-----1 -32----99951----23-----1----1192029---15133605---11.9261----2.9610------2-----0 -57----99950-----4-----1-----295764-----967274----2.9591----0.4936---2248-----1 -58----99948-----3-----1-----232387-----594419----2.3251----0.6372---4422-----2 -59----99916-----2-----1-----167192-----301744----1.6733----0.4472---9845----32 -60----98996-----1-----1------98996------98996----1.0000----0.0000--25951---920
328 :
271 :2006/03/02(木) 03:52:59
>>326 >黒石ゲームのルール、「隣8箇所のどこかに黒石がありさえすれば黒石が置ける」
>というのを「2連続(以上)の黒石の延長上に置ける」とすればどうだろう?
それいいね。ずいぶん絞れました。
7手後の全棋譜数
オセロ / 黒石ゲーム / 黒石ゲーム2(
>>326 )
55,092 / 679,519,480 / 126,786,952
うーん。完全探索(反復深化)派としては、
黒石ゲームのようにゲームの一般化をしても
ノード数が増えて計算時間が増えるだけで、
(
>>271 式)の全棋譜数の上界設定に使うにしても
結局オセロの探索結果が12手まで求められるっていうことが
一番上界設定に寄与している気がする。。あたりまえか。
純粋な理論による上界設定には使えそうだけどね。
329 :
271 :2006/03/02(木) 04:06:42
オセロ12手後 の棋譜数 1,939,899,208 譜 、最大着手数 20手 でした。
オセロ棋譜数上界更新。
1,939,899,208 * 48! < 2.4082 * 10^70
10手後から考えて1桁しか落ちてないなぁ…。
>>256 の最大着手数の流れはもう終わったの?
これで最大着手数 33手って分かれば 順列計算のなかの
48*47*...*34*33 が全部 33 に落ちてさらに1、2桁上界、落ちるんですが。
330 :
284 :2006/03/02(木) 09:29:22
>>329 最大着手可能数について考えてみました。
オセロに着手可能数47の盤面がある、と仮定する。
仮定条件、黒番とし、黒石は挟む石、白石は挟まれる石とする。
@盤面にある石は17個以下である(64-47=17)
A黒石(挟む石)1個に対し着手可能数は8(8方向)なので
47/8=5.875→盤上に6個以上の黒石がある。
B白石(挟まれる石)1個に対し着手可能数は4(縦横斜めの4ライン)なので
47/4=11.75→盤上に12個以上の白石がある。
@の17個以下とA+Bの18個以上は矛盾する。
故に仮定の「オセロに着手可能数47の盤面がある」は間違いなので
オセロの最大着手可能数は46以下である(証明終了)
もう少し条件を加えられればさらに減らせると思うのですが。
331 :
284 :2006/03/02(木) 09:58:00
>>330 は、もっと単純に出来ましたね。
330の条件AとBにより、着手可能数は
int(盤上の石数/3)*8以下になる(intは切捨ての意)
12手目、13手目は石数が16,17なのでint(17/3)*8=40
>>329 の12手目までを使わせてもらって
1,939,899,208 * 40 * 40 * 46! = 1.708E+70
12手目の最大着手数20も入れて
1,939,899,208 * 20 * 40 * 46! = 8.540E+69
332 :
293 :2006/03/02(木) 17:58:43
全探索(11手まで)してみたら
>>260 と微妙に違ってた。
[ 0] -> 1( 0)
[ 1] -> 4( 0)
[ 2] -> 12( 0)
[ 3] -> 56( 0)
[ 4] -> 244( 0)
[ 5] -> 1396( 0)
[ 6] -> 8200( 0)
[ 7] -> 55092( 0)
[ 8] -> 390216( 0)
[ 9] -> 3005320(228)
[10] -> 24571192(356)
[11] -> 212260296(6384)
括弧内はゲーム終了数(内数)。9手目でのゲーム終了数分を足すと10手目も同じなんだけど…
Wikiにある11手目のデータも9手目・10手目での終了分を足せば同じ結果に。
…私が悪いの?
333 :
293 :2006/03/02(木) 21:51:00
12手まで出したついでによんけたタンの分岐平均(どうやって出したの?)と比較してみた 手数平均分岐←の積実際の数誤差[%] 11440 2312120 34.664555561.785714286 44.36062392442.049180328 55.8582140013960.286532951 65.8361817082000.365853659 76.723554930550920.294053583 86.94363814113902162.256442586 97.5566288217030053204.097733353 107.900522770584245711927.328126368 118.376819074462821226029610.13645435 128.7781674356344193989224013.68817765 平均分岐数を単純に掛け合わせるのは危険っぽい。
334 :
293 :2006/03/02(木) 21:51:40
ごめん
>>333 じゃ読めないね。Wikiに入れておく。
>>333 方法は
>>165 で、一万本試した結果すね。もっとちゃんと書こうとおもってます。
比べるならメモ04(284さん)のほうがいいと思いますよ。
12手目で86%ですか。。うーんやっぱきびしーですね。
メモ04の12局目までの積は1696356961でした。
僕のと同じくらい誤差がありますね。
これは一体・・
あと24局から32局にかけて手数平均がギザギザです。面白いですね。
336 :
284 :2006/03/03(金) 08:02:23
12手の全検索、というか1/4検索です。
初手は1手固定にして、全棋譜数、パス、終了数は結果を4倍しています。
|手|最大手数| 全棋譜数 |パス |終了 |
|-1|-------0|---------------4|-------0|-----0|
|-2|-------3|--------------12|-------0|-----0|
|-3|-------5|--------------56|-------8|-----0|
|-4|-------6|-------------244|-------0|-----0|
|-5|-------9|------------1396|-------0|-----0|
|-6|------11|------------8200|-------0|-----0|
|-7|------12|-----------55092|-------0|-----0|
|-8|------14|----------390216|-------0|-----0|
|-9|------15|---------3005320|------24|-----0|
|10|------16|--------24571192|-----228|---228|
|11|------18|-------212260296|-----932|---356|
|12|------20|------1939892240|----7396|--6384|
ゲーム終了の考え方は
>>332 に近いですが
10手目が打てない場合に10手目の終了としています。
(332とは1手ずれる)
実は一晩かけて13手目までやったんですが結果がおかしいです。
変数は8バイト用意しておいたんですが、出力をミスったかもしれない。
|13|------21|------1249899332|---35588|-16384|
337 :
293 :2006/03/03(金) 09:10:51
ちょっと遅れたかな。一応こちらも13手探索終了 64bit整数を使ったつもりなので出力は大丈夫なはずです。 |手| 全棋譜数 |終了 | |-1|---------------4|-------0| |-2|--------------12|-------0| |-3|--------------56|-------8| |-4|-------------244|-------0| |-5|------------1396|-------0| |-6|------------8200|-------0| |-7|-----------55092|-------0| |-8|----------390216|-------0| |-9|---------3005320|-----228| |10|--------24571192|-----356| |11|-------212260296|----6384| |12|------1939892240|---16384| |13|-----18429768516|--299624| ゲーム終了の考え方は10手目を打った後に両者が置けなくなったら10手目の終了としています。 確かに変ですね。改良します。
338 :
284 :2006/03/03(金) 10:15:20
>>337 乙です。12手目まで一致してますので安心しました。
ゲーム終了の考え方は336と337(332初出)のどちらが良いでしょう?
私の場合(336)はプログラミングの都合だけだったので、他の皆さんの意見も聞きたいです。
>>333-335 手数平均の積と実数の誤差ですが
これは平均の算出誤差というより手法としての誤差でしょうね。
全検索で手数平均を算出しても同じくらいの誤差があるでしょう。
12手で14%の誤差で、手が進むにつれて誤差は大きくなるでしょうし
平均10手で20%の誤差があるとして0.8^(60/10)=0.26
60手目で99%(実数との割合が100倍違う)としても
10^51〜10^56くらいではないでしょうか。(もう少し大きくなるかもしれないが)
まあ、これくらいざっくりした数値でしかないのは確かですが、無意味な値ではないと思います。
339 :
284 :2006/03/03(金) 11:28:43
ごめん。
>>336 の表の3手目のパスの値 8 は 0 が正解です。
(動作チェックルーチンの消し忘れ)
>>337 も表はコピペみたいだから3手目の終了は0ですね。
すみませんでした。
340 :
293 :2006/03/03(金) 14:04:32
さらに進めて14手探索しました。
>>336 と同じく1/4探索ですが。
|手|分|--全棋譜数--|--パス-|--終了-|
|-1|-0|-----------4|------0|------0|
|-2|-3|----------12|------0|------0|
|-3|-5|----------56|------0|------0|
|-4|-6|---------244|------0|------0|
|-5|-9|--------1396|------0|------0|
|-6|11|--------8200|------0|------0|
|-7|12|-------55092|------0|------0|
|-8|14|------390216|------0|------0|
|-9|15|-----3005320|-----24|------0|
|10|16|----24571192|------0|----228|
|11|18|---212260296|----576|----356|
|12|20|--1939892240|---1012|---6384|
|13|21|-18429768516|--19204|--16384|
|14|22|184042835408|--67536|-299624|
私は全探索は一旦この状態で手を引こうと思います。
時間がかかる(↑で200分弱)割になかなか前へ進めないので。
n手目のパス数と終了数はn-1手目を打った後の状態で
パスをする必要がある局面数と終わった局面数です。
これらは全棋譜数には内数として含まれてますが
パス数と終了数とは排他的に数えてます。
>>336 4バイト符号付き整数でカウントしちゃってるんじゃないかな。
ちょうど 2,147,483,647 が4バイト符号付き整数の最高値だよ。
俺も同じところで負の値が出ちゃったことがある。
>>284 すごーい。数学スレっぽくてかっこいいな。
wiki追加しとこ。
343 :
342 :2006/03/03(金) 21:47:48
「手」を n=(盤上の石の数)-4 と逆に定義して、
1つパスが起きたらパス数p[n]を1つ増やし、
終局が起きたら終了数e[n]を1つ増やし、
棋譜数f[n]を求める
>>293 の数え方がわかりやすいんじゃない?
「手」と盤上の石の数の対応が簡単につくし。
俺も
>>293 と同じ結果の出るアルゴリズムが組めたよ。
>>331 >
>>330 は、もっと単純に出来ましたね。
>330の条件AとBにより、着手可能数は
>int(盤上の石数/3)*8以下になる(intは切捨ての意)
うーん、この最後の int(盤上の石数/3)*8 が分からないや…。
>>330 は理解できたんだけど。
345 :
284 :2006/03/04(土) 08:08:43
13手1/4検索です。112分かかりました。
このまま14手をやると10倍くらいとしてほぼ1日かかるorz
>>340 の14手200分は早いですね。すばらしいです。
|手|最大手数|-全棋譜数----|-パス-|-終了-|
|-1|-------4|------------4|-----0|-----0|
|-2|-------3|-----------12|-----0|-----0|
|-3|-------5|-----------56|-----0|-----0|
|-4|-------6|----------244|-----0|-----0|
|-5|-------9|---------1396|-----0|-----0|
|-6|------11|---------8200|-----0|-----0|
|-7|------12|--------55092|-----0|-----0|
|-8|------14|-------390216|-----0|-----0|
|-9|------15|------3005320|----24|-----0|
|10|------16|-----24571192|---228|---228|
|11|------18|----212260296|---932|---356|
|12|------20|---1939892240|--7396|--6384|
|13|------21|--18429768516|-35588|-16384|
パス数に終了数は含まれてます。
全棋譜数にパス数は含まれてます。
346 :
284 :2006/03/04(土) 08:32:12
>>341 カウントは8バイト整数でやってたんだけど、出力が4バイトだったorz
修正したものが
>>345 です。
>>344 >うーん、この最後の int(盤上の石数/3)*8 が分からないや…。
330の条件A黒石(挟む石)1個に対し着手可能数は8(8方向)から、
A’着手可能数8の時、黒石は最低1個必要。
B白石(挟まれる石)1個に対し着手可能数は4(縦横斜めの4ライン)なので
B’着手可能数4の時、白石は最低1個必要。
よって着手可能数8の為には最低限、黒石が1個白石が2個の計3個必要。
なので盤面の石で3個セットがいくつとれるか(int(盤上の石数/3))に
着手可能数8をかけました。
>>341 なるほどー。理解しました。ありがとう。
あ、1/4探索って対称性使ってるから正確だったりする?
1手目4着手できるけど1つしか探索しないっていう方法かな?
とりあえず週末出かけるので13手目の探索かけっぱなしにしときます〜
348 :
284 :2006/03/04(土) 13:02:57
>>347 1/4探索は、初手4手のうち1手を決め打ちして以下を探索してます。
第1手を打った形は対象形であり、盤の64枡すべてが1枡対1枡に対応するので対象性が証明出来ますね。
>>338 の平均手数の積と実数の誤差について考えてみました。
参考データをWikiにUPしました。5手目まで全349棋譜です。
ttp://www9.atwiki.jp/othello/pages/29.html この棋譜がすべて同確率で発生するとすれば発生確率は1/349です。
しかし実際は違います。
初手F5に対してF4、D6、F6の選択肢は各々1/3です。
これはコンピュータで乱数打ちする場合はもちろん、
人が打つ場合も選択肢は3つですから、1/3です。
(もちろん人それぞれ有利な手を考えて打ちますが、選択肢が3であるのは変わりません)
それを踏まえて棋譜@F5(3)F4(5)C3(6)C4(6)B3とAF5(3)F6(4)D3(5)C3(4)B3の発生確率を比べてみます。
()内数値は選択肢の数(着手可能数)です。
@の発生確率は1/3*1/5*1/6*1/6=1/540
Aの発生確率は1/3*1/4*1/5*1/4=1/240
発生確率が2倍以上違いますね。
こう考えると着手可能数の多い棋譜の発生確率は棋譜数の割合より少なくなりますね。
ということは「平均手数の積」は棋譜実数より少なくなる、ということでいいのかな?
>>348 そのことの間違いはわかりません。
ですが別の見方ができます。
全ての棋譜はおのおの、始点から一本道です。局面みたいに途中で合流するみたいなことはありません。
始点から見た場合、同じ局数の棋譜は同じように平等であるので、その道が選ばれる確率は平等のはずです。
ということが成り立つと思います。
351 :
293 :2006/03/05(日) 00:30:27
分岐数だから相加平均(算術平均;一般的な「平均」のことで、足し合わせてnで割る)よりも 相乗平均(幾何平均;掛け合わせてn乗根を取る)の方が良いのでは?と思って試した結果を 5手検索2に書いたけど、ランダム棋譜からの推測の正確性を計るという意味だと 5手検索の方が良かったかもね。
352 :
284 :2006/03/05(日) 13:48:45
「平均手数の積」の問題点を整理してみます。
(1)ランダム棋譜の発生確率が全て同じではない事
>>348 (2)全棋譜の平均手数を出しても誤差があること>>Wiki5手検索2
>>333-335 の指摘での誤差は、この両方が入ってると思われます。他にもあるかも。
>>349 これは(1)の話しですね。
私も最初、同じような誤解をしてました。333の指摘で考えていて348に気が付きました。
多分、乱数によらず過去の棋譜を集めてもこの問題の解決にはならないと思われます。
むしろこのあたりを考慮したプログラムを組むか、ですね。
その着手以後の手数を数えて乱数発生確率を変えるか、ですが全検索と同じことになってしまいます。
せめて数手先までの着手可能数で乱数発生確率を使うかですかね。
>>351 これは(2)の話しですね。
>5手検索2に書いたけど、ランダム棋譜からの推測の正確性を計るという意味だと
>5手検索の方が良かったかもね。
いえ、ランダム棋譜からの推測だからこそ5手検索2で良いと思いますよ。
なるほど5手目着手可能数の誤差が一般平均1.129(12.9%)、幾何平均1.0570(5.7%)。
一般平均よりは誤差が少なくなってますね。
ただ千回も試行すれば相乗の数値がオーバーフローします。これはプログラミングの問題?
353 :
293 :2006/03/05(日) 14:56:22
>>352 解釈ありがとうございます。私は考えるのが苦手なもんで。
プログラム中で平均とっているなら、log(分岐数)の総和を取って
1/n掛けた後にexp(その結果)でいかがでしょ?
単純にかけ算してたら6手全探索でもオーバーフロー起こしましたし。
354 :
284 :2006/03/05(日) 20:13:39
>>352 の続き、5手検索2で調和平均もやってみました。
5手目までは良い感じですが6手目で0.8923(-10.8%)
うーむ・・・
>>353 >log(分岐数)の総和を取って1/n掛けた後にexp(その結果)
エクセルで試したんですが、答えが合いません。。
logとかexpが、あんまり解ってないので・・・orz
355 :
293 :2006/03/05(日) 20:53:39
>>354 説明不足で申し訳ない。エクセルでやるならlogはln()を使って下さい。Cのプログラム中ならlog()でOKです。
それ使ってやった結果を、普通に掛けてn上根取った結果(≦5手目)と比較したら
1手目:4.88498E-15
2手目:5.32907E-15
3手目:1.77636E-15
4手目:8.88178E-16
5手目:8.88178E-16
と、十分小さいと思われますんで。
356 :
293 :2006/03/05(日) 21:15:25
更に説明不足。↑の数は「普通に掛けて…」と「log()の総和を…」とで出た結果の差の絶対値
完全探索の話
>>348 の話を踏まえて対称形による枝刈りを一般化したらいいかな。
対称形の盤面をみつけたときは対称形の中のひとつだけ深化して
あとで k 倍すれば探索空間が減らせて探索がより高速になりますね。
対称形(とその復元のための倍率 k)は
90°回転対称(k=4), 180°回転対称/鏡面対称(k=2)、非対称(k=1)
ですね。
ちょっと入れてみましょう。分岐が減って速くなるか、
あまり対称形が発生せず対称形の判定に時間がかかって逆に遅くなるか見ものです。
っていうかもうみんなやってるのかもしれない。。
358 :
293 :2006/03/05(日) 23:03:00
>>357 重複チェックと似てますね。ただk倍ってのは簡単にはいかない気がしますが。
1.探索した盤面が初めてなら、探索後に分岐数と一緒にDataBaseに登録する。
2.これから探索しようとするものと(対称形で)同じ盤面がDBにあれば、その分岐数を使う。
ってのが実際的かな?正確には盤面の状態と黒番・白番って情報もいるけど。
>>358 重複チェックってやってます?
盤面多いんで結局10手以上になるとメモリ的にDBの実装が難しいと思うんですが。
0.深化の際に累計対称倍率Kというものを再帰関数の引数として与えることにする。
1.0手目、K=4を引数に与えて深化開始。
2.再帰関数中、対称形チェック。形によってその盤面の倍率 k を求める。
3.K*k を次の再帰関数の引数に与えて深化。
4.試合終了または深度最大になったらKの値を棋譜数カウントに加える。
5.バックトラックの際には既に深化した分岐の対称形には手を出さない
(たとえば、x軸鏡面対称なら盤面の半分より以東の探索をカットする)
これでどれだけ深い階層の探索にもメモリを使わなくて済みます。
(直系の盤面データ(最大60個)と対称倍率とバックトラック位置だけスタック領域として持てばいいので)
>>352 (1)について
今までずっと
>>349 が正しいと思ってました(´Д`lll)
やだわもう。
これから
一つの棋譜からなる手数の積の分布を把握し、
そこから棋譜のツリーがどうなっているのかを調べたいと思います。
なにかヒントがあるかもしれません。
361 :
284 :2006/03/06(月) 13:18:36
>>355-356 解説ありがとう。エクセルで結果が同一となるのを確認できました。
プログラムのほうは、まだですがその内やってみます。
>>359 なるほど、とある盤面の対称形を使うわけですね。
0手目(初期配置)で言えばu軸対称(k=2)、v軸対称(k=2)、180°対称(k=2)ですがk=4ですよね。
v |
\++++/
++++++
_++○●++_x
++●○++
++++++
/++++\
u |y
u軸&v軸 あるいは x軸&y軸 が成立する時は180°対称は無視する必要があります。
また、u軸対称の時、u軸上に打てる場合もk=1になります。(v軸も同様)
>>360 >一つの棋譜からなる手数の積の分布を把握
おお!実は同じようなことを考えてました。
「平均手数の積」ではなく「ある棋譜の手数の積の平均」のほうが、
実際の数に近いのではないか、と思い始めてた所です。
363 :
293 :2006/03/06(月) 15:33:23
昔のプログラムで、今その結果が残ってる訳じゃないんだけど、
>>224 (これ、私です)の2)の方針ですかね?
>>363 そです。
ただ今回は平均はとりません。
仕上がった一本の棋譜のそれまでの手数の積を一つのデータとしてグラフを作りました。
842さんがいっていた手数の積が小さい棋譜ほどランダムに棋譜を作ったときに生成されやすい。
という理論にもとづいて
さらに実際は手数の積が大きくても、そういった棋譜が多く存在していればそれだけ手数の積が大きい棋譜が選ばれ、それだけ理論とズレた結果になるのではないか。
と思いました。
そこから
こんどは棋譜のツリーはどんな形をしているのか。という分析をしてみようとおもいました。
けどわかんなす。
f^_^;
365 :
284 :2006/03/06(月) 20:57:30
>>363 224の2)はまさにそうですね。既出でしたか。
>>364 ある棋譜の発生確率=1/(手数の積)と置くと棋譜数は結果の相加平均で良いと思われます。
以下、その理由です。
全棋譜数がmとして各々の(手数の積)をA1〜Amと置きます。
ランダムに発生した棋譜がA1である確率は1/A1。
試行回数をXと置くとA1の発生回数はX*(1/A1)。
またA1が発生した(手数の積)のトータルはA1*(X/A1)=1*X。
A2〜Amまでも同様なことが言えるので総トータルはm*X
よって全棋譜数m=総トータル/X(相加平均)
いかがでしょう?
>>362 の画像を参考にさせていただきました。
ただしサンプルをとる場合は、選択肢の分岐を一様な乱数にしたほうがいいでしょうね。
棋譜のツリーの形は5手検索が参考にならないでしょうか?
対称性の話
手数tに対して対称形がいくつ出てくるかを調べてみました。
t=1 x= 0 y= 0 u= 1 v= 1
t=2 x= 0 y= 0 u= 0 v= 0
t=3 x= 0 y= 0 u= 0 v= 0
t=4 x= 0 y= 0 u= 0 v= 4
t=5 x= 0 y= 0 u= 4 v= 0
t=6 x= 0 y= 0 u= 0 v= 0
t=7 x= 0 y= 0 u= 0 v= 0
t=8 x= 0 y= 0 u= 0 v= 60
t=9 x= 4 y=14 u=88 v=152
注:実装上の関係からv軸u軸に関しては
>>361 と比べて逆になっています。
8手目から結構でてきます。
またこのチェックを入れたコストは9手全探索で0.2秒でした。
入れた方がいいかもしれません。
>>356 全く同じことを書かせて下さい。
値Aにその発生確率をかけ、それらをすべて足したものを Aex とします。
この Aex というのは、手数の積の期待値です。
(exはexpectationからとったもので、正しい表記ではないとおもいます)
Aex =
A1*(1/A1) + A2*(1/A2) + A2*(1/A2) + ・・・ + Am*(1/Am) = m
です。つまり Aex は 棋譜数m そのものです。
一回のランダム選棋譜で選出される棋譜の手数の期待値の和は、 Aex です。
二回のランダム選棋譜で選出される棋譜の手数の期待値の和は、 2*Aex です。
X回のランダム選棋譜で選出される棋譜の手数の期待値の和は、 X*Aex です。
X回のランダム選棋譜で選出せれる棋譜の手数の期待値の和とは、総トータルのことです。
つまり、
総トータル/X = m
>>365 でもこれでは誤差の説明がつかなくなります。
見直すべきところは
手数の積A1の発生確率が (1/A1) であるといったとこでしょうか。。
>>366 おつです。対称性局面は後々手分けして探索するとき、大切になってくるとおもいます。
げっへっへ〜
369 :
284 :2006/03/08(水) 08:05:37
>>368 >>348 での誤差の話しは「平均手数の積」の時の話しです。
今回「手数の積」の相加平均を採れば誤差が無くなるのではないか、ということです。
#もちろん乱数発生による誤差は残りますが。
100万回で試した結果をWiki「メモ05」に入れておきました。
全検索で出ている14手目まで、かなり良い結果になってると思います。
最終(60手目)結果が6.5E+54と、
>>224 とは少し違いますね。。
293氏に折角、相乗平均の方法を教えて貰ったのに使わなくなってしまいました。すみません。
370 :
293 :2006/03/08(水) 09:31:11
>>365 >>367 にある相加平均を取る証明はその通りだと思います。
考えなく相乗平均とか言い出して申し訳ないです。
敢えて100万回程度(10の54乗からすれば「たかが」程度)のシミュレーションで
誤差が出そうな点を挙げれば
>ランダムに発生した棋譜がA1である確率は1/A1。
>試行回数をXと置くとA1の発生回数はX*(1/A1)。
この 1/A1 が本来 1e-50 程度のはずなので X*(1/A1) も 1e-40 を上回る棋譜が
そうそうあるとは思えません。それが 1 (ものによっては2以上) まで格上げ
されることによる誤差が無視できない程度までに大きいということでしょうか。
>>224 との差異もその辺りが原因かと思います。本当は時系列でグラフを出すなり
定期的に中間結果をアウトプットして平均値の収束状況を見る必要があると思いますが。
まずは一定回数毎に平均値を出して、グラフプロットしてみます。
>>369 >>370 毎回後進的レスすまんす。
やとわかった!
平均手数の積では、
>>352 の(1),(2)が問題となってくんですが、
手数の積の平均は、
>>352 の(1)が消えて(2)みたいな計算誤差・理論と事象の確率誤差だけが問題となるんですね。
期待値という言葉をつかって平均手数の積を正確に説明するのはややこしいですが。。
僕はこの二つほとんど同じ結果が得られるものだと思ってました。
全然ちがうんですね。
>>224 293さんごめんなさい。
いまさら訂正させてください。
>>167 は 1) の方(手数平均の積の方)です。
僕本人なので間違いありません。
あのときは「同じようなもんだからいいか。。」と思って言いませんでした。
373 :
293 :2006/03/08(水) 22:02:36
10時間をかけて取った6億回実験分の平均推移を表すグラフやデータをWikiにうpしたいんですが、どうしたらいいですかね?>よんけた
>>373 ファイルをアップロードするのは、ページに添付するという形をとります。
まずファイルを添付したいページを開きます。
一番下に |新規作成|編集|差分|バックアップ… とあるのでその中のアップロードを
クリックして下さい。
参照ボタンをクリックし、ファイルを選択後、submitボタンをクリック。
これでファイルをアップしたこととなります。
そしてページに、アップしたファイルのアドレスを書き加えればOK。
メモのアップロード練習のページを参考にして下さい。
何か質問があればまたお聞きくだせえ。
アップロードする一つのファイルは1Mbまでなので、気をつけて下さい。
対称性の盤面数、ちょっと計算方法が間違っていたので訂正。 t,u, v, n 1,1, 1, 4 2,0, 0, 12 3,0, 0, 56 4,0, 1, 244 5,1, 0, 1396 6,0, 0, 8200 7,0, 0, 55092 8,0,12,390216 t=手数、v(,u)=v(,u)軸対称な盤面数、n=全棋譜数 これなんですが、対称性を用いた枝刈りのコスト削減が どれだけ深い手数まで調べても1/4にしかならなかったんですよね。 よく考えてみると、4手目にひとつ対称な盤面がでてきて、 これ以降のこのノードの探索範囲は1/2になるんですが、 すでに棋譜数が244もあるので、ひと枝だけがコスト1/2になっても 全体の計算量は243/244にしかならないんですよね。 結局うまくコスト削減できてるのは1手目のuv対称の1/4だけで、 それ以降のはほとんど無視できちゃうんです。 ってことで「対称性による計算量削減は1手目しか意味がない」 というのが今日の私の結論でした。
376 :
284 :2006/03/09(木) 12:59:58
>>371 後進的なんてとんでもないです。疑問点はどんどん言ってください。
それに対してまた、色々考えることが大切ですから。
その結果「手数(分岐数)の積の平均」を思いつくきっかけにもなっています。
>>373 Wiki見ました。3億6千万回ですか!しかも10時間で!すばらしいです。
私は100万回で40分掛かったのにw(私のプログラミングが下手ですね)
概算値としての6.449E+54は1つの答えですね。
>>375 対称性を用いた枝狩りの有効性は低いですか。実は期待していただけに残念。
今、黒石ゲーム2で対称性の枝狩りをやってみようかと考えてます。
オセロの全(1/4)探索よりノードを減らせれば、各手数での最大着手可能数を探索できるかな、と考えてます。
まあ、既に全探索で14手目最大22着手が出てるので、無駄になる可能性大、ですが。
30個空きにおける局面数って最大何通りくらいあるんでしょうか? 64個のマスの中に白、黒、空きマスを 白+黒=34個、空きマス=30個を満たすように それらを配置すると考えるといったい何通りくらいなんでしょうか。
>>377 中央4個は確定として、60マスにn個の石を置く場合は60!/(60-n)!/n!
n=30の時60!/(60-30)!/30!=1.18E+17
34個の石の白、黒のパターンは2^34=1.72E+10
これらを掛け合わせて2.03E+27通りくらい
最大は石44個の時の7.37E+28通り
>>378 ありがとうございます。
2.03E+27通りとは自分の予想を遥かに超えた数でした…。
コンピュータリバーシでは最善と思われる進行で進んだ場合、
結果がほぼ引き分けに近い状態になるわけですが
このときの30個空き時では経験上、白と黒の数の割合が
2:3〜3:2付近になるっぽいので、そのくらいの割合のときの
30個空き時の勝ち負け判定ソフトを別途作成しようかと思ったのですが
あまりの数字にこれは断念したいと思います。
無謀でした…。
380 :
293 :2006/03/09(木) 23:14:27
>>376 秘密にする必要は全くないので、プログラムをWikiにうpしました。
分岐数の積の平均からどーぞ。何かしら、参考になれば。
382 :
293 :2006/03/10(金) 03:55:37
>>379 正解率がどんなもんになるか知りませんが、
SVMなんて使ってはいかがでしょう?
教師役になる棋譜が山のように必要ですが。
SVM=Support Vector Machineです。細かくはググって。
このスレ面白そうですね。 まだ全レス読んでないので、後で見てみようと思います。 スレ内容に相応しい話題かどうかはわかりませんが、 前にランダムに対戦させて勝率を調べるプログラム書いて動かしてみたら、 先手勝ち46% 後手勝ち50% 引き分け4% くらいで後手の方が有利だったと思うのですが、 人間同士ではどうなんでしょうかね? 戦歴の統計みたいなものがどこかにあると良いのですが…
384 :
284 :2006/03/10(金) 15:17:08
>>380 ありがとうございます!
見せていただきました。目から鱗がいっぱいですw
他人のソースを見せてもらうことはなかなか無いのでとても勉強になります。
とくに私、盤面は素直に2次元配列使ってました。
これをすると処理が全て2重ループになるんですよねorz
385 :
256 :2006/03/10(金) 15:23:31
386 :
383 :2006/03/10(金) 18:01:32
>>385 人対人だと先手勝ちが少し多いのですね。
棋譜のサイトがあるとは知らなかった。
何かしらの参考に出来そうです。
388 :
293 :2006/03/11(土) 13:27:28
空いてるマシーンを見つけたので、タラタラと15手探索やらせました。 余分な計算を色々削除することでそこそこの高速化を図りましたが、34時間50分かかってます。 (ちなみに全く同じプログラムで(手違いで計算させた)14手探索が3時間36分でした。) 15手探索結果だけ。16手探索は予想時間が10日以上かかるので流石に無理です。 15手目の最大分岐数:23 15手目の盤面数:1891844432704 15手目でパスが起こる盤面数:1092168 15手目を打てずに終わる盤面数:887364
389 :
271 :2006/03/11(土) 22:04:53
>>388 お疲れです。うちのより10倍速いですねw
さっき14手の結果が上がってきたのですが40時間かかってました。
計算しながら普通にパソコン使ってますが。
12手までは同じ速度だったのにねぇ
390 :
293 :2006/03/11(土) 22:56:58
フフフ、あの12手検索から微妙にプログラムを変更してるんですよ。
n手目の着手可能数をe(n)とすると
e(n+1) <= e(n) + 5
なぜなら、着手可能数が一番増えるケースは、
□□□
□★□
□□●
の★のところに打ったときであり、●の隣を除去した5つの□マスであるから。
これから、15手の最大分岐数=23より、
e(16) <= 23+5*1 = 28
e(17) <= 23+5*2 = 33
e(18) <= 23+5*2 = 38
e(19) <= 23+5*2 = 42
e(20) <= 23+5*2 = 41
これ以上は単純な空マスの数の方が小さくなるので
1891844432704 * 28 * 33 * 38 * 42 * 41! = 9.3333 * 10^67
Allisによる概算上界 10^58 まであと9桁です。
http://dais.main.jp/reversi/solve-reversi.html
392 :
293 :2006/03/12(日) 12:43:38
>>391 Allisの論文を探して見てみましたが、オセロについて書かれている内容は大石さんの書かれていることとほぼ同じです。
(あとは世界チャンピオンに勝ったのがいつ頃とか、今ではプログラムに勝てる人間はいないだとか)
というより大石さんはAllisの論文のオセロ部分を翻訳されたのでは?
で、何を言いたかったかといえば、その中で棋譜数(ゲーム木の大きさ)に関してはあくまでも予測の概数で、根拠のある
上界は示されていないということでした。
状態数に関する研究も、方法としてはこのスレの方が上っぽい(2マス連続の先にしか置けないという考慮が書かれていない)ですし。
こっちは概数出していませんけどね (ノ∀`)アハハ
393 :
284 :2006/03/12(日) 14:52:00
黒石ゲーム2の完全探索を盤面対称性を考慮してやってみました。 9手までで47分。 |手|最大手数|手数--------|xyuv|xy---|90r--|uv---|x-----|y-----|u-----|v-----|180r--|Non------| |-1|------12|----------12|---1|----0|----0|----0|-----0|-----0|-----0|-----0|-----0|--------0| |-2|------13|---------152|---0|----0|----0|----0|-----0|-----0|-----1|-----0|-----0|--------1| |-3|------16|--------2048|---0|----0|----0|----1|-----2|-----1|-----2|-----1|-----1|-------12| |-4|------17|-------29444|---0|----0|----0|----0|-----0|-----0|----12|-----5|-----0|------198| |-5|------20|------451376|---2|----3|----5|----5|----38|----28|----60|----38|----24|-----2765| |-6|------20|-----7354680|---0|----0|----0|----0|-----0|-----0|---439|---267|-----0|----43038| |-7|------22|---126786952|---0|----0|----0|--221|--2143|--1779|--3196|--2307|--1692|---693109| |-8|------24|--2300515224|---0|----0|----0|----0|-----0|-----0|-30214|-20625|-----0|-11954263| |-9|------24|-43708282280|1779|-5871|-8399|-8410|164331|139821|280193|210498|128439|215800673| |10|------26|865297962824|----|-----|-----|-----|------|------|------|------|------|---------| xyuv:X軸、Y軸、U軸、V軸の4軸に同時に対称な盤面数 xy:X軸、Y軸の2軸に対称 90r:90度回転に対称(表現がおかしい?90度回転しても同じという意味) uv:U軸、V軸の2軸に対象 x: y: u: v: 各々1つの軸にのみ対象 180r:180度回転に対称 Non:対称性無し 以上は全て、排他です。
394 :
284 :2006/03/12(日) 16:08:18
>>391 着手可能数の増加が最大5というのは黒石ゲームの場合ですね。
その値とオセロゲームでの15手目最大23を単純に足すのはマズいのでは?
オセロには黒番・白番があるので。
通常のオセロでも黒番の着手可能数が1〜2でも、白番は+6(7〜8)以上になることは十分ありえますし。
395 :
256 :2006/03/13(月) 17:30:26
全探索プログラムをC言語で書き直しました。 今15手やってます。 ぼくも13手までは確認しました。
気分転換に幅優先の全探索してみました。 手---棋譜数--盤面数-計算時間[s] 1--------4------4----0.00 2-------12-----12----0.00 3-------56-----56----0.02 4------244----240----0.02 5-----1396---1344----0.23 6-----8200---7572----3.31 7----55092--47624--261.99 データベースが1本リストなので遅いです。
t=手数,m=最大着手数,b=盤面数,ti=処理時間[s] t= 1, m= 4, b= 4, ti=0.02 t= 2, m= 3, b= 12, ti=0.00 t= 3, m= 5, b= 56, ti=0.00 t= 4, m= 6, b= 240, ti=0.03 t= 5, m= 9, b= 1344, ti=0.06 t= 6, m=11, b= 7572, ti=0.31 t= 7, m=12, b= 47624, ti=1.53 t= 8, m=14, b= 302418, ti=15.45 幅探索ずいぶん速くなった。 パスのない8手までの完全な盤面。
398 :
256 :2006/03/15(水) 03:34:58
15手全探索終わりました。 計算時間は32時間53分くらいでした。 Wiki更新しときます。
>>396 おつどす。
トランスポジションがなかなかの勢いで増えてますね。
400 :
256 :2006/03/17(金) 06:26:17
終盤のほうで、「空き数=最大着手可能箇所数」の局面が実際にあるか探してみました。 1〜28個空きでは見つけましたが29個空きからなかなか見つかりませんでした。 29個空きで28箇所の着手可能箇所がある局面に至る棋譜は見つけましたが・・。 N手--空数---棋譜 32----28----F5D6C3D3C4F4F6G6E6E7F7G5E3C5F3B3B4B5B6B7C7G2G3G4D7G7C6B2C2D2F2E2 33----27----F5D6C3D3C4F4F6G6E6E7F7G5E3C5G7F8D7C7B7B4B6B5B3C6G4G3G2C2B2D2F3F2E2 34----26----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8 35----25----F5D6C3D3C4F4F6G6E6E7F7G5E3C5F3B3B4B5B6B7C7G2G3G4D7G7C6B2C2D2F2E2A5A4A3 36----24----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8 37----23----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6A5A8G2B8A7A6 38----22----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8 39----21----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8G8 40----20----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1 41----19----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1G8 42----18----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1 43----17----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1G8 44----16----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1
401 :
256 :2006/03/17(金) 06:27:58
45----15----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1G8 46----14----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3 47----13----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3G8 48----12----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3A4A5 49----11----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3G8H8H7 50----10----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3A4A5A6A7 51-----9----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3A4A5G8H8H7 52-----8----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3A4A5A6A7H8H7 53-----7----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3A4A5A6A7G8H8H7 54-----6----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3A4A5A6A7H8H7H6H5 55-----5----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3A4A5A6A7H8H7H6H5G1 56-----4----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3A4A5A6A7H8H7H6H5H1H2 57-----3----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3A4A5A6A7H8H7H6H5G1H1H2 58-----2----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3A4A5A6A7H8H7H6H5H1H2H3H4 59-----1----F5F6E6F4E3C5C4D6B5D3C3F2F3E2G4G5C6D2C2B2B3B4D7G6G3E7F7G7C7B7B6G2A8B8C8D8E8F8A1B1C1D1E1F1A2A3A4A5A6A7H8H7H6H5G1H1H2H3H4
402 :
256 :2006/03/17(金) 07:20:04
29個見つかりました。 N手--空数---棋譜 31----29----F5D6C4F4F6F3D3F7E6C5D7E3E2F2G7E7C3G6G5C7D2B4G3C2B2B3B5B6B7C6G2
盤面はどんな感じっすか?
404 :
256 :2006/03/18(土) 06:08:28
405 :
284 :2006/03/18(土) 18:55:54
>>396 幅優先ではないんだけど、盤面数を出してみたら396と少し違いました??
手---棋譜数--盤面数
1--------4------4-(100%)
2-------12-----12-(100%)
3-------56-----56-(100%)
4------244----236-(96.7%)
5-----1396---1288-(92.3%)
6-----8200---7092-(86.5%)
盤面の反転・回転による対称性は考慮していません。
つまり、
>>274 での上2つは同一、一番下は別物としてカウントしてます。
演算量を減らすには対称性も考慮したほうがいいね。
某数学に関する研究室所属の者です。 当研究室にてこのスレの話が話題となっています。 確定では無いのですが、新年度よりオセロの譜面数計算の本格研究が始まるかもです。 研究予算や研究に費やす時間などが関わりますので、最終段階での計画破棄の可能性もありますが、 仮に正式研究の許可が下されますと、大型コンピュータの使用などが可能となります。 また正式に決定したら詳しくご報告します。
おおっ
408 :
284 :2006/03/19(日) 11:46:23
>>405 に対称性を追加しました。あんまり自信ないので誰か検証お願いします。
手--A棋譜数-B盤面数-(B/A)
1--------4------1-(25.0%)
2-------12------3-(25.0%)
3-------56-----14-(25.0%)
4------244-----60-(24.6%)
5-----1396----322-(23.1%)
6-----8200---1773-(21.6%)
対称性の考慮は次の8パターン。
1)オリジナル盤面
2)X軸反転=上下反転
3)Y軸反転=左右反転
4)XY軸反転=180度回転
4)U軸反転(右下がりをU軸としてます。
>>361 とはu,vが逆)
6)V軸反転(右上がりをV軸としてます)
7)U→X反転(U軸反転したものをX軸反転)=左90度回転
8)U→Y反転=右90度回転
発生した盤面が以前に出た盤面の上記8パターンのどれかに該当すれば同一、とします。
実際にそうするとデータベースが大きくなるので
過去の盤面の上記8パターンのハッシュ値を発生させ、その中の最小値(最大値でもいいけど)を記憶。
発生した盤面の8パターンのハッシュ値の最小値(あるいは最大値)と以前のを比べて同一性を確認してます。
プログラムでは各盤面のminhushだけ出して、エクセルでカウントしました。
409 :
名無しさん@5周年 :2006/03/20(月) 21:43:53
忙しくてのぞいていなかった一ヶ月ちょっとの間に なんだかすごいことに... 回転と裏返しで最大8つの盤面を 1つにまとめられることから思い付いたけど、 白と黒が反対の盤面もまとめることができるよね? 例えば、 ++++++++ +●●●●●●+ +●○○○●●+ +●○○○●++ +●○○●●●+ +●○○○○●+ +●●●●●●+ ++++++++ 次○が置く と ++++++++ +○○○○○○+ +○●●●○○+ +○●●●○++ +○●●○○○+ +○●●●●○+ +○○○○○○+ ++++++++ 次●が置く は、最後の勝ち負けを反転させれば等価な局面といえる。 これは、データベースのメモリの節約に使えないかな? これで最大16の盤面を1つにまとめることができる。 既出だったらごめん
410 :
名無しさん@5周年 :2006/03/20(月) 22:08:37
411 :
名無しさん@5周年 :2006/03/20(月) 22:42:02
412 :
256 :2006/03/20(月) 23:57:42
>>409 石数が同じで手番が違うのでパスが関与しなければなりません。
その上で色違いの同局面になるということなので、
>>274 のような例よりも存在割合は格段に低いと思います。
たしかに、わずかなメモリの節約にはなりそうです。
対称性はうまくいっても恩恵が1/4だし気休めにしかならないような。
414 :
409 :2006/03/21(火) 14:04:59
>>412 確かに・・・
気休め程度ですね。
>>413 俺も基本はtrancepositionだと思います。
対象性も白黒の反転もささやかな後押しです。
416 :
415 :2006/03/22(水) 02:37:48
すいません。全然全部じゃないっすねw printscreenじゃ画面に入りきらないの。
417 :
284 :2006/03/22(水) 10:29:56
>>409 なるほど、白黒反転は面白いですね。
>>412 で言われてるように存在割合は少ないと思いますが、
例えば、パスがあったときに手番を替えるのではなく盤面の白黒を反転させれば
奇数手番は黒番、偶数手番は白番、と固定出来ますね。
これで手番情報を残す必要がなくなるのでその分DBを減らせると思います。
・・・と、思ったけどこれだと勝ち負け情報がなくなりますね。棋譜数を数えるだけなら問題はないですが。
>>413 >>414 「対称性」について私の考えを述べます。
「対称性」には2つあります。(と言っても2つ目を「対称性」と言えるかどうか・・・)
1)「ある盤面の対称性」
盤面自体が線対称、回転対称に当たる場合。
初期盤面などはこれに当たるので1/4探索などが有効ですね。
しかし初期盤面以降はあまり発生しないようです。(
>>375 )
2)「ある盤面と別のある盤面の反転、回転による同一性」
盤面Aを反転、あるいは回転すれば盤面Bになる。
transpositionを考える時に
>>274 の3つめのような盤面を同一と考えるのに
>>408 のような方法でどうか、ということです。
2)の方はあくまでtranspositionを考える為ですので恩恵が1/4に固定されるものではないと思います。
また手数が増えればtransposition自体増えて行くでしょう。
また2)の考えを入れれば1)の盤面は次の手で2)に吸収されるので1)は考慮しなくても良いと考えます。
2)の考え方のことを
>>408 で「対称性」と言ってしまったことで誤解を与えてしまったかもしれない。
すみません。
オセロって全部解析済みだったんじゃなかったの? ってああ、試合結果数、か。 お邪魔様。
419 :
409 :2006/03/22(水) 17:19:49
>>418 「全部解析」がどのようなものかはわかりませんが、
「最善の手」はわかっていませんよ。(終盤は別ですが)
試合結果の総数、試合途中の盤面の総数もわかっていません。
勝ち、負け、引き分けの3つしかない
ということくらいじゃないのかな。
わかっているのって。
420 :
409 :2006/03/22(水) 18:44:04
sage方やっと知りました。ごめんなさい。
>>408 対称性の処理は私もほとんど同じことを行っています。
あと、この方法の問題は
8つのハッシュ値を作る計算時間、
8つのハッシュ値の中から最小値を見つけ出す計算時間が
大きいことかなと考えています。
高速化の方法を模索中です。
421 :
名無しさん@5周年 :2006/03/23(木) 06:42:06
たかだかにしとけ! たかだか64*63*62*61*・・・だ! 終了。 こんなことやるより最強のオセロ、将棋、囲碁の研究汁!
422 :
名無しさん@5周年 :2006/03/23(木) 07:57:54
軟骨
>>417 それ自体が全く非対称な盤面がほとんどを占めているとして、
それの合同形は1面につき全部で8面あるとしよう。(x/y/v/u軸/0°/90°/180°/270°みたいな)
簡単化のために着手数はいつも N だとすると、
単純なT手の全棋譜カウントには Σ[t=1--T](N^t)*(着手判定) のコストがかかる。
そこで、この8倍の対称重複性を使うと、全棋譜カウントのコストはいくつになるのだろうか?
1手目でNのノードができ、対称重複性を考えると2手目のノードはN/8になる。
2手目ではN/8*Nのノードができ、対称重複性を考えると2手目のノードはN/8*N/8になる。
ってことはT手目までの総和は Σ[t=1--T](N/8)^t となって
全体で (1/8)^T くらいの削減率はでるのだろうか?
対称重複な面から出た対称重複面のことを考えると削減率も単純に1/8のべき乗で考えていいのだろうか?
424 :
284 :2006/03/24(金) 15:50:26
>>420 確かに演算速度は問題ですね。
まあこの方法で探索ノードが減らせれば多少時間がかかっても価値はあるとは思いますが。
実際に効果が出るのは十数手以降かな、と思います。
>>423 あー、なんとなくですが分かった気がします。上手く説明出来ないけど、
>2手目ではN/8*Nのノードができ、対称重複性を考えると2手目のノードはN/8*N/8になる。
この時点で2手目のノードはN^2/64ですが、これは全探索N^2の1/64になっています。
と言うことは、少なくとも1/8のtranspositionが発生していることになります。
つまり、全探索→同一盤面(transposition)の効果は未知数ですが
同一盤面(transposition)→合同盤面(反転・回転考慮)の効果は全体で1/8に限られる、
ということになるでしょうか?
とりあえず60手後の盤面可能数は2^64=1.84E+19。
全棋譜予想が6.45E+54なのでtranspositionの効果は1/(3.5E+35)くらいはあるかと思われます。
それに合同盤面(反転・回転考慮)を入れても更なる効果は1/8にしかならない、と言う事かな?
426 :
256 :2006/03/24(金) 21:56:39
よんけた氏 Wikiを拝見させてもらっています。 ○×問題の考察を書きます。 Q5:5手目に決着がつく(○の勝利)局面数 Q6:6手目に決着がつく(×の勝利)局面数 を次のように分解します。 Q5=S5+T5、Q6=S6+T6 Sn:斜めでビンゴ Tn:縦または横でビンゴ S6=S5 * 4 なぜならば、×が斜めでビンゴしてなくてはならない。 時間を逆にして考えると×先行で5手決着のケースに残りの○(順時間では初手)を ○がビンゴしないようにおく必要があるが、×が斜めで揃っているので空いている4箇所のどこにおいてもOK 逆時間(×先攻)で×が5手でビンゴする局面数はS5個 T6=T5 * 3 上と同様の数え方だが、残りの○をおく位置の候補4箇所のうちすでに○が2つ並んでいるラインにおくと、 順時間では○が先にビンゴしてしまうのでそれ以外の3箇所におかなくてはならない。 同様にして Q8=S8+T8, S8=2 * S7, T8=2 *T7, ---> Q8=2*Q7 従って、(Q4=Q3=Q2=Q1=Q0=0に注意) 9!=4! * Q5 + 3! * Q6 + 2! * Q7 + 1! * Q8 + 0! * Q9 = 7*(3!)*S5 + 2* (4!) *T5 + 4 * Q7 + Q9 = 42 * Q5 + 6 * T5 + 4 *Q7 + Q9 が成立する。(本当?) T5 の評価が面倒なのと、T7,S7を T6,S6 などで表現するうまい方法が見つからない。 なんでQ5を使わずにT5,S5を導入したのかというと、Q6の表現で困ったから。
>>427 S6=S5 * 4 までは理解したけれど、T6=T5 * 3 の反例です。
>すでに○が2つ並んでいるラインにおくと、○が先にビンゴしてしまうのでそれ以外の3箇所におかなくてはならない
ですが、○が2個並んでいない場合は4箇所全て可能なので、単純に4-1とは出来ない。
↓ 初手を除いた盤面の例
○++
×××
+○+
×××
○++
+○+
など、この例では初手の○が空き4ヶ所のどこにあっても5手目でビンゴしない
>>426 分散処理って全探索の場合はN台でやってもコストが1/Nにしかならないのよね。
全探索はいまの段階では使ってもまだまだ無理かなぁ。
あともうちょっと!ってところ、つまりあと10000倍くらい計算機が速いと
何かが解けるんだけどなぁという段階になったらいいかもね。
確率的概算値を求めるんなら、確率的分散がいまよりどれくらい抑えられるかな?
430 :
256 :2006/03/25(土) 15:44:11
>>429 ふむふむ。参考になります。
僕は序盤の全探索があと4手くらいは多くできるかなくらいで考えてました。
>>406 では大型コンピュータを使って何をするつもりなのかも気になりますね。
ところで16手全探索終わりました。
183時間52分くらいかかりました。(Pentium4 2.4GHz)
今朝は終了直前でコンピュータがクラッシュする夢を見ました。
正夢にならなくてよかった〜
手数----棋譜数----最大着手可能数----ゲームオーバー----パス
01-----------------4-----4-----------0-----------0
02----------------12-----3-----------0-----------0
03----------------56-----5-----------0-----------0
04---------------244-----6-----------0-----------0
05--------------1396-----9-----------0-----------0
06--------------8200----11-----------0-----------0
07-------------55092----12-----------0-----------0
08------------390216----14-----------0-----------0
09-----------3005320----15-----------0----------24
10----------24571192----16---------228---------228
11---------212260296----18---------356---------932
12--------1939892240----20--------6384--------7396
13-------18429768516----21-------16384-------35588
14------184042835408----22------299624------367160
15-----1891844432704----23------887364-----1979532
16----20301281202588----25----13560800----18920488
>>430 最短10手で完全勝ちっていうことですね!
棋譜の一例でも教えていただきたい
432 :
256 :2006/03/25(土) 21:21:31
有名なところだと↓このあたりですかね。 F5F6F7F4D3E3F3G5H5 F5D6C5F4E3F6G5E6E7
433 :
256 :2006/03/26(日) 08:33:01
エクセルをいじって、x手までの棋譜数(の予測)の近似値yを求める式を作ってみました。
教師信号には↓の「終了込みの平均」と、序盤の16手までは全探索の結果を使いました。
http://www9.atwiki.jp/othello/pages/32.html x:手数 (1≦x≦60)
y:棋譜数
Sx=(8-SQRT(x+3))/2
Tx=(0.1222*(Sx^6)-1.1651*(Sx^5)+4.1648*(Sx^4)-4.4983*(Sx^3)-10.087*(Sx^2)+24.232*Sx+0.1977)*(1+(-1)^(x-1))/2
+(0.2029*(Sx^6)-1.8808*(Sx^5)+6.4413*(Sx^4)-7.8202*(Sx^3)-7.8104*(Sx^2)+23.641*Sx+0.25)*(1+(-1)^(x))/2
y=PRODUCT(T1:Tx)
xをが偶数と奇数の場合に分けてSxと教師信号の分布図を描いて、
それぞれの近似曲線を計算させてその式を使いました。
Txでは偶数手と奇数手でどっちかの項がゼロになるようにしてます。
xを直接代入するような高次式Txを作るよりも、
Sxみたいに何かをかませるほうが精度はいいみたいでした。
これの誤差は最大で2%くらいでした。
>>432 最短は9手で黒勝ちなんですね
表の見方は10手め打とうしたらゲームオーバーだったのが228局面
あったという事ですか
自分も参戦しようと、何も考えずに全探索書いたら13手までのが5時間かかりました。 このままだと14手の場合は2日がかりになりそうなので、簡単な枝狩りなんかを考えるかな。 このスレってレス数の割に内容が濃いので、まだ読みきれてません。 というか理解がorzという状況ですが…
437 :
427 :2006/03/27(月) 00:34:23
>>428 がーん。そうですね。
もうちっと精進します。
代案
Tn、Snの定義を変えて、
Tn:×縦横ビンゴ、○は×と平行にリーチ
Sn:それ以外
とすれば続きの議論につながるけど、複雑だなー。
とりあえず、「Q6はQ5だけで表現可能か」を知るためには、
Tn と Sn の関係が必要。
まあ、オセロだと時間に対して可逆じゃなさそうなので、この手は使えないかも
>>256 >>432 すごいね。
知り合いの学生さんがだした結果をgnuplotで近似したら、
2次関数(上に凸のね)で綺麗にfittingできたと喜んでいたけど、
(4x4,6x6と盤面を広げるとスケールが規則的に変化)
真値は係数が (log 2)/(log 3)=0.631 の倍数だったりしないかな?
10.087は大体2^4=16倍なんだよね。
根拠はかなりあてずっぽなんだけど、黒白空白の3進数で桁が8x8の数と
考えると底が3のlog2みたいな量が関係していると思うので
439 :
名無しさん@5周年 :2006/03/29(水) 18:26:12
中島と松島じゃ中島ジャネ?
440 :
293 :2006/03/29(水) 18:45:45
>>438 のページ、日本語訳とかをWikiに書いてもいいんでしょうか。
まだ全く手をつけてないですが。
442 :
293 :2006/03/29(水) 22:36:27
まだ途中ですが、「○×ゲームの数値解析」みたいな名前で上げました。 意図的に、出来る限り意訳しています。醜い所・見にくい所があれば 適当に訂正なり要望なり言って下さい。
443 :
名無しさん@5周年 :2006/03/30(木) 12:17:59
白が勝つ 黒が勝つ で2通り
444 :
293 :2006/03/30(木) 15:36:57
翻訳完了です。誤訳、解釈が分かりにくいところがあれば、指摘するか勝手に直すかしてください。
そういえば○×ゲームをマッチ箱でやらせる記事を読んだ気がする 学習していってだんだん強くなるっていうやつだった
446 :
256 :2006/03/32(土) 17:01:57
確か日経サイエンスの別冊の記事じゃなかったかと記憶している 数学やパズル関係の アタリのベーシックソフトが昔読んだ記事と同じかどうかは記事の 中身はすっかりアウト オブ メモリーなので判断できない
新年度の幕開けと同時にレスがつかなくなりましたね。
449 :
256 :2006/04/08(土) 02:06:00
>>448 すみません。ネタ切れ中なので。
オセロの1手目で4箇所打てるのを数式で表現できないか考えたりしてます。
450 :
284 :2006/04/08(土) 16:45:45
>>449 1つ思いつきました。
着手可能の為には挟む石と挟まれる石が必要なので
最大着手可能数は(挟む石)×(挟まれる石)。
初手は挟む石(黒石)=2、挟まれる石(白石)=2なので
最大着手可能数=2×2=4となる。
でもこれって、初手着手数4の証明じゃなくて初手着手可能数の上界の証明ですよね。
それにこれを一般化しても
>>330 の「46以下」は超えられないし。う〜む・・・
完全についていけなくなってきた馬鹿野郎に慈悲を・・・ 現在、総出で行われている作業は全探索ととっていいのでしょうか?
>>451 このスレは全ての話題が現在進行で、
何時でもどの話題にレスしてもいいと僕は思います。
それをカバーするためにもwikiがあります。
人が少ないからこういうことが言えるのですが。。
以前話されていたグリッドコンピューティングなんだけど、 総手数を「数える」のは100万台マシンをそろえても本質的な解決にならないよね ってうちの分散処理の教授がいってました(泣 理由は100万台では100万倍にしかならないからです(結果をまとめない限り) 100万倍位じゃ数え上げるの無理ですね
454 :
名無しさん@5周年 :2006/04/09(日) 15:54:49
こんなスレが‥ オセロ有段、プログラム知識なしの俺だけど手伝える?
++++++++ +○+○+○○+ +○●○●●○+ +○●○●●○+ +○+●○+○+ +●●++●●+ +○○●●○○+ ++++++++ ランダムに局面発生させて、34箇所打てる局面発見 1手目から作れそうにないけど
456 :
409 :2006/04/10(月) 17:47:39
○×ゲームを数式表現できたことで味をしめて、
4x4のオセロを数式表現しようと思う。
取り合えず4x4なら総手数数え上げられそうだから
プログラム作ってみます。
そこで聞きたいんだけど、両方パスが行われたときって
二回目のパスが起こったターンで終わりなの?
それとも、先にパスを行ったときに終わるとするの?
おせえて
>>454 さん達!
プログラム作る側から言えば、
後者の方がちょっとめんどい
457 :
293 :2006/04/10(月) 20:02:57
過去のプログラム作った人達(私も含む)の間では
パスをターンに数えない形でやってました。参考までに。
>>454 さん
大雑把なルールはみんな知ってるはずですが、↑のような
ちょっと深くなると明記しているサイトも見つけられません。
まずはルール説明をお願いできますか?
458 :
454 :2006/04/11(火) 00:07:40
了解です。
++++++++
++++++++
++++++++
+++○●+++
+++●○+++まず初期配置はこれで、先番は黒。
++++++++ 打てる個所がある限り打たなくてはいけず、打てない場合はパス。
++++++++ パスは何回してもよいし、打てるようになった再び打つ。
++++++++64マス埋まるか双方が打てない状態(どっちもパス)の時に終局となる。
>>456 厳密には2人が互いに「パスです」と発言した時に終局だと思うけど、実戦では
どっちからともなく「終わりですね」みたいな会話で確認して終局になるから
楽な方で良いかと。
あとパスは慣例的には1手とカウントしないで必ず60手以下で終わるようにしてます。
459 :
454 :2006/04/11(火) 00:11:10
それから既出かもしれない情報だけど、オセロは終盤24〜30手は 読み切り可能です。つまり、PCは全ての枝を探索します。
460 :
256 :2006/04/11(火) 02:06:19
>>459 一般的にWZebraなどの強いオセロプログラムでは、
中盤探索ではMPC(Multi Prob Cut)という枝刈りをしていますが、
終盤読みきりではαβ法で言われるαカットやβカットをしています。
つまり終盤の完全読みや必勝読みでも探索しない枝はあります。
461 :
409 :2006/04/11(火) 16:28:40
>>457-458 ありがとうございます。
今僕個人が忙しいのですが、
時間を見つけて(パスを一手と数えない方式で)
作ってみようと思います。
しかし既に作っている方のプログラムの
変数を変えた方が早いと思いますので
僕は検証における信頼性向上の為に作ろうかなと思います。
462 :
284 :2006/04/11(火) 16:52:42
256氏にお願いなんだけどいいかな?
>>310 のソースまだある?もしあるならそれに中央4マスは常に石があるとして繋り割合出せないかな。
乱数発生後に中央4マスは石有りでマスクして1島状の確認をする。
これが出ればn手目の局面数の概算が出せると思うんだけど。
n手目の盤面数(60!/(60-n)!/n!)に繋り割合を掛けて、それに白黒分布(2^(4+n))を掛ければ局面数になる。
各n手目の局面数の累加がトランスポジションを考慮した時の計算量になると思う。
本当は繋り以外にもありえない局面を除外出来ればいいんだけどね。
あと、一様な試行が出来れば良いかな、と思って
>>288 の方法も考えてるんだけど上手いハッシュ関数が思いつかないorz
463 :
284 :2006/04/11(火) 18:48:26
>>461 4×4オセロの棋譜数をだしてみました。
|手|最大手数|全棋譜数|--パス|終了|-黒勝|-白勝|引分|
|-1|-------4|-------4|-----0|---0|----0|----0|---0|
|-2|-------3|------12|-----0|---0|----0|----0|---0|
|-3|-------4|------44|-----0|---0|----0|----0|---0|
|-4|-------5|-----128|-----0|---0|----0|----0|---0|
|-5|-------5|-----436|-----4|---0|----0|----0|---0|
|-6|-------5|----1296|-----8|---0|----0|----0|---0|
|-7|-------6|----3784|----40|---4|----4|----0|---0|
|-8|-------5|----9756|---144|---8|----0|----8|---0|
|-9|-------4|---22152|---828|--20|---20|----0|---0|
|10|-------3|---41296|--2892|-308|--160|--148|---0|
|11|-------2|---58912|-10732|-808|--440|--356|--12|
|12|-------1|---53580|-25252|5332|-3260|-2072|---0|
|13|--------|--------|------|----|20748|27532|5300|
パス数に終了数は含まれています(内数)
n手目が打てない時にn手目のパス、及び終了としています。
ですので13手目は12手まで打てたときの勝敗数です。
どなたか検証よろしくお願いします。
んー 数式表現ってなんだかなぁ。 ○×でさえもあれだけ複雑じゃ数式で解く意味がないような気がする。 タカラのライツアウトを行列演算で解いたくらいの鮮やかさがほしいなぁ
465 :
409 :2006/04/12(水) 12:24:50
>>464 確かにね
でもまぁ、やるだけやってみようかと。
盤面数は深さにあわせて指数関数的に増大しているから
数式の場合分けが深さに応じて指数関数的に
増大するようなら本質的には解決してないよね。
例えば深さが1増えるごとにそれぞれ場合を二つにわけなきゃならないなら、
単純計算で数式の数が2^60 = 1152921504606846976個となるので、
計算機に自動で推論させてもきついよね。
僕は計算機の推論が専門じゃないんでよくわからんけど。
ちょっと疑問に思ったことがあるんだけど 仮に、双方最善進行が見つかったとして最後までパスがなかった場合 第n手目(n=1,2,…,59,60)における局面において打つことが出来る すべての場所を完全読みしたときの結果の和、又は平均をk(n)とおくと Σk(n)=k(1)-k(2)+k(3)-k(4)+…+k(59)-k(60)≒0 が成り立つような気がするのですが実際はどうなんでしょうか。 例えばk(30):第30手目における局面において打つことが出来る場所を 完全読み(石差)したとき、0が1箇所、−2が2箇所、−4が3箇所… あったとするとk(30)=0×1+(−2)×2+(−4)×3+… と一応定義してみたつもりです。 現段階ではnの数が小さいときのk(n)を求めることは不可能ですが nが大きいときのk(n)を求めることは可能です。 どなたか-k(60)+k(59)-k(58)+…を考察していただけないでしょうか。 あくまで疑問に思っただけなのでお門違いなことを言っていたら申し訳ない
最善ってこの場合なんだっけ
最善ってこの場合なんだっけ
やってしまった!
最善ってこの場合引き分けになることを想定した手順かと
勝てる場合は少なくともこれくらいの石差を保証できる、 負けるにしてもこれくらいに抑えられる、ということだと思う。 αβの結果でしょう。
472 :
256 :2006/04/15(土) 14:04:16
473 :
284 :2006/04/15(土) 22:01:53
>>472 私の勝手なお願いでお手数をおかけしました。
すみませんでした。そしてありがとうございます。
早速、繋り割合を使って概算の局面数を出してみました。
http://www9.atwiki.jp/othello/pages/44.html 結果は5.10E29でした。これは推定の棋譜数6.45E54に比べると格段に小さい数値ですが
カウントするにはまだまだ大きすぎる数値ですねorz
>>430 の16手検索は、ノード数2.03E13で183.8時間ですから4.62E18時間=5.3E14年・・・。
しかも1手につき最大 5.9E28の盤面を保持しないといけない。
一体どのくらいの記憶容量が必要になるんでしょう。
60手目の局面数の確認方法 64個のセルすべて埋まっている状態にし、 そこから初期状態になるよう、うまい具合に逆に試合を進めていく。 初期状態にできる盤面だったらカウント数を一つ増やす。 おそらく60手目の局面数は、 2^64=1.84467E+19 ぴったりになると思われる。 1hにつき1E+11面の局面をカウントし、それを十万台のpcで行えば、 2ヶ月で完遂する。 この場合記憶容量は関係ない。 盤面を数値化し、数が少ないほうから行うなどルールをきめればいい。 分散処理も、要は十万個のデータを管理すればいいのでさほど非現実的ではない。 (終局局面数のカウントを分散処理する場合、膨大な局面のデータを 一つ一つのPCに記憶しなくてはいけないという問題がある。) 主な問題点 初期状態になるよう、うまい具合に逆に試合を進めていく。 と書いたが、そのようなプログラミングは非常に難しいと思われる。 さらに早さを求められるので鬼のような難しさとおもわれる。 すまんす(゚ρ`)
475 :
256 :2006/04/16(日) 03:29:58
>>474 2^64にはならないと思います。
例えば↓のような局面は無理です。
●●●●●●●●
●●●●●●●●
●●●●●●●●
●●●●●●●●
●●●●●●●●
●●●●●●●●
●●●●●●●●
●○●○●○●○
下辺に7個の白や黒の石があるどのような状態からも、
8個目を打って●○●○●○●○とする事は出来ません。
必ず辺の石を返してしまいます。
>>457 (゚◇゚)ガーン
60手目、棋譜数は可能盤面数の何兆倍以上あるというのに
棋譜で表現できない盤面があるとは…
いやはや何とも…
辺のどこかに一箇所でも●○●○の4つの並びがあったら その局面は実現不可能だと思う
こういう終局図もある ●●●●●●● ●●●●●●●● ●●●●●●●● ●●●●●●●● ●●●●●●●● ●●●●●●●● ●●●●●●●● ●●●●●●
>>475 >>477 なるほど、辺の条件によっては無理なものがありますね。
辺の条件はOKでも不可能な盤面を思いついた。
●●●●●●●○
●○●○●○●●
●●○●○●○●
●○●○●○●●
●●○●○●○●
●○●○●○●●
●●○●○●○●
○●●●●●●●
少なくとも一つの方向に3つ以上の同じ色の石が連続していて なおかつ、どの方向にも相手の石を挟んでいない石が存在しなければ 直前に打った石がないということで、その局面には到達できないってことかな
481 :
256 :2006/04/17(月) 17:32:05
>>479 不可能っぽく見えますけど、なぜ不可能ですか?
プログラムを作って存在できる辺と存在できない辺の形を調べてみました。
辺の8マス3^8=6561通りのうち、
・存在できるもの:5935通り
・存在できないもの:626通り
どなたか検証お願いします。
>>481 int p, i, j;
int c = 0;
int a[8];
for (p = 0; p < 6561; p++) {
j = p;
for (i = 0; i < 8; i++) {
a[i] = j % 3;
j /= 3;
}
for (i = 0; i < 5; i++) {
if (a[i] == 1 && a[i + 1] == 2 && a[i + 2] == 1 && a[i + 3] == 2) {
c++;
break;
}
if (a[i] == 2 && a[i + 1] == 1 && a[i + 2] == 2 && a[i + 3] == 1) {
c++;
break;
}
}
}
printf ("%d %d\n", 6561 - c, c);
5969 592
ちょっと違った
483 :
479 :2006/04/17(月) 18:14:27
>>480 >>481 475や477と同じ理屈で、最終着手が盤面のどの石でも必ずどれかの石を返します。
>>479 すべての石が8方向のうちどれか1方向へ
◆○●(◆はそのマスに置かれているもの
そのマスに置かれている石が白の場合は◇●○となる)
という形をとっている場合、
すべての石が直前の一手となりえないので
その局面は存在しないこととなる。
◆○●は、 ◆○○● ◆○○● ◆○○○● でも可
>>480 とちょっと違うな。。どうなんだろ。。
64マス全部埋まっていなくとも、通用する理論?
>>484 基本的には同じことを書いたつもり。
++++++++
++++++++
+++●●+++
++●○○●++
++●○○●++
+++●●+++
++++++++
++++++++
この局面はどの石も3つ以上連続したつながりを持っていないので
直前に打った石がないことになり作れない。
++++++++
++++++++
++●●●+++
++●○○●++
++●○○●++
+++●●+++
++++++++
++++++++
これは左上隅の黒石が右と下方向に3つ連続していて、隣接した白を挟んでいないので
少なくとも1手前からは作れる。
++++++++
++++++++
++●●●+++
++●○○●++
++●○○●++
+++●●●++
++++++++
++++++++
これは全ての黒石が白を挟んでしまっているので、作れない。
486 :
256 :2006/04/17(月) 19:21:01
>>486 機械的に黒白黒白が含まれる数を数えただけなので
●○●●○●
○●○○●○
の6個の並びと
●○●●○○●○
○●○○●●○●
を数え漏らしてたようでした。
すみません。
今石を置いていくプログラムを書いたら同じ数になりました。
>>485 「辺」の定義を広くして次の盤面も
棋譜で表現不可能かと。
\ABCDEFGH
1++++++++
2+++●○●○+
3+++●○●○●
4++●●○●○●
5+○○○○○○●
6++●●○○●+
7+●●●●○++
8++++++++
D2からG2が●○●○となっているため。
\ABCDEFGH
1+++●●○○○
2+++●○●○○
3+++○●●○○
4+++●●●○○
5+++●○○○○
6+++○●○○○
7+++●●●○○
8+++●●●●○
D2からD7まで●○●●○●となっているため。
これは正しい?
>>489 ある連続した石の列をとったとき
その列に属する全ての石が、その列を構成する石からしか挟まれていないか
どの方向にも挟まれていなかった場合
その列に辺の打てないパターンが含まれていたら
その局面は棋譜で表現不能。
ってことでいいのかな?
\ABCDEFGH
1++++++++
2++++++++
3+○○○○+++
4●●○○●●++
5●●●○●●++
6+○●●●●●●
7++●●○○++
8+++○○○++
これのA5からD8までの斜めのラインとかも?
辺の全でに石があるときの、辺の有り得ない形を調べたら 2^8=256のうち106が有り得ない形で、150が可能な配置でした。 と、いうことは60手後の終局盤面 2^64のうち、少なくとも1-(150/256)^4=0.88くらいは 有り得ない局面だということですね。 隅石の重複を考慮してないので正確ではないですが大体このくらいかと。 さらに、辺は可能でも全体としては不可能な盤面もあるので終局局面数はさらに減るのかな。
>>490 ですね。かなり削られますねこれで。
タブーの形が一次元なパターンですが、二次元のパターンはないのかなぁと思ったりもします。
>>491 場合わけをして計算したら、
64マス全て埋まっている状態で
全ての四辺の通り
2^28 = 268435456
のうち、
>>486 に引っかからない四辺は、
31640626 でした。(
>>486 のデータを使わせていただきました。)
64マス全て埋まっている状態のうち、オセロ到達可能局面は、
12%未満というのはすごく驚きです。
ここらへんの感覚は今まで認知されてたんでしょうか。。
>>493 タブーというのは
間違った表記ですね
語彙がいいかげんですみません
60個埋まっている最終局面をランダムに発生させて ありえない局面を除いた割合を調べてみました。 ありえない辺だけを除いた局面の割合 100000000 11788619 0.117886 計算では31640626/2^28=0.117871 辺のパターンは考慮せず白も黒も1手も戻せない局面だけを除いた割合 10000000 9492871 0.949287 ありえない辺と白も黒も1手も戻せない局面を除いた割合 100000000 11447828 0.114478 この100000000回のうち辺のチェックは通った数 11785752 11785752 11447828 0.971328 辺がありうる並びだったとき3%弱程度が1手戻せなかったみたいです。
>>492 二次元は私も考えてましたがなかなか難しいですね。
唯一思いついたのがこれです。
盤面は2つとも左上隅とします。
●○●++ |●○●++
+※※++ |○※※++
+++++ |●※+++
+++++ |+++++
+は石の有無は問わないとして※の箇所が全て空白は不可能。
理由:白石は、隅と辺の黒石に挟まれてるので、黒石より後から打たなければならない。
そのとき、※の箇所が全て空白だと打てない。
疑問に思ったんだけど、中央4×4のボックスから初期配置4石を除いた12マスが 全て埋まる最長手数は何手なんでしょう? 最短手数は12ですよね。 感覚的には59手までボックスのうちの1マスを開けておくのは不可能に思えるのですが。 これが不可能であれば64マス埋まった盤面から1手戻すときもボックスは除外できます。 さらに言えば終局前の数手はほとんど隅の近くしか空いてないと思うのですが、 これも証明は難しいですよね。
f5d6c3d3c4f4c5b3c2b4e3e6c6f6a5a4b4a6d7c7e7e8b6d8 g3f7g5d1c1b1g6a7g8h6h5f8c8h4g4b2a1b7e1h3a2h7a3g2 a8b8g7h8h2h1g1f1f2e2d2f3 最後まで開けられる模様。
どうやって見つけたんだ! 一ヶ所バグがあったので直した f5d6c3d3c4f4c5b3c2b4e3e6c6f6a5a4b5a6d7c7e7e8b6d8 g3f7g5d1c1b1g6a7g8h6h5f8c8h4g4b2a1b7e1h3a2h7a3g2 a8b8g7h8h2h1g1f1f2e2d2f3 17手めb4→b5
496です。 そうですか、可能でしたか!でも早速の反例ありがとうございます。
500 :
256 :2006/05/03(水) 05:17:22
>>463 4x4オセロの結果を確認しました。
ply--maxmob--kifu--pass--gameover--bw-----ww----draw
00-----4-------4------0------0------0------0------0
01-----3------12------0------0------0------0------0
02-----4------44------0------0------0------0------0
03-----5-----128------0------0------0------0------0
04-----5-----436------4------0------0------0------0
05-----5----1296------8------0------0------0------0
06-----6----3784-----40------4------4------0------0
07-----5----9756----144------8------0------8------0
08-----4---22152----828-----20-----20------0------0
09-----3---41296---2892----308----160----148------0
10-----2---58912--10732----808----440----356-----12
11-----1---53580--25252---5332---3260---2072------0
12------------------------------20748--27532---5300
501 :
284 :2006/05/03(水) 13:11:34
>>500 確認、ありがとうございます。同じ結果でほっとしました。
あと>>474- からの流れの、直前手が可能かどうかでの不可能盤面についてですが以下のことを考えました。
例として
>>455 の盤面を使わせてもらいます。
455の盤面で480の条件を使い直前手を選びます。(私なりに表現を変えていますが同じ意味です)
条件1:その石と同色で3石以上並んでいなければならない。(ただし3石並びの真ん中は除く)
下図の星の位置
++++++++
+☆+☆+○☆+
+☆●○●★☆+
+☆●☆★●☆+
+☆+★○+☆+
+●★++●●+
+○○●●○○+
++++++++
条件2:どの方向にも相手の石を挟んでいない。
条件2を加えると黒の3石が残る。
++++++++
+○+○+○○+
+○●○●★○+
+○●○●●○+
+○+★○+○+
+●★++●●+
+○○●●○○+
++++++++
黒★の1つは初期配置なので、それも除き直前可能位置は2つですね。
(続く)
502 :
284 :2006/05/03(水) 13:12:20
(続き)
この2石を着手する前の盤面は次の4つ。
++++++++ | ++++++++
+○+○+○○+ | +○+○+○○+
+○●○●※○+ | +○●○●※○+
+○●○○●○+ | +○●○○●○+
+○+●○+○+ | +○+○○+○+
+●●++●●+ | +●●++●●+
+○○●●○○+ | +○○●●○○+
++++++++ | ++++++++
++++++++ | ++++++++
+○+○+○○+ | +○+○+○○+
+○●○●●○+ | +○●○●●○+
+○●○●●○+ | +○●○○●○+
+○+○○+○+ | +○+○○+○+
+●※++●●+ | +●※++●●+
+○○●●○○+ | +○○●●○○+
++++++++ | ++++++++
この4つの盤面も同じように遡っていけば元の盤面が可能かどうか分かります。
と、ここまでは理論ですが、私が考えたのは455の30石ある盤面で直前可能手が2手、
直前可能盤面は4つ、というのは少ない気がします。
(直前可能手、直前可能盤面が少ないので不可能盤面ではないか、ということです)
例えば、
>>494 で
>辺がありうる並びだったとき3%弱程度が1手戻せなかった
とされていますが、残り97%の直前手可能数と
ランダム棋譜で60手進めた時の直前手可能数を比べてみてはどうでしょう。
感覚的には後者のほうが直前手可能数が多いように思います。
503 :
名無しさん@5周年 :2006/05/03(水) 19:18:43
本の紹介 リバーシのアルゴリズム 著者Seal Software(工学社) C++とJavaで書かれている
504 :
256 :2006/05/06(土) 14:03:33
>>503 以前本屋でちょっと立ち読みしたことがあります。
>>501-502 初期配置まで盤面を戻すプログラムを作ってみました。
全部埋まった状態から初期配置まで戻すのは難しいようです。
多くのありえる局面を戻すのは今のところ15〜25手くらいが限度のようで、
それ以上はいつ終わるか分からないような状態です。
>>257 、
>>263 、
>>314 の2個目、
>>455 、
>>479 などは、
ありえない局面で、数秒以内に結果が出ました。
その他は259、314の1個目、475、489、490などは、
なかなか終わらなかったので途中でやめました。
戻すのに掛かる時間は局面依存がかなり強いようです。
例えば、16手打ったある局面は1分くらいで解けたのに、
そこから1手進めた17手の局面は3時間40分くらい掛かったり。
多分パスがあると急激に処理時間が多くなるようです。
64マス埋まっている盤面の話で
>>501-502 みたいに
直前可能盤面数を算出したんですが
すべてオール黒の場合 153705 通りありました。
オール黒、オール白は実戦的に凄いというイメージがありますが、
数ある盤面の中で一番多く棋譜を含んでいる盤面なのかもしれません。
つまり、それだけ到達しやすい盤面なのかもしれません。
>>すべてオール黒。。。。orz
507 :
256 :2006/05/07(日) 06:21:25
>>505 >すべてオール黒の場合 153705 通りありました。
これどうやって求めました?
プログラムを作って数えてみたんですけど、
91648とかって数字がでてきました。
実装が間違ってるのかな・・・。
508 :
284 :2006/05/07(日) 11:27:40
>>504 ありえない局面でなかなか結果が出なかったものは盤面の一部がありえない配置のものが多いですね。
ありえない配置以外の石は局面を遡れてしまうのでなかなか結果が出ないのだと思われます。
それと、速度UPには最善手探索のときのαβ法のような上手い枝狩りを考える必要があるでしょうね。
>>505-507 オール黒の直前可能盤面数を計算で出して見ました。
直前手がA1(隅)の場合、右、下、右下方向それぞれ返せる石の数は0〜6の7通り。
全て返さない場合は直前盤面にならないので総数は「7×7×7−1」となる。
A1=(7×7×7-1)×4=1368
隅は4箇所あるので4倍しています。以下同様に
B1=(6×6×7-1)×8=2008
C1=(5×5×7×2×2-1)×8=5592
D1=(4×4×7×3×3-1)×8=8056
B2=(6×6×6-1)×4=860
C2=(5×5×6×2×2-1)×8=4792
D2=(4×4×6×3×3-1)×8=6904
C3=(5×5×5×2×2×2×2×2-1)×4=15996
D3=(4×4×5×3×3×2×2×2-1)×8=46072
トータルは91,648になりました。
>>508 やっと 91648 に会いました。真ん中4つを入れたり、符号が抜けてたりしてました。精進。
510 :
284 :2006/05/09(火) 18:06:12
>>505 >オール黒、オール白は実戦的に凄いというイメージがありますが、
>数ある盤面の中で一番多く棋譜を含んでいる盤面なのかもしれません。
一番多く棋譜を含んでる、かどうかは現時点で証明出来ませんが508で書いた式を考えると
「91,648は、ある盤面の直前可能盤面数の上界」であり、また
「直前可能盤面数が最大(91,648)となるのはオール黒とオール白の2盤面のみ」
という事は言えますね。
>>495 その2つをまとめて一つの条件にしました。
(※は緑、または外界。○と○は同じ色の石。●と●は同じ色の石。○と●は違う色の石。+は全て。)
+++※
※※++
●○●+
※※※+
ありえないパーツ(←何て名前にしましょう?)は今のとこ上の一つと下の四つを加えた5種類ですかね。。
+●○●○+
※※※※※※
+●○●●○●○+
※※※※※※※※※
+●○●●○○●○+
※※※※※※※※※※
++++
※※※+
●○●+
※※※+
512 :
よんけた ◆Tl2oC4lIZ2 :2006/05/31(水) 21:50:08
氷河期です。保守。
513 :
名無しさん@5周年 :2006/06/03(土) 02:07:40
結果って 勝ち、負け、引き分け、の三つじゃないの?
>513 お前はブロンドか。 とあるバーにて、男がブロンドに言った。 「ここに一組のトランプがある。 ここから一枚カードを取り出して、ジョーカーが出たらキミに100ドルやろう。 それ以外が出たら、キミは今晩ボクと一緒に過ごす。 こんな賭けをやらないか?」 ブロンドは 「いいわ。」といって、カードを一枚抜いた。 みごとジョーカーを引き出した。 男はブロンドに100ドルを渡して、去っていった。 それを見ていたバーテンダーはブロンドに言った。 「お嬢さんすごいな、あんな無茶で不利な賭けを受けるなんて。」 ブロンドは答えた。 「あら、全然無茶じゃないわ。」 「だって、ジョーカーが出るか出ないか、50%の賭けよ。」
516 :
名無しさん@5周年 :2006/06/15(木) 01:50:08
>>515 ブロンドってコロンボよりも賢いんだなー感心したぜ
「試合結果」の考え方として、
(1)勝ち、負け、引き分けの3通り。
(2)棋譜数を数える。
(3)局面数を数える。
などの考え方が出ていますが(→
ttp://www9.atwiki.jp/othello/pages/5.html )
黒38-白26 とかの終局時駒数で表現する方法もありますね。(既出だったらスマソ)
これは数えられないでしょうか?
とりあえず全枡埋まった場合は黒64-白0 〜 黒0-白64 の65通りですね。
黒m-白nと考えるとm+n≦64が成り立つので最大2145通り、かな。
518 :
名無しさん@5周年 :2006/06/15(木) 13:57:47
前最強オセロでコンピューター同士を最強レベルで戦わせようとしたら コンピューターが悲鳴上げてて二日間くらいの試合になったから相当 な数だと思うぞ。
519 :
名無しさん@5周年 :2006/06/30(金) 02:39:42
あげ
2週間ほど前にこのスレ見つけて、面白そうだったので自分も全探索にチャレンジ。 自己満足な意味合いが強いけれど何とか高速化を行い、初手固定の14手目までの探索で 60分強と言うところまで来ました。 環境はWIN2k、XP1800+、VC2005Express。一応cygwin上のgccでもコンパイルできることを確認。 15手目までやってみたかったけど、家のマシンは負荷を掛け続けるとなぜか落ちるようなので 断念しました。 MMXやら64ビット専用やらと、まだ高速化はいろいろ出来そうですし、実際そういうソースも 公開されてるようですが、ソースレベルの高速化はとりあえず一旦ここでお終いにしようかと 思います。 次の手としては、同じ局面が発生した時の対処となりますでしょうか。 ちょっと試してみたいと思います。
521 :
名無しさん@5周年 :2006/07/02(日) 15:24:03
>>520 か、かっかかっかかかか歓迎しゅるっ!!!1
>>520 乙です。
>同じ局面が発生した時の対処
これが意外と難しいんだよね。
同じ局面を判断するためのデータベースが必要になるし回転や反転をどこまで考慮するかも悩み所。
このスレでも全探索は大勢チャレンジしてるけど、その次の一歩が踏み出せない感じだね。
524 :
520 :2006/07/21(金) 23:48:51
どもです。 あれからも細々とやっておりますが、難しいですね。 局面データの保持がやはり厳しいです。 検索速度は無視してでも、何とかできないかと考えております。 高速化の方は成果がありまして、初手固定14手まで50分弱となりました。 今のところそんな感じです。
525 :
523 :2006/07/28(金) 08:01:55
>>524 14手まで50分弱とはかなり速いですね。このスレでもトップクラスじゃないかな?
私は13手で数時間掛かってそこで挫折ですorz
局面データを保持するためのメモリ量を考えてみました。
64枡のそれぞれに黒の有無、白の有無、と考えると、1盤面あたりに128ビット=16バイトのデータ量が必要。
64枡に空き、黒、白の3値を保持して最小完全ハッシュ関数を作ったとして、3^64通り=13バイト。
ここで考えたのがx手目が決まれば盤上の駒数nはn=x+4個に決まるのでこれを使えないだろうか。
64枡にn個の石を配置出来るパターンは64!/(64-n)!/n!
n個の石が黒か白かは2^n
これらを最小完全ハッシュ関数で表現出来れば
n=10の時配置は5バイト、黒白情報は2バイト。計7バイト
n=15の時配置は6バイト、黒白情報は2バイト。計8バイト
これを使えば初期十数手まではメモリ節約出来ると思う。
ただしハッシュ関数、逆ハッシュ関数を使うので速度的にはかなり不利だと思う。
それと上手い最小完全ハッシュ関数と逆関数が作れるか、というのも問題ですね。
>>525 コンパイラの吐くソースを見ながら、ビット演算と場合分けをちまちまとやった成果です。
局面データについてですが、配置情報と黒白情報が分かれてるのが良いですね。
片方(この場合は黒白情報か?)をくくり出すというか、indexにすれば実際の保持量を減らすことが
出来ますし。自分の場合は算術圧縮の頻度表(石の数)で試してみました。
とはいえ結局のところ局面数そのものが多いため、1局面を1ビットとしても持ち切れなくなると
思われるので、重複チェックは適当な所で妥協した方が良い気がしてきました。
つまり、一定数を超えたら適当にデータを捨てていくのはどうだろうかと。
探索数と保持数で上手くバランスが取れて成果が出るか、どっちつかずで意味が無かった
という結果になるか分かりませんけど。
しかしいずれにしろ局面を少ないデータで表現できるに越したことは無いので、何とかならないかと
引き続き思案中であります。
次に試そうと思っているのが、外周の空きマスをランレングスで圧縮してから算術圧縮というものです。
あげてみよう
>>526 実力不足でコメントできないのが悔しいです。
応援してます。
>>528 お、よんけた氏からレスが。
応援ありがとうございます。といっても今忙しくて何も進んでおりません。
ですので、ネタとしてwikiの方にソース(othello_count.cpp)をアップさせてもらいました。
高速化の理由がバグのせいだったと言うこともあるかもしれませんので、
検証や更なる高速化をどなたかお願い致します。
(バグ入りじゃないと良いナァ…)
530 :
293 :2006/09/03(日) 00:50:57
>>529 すみません、ちょっと見てみたいと思ってWikiを漁ったんですが見つかりませんでした。
リンク貼っていただけますか?
532 :
256 :2006/09/09(土) 04:49:56
みなさんお久しぶりです。
520氏のプログラムのソースをいじってみました。
最終1手を最適化しただけですが、僕のマシン上(CeleronD3.06GHz)で、
処理時間を59%くらい削減できました。(12手:27.44秒->11.28秒)
僕がちらっと見た限りでは520氏オリジナル版にバグは見当たりませんでしたが、
ぼくの変更により新しくバグが入ってしまったかもしれません。
ぼくはC++があんまりわかってませんし。
ソースは
>>531 と同じ場所にアップしときました。(othello_counter2.cpp)
こういう事ができる余地を残しておきながらあれだけ速いのは驚きました。
以前挑戦した時は13手で数時間かかっていたのですが、
久しぶりに書き直して、ちまちま改良を重ねたら13手で70分程というところまできました。
>>532 のと比べると、まだまだ大きな差がありますが、もう少し頑張ってみようと思います。
534 :
293 :2006/09/11(月) 01:35:22
535 :
256 :2006/09/15(金) 22:43:01
6x6オセロの全探索をしてみました。 誰かやってましたっけ? |手|空|最大| 棋譜数 | パス | 終了 | | 1|32| 4| 4| 0| 0| | 2|31| 3| 12| 0| 0| | 3|30| 5| 56| 0| 0| | 4|29| 6| 244| 0| 0| | 5|28| 9| 1364| 0| 0| | 6|27| 11| 7604| 0| 0| | 7|26| 12| 47740| 0| 0| | 8|25| 14| 308716| 0| 0| | 9|24| 15| 2115128| 112| 0| |10|23| 16| 14978496| 156| 108| |11|22| 17| 108843480| 3292| 112| |12|21| 19| 811367624| 11548| 2092| |13|20| 19| 6080743752| 141700| 4380| |14|19| 19| 46261636540| 802508| 58512| |15|18| 18| 348409244516| 9116028| 138548| |16|17| 17|2632834266064| 63962184| 1500172| 最大着手可能箇所数はこれ以降も空きの数と一致しそうな気がします。
536 :
名無しさん@5周年 :2006/09/16(土) 12:42:25
もうそんなことはどうでもいいから、 みんなでオセロしようぜ!
537 :
名無しさん@5周年 :2006/09/16(土) 19:16:50
538 :
名無しさん@5周年 :2006/09/16(土) 22:37:57
\\\ /⌒\ , ─ 、 /___ヽ / ヽ\\\ /  ̄  ̄ ヽ. i \\ /  ̄ ̄ ̄ ̄ \ \ | サ ト タ や!! / へ /ヽ ヽ ヽノ / /^ヽ /^ヽ ヽ ヽ \\\ |. | 0 | | 0 | | i \\| `− 6 `−′ |. | ! ! ! ヽ /  ̄ ̄ ̄ \ / / \ \_ (⌒ヽ丿 / / ━━━6━━━━━ヽ、
>>535 乙です。
そして次からはsageでお願いします。
ホ
今度はアタック25の試合結果について考えようぜ。
保守がてら…
自分独自のやり方では限界が見えてたので
>>534 を参考にしたら
11手12秒まで到達
544 :
名無しさん@5周年 :2006/11/07(火) 01:01:01
>局面数メモリ節約
>>525 はハッシュ法みたいだけど、
ハッシュまでは使わずに配置情報と白黒情報の分離だけ実施してみたらどうだろう?
手数 n のときに、配置情報 64 bit、白黒情報 n bit、合計 64+n bit
とすれば、16手付近で 80% くらいのメモリ節約になりますね。
1手で局面が10倍になることを考えると 80% じゃ足りないっすか。。。
元が128bit以下だし、ハッシュの有効性については疑問
546 :
名無しさん@5周年 :2006/11/08(水) 17:23:03
┏━━━━━━━━━━━━━━━━━━━┓ ┌──┐ ┃ 中川翔子 盗撮 おっぱい 動画 特設ページ ┃ │検索│ ┗━━━━━━━━━━━━━━━━━━━┛ └──┘ _ ∩ ( ゚∀゚)彡 おっぱい!おっぱい! ⊂彡
最近このスレを発見して自分もこの話題に興味あるのですが、 如何せんプログラムに対しては素人なのです。 ひどく低レベルなことを言ってるのは重々承知してるのですが、 もし差し支えなければ、4×4の場合のソースを頂けないでしょうか?
548 :
256 :2006/11/12(日) 21:31:25
>>547 >>531 のプログラムは8x8用ですけど、
これを中心の4x4部分に限定して打つように改造すれば4x4も計算できます。
64x64とかやって見ると法則が見えてきたり・・・しないか
で、結論は?
難しい
552 :
名無しさん@5周年 :2006/12/22(金) 14:57:56
553 :
名無しさん@5周年 :2006/12/25(月) 14:49:00
たたき台になるかわからんが、 例えばこのような局面(白手番)から決着がつくまで何通りあるかを数え上げることを考えてみよう。 計算効率をあげるためにはどうすればよいか? ________ l++●●+○++l l++●●●●●+l l○○○○○●●○l l○○●○●●●○l l○●○○●○●○l l○○●●○●○○l l○+●●●○++l l++○○○○○+l ↓どうぞ
上界は14! = 87,178,291,200
114682079
556 :
553 :2006/12/26(火) 02:46:55
>>554 ,
>>555 どのような思考の流れがあったかとか良いスキームとか思いついたら報告、或いは紹介してくれ
俺の場合、上界は察したが、下限はしらみつぶししか思いつかなかった。
だが、一つの”気づき”というか、誰でも思いつくような考えではあるのかもしれないけれども
その二つは思考のベクトルがまったく逆で、プログラム的なことを考えた場合
________
l×◎●●◎○◎◎l
l×△●●●●●△l
l○○○○○●●○l
l○○●○●●●○l
l○●○○●○●○l
l○○●●○●○○l
l○◎●●●○◎×l
×◎○○○○○×l
◎(おける)が△(黒がそばにあるがはさめない)と×(そばに黒がない)いう違いでも、
有意味であることくらいには気がついた。
この状態に至る前の過程が何通りあるのかわからなくても関係ないこともわかった。
要するにその前の状況に左右されないということではあるのだけれども、
逆に戻るというアプローチも取れることを考えると何か意味があるかもしれない、ないかもしれない。
反応アリガトウ、メリークリスマス。
557 :
555 :2006/12/26(火) 10:34:06
数字だけ載せて不親切だったな 残り14手だったので全探索しただけだよ 合ってるか保証はないけど 効率的に求めるにはどうしたら良いだろうね 同一局面を探索しないという方法も取れるけど、 同一かどうかを調べるのに時間を食って意味がなくなりそう
558 :
名無しさん@5周年 :2006/12/26(火) 10:56:28
3の60乗+2の4乗は違うんですかね?ひとつのマスに白、黒、んで完封した時の無しって3っつの選択肢があって、真ん中だけ初期からあるから 数学はあんま得意ぢゃないんで素人な意見で申し訳ない
同一局面のチェックはノードが割合少ないルート付近だけやるのが効率的だと思う。
560 :
553 :2006/12/26(火) 12:52:35
>>557 ローラー&ツリー的なしらみつぶしに、同一局面、あるいは回転対称性をどうすべりこませるか
もしくはまったく別のアプローチがあるかって考えてるけど、なかなか思いつかないね。
>>558 ________
l●●●●●●●●l
l●++●●++●l
l●++●●++●l
l●++●●++●l
l●++●●++●l
l●++●●++●l
l●++●●++●l
l●●●●●●●●l はありえるか、考えてみよう
>>559 俺もそう思う。
さらに同一局面とそれに似た局面(例えば一枚だけ違う)の違いが
どのような意味を持ち有意差として認められるかってのには多少興味がある
>>556 全探索プログラムで556と少し違うが似たようなことを組み込んだ事がある。
盤面データに「石の隣である」という情報を組み込んでみた。
例えば初期配置だと
00000000
00000000
00333300
00321300 0:空白
00312300 1:黒石
00333300 2:白石
00000000 3:空白で石の隣
00000000
というデータとした。
これだと石を打てるかどうかの判定は「3」のところだけチェックすればよいので
初期配置で12/60のチェックで済む。
実際初期十数手までのチェックでは計算時間は短縮できた。
しかし556の図のような終盤になると空白はほぼ石の隣になるので余計な処理の分
かえって遅くなるかもしれない。
>>558 560の指摘どおり存在しない盤面があるので単純にその計算式にはならない。
あと「3の60乗」と「2の4乗」は足すのではなくかける必要があります。
>>553 553の局面から同一局面の可能性について考えてみました。
________
lA@●●+○++l
l++●●●●●+l
l○○○○○●●○l
l○○●○●●●○l
l○●○○●○●○l
l○○●●○●○○l
l○B●●●○+Al
l+C○○○○○Bl
上図で白@黒A白B黒C と、白B黒C白@黒A は同一局面となる(4手後)
また黒A白Bに打つと考えると例えば
白@黒A白B黒A白B黒C
白@黒A白B黒A白B黒C
白@黒A白B黒A白B黒C
と、上記@とB、AとCを入れ替えた場合の6通りで同一局面となる(6手後)
白先@AとBC、黒先ABがそれぞれ干渉しないのでこういうことが起るのですが
ある局面から数手後での同一局面は多いのかもしれません。
それと考えると当たり前なんですが、その数手の間に打った石の位置は同じです。
つまり上記6手後の例では@ABCABの6箇所にどの順で打つかが問題であって
それ以外の場所に打った時点で同一局面にはならない、ということです。
564 :
553 :2006/12/27(水) 16:53:43
565 :
256 :2006/12/27(水) 17:38:45
>干渉する場合で同じになるとき これってこういう経過の同一局面の事ですか? F5D6C3D3C4 F5D6C4D3C3 ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++●○++++ +++○●+++→++●●●+++ +++○●●++ +++○●●++ +++○++++ +++○++++ ++++++++ ++++++++ ++++++++ ++++++++
566 :
553 :2006/12/27(水) 18:13:30
>>565 まさにそういう経過のことです。
あまり考える意味はないかなぁ?
++++++++ ++++++++ ++●○++++ ++●●●○++ +++○○●++ +++○++++ ++++++++ ++++++++
++++++++ ++++++++ ++●○++++ ++●●●○++ ++●●●●++ +++○++++ ++++++++ ++++++++
++++++++ ++++++++ +○○○++++ ++●●●○++ ++●●●●++ +++○++++ ++++++++ ++++++++
571 :
563 :2006/12/28(木) 17:18:21
>>565 >>566 565を一般化すると
A B + → ●○+
C ◎● → ●●●
+○● → +○●
白石(◎)を挟む黒の手AとCがあり、それを返す白の手Bがあると
●A→○B→●C と ●C→○B→●A は3手後で同一局面になる、ということですね。
A,B,Cの手は挟む石が複数になっても成り立ちます。
>>570 確かに563のような終盤では同一局面を探すより全探索してしまったほうが
効率的だとは思いますが中盤くらいでは効果が出ないでしょうか?
572 :
570 :2006/12/28(木) 18:33:24
>>571 中盤か終盤かというわけではなくて、あくまで探索深さの問題だと思うよ。
同一局面が現れるのは三手先から。
一手につき候補手が5つあると仮定すると、三手先は125通り。
同一局面が12個あっても一割にも満たない。
これが四手五手と増えるにつれ同一局面が現れても、ほとんど意味がなくなる。
局面を保持すればするほどメモリを食うし、
局面の一致をチェックするためのメモリアクセスがボトルネックになる可能性が大きいと思う。
あくまで上で述べたのは予想だから具体的にプログラム書いて確かめるのが一番だよね。
++++++++ ++++++++ ○○○○●●●○ ○○●○●●●● ○○●○●●●○ ○○○○●●○○ ++○○○○++ ++○AB○++ 細かいことだけど2手先でも同じになることはありそう。 例えばここでABと進んでもBAと進んでも。
ロジステロの再発明について議論するスレはここですか?
576 :
553 :2006/12/29(金) 09:58:55
>>575 そうです…w
本当はスレ通り、”結果数を数え上げる”スレです。
勝ち負けにすら関心はありません
579 :
553 :2006/12/30(土) 03:56:05
>>578 最善手だとか定石、どちらが優勢かとか場の評価は置いておくって感じで。
たしかロジステロにはそういう要素があったような気がします。
・
581 :
563 :2007/01/11(木) 10:29:53
明けましておめでとうございます。 スレの流れでデータベースを持たない(局面の保持をしない)で重複チェックする方法を思いつきました。 探索中の棋譜を保持しておいて最後の3手ないしは4手を総当りでチェックする。 もちろん再現不可の棋譜も出るがそれは除外して問題ない。 3手の総当りで6面、4手の総当りで24面の局面が発生するがその中で 本手との同一局面をチェックする。 もし同一局面が発生すればその3手(または4手)の手順で唯一となる手を 決めるルールを設定しておき、その手ならば同一局面の数倍のカウントをし、 それ以外の手で同一局面なら以降の探索をしない。 例えば>565の棋譜では F5D6C3D3C4の時最後の3手(盤の左上からC3,C4,D3)を並べて出来る盤面はF5D6に続く C3C4D3,C3D3C4(*),C4C3D3,C4D3C3(*),D3C3C4,D3C4C3 の6面で(*)の2面が同一局面となる。 この時最初に出てきたC3D3C4をユニークとして以降の探索を2(同一局面の数)倍とする。 そしてF5D6C4D3C3の時にも同様の処理をしてC4D3C3は同一局面はあるがユニークでないので 以降の探索を打ち切る。 この方法は、演算量が増えるので重複処理による演算の減少に見合うかどうかが問題ですね。 それと決めた手数以降に発生する同一局面には対処出来ません。
http://www.amy.hi-ho.ne.jp/okuhara/howtoj.htm >置換表 (Transposition table)
>数手先で同じ局面が生じることがしばしばある。 たとえば虎定石の初手から f5-d6-c3-d3-c4 と f5-d6-c4-d3-c3 の手順は、同じ局面になる。
>これは置換 (transposition) と呼ばれる。 同じ局面を複数回探索するのを防ぐため、
>プログラムは探索中に遭遇した局面のすべて (あるいは大部分)を置換表(通常はハッシュ表のデータ構造を用いる)に保存する。
>オセロの中盤においては、深い読みでは20%〜50%(概算)の時間を節約できる。
>終盤においては、置換が生じる確率はさらに高くなり、節約できる時間も大きくなる。
保守
保守
>>582 オセロプログラムを作る事と、全棋譜をカウントする(全探索)のは手法が違う。
全探索にはminmaxやαβの枝狩りが使えない。
全探索に使える枝狩りは今のところ Transposition のみだと思うが
Transposition table を使うと全ての局面を保持する必要がある。
オセロプログラムの場合、悪手は枝狩り出来るし現在の局面から手を進めれば良いが、
全探索の場合は初手から全て保持しなければならない為メモリ不足が問題となる。
>>585 じゃあ、
オセロの全探索数をみつける>>(計算量的に超えられない壁)>>オセロで理論上最強の手を見つける
でおk?
>>586 おkです。
ついでに言えばさらにその右側に
オセロで理論上最強の手を見つける>>(計算量的に超えられない壁)>>現在の強豪オセロプログラム
こんなのがあるんですけどね
ヤスモリ
保守
F5D6C3D3C4F4F6G5E6D7F3E7E3G4G6G3H4H3H5H6C7C6C5B6F8E8C8G8B5A5F7B4A6E2A3A7F2E1D2C1D1G7H8D8H7B7H2G2F1H1G1B8A8A4B1A1A2 \ABCDEFGH 1○○○○○○○○ 2◇++●●●●● 3○+●●○●●● 4○●●●●●●● 5○○○●●●●● 6○○○○●○●● 7○●○○○●●● 8●●●●●●●● こんな形って過去に存在しないとか言われてたっけ。
しばらく人大杉だった・・・ 保守
保守
保守
保守
試合結果を求めることに直接結びつかないと思うのだけれど 少し気になったことがあります。 ある局面Aがあって、Aの石の並びを左右対称、上下対象にしても 最終石差は変わりませんよね。 また、対角線に対して石を対象に並び替えても同じ結果。 それをした後で更に左右対称、上下対象にしても同じ結果になります。 こんな感じで石をある特殊な条件下において並び替えても 同じ結果になるような石の並び変えの仕方って他に何かありますかね?
>>596 どうなんだろうね
その8種類の共通点って後の展開(分岐の仕方)が全く同じってことだよね?
だとしたら
分岐の仕方が同じ盤面の組を
自動的に発見するプログラムってのは作れそうだね
人間がウンウン考えるよりも目からうろこの並び替えが見つかる「かも」
599 :
名無しさん@5周年 :2007/05/11(金) 22:04:44
手番を黒番、白番のどちらから打ち始めても双方最善手順で引き分けに なり、かつ白石黒石を入れ替えても引き分けになるような黄金局面が いくつか存在すると思うのだけれどその中で黒石の数と白石の数が 等しい局面をいくつか抽出してみると何か法則が見えてくるかもしれないね。
600 :
600 :2007/05/13(日) 12:47:51
オセロは黒先手です
>>600 >>599 はそういう意味ではなく、パスを考慮して手番が入れかわっても
同じ局面になった場合を想定して打ち始めるという意味です。
誤解を招いてしまいましたね・・・。
すいません。
602 :
名無しさん@5周年 :2007/05/13(日) 22:55:00
>>601 オセロのパスは最終盤しか発生しないのでは?
いや、普通に打てなくなる場面があると思う。
>>601 あ、パスを考慮してか、そこまで考えてなかった、すまぬ
605 :
名無しさん@5周年 :2007/05/26(土) 20:52:14
私には、彼氏がいます。彼とわたしは、デートの時、どちらかの家に行き、だれもいないとき 、部屋で横になって裸でだきあいます。それがだんだんエスカレートしていって、学校の体育倉庫で 服をぬがされ、まだ3年生ですが学年で1番大きいおっぱいを、つかむように触られたり、しゃぶった りされます。最初は、苦手だったんだけどだんだん気持ちよくなりサイコーです。しかも、わたしは 、学年1美人でもてます。彼も同じで、美男美女でよくみんなにうらやましく、思われます。 : : このカキコ見たあなたは4日後に不幸がおとづれ44日後に死にます。それがイヤならコレをコピ ペして5ケ所にカキコして下さい。私の友達はこれを信じず4日後に親が死にました。44日後友達は 行方不明・・・・。いまだに手がかりもなく私はこのコピペを5ケ所に貼り付けました。すると7日後 に彼氏ができ10日後に大嫌いな人が事故で入院しました。 : : 信じる信じないは勝ってです
ハ,,ハ ('(゚∀゚∩_ おいらをどこかのスレに送って! /ヽ 〈/\ お別れの時にはお土産を持たせてね! /| ̄ ̄ ̄|.\/ | .モツ煮..|/  ̄ ̄ ̄ 現在の所持品:たばこ・ライター・コーヒー・ブラックブラック・枕・ケータイ電話 睡眠薬・聖教新聞 ・ダッチワイフ・外付けSCSI340MHDD・ネットランナー4月号 TYG02・小嶋進社長・ゲルトモ・ディプスファンタジア・抵抗1kΩ(黄紫橙金)・媚薬 バーボン・メシマズ嫁のお手製弁当・吉牛の割引券・銀魂1巻・将棋の駒(角行)・オナホール ジンギスカンキャラメル・ホットカーペット・第三のビール・笛・nintendoDS・執刀用メス・長ラン・74HC00 Vodafone902SH・たまねぎ・タケコプター・Celeron800MHz・ほしのあき等身大抱き枕・鳥肌実ポスター・経典・正露丸 17歳の心
607 :
名無しさん@5周年 :2007/05/30(水) 10:20:33
6x6の盤では完全手順が見つかる計算を誰かがしていると聞いたが、 結局完全手順を決定出来たんだろうか?
609 :
名無しさん@5周年 :2007/06/14(木) 22:57:09
それはすごい
610 :
名無しさん@5周年 :2007/06/14(木) 22:57:13
なるほど
611 :
名無しさん@5周年 :2007/06/17(日) 14:50:10
hoshu
612 :
名無しさん@5周年 :2007/07/02(月) 00:43:28
あげ
613 :
名無しさん@5周年 :2007/07/07(土) 19:10:20
ほしゅ
614 :
256 :2007/07/20(金) 17:30:36
俺もよく知らないけど、ルールから察するに、お互いのコマが少なくなって追い込む事が 出来なくなるんじゃないの? 普通に考えるとそれが当り前な気がするんだけど、証明大変そうだな
214←確かに全通り解析されて、超超高性能なPC出る時代になったら「オセロは後手(or前手)が100%勝つ」が証明されるだろうね。 パターンには限りがあるし、(約50%の)終局が自分の色のほうが多くなる手順に誘導するように打っていけば。
618 :
名無しさん@5周年 :2007/08/12(日) 23:15:22
6x6が1993年に解決したのなら、8x8ももうそろそろ出来てきても よいころじゃないのかな。
620 :
名無しさん@5周年 :2007/08/13(月) 23:59:46
組み合わせはBA☆KU☆HA☆TSUだー
621 :
名無しさん@5周年 :2007/08/20(月) 01:06:41
お盆中はカキコなかったね
622 :
名無しさん@5周年 :2007/08/20(月) 04:26:41
もう3年か……
624 :
名無しさん@5周年 :2007/08/20(月) 09:20:39
>>596 亀レスで悪いが、違う手順から同局面になったりはする。
2手目を縦に打っても斜めに打っても同形になる手順がある。
それとパーフェクトになった場合、同じ形でも相当違う手順から同形になる。
625 :
624 :2007/08/20(月) 09:30:24
石を並び替える事と手順は無関係だった。 でも左右対称や上下対称は石の配置が異なるので違う局面になるはず。 /や\や180度に回転するのは良いけど、│や─の回転は駄目ですね。
○● ●○ の形で始めると決めておくとしたら 対称の形は4種類だな。 強いオセロソフトは 探索を高速にするのとより多くの定石を調査できるように 置換表を持ってると聞く。
627 :
名無しさん@5周年 :2007/08/26(日) 03:21:04
石の上にも三年
8×8オセロの試合結果って黒+64〜白+64まで幅があるけれど 全体的にみて、それぞれの割合ってどうなってるのかな? 黒+64:0.13%、黒+62:0.26%、・・・、引き分け:30% とか 上の割合は適当に書いたけど。 特に自分は黒+64と白+64はどちらのほうが多いのか気になるなぁ それと引き分けより+64の進行の方が多いのか少ないのかも気になる。 自分は4×4、6×6の場合の割合と類似してくるんじゃないかと予想。 一番少ない割合の試合結果をすべて調べあげて(机上の計算になるかも) その割合を全体の割合と比較して逆算して積分すれば 全試合結果に近似しそうじゃない?
対称形があるからすべての局面数は減らせるって意見があるんだけど ある盤面があったときにその回転、鏡像は8パターン考えられる。 8パターンを1パターンに持っていけるとしても全体の計算量は1/8になる程度。 探索空間中に同じ局面が発生するという意見もあるけど 3パターン(白、黒、空き)の64マスの先手後手で (3^64)*2≒6*10^30だから仮にメモリが十分にあったとしても まだ計算できる量じゃない。 局面数をまとめるって話はおもしろいんだけど後何歩か足りないね。 10^12(1T)程度になれば計算できるんだけど。
>>628 オセロは後手有利だから白の方が勝数多そう
一番少ない結果が全体の100万分の1(1/10^6)だったとしても
その個数は10^45以上はあると考えられるからそれすら数を数えるのは難しいんじゃないかな?
試合結果の分布はなかったなぁ、暇な時にでもやってみるかな。
そういう目的ならモンテカルロ法で十分じゃない?
>>630 オセロは世界の強豪プログラムが最善候補のゲーム木(ブック)を構築すると高い確率で引き分けに落ち着きます。
もはや後手有利の可能性はほぼ無いと言われています。
そうだったのか。 知らんかった。
634 :
名無しさん@5周年 :2007/09/30(日) 08:29:24
あげ
635 :
名無しさん@5周年 :2007/10/26(金) 04:00:16 BE:186940883-2BP(200)
あきらめて、ありうる手順全部数えるプログラム作れよ
637 :
名無しさん@5周年 :2007/10/28(日) 01:35:05
手順を数える目盛りが足らんだろ
638 :
名無しさん@5周年 :2007/10/28(日) 10:55:36
640 :
名無しさん@5周年 :2007/10/30(火) 02:49:51
馬鹿には見えません
>>638 GJ!!! よくやった!!!
この研究成果でオセロ解析が大きく前進しそうだな。
解けるのも時間の問題か…。wktkすぎる!
642 :
名無しさん@5周年 :2007/11/01(木) 02:49:29
643 :
名無しさん@5周年 :2007/11/03(土) 02:18:11
〇×ゲーム知ってる? あれって、永遠に引き分けに出来るよね。 数が増えたのがオセロだろ。
五目並べって知ってる?
七並べって知ってる?
七並べと五目並べって何ですか?
貴方の心です
648 :
名無しさん@5周年 :2007/11/13(火) 18:19:48
結局オセロについてわかる人っていないのかな・・・
650 :
名無しさん@5周年 :2007/11/14(水) 02:34:21
オセロは各角の4マスを取り合うゲーム パスを有効に使うといい
652 :
名無しさん@5周年 :2007/11/15(木) 01:11:19
以後のような飛び石の攻め方をすると負けるね 真ん中に詰めるような攻めが一般的だが わざと翼を伸ばして相手を辺のところへ誘い込む戦略も使える 歴史が浅そうに見えるけどなかなか奥の深いゲームだよね
全部見ないで書くけど、 最大は、 3(白黒無地)の60乗 × 2(白黒)の4乗 ÷ 2(鏡像) − 鏡像でなく、且つ180度回転対称、且つ90度回転対称でない場合の分 − 鏡像でなく、且つ90度回転対称の分 では?
PCオセロで最強はどれ? 過去において、どれ一つとして勝ち越したものは無いが、 どれ一つとして一度も勝てなかったものは無い。 是非、巷で最高と噂されるもので試してみたい。
>>654 とりあえずzebra24手読みオススメ
>>656 ありがとうございます。
3戦目で勝ちました。
Move sequence:
e6f4e3d6g5f3f2f6c7f5c6d3c5e2c3c2d1g4d2c1b1g1e1c4h5d7g3g2f7h4h3h6c8g6b3g7e7f8h8h7g8e8d8b7b8f1h1h2a8b2a1a3a2a4a5a7b4b5a6b6
黒番で45-19でハツショ〜〜〜リ!
658 :
657 :2007/11/16(金) 12:59:48
インストールしてそのままやってたけど、 settingが最強になってなかったみたいです。 search depth 1move orz Time No time limit Book Use opening book ? Play human-style openings ? Medium randomness ? Midgame Small randomness ? Posistion table 4MB orz サイチョ〜〜〜セ〜〜〜ン
>>657 明らかに白番の終盤の読みが浅くなってるし。
強いソフトでも設定弱くして勝てればいいって話か?
>>657 WZebraは、ますOption→Languageを「日本語」にすれ。
話はそれからだw
てか、よく今のPCオセロに勝てるって奴がいるけどホント?
終盤30手読みなんてされたらまず無理だと思うんだけど。
・Book(定石表)が充実していて(=序盤の正確さ、中盤/終盤探索への移行の遅さ)、 ・評価関数も割と正確で(=中盤の正確さ、中盤/終盤の必要探索数の少なさ)、 ・探索も速い(=中盤/終盤の時間当たりの探索量の多さ)。 と3点揃っているようだと、ひたすら敗着待ちの勝負になるね。 強いソフト同士の対戦ではBookの知識量の勝負になり、 双方がミスを犯さない限り32-32の引き分けに落ち着く、という事からも。 ・実は強くないソフト ・実は強くない設定(探索深度の浅さ、ランダム性の強さ等) ・未熟なBookを使用 ・既知の対局結果をBookにフィードバック(学習)させていない (Book・評価関数の瑕疵をプレイヤーがあらかじめ把握している) みたいな条件で「勝てる」と言ってる人もいるけど、 上の条件抜きで「勝つ」としたら、不可能とは言わないまでも (完璧なBookや評価関数の作成はゲーム木の大きさの都合上、現状では極めて困難) かなりストイックな作業になるのは確かだと思う。
んで、
>>657 は最強設定のWZebraに勝てたのだろうか・・・・
WZebraの最強設定は時間制限無しの60手完全読み。 もし試合開始してたらまだWZebraが一手も打たずに試合中。
664 :
662 :2007/11/19(月) 02:26:38
そのことをすっかり忘れていたよ・・・・ とりあえず必勝読みでも完全読みでもない中での最強設定ということで。
665 :
名無しさん@5周年 :2007/11/20(火) 18:14:44
○○○○○○○● ○○○○○○○○ ○○○○○○○○ ○○○○○○○○ ○○○○○○○○ ○○○○○○○○ ○○○○○○○○ ○○○○○○○○ こういう終わり方をしたことがある
668 :
名無しさん@5周年 :2007/12/24(月) 09:11:39
ほしゅ
669 :
名無しさん@5周年 :2007/12/24(月) 13:43:44
たかだか64ますの勝敗2通り これの全パターンが解析できない。 更にパターン数の多い囲碁将棋なんてもう絶対無理。 ただ逆に考えるとそんなゲームを考える人間は凄いな… 最近ではルービックキューブあたり。
面白そうだったので、全局面探索やってみた。
現在、12手で23秒前後。(CPU 1.6GHz)
>>532 さんの約半分くらいの速度。
CPUパワーだ!って言いたいけど、
お正月、実家で暇なんでもうちょっと頑張る。
皆様、よいお年を。
671 :
670 :2008/01/03(木) 16:48:47
実家でコチョコチョやってみたところ、 実家のPCでは12手で10.7秒くらいまで行った。 でも自分のノートPC(CPU 1.6GHz)だと12手で13秒強。 なんか気に食わないなあ。
672 :
670 :2008/01/03(木) 16:51:20
実家のPC = 2.54GHz
極座標の覚書 ++++++++ ++++++++ ++++++++ +++●○+++ +++○●+++ ++++++++ ++++++++ ++++++++ 1層: 10 11 10 11 2層: 00 00 00 00 00 00 00 00 00 00 00 00 3層: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4層: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>たかだか64ますの勝敗2通り 開始位置も決まってるし 配置場所も飛び石は置けないし さらに対称性があるから 「たかだか64ますの勝敗2通り 」 よりは相当少ないっす
675 :
520 :2008/01/12(土) 21:42:51
ご無沙汰です。
正月から本日まで、othello_counter2.cppに手を入れておりました。
http://www9.atwiki.jp/othello/pages/28.html に、othello_counter3.cppを
アップロードしましたので、どなたか検証よろしくお願いします。
|手|多| 棋譜数 | パス | 終了 |
| 1| 4| 4| 0| 0|
| 2| 3| 12| 0| 0|
| 3| 5| 56| 0| 0|
| 4| 6| 244| 0| 0|
| 5| 9| 1396| 0| 0|
| 6|11| 8200| 0| 0|
| 7|12| 55092| 0| 0|
| 8|14| 390216| 0| 0|
| 9|15| 3005320| 24| 0|
|10|16| 24571192| 0| 228|
|11|18| 212260296| 576| 356|
|12|20| 1939892240| 1012| 6384|
|13|21| 18429768516| 19204| 16384|
|14|22| 184042835408| 67536| 299624|
|15|23| 1891844432704| 1092168| 887364|
time : 7147.49秒 : 119.12分 : 1.99時間
環境はWIN2k、E6600、VC2005Expressです。
自分のマシンで何とか2時間を切ることができました。
676 :
名無しさん@5周年 :2008/01/30(水) 02:05:07
もしゅ
678 :
名無しさん@5周年 :2008/02/15(金) 14:47:08
10^18
679 :
名無しさん@5周年 :2008/02/16(土) 00:27:06
過程が違う場合でも結果が一緒なら、それは分母に加えるの?? 全部埋める前に、全部黒になって勝てる確率はある?あるならどれくらい? また同じ様に空きスペースを残して全部白になって勝てる確率はある?あるならどれくらい?
>過程が違う場合でも結果が一緒なら、それは分母に加えるの?? このスレのログを全部読むといいよ >全部埋める前に、全部黒になって勝てる確率はある? あるよ >あるならどれくらい? さぁ? >また同じ様に空きスペースを残して全部白になって勝てる確率はある? あるよ >あるならどれくらい? さぁ?
681 :
名無しさん@5周年 :2008/02/22(金) 13:36:16
>>675 終了って終局する棋譜の数の事?
だとすると10手で終了する棋譜の数は9手の間違いじゃない?
F5F6F7F4F3E3D3G5H5
\ABCDEFGH
1++++++++
2++++++++
3+++●●●++
4+++●●●++
5+++●●●●◆
6+++++●++
7+++++●++
8++++++++
これや有名なダイヤモンド型は9手目のはず。
F5D6C5F4E7F6G5E6E3
\ABCDEFGH
1++++++++
2++++++++
3++++◆+++
4+++●●●++
5++●●●●●+
6+++●●●++
7++++●+++
8++++++++
>>681 >>431 以降でも少し出ていた事だけどこれは間違いじゃなくて意図的なものだよ。
プログラムは9手目打ち終えた時点で終局かどうかを判定する事はしないように設計されてる。
終局の判定は10手目で双方の打てる場所の数がゼロと言うことだから
終局かどうかというのは10手目を調べているときに副次的に判明する事。
9手目を打ち終える度に10手目の打てる場所の数を調べて、
これがゼロかどうかだけを見て、そうでなければその数を捨てる、というのは無駄だしね。
683 :
名無しさん@5周年 :2008/03/24(月) 20:11:07
あげ
684 :
名無しさん@5周年 :2008/03/24(月) 20:22:08
あげるならスレタイの話題で頼む
685 :
名無しさん@5周年 :2008/04/13(日) 05:21:23
話題が無いようなので書き込んでみる。かぶってたらごめん。 プログラムに、ランダム(手番ごとに、打てる手の中から等確率で一つを選ぶ)に10億局ほど対局させてみた。 奇数の石差があると分布がガタガタになったり色々面倒そうだったから、空きマスは折半じゃなくて海外ルールみたいに勝者のものにしたけど。 それで、結果。 黒から見た石差の平均が-0.86くらいになった。あと、引き分けより白2石勝ち局面の方が多かった。 やっぱり何も考えずに打つと偶数理論で白が若干有利ってことなのか。 まあ、最善進行が引き分けかどうかとは全く関係のない話ではあるけど、参考までに。
>>685 とても面白い!
定石開始(10手程度)で、
最終盤(50手以降)完全読みにするとどうだろう?
どうにもならない。
>>685 手止まりが強いって象徴だな
有段者の中でもその説は多少なりともある
689 :
520 :2008/04/29(火) 11:15:08
16〜17手目の結果です。 |手|多|-------棋譜数-------|---パス---|---終了---| |16|25|------20301281202588|---5359688|--13560800| |17|26|-----222743917275036|--77407768|--50409280| time : 804516.91秒 : 13408.62分 : 223.48時間
>>689 お疲れ様です。
ずいぶん速くなりましたね〜。
ソフトとハード共に進化してるようですね。
この先は並列化したほうがよさそうですね。
サーバが7手目か8手目の局面を発行してクライアントに枝を数えさせて纏め上げるとか。
4×4のオセロで起こりうるあらゆる局面を整理して それを視覚的にわかりやすく表示するってこと誰かできますか?
4×4なら起こりうるあらゆる局面を整理することは可能。 ただ、視覚的にわかりやすく表示するというのが どういったものを指すのかがよくわからない。 ゼブラの研究モードのようなものを指すのか いくつかの予想進行をビデオ再生するようにするのか 考えられることはいろいろあるけど。
693 :
691 :2008/05/18(日) 19:41:01
理想は一枚の静止画です。 ただそれはあくまで理想で、 棋譜の列挙でも十分有り難いです
>>693 それなら、SAIOのデモ版を使うといいと思う。
棋譜の列挙ならゼブラでもできたはず。
多少スレチな話題なんでそれ以上は他で聞いたほうがいいかも。
しらみつぶし以外に解を出す方法あるの?
696 :
名無しさん@5周年 :2008/06/18(水) 15:35:16
勝ち負け引き分けの3通りじゃないのか
697 :
名無しさん@5周年 :2008/06/18(水) 18:32:43
いや、余裕勝ちとか惜敗とか、いろいろあるだろうが
オセロで逆転を定義するのはかなり難しい
逆転とは相手又は自分の悪手により引き分けラインを跨ぐ事。 某プログラムでは非引き分けから引き分けになる事やその逆も逆転として扱っていたが。
>>13 64対0から始まり、0対64まで だと65通りだぞ
盤面全部埋まる保証はない
>>702 全滅は64対0扱いになるそうな。62対2の終局図ってw
オセロのルールで試合結果は石差で表現する 石差は基本的に{自分の石数−相手の石数} 但し一方の石が0になった場合は日本でも外国でも64石差扱い 残った空きの数は日本ルールでは両者で折半するが外国ルールでは勝者の石として加算 62:2は60石差 64:0は64石差 62:0は64石差扱い 62:1は日本では61石差で外国では62石差扱い
オセロ有段者だけど試合結果は64石差、62石差〜0石差(引き分け)の64パターンですよ おもしろそうだから頑張ってね
試合に負けて、勝負に勝つ、とかはどうカウントするの?
707 :
702 :2008/07/10(木) 03:03:58
私が無知でした
709 :
名無しさん@5周年 :2008/07/15(火) 05:04:02
誤りを指摘されてからじゃダメだろ
710 :
名無しさん@5周年 :2008/07/16(水) 16:54:49
62:1が日本ルールでは考慮されるってことは 厳密には間違いではないのでは?
「自分の知識が完全ではない事に気がついている」ってことだろ? 指摘されて初めて無知であることに気づいたんじゃ該当しないだろ
713 :
名無しさん@5周年 :2008/07/23(水) 21:28:45
>>1 簡単なことだよ
>>2-
>>712 はもう一回小学校の算数からやり直したほうがいい。
(1)俺が勝つ
(2)俺が負ける
(3)引き分け
の3通りだ
715 :
名無しさん@5周年 :2008/07/27(日) 03:04:00
┏━━━━━━━━━━━━━━━━━┓ _ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ,.^〈〉'´ ヽ〈〉ヽ. ┃│●│●│●│●│●│●│★│ │┃( (〈〉.ノ从))〈〉) ) ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ) )(li.゚ ヮ゚ノ! ( ( ┃│○│○│○│●│●│●│ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃いくみん ● 31 ┃│●│○│●│○│●│○│ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│●│●│○│○│○│○│ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│●│●│●│○│○│○│ │ │┃ ____ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ / `ミ ┃│●│○│●│●│○│○│ │ │┃i´ 从从ミ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃` リ;゚ -゚ノ ┃│●│●│○│●│●│○│ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ U - 1 ○ 18 ┃│●│●│●│●│●│●│ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛
>>717 64通りは単なる石差のパターン数
127通りは勝者も考慮した石差ののパターン数
>>718 奇数の石差はあるよ
必ずしも全て埋まる訳じゃないからな。
721 :
名無しさん@5周年 :2008/08/27(水) 23:55:41
全探索すればいいじゃない
722 :
名無しさん@5周年 :2008/08/28(木) 00:05:12
>>561 これって0:空白の数が0箇所になったら処理を省けばいいんじゃないか
723 :
名無しさん@5周年 :2008/09/14(日) 20:15:54
ほしゅ
725 :
名無しさん@5周年 :2008/10/20(月) 18:01:33
726 :
名無しさん@5周年 :2008/10/20(月) 18:02:23
727 :
名無しさん@5周年 :2008/10/28(火) 21:24:32
64ある升目に番号を振る。 黒がN個(Nは1〜64の自然数)になる組み合わせの総和が、全部埋め尽くされた状態での結果の総数。 黒がN個≡白が(64―N)個なので、白の出方は黒の出方で全部説明できる。
64個埋まる前に、両者パスで終わる場合と、片方が全滅する場合がある
何回目だその問答
もし次スレまで続くようならさ、よく出る考え方とその反論はテンプレ化したら?
731 :
名無しさん@5周年 :2008/11/06(木) 17:19:46
これ、ムズいよね
732 :
名無しさん@5周年 :2008/11/12(水) 00:29:06
ふと思ったんだけど、両方ともパスで 手詰まり、でもありえないって形は、 いくつくらいあるんだろう? あと、それがありえないってのはどう 証明すればいいのかね? ルール的に有り得ない形 ●○○○○○○● ○○□□□□○○ ○□○□□○□○ ○□□○○□□○ ○□□○○□□○ ○□○□□○□○ ○○□□□□○○ ●○○○○○○● 多分無いけど、よく判らん形 ○●●○○●●○ ●□□○○□□● ●□□○○□□● ○○○○○○○○ ○○○○○○○○ ●□□○○□□● ●□□○○□□● ○●●○○●●○
733 :
名無しさん@5周年 :2008/11/16(日) 23:22:32
>>732 なんとなくで書いてみるけど、
あり得ないと予想される状態の1歩手前の状態を検討して、
1歩手前の状態が一つもないことを確認できれば、
1歩手前の状態から派生する状態はあり得ないという証明になるのではないだろうか。
それはほぼしらみつぶしに等しい
735 :
名無しさん@5周年 :2008/12/08(月) 01:18:55
あげ
hossu
「勝ち」と「負け」と「引き分け」と「途中で盤をぐちゃぐちゃにする」と「ほったらかしにする」と「宇宙人が乱入してくる」 なんだから、6通りじゃないかな
盤のぐちゃぐちゃにされ方は全部で何通りか
上界はいろいろあるようだけど 非自明な下界はどうなの
740 :
名無しさん@5周年 :2009/01/31(土) 17:08:16
なるべく幅を縮めたいって事だな
ネット対戦の結果をサーバーが自動的に記憶。 同じ結果の物は削除され、異なる物だけが残る。 いつかは答えに辿り着くんじゃね?
それは良い方法だ ただ、太陽が爆発する50億年後の危機をどう乗り切るかが問題だけどな
>>742 その後、6億7千万年我慢すれば、弥勒が助けにきてくれるじゃん。
数えられそうで数えられないというのが面白いですね
745 :
SimGlobe :2009/03/18(水) 01:05:48
746 :
名無しさん@5周年 :2009/04/21(火) 01:29:50
wiki 更新してみた
えーと上界も更新されてるとみていいの?
旧記録
>>331 8.540*10^69 (現在世界最小。。。たぶん)
↓
新記録
>>430 20,301,281,202,588 * 25 * 43! < 3.067 x 10^67 ?
747 :
名無しさん@5周年 :2009/04/21(火) 01:34:33
>>746 人間違ってた
新記録
>>689 =520
20,301,281,202,588 * 25 * 43! < 3.067 x 10^67
で世界新!
748 :
名無しさん@5周年 :2009/04/25(土) 14:13:03
GPUなんかどの部分に使うんだ
750 :
名無しさん@5周年 :2009/04/26(日) 00:20:23
浮動小数点が一度にたくさん出来る。 なんとか工夫して使って栗
浮動小数点演算なんかやってないから
752 :
名無しさん@5周年 :2009/04/26(日) 19:41:43
やるように工夫すれば速度アップの可能性
753 :
名無しさん@5周年 :2009/04/26(日) 19:43:48
例えば残り数手読む所をGPUに渡して読ませれば格段にあがる。 GPUはプロセッサーが512個とか入ってて、単独で使えるメモリを内蔵しているらしい。少量。
もういいから。 まだ何かあるならプログラムで提示してね。
755 :
名無しさん@5周年 :2009/04/28(火) 00:01:08
棋譜数は今や1手で10倍増えるようになってる。 512 並列の GPU を使っても、高々3手、 つまり現在の17手解析完了が20手解析完了となるだけ。 その3手の小ジャンプでは今のところ何も進まない。 あと3手進めばとある数学で一気に桁が減らせる!とか 棋譜数がちょっと減りかけてるぞ!という事態にならないと使う意味無いと思う。 やっぱアルゴリズムの変更で巨大に刈り込める方法を探すしかないと思うなぁ
756 :
名無しさん@5周年 :2009/04/28(火) 15:29:40
ふふふふふ
757 :
名無しさん@5周年 :2009/05/03(日) 06:29:17
758 :
名無しさん@5周年 :2009/05/03(日) 06:32:11
ex. 3手目結果から18手まで探索する場合 (3手結果 = 56盤面/回転対称4 = 14問題に分割、あとで結果を4倍しる) ./othello_counter3_multi 00000010 08000000 00000008 100E0000 18 > result/03-0000.txt ./othello_counter3_multi 00000010 00040000 00000008 1C080000 18 > result/03-0001.txt ./othello_counter3_multi 00000000 08040000 00000038 10080000 18 > result/03-0002.txt ./othello_counter3_multi 00000000 08040000 00001018 10080000 18 > result/03-0003.txt ./othello_counter3_multi 00000010 10000000 00000008 08182000 18 > result/03-0004.txt ./othello_counter3_multi 00000010 00000000 00000008 18380000 18 > result/03-0005.txt ./othello_counter3_multi 00000010 00100000 00000008 38080000 18 > result/03-0006.txt ./othello_counter3_multi 00000000 00100000 00000038 18080000 18 > result/03-0007.txt ./othello_counter3_multi 00000000 10100000 00002018 08080000 18 > result/03-0008.txt ./othello_counter3_multi 00000018 00000000 00000204 18080000 18 > result/03-0009.txt ./othello_counter3_multi 00000014 00000000 00000408 18080000 18 > result/03-0010.txt ./othello_counter3_multi 00000014 00000000 00000808 18080000 18 > result/03-0011.txt ./othello_counter3_multi 0000000C 00000000 00001010 18080000 18 > result/03-0012.txt ./othello_counter3_multi 0000000C 00000000 00002010 18080000 18 > result/03-0013.txt & 付けてひとりで Quad 実行するもよし、 計算を別の日に分けるもよし、 みんなで分割統治するもよし。 おまいら2chのちからを見せてくれ
759 :
757 :2009/05/03(日) 07:11:22
ちなみに3手目から13手目までの探索をテストしてみた結果 (Core2Quad Q6600 2.4GHz) othello_counter3: 13手目全棋譜数 18429768516, パス19204, 終了16384 計算時間 74.39秒 othello_counter3_multi x14: 13手目全棋譜数 18429768516, パス19204, 終了16384 計算時間(14 jobs @ 1 CPU) 74.62秒 計算時間(14 jobs @ 4 CPU) 17.63秒 なかなかいい感じ。
760 :
757 :2009/05/03(日) 08:35:40
説明ミスりました。
ex. 2手目結果から18手まで探索する場合 (2手結果 = 12盤面/回転対称4 = 3問題に分割、あとで結果を4倍しる)
./othello_counter3_multi 00000008 10080000 00000010 08040000 17 > result/02-0000.txt
./othello_counter3_multi 00000008 08080000 00000010 10100000 17 > result/02-0001.txt
./othello_counter3_multi 00000000 18080000 0000001C 00000000 17 > result/02-0002.txt
ex. 3手目結果から18手まで探索する場合 (3手結果 = 56盤面/回転対称4 = 14問題に分割、あとで結果を4倍しる)
./othello_counter3_multi 00000010 08000000 00000008 100E0000 16 > result/03-0000.txt
./(以下略)
N手目結果からM手後棋譜を求めたいときは M-N+1 を引数に与える。
>>757 >>758 そのままやると19手,20手まで求めようとして止まらなくなるw
761 :
520 :2009/05/03(日) 16:45:45
>>757-760 おお!並列化乙です。
並列化は取り込んでないけど、最新版をothello_counter4.cppとして置いときますね。
試しに組んでみた、対称考慮盤面出力も入ってます。
盤面データと出現数をファイルに出力します。
検証はまだほとんどしていないので、バグがあるかもしれません。
|手|-対称考慮盤面数-/-----総盤面数----=-割合---|-最多出現数
|-1|--------------1-/---------------4-=-25.00%-|------1
|-2|--------------3-/--------------12-=-25.00%-|------1
|-3|-------------14-/--------------56-=-25.00%-|------1
|-4|-------------60-/-------------244-=-24.59%-|------2
|-5|------------322-/------------1396-=-23.07%-|------4
|-6|-----------1773-/------------8200-=-21.62%-|------4
|-7|----------10649-/-----------55092-=-19.33%-|------9
|-8|----------67245-/----------390216-=-17.23%-|-----18
|-9|---------434029-/---------3005320-=-14.44%-|-----35
|10|--------2958586-/--------24571192-=-12.04%-|-----66
|11|-------19786627-/-------212260296-=--9.32%-|----168
763 :
名無しさん@5周年 :2009/05/04(月) 12:51:20
オセロだけで新スレ立てるのはどうかと思うがな
少なくとも一人はお題とプログラム提供する人が居るみたいだから
>>1 がんばって ☆(ゝω・)vキャピ
765 :
名無しさん@5周年 :2009/05/04(月) 23:13:25
オセロって白いのと黒いのの2人だろ?
766 :
757 :2009/05/06(水) 23:21:13
768 :
名無しさん@5周年 :2009/05/07(木) 22:18:13
現在未探索の最も有利な(小さな)着手可能数の上界は 60-N、つまり残り空きマス数になっている。 17手43、18手42、19手41… しかし探索済みデータでは14手23,15手25,16手26。 実際には空きマスの半分くらい… ここって何かで刈りこめないものなの?
難しいな 着手可能数は初手から見ていくと1〜2個ずつしか増えてないから 35個〜38個空きの辺りで最大になると予想はしてるんだけどな
770 :
757 :2009/05/14(木) 03:38:12
>>259 の流れで、棋譜に囚われない任意盤面の最大着手数を
++++++++
+○○??○○+
+○●??●○+
+??!!??+
+??!!??+
+○●??●○+ ?={●,○,+}、!={●,○}
+○○??○○+ ●は10個、○は20個、+は34個
++++++++
という縛りから全探索してみました。
結果、33手着手可能盤面は52個もみつかりましたが、
34手着手可能盤面は全部探してもみつかりませんでした。
上の初期配置は拘束条件として厳し過ぎたかな…
34手着手可能なときの論理的に正しい盤面拘束条件があれば教えてください…
ちなみに見つかってなかった33手着手可能盤面の例はこんな感じです。
まず思いつかないね。
★★★★★★★★
★○○○+○○★
★○●●★●○★
★○○○○●○★
★★★●●★●★
★○●○★●○★
★○○○●○○★
★★★★★★★★
>>770 乙
こりゃ面白い
>>455 に34箇所の局面があるけどこれはありえない形みたい(
>>504 )
論理的に正しいってのがよくわからないけどこういう条件はどうだろ
++++++++
+○????○+
+?●??●?+
+??!!??+
+??!!??+
+?●??●?+ ?={●,○,+}、!={●,○}
+○????○+ ●は10個、○は20個、+は34個
++++++++
緩すぎて全探索終わらなくなりそうな気がするけど
ちょっと疑問なんだけど
着手可能箇所数が最大になるときは必ず外周の28箇所は全てに打てるのかな?
>>770 なかなか面白いアイデアですね。ところで
>●は10個、○は20個、+は34個
も条件に入れてるんだよね?
外したほうが良い気もするけど、外すと探索範囲が増えるぎるね。
773 :
名無しさん@5周年 :2009/05/14(木) 11:00:03
実現可能かを考慮しなければ、これが最大を与えることは間違いない。 ++++++++ +○????○+ +??????+ +??●●??+ +??●●??+ +??????+ +○????○+ ++++++++ ○????○ のパターンは、対称性と端に黒がおけるという条件から限定出来る。 そこまでしたら全探索すればいいのでは?
774 :
773 :2009/05/14(木) 11:12:37
中心が黒のみは間違えた。 白が混じった方がいいかもしれん。 ○????○の部分は次のいずれか。 これ以外では端が取れなくなる。 ○○??○○ ○○?○?○ ○?○?○○ ○?○○?○
775 :
773改 :2009/05/14(木) 11:22:50
実現可能かを考慮しなければ、これが最大を与えることは間違いない。 ++++++++ +○????○+ +??????+ +??????+ +??????+ +??????+ +○????○+ ++++++++ ○????○ のパターンは、????に黒の着手点が存在する、端におけるという条件から ○空○○●○、○空○●○○のいずれか。
776 :
757 :2009/05/15(金) 02:07:58
>>771 >
>>455 に34箇所の局面があるけどこれはありえない形みたい(
>>504 )
おっと忘れてました。もう
>>770 の前提が崩れましたね
>論理的に正しいってのがよくわからないけど
「この初期条件と拘束条件から全探索すれば必ず 34 手着手盤面を見逃すことはない」という意味です。
>着手可能箇所数が最大になるときは必ず外周の28箇所は全てに打てるのかな?
>●は10個、○は20個、+は34個 も条件に入れてるんだよね? →はい
このへんまだヒューリスティックな予想でしかないので、
証明付きの拘束条件が欲しいところです
>>775 の流れはいい感じかも
777 :
757 :2009/05/15(金) 02:09:01
>>771 の
>++++++++
>+○????○+
>+?●??●?+
>+??!!??+
>+??!!??+
>+?●??●?+ ?={●,○,+}、!={●,○}
>+○????○+ ●は10個、○は20個、+は34個
>++++++++
これで現在探索中です。
まだ数分しか経ってませんが 4361971087 盤面をチェックして
既に 15 個の 34 手着手可能盤面がみつかりました。
2つほど例を /
★★★★★★★★ ★★★★★★★★ まだ探索が浅いので似通ってますが。
★○○★○★○★ ★○○★○★○★ もう34手はいいっすかね。
★○●●○●○★ ★○●●○●○★ 一個削って35手探しましょうか
★★○●○○○★ ★★●●○○○★
★○○●●★●★ ★○○○●★●★
★★●○★●○★ ★★●○★●○★
★○○○●○○★ ★○○○●○○★
★★★★★★★★ ★★★★★★★★
778 :
757 :2009/05/15(金) 02:21:03
このへんの流れをおさらいすると、 17--28手目の最大着手数の下界は、現在では残りの空白全てに打てるとみたものと考えるしかなく、 それぞれ43--35とされている。 でも全探索された17手目の真の最大着手数は26で増加率もたいして高くない。 棋譜に載るかを無視した任意盤面での下界が43手以下になることが実証されると、 全探索せずとも棋譜数上界が下げられる。 任意盤面全探索は固定配置や石数などの拘束条件がゆるいと時間がかかるが、 きつ過ぎると見落とす可能性がある。 この拘束条件なら見落とすことはないぜっていう拘束条件とその証明が欲しいところです
779 :
名無しさん@5周年 :2009/05/15(金) 02:41:22
>>757 周囲4辺はあける。 端から一つ内側は白。 という条件で、すべて生成するのがいいかも。
全探索は無理でも、着手数を評価値とした探索アルゴリズムで調べたらいいかもしれない。
現在の着手数と数手先の着手数はある程度関係があるだろうから
780 :
名無しさん@5周年 :2009/05/15(金) 04:48:16
>>780 アセンブリ使えば速くなる事は分かるが、どの程度かと言われたら、
月と鼈程では無いかなとしか・・・
782 :
名無しさん@5周年 :2009/05/15(金) 07:10:51
ビットボードで斜めや縦の処理はどうやるんですか?
7〜9 bit shift
784 :
757 :2009/05/16(土) 02:49:13
>>771 全探索完了
★★+★★★★★ 初期配置=
>>771 拘束={●=10, ○=19, 空=35}
★○★○★○○★ 結果:
★○●○★●○★ ★ = 31: 808976 boards
★○○○●●○★ ★ = 32: 43192 boards
★●★●○★○★ ★ = 33: 648 boards
★○●★★●●★ ★ = 34: 8 boards
★○○●○○○★ ★ = 35: 0 boards
★★★★★★★★ ← ★=34 の例
この回転線対象系 x8 だけみたい…
お、思ったよりも速いんだな。乙。
>>775 の条件でもできそうかな?
+★★★★★★★ ★★○★○●○★ ★○○●○○○★ ★★○●●★●★ ★○○●○★○★ ★★●●★●○★ ★○○○○●○★ ★★★★★★★★
取りテスト
>>780 着手位置決定に対して bitmob.c は 187 命令程度、
このすれの othello_counter3.cpp は 680 命令程度だった。
bitmob.c は結構速いんだと思う。
790 :
757 :2009/05/17(日) 04:50:09
bitmob と 2ch をアルゴリズム的に比べてみた。 2ch は othello_counter4.cpp の revchk_left や論理演算スレ part1 の 879。 2ch: w = white & 0x7E7E7E7E7E7E7E7EULL; t = w & (black >> 1); t |= w & (t >> 1); t |= w & (t >> 1); t |= w & (t >> 1); t |= w & (t >> 1); t |= w & (t >> 1); t =>> 1; bitmob: w = white & 0x7E7E7E7E7E7E7E7EULL; w2 = w & (w >> 1); t = w & (black >> 1); t |= w & (t >> 1); t |= w2 & (t >> 2); t |= w2 & (t >> 2); t =>> 1; アルゴリズム的な工夫の差としては w2 のところくらいかな。 連続した白を表していて一気に2コマ調べられる。 でもせいぜい3命令の差。 あとは MMX レジスタを使って 64 bit 演算してるから 全体の計算量が半分になってると。
791 :
757 :2009/05/17(日) 04:51:42
逆に今見てすげーと思ったのは othello_counter の revchk_right()。 move = white + (white & (black << 1)); 以上。全部込みで3命令だ。 可算命令が連続チェックまで全部してくれてるんだ。 これかっこいい これさ、ビット回転使って他の方向も可算命令一発でできないの? >othello_counter の作者さん
793 :
757 :2009/05/20(水) 00:54:14
>>792 あ、それはビット演算スレに載ってたし
othello_counter4.cpp の中の別演算にも使われてるよ。
知ってて使ってないってことはやってみて結局経済的じゃなかったってことかな?
と思って
>>791 を書きこんだんだけど。
>回転して計算した後に逆回転して戻すの?
その必要があると思ったけど、
今考えると棋譜数の集計に使うだけなら
着手可能手判定の前だけ回転してそのまま深化して、
そのあとは別に放置でもいいんじゃないかな?
反転する石の判定(次手の盤面の生成)時には
逆回転もしくは回転を使わない逆方向の挟み判定も必要だけど。
着手可能手の発見→深化だけのとこだと戻す必要はなさそう。
盤面の同一性 or 対称同一性は見てないからね。
今着手可能手の発見と挟み判定は別処理してるよね?
着手可能手の発見と同時に挟み判定フラグもついでに立ててるならアウトだけど。
そうはなってないように見える
794 :
757 :2009/05/20(水) 01:07:26
move = revcheck_left(own,opp); while(move.f){ reverse=set_rev_left(own,opp); reverse=set_rev_right(own,opp)... nextopp=... SearchMove(nextopp, nextown, turn); } move = revcheck_left(rotate180(own),rotate180(opp)); while(move.f){ reverse=set_rev_left(own,opp); reverse=set_rev_right(own,opp)... nextopp=... SearchMove(nextopp, nextown, turn); } move = revcheck_left(rotate90(own),rotate90(opp))... みたいな感じでどうでしょ。 終了面カウントとパスカウントだけはできなくなりそうだけど。
revchk_left(own, opp) :17 step total:17 step rotateLR(own) :30 step rotateLR(opp) :30 step revchk_right(own, opp):6 step total:66 step でダメ。戻しなしとしても普通に rotateLR() が高価過ぎる
796 :
名無しさん@5周年 :2009/07/05(日) 20:48:50
あげ
797 :
名無しさん@5周年 :2009/07/17(金) 18:37:24
稀に見る良スレ
799 :
名無しさん@5周年 :2009/07/27(月) 11:08:35
人権擁護法案人権擁護法案人権擁護法案人権擁護法案人権擁護法案 人権擁護法案人権擁護法案人権擁護法案人権擁護法案人権擁護法案 民主議員多数参加 独裁政権 ヤバイんだって!! 言論抹殺 馬で遊んでる場合じゃねえぞ 人権擁護法案
黒勝ち、白勝ち、引き分け 3通り
801 :
名無しさん@5周年 :2009/08/14(金) 08:56:01
このスレは やまなし おちなし いみはある
802 :
名無しさん@5周年 :2009/09/08(火) 12:55:19
俺の勝ちかお前の負けの二通りだ!
「俺が台をひっくり返す」も入れろ
スレ上の方にある棋譜数の実測値の対数は手数に関して綺麗な直線になってる。 これに加えて着手可能数の少ない最終局面から逆算してく手法を使うと 棋譜数は10^50くらいになる。(10^55や10^60かもしれないが、覚えやすいということで50乗) ちなみに、計算モデルとして着手可能領域が円殻状に広がり円殻上の半分に石を置けると考えると実測値に近い値がでる。
>>803 「俺が台をひっくり返す」「お前が台をひっくり返す」
を入れて全探索してみました(※対称系は省きます)
以下、みつかった興味深い棋譜だけ抜粋します
1手終了棋譜
「俺が台をひっくり返す」
まず第一にやる気があるんでしょうか
それとも実は完全探索した挙句後手必勝と分かってて激怒したのでしょうか
バカと天才は紙一重ですね
興味深い棋譜です
64手終了棋譜
D3c3B3b2B1a1C4c1C2d2D1e1A2a3F5e2F1g1f2e3c5B4a5A4b5A6f4F3g3G2h2H1h3H4g4C6g5H5b6C7d6E6f6G6h6H7a7b7A8b8D7e7F7g7C8d8E8f8G8「お前が台をひっくり返す」
特に64手目、白37で勝ち必至の盤面で白、予想外の選択です
相手の弱さに嫌気が指したのでしょうか
そうだと推測するとその手は遅すぎます
5手目くらいで分かりそうなものですが
多分オセロなんかどうでもよくなる自体が発生したのでしょう
おそらく63手目を打たれた時点で
彼女が出来たのだろうと思います
おめでとうございます
>>804 分岐数の積の平均から求めた概算だと、
6.449E+54ぐらいらしいよ。
確か今までわかってるデータから求めた近似公式でもほとんど同じ値が出てたはず。
807 :
名無しさん@5周年 :2009/09/21(月) 06:49:13
809 :
名無しさん@5周年 :2009/10/09(金) 03:58:21
全ての分岐を羅列して数え上げてるんだけど 1日たってまだまだ8手目の20万通り程度
一日で20万局面って秒速2.3局面……
ちょっと書き換えて違うパソコンで走らせたら3時間で20万局面・・・
この手の全検索は、如何に無駄試行を減らせるかで検索速度は大分変わってくる オセロは綺麗な木構造だから、試行というより埋めていく処理に無駄があると速度が伸びないだろうな
ルールを考慮してソース書いたから無駄な試行はないとおもうけど 「明らかにここは角とるだろ」って局面でも見当違いなところ置いたりする試行があるのは否めないし 木構造といっても一手ごと羅列していかないと子ノードと親ノードの関連をつけるの面倒っていう・・・・
ん? 「全ての分岐を羅列して数え上げてる」んなら、 「『明らかにここは角とるだろ』って局面」も何もないんじゃないの?
>>815 何を言いたいのかわからないけど
その局面においていくつか置くことのできる場所がでると
そのうち何処においたかで分岐ができるかと
どっちの言ってることもわかるw
誰か解説して!
819 :
名無しさん@5周年 :2009/10/13(火) 18:57:23
とりあえずbitboardで検索だ!
深さ優先探索、配列ボード、Mobilityは律儀に一マスごとに置けるか見る。 これが一番簡単な実装だと思うが、それでもothello_counterの 数分の一程度の速度は出るはず。 オーダーが違うとか有り得ない。
いつ終わるんだろうこれ・・・・
822 :
名無しさん@5周年 :2009/10/25(日) 15:27:08
どっかに全探索データベース作って分散コンピューティングとやらで作業分担して完成を目指すってのはできないもんだろうか { 前の手へのリンク この手で打った石の情報 この手へリンクしている次の手へのリンク1 この手へリンクしている次の手へのリンク2 この手へリンクしている次の手へのリンク3 … この手へリンクしている次の手へのリンクn } こんな感じで1手毎の検索結果を貯めていけないだろうか
823 :
名無しさん@5周年 :2009/10/25(日) 15:29:25
データベースと検索プログラムを分ければ検索プログラムを逐次改良しながらデータベースを補完していけるんじゃないかな
にしたってすごいリソースが必要ですよね・・・
825 :
名無しさん@5周年 :2009/11/23(月) 23:43:08
>>822 はいよ↓
http://www9.atwiki.jp/othello/pages/40.html >>757 の通り手ごろな初期配置を種に単純分散処理することになるかな。
好意的に見ても7手目の 55092/(対称性) ≒ 10000 CPU くらいか。
7〜60 は1問題でもまだ無理でしょ。
単純並列化の出番はないと思うね。
単純並列化より、例えば途中の枝狩りを相互に通信し合うとか、
アルゴリズム的なところの変革も必要かな。
もしくは othello_counterX.cpp みたいな
いつもの「深さ優先探索君」に並行して「突っ込み君」を走らせて、
「あ、その枝計算しなくていいよ」みたいな突っ込みで
大きなバックトラックをさせるとか、
ヘテロかつミクロな並列化に期待。
あり得ない盤面をカットする、ってのが上であるけど、
深さ優先探索君はもともとあり得る盤面しか追わないから意味ないよね。
考えうるのは
突っ込み君>「あ、その枝はこっちの枝と対称だから、俺が棋譜数コピーしといてやるから君はやらなくていいよ」
でしょうか。
幾何学的な対称性の枝狩りは、初期配置で既にカットしてるからやる意味ない?
どうなんでしょう?
非対称から始まって途中から対称形出てきたりもしますけど。
826 :
名無しさん@5周年 :2009/11/27(金) 14:04:57
もう5年も経ったのか・・・
乙
829 :
784 :2009/11/27(金) 22:02:59
>>770-
>>784 の流れで
++++++++
+○????○+
+?●??●?+
+??!!??+
+??!!??+
+?●????+ ?={●,○,+}、!={●,○}
+○????○+ ●は10個、○は19個、+は35個
++++++++
現在これ探索中。
全探索まで 3〜17※ 時間かかるもよう。
※真ん中4つの空白禁止無しで探索盤面数を計算すると
探索盤面数
=(まだ置いていない黒の数+まだ置いていない白の数+まだ置いていない空の数)_C_(まだ置いていない黒の数)
×(まだ置いていない白の数+まだ置いていない空の数)_C_(まだ置いていない白の数)
=266181664320 となる。
これを全探索すると 17 時間かかることになるんだけど、
「真ん中4つは空白禁止」の枝狩りを入れると経験上全探索盤面数が 1/6 くらいに減って
。3時間くらいで終わる概算になる。
誰かこの「真ん中4つは空白禁止」のときの
厳密な全探索数の計算の仕方を考えてくれない?
終了時間に数倍の幅が残ってるとシミュレーション上ちょっと辛いので。
830 :
784 :2009/11/27(金) 22:13:30
>>784 >誰かこの「真ん中4つは空白禁止」のときの
>厳密な全探索数の計算の仕方を考えてくれない?
これをブレークダウンすると↓
---
●X個、○Y個、+Z個を1列に並べる並べ方は全部で何通りあるか?
ただし、左端4つは+を並べてはいけない。
---
ちなみに
●X個、○Y個、+Z個を1列に並べる並べ方は全部で何通りあるか?の解は、
(X+Y+Z)_C_(X) * (Y+Z)_C_(Y)。
書き込み test
832 :
784 :2009/11/27(金) 23:33:42
あ、結局真ん中の 16 パターンで分岐して探索して最後加算することで解決しました。
それで計算した結果
>>784 は 12時間半の探索であることが判明(speed=4.0Mboards/sec C2Q 2.4GHz)
833 :
784 :2009/11/28(土) 23:44:07
>>829 全探索完了
...
33 1562 boards
34 20 boards
35 0 boards
何故か5.6時間くらいで答えが出た。
(4Mboards/s のスピードから計算するとそっちが正しかった)
35手は無理なんじゃ…?
しかし確信をもって言えるほど広い探索でもないのは確か。
++++!+++
+○??+?○+
+??????+
>>775 の弱いところは、
+??????+ ←のような拘束条件が、
>>775 の拘束条件よりも
+??????+ 大きな着手可能を持って実棋譜上に表れることを
+??????+ 必ずしも否定できないところかな。
+○????○+ 定性的には
>>775 拘束の方がそりゃあ実棋譜上に載り易いだろうけど、
++++++++ それは証明された確信じゃないしね。
方向転換して、
初期配置と石数拘束を証明できる範囲にまで広げて、
逆にアルゴリズム的に着手可能手数拘束枝刈りを入れた方がいいかな。
35 手以上にどうしてもならない枝を刈るみたいな。
834 :
名無しさん@5周年 :2009/12/02(水) 18:46:32
途中で試合放棄っていうのは?
当然考慮すべき
私も着手数の探索をやってみました。 >829で気になったのは黒●を10に固定しているのと、 空白を35に固定している事の2点。 なので私は以下の条件でやってみた。 ++++++++ +○????○+ +?!??!?+ +??!!??+ +??!!??+ +?!??!?+ ?={●,○,+}、!={●,○} +○????○+ ●は9〜14個、+は35か36個、残りが○ ++++++++ ただしこのままでは探索数が多すぎるので、少し論理的なカットはしました。 探索時間延べ3日くらい掛けた結果は、最大34着手までしか見つからずorz 見つかった中で面白そうなのが下の左図。 盤面右下を少し変更すると右図になります。 ★★★★★★★★ ★★★★★★★★ ★○○●○○○★ ★○○●○○○★ ★○●★★●●★ ★○●★★●●★ ★●★●○★○+ ★●★●○★○+ ★○★○●●★★ ★○★○●●★★ ★○●★●○○★ ★○●★●○○★ ★○●○★○○★ ★○●○★○★★ ★★★+★★★★ ★★★+★★★+ (左図)着手可能数=34 黒=11 白=17 空白=36 (右図)着手可能数=34 黒=11 白=16 空白=37 星の白○4箇所縛りも外したほうが良いんだろうか。
837 :
名無しさん@5周年 :2009/12/24(木) 23:08:02
デッドロックの直前の手は必ず1通り? それとも複数あってその内これを選べばデッドロックって事あるだろうか?
最大着手数 46 の存在を翻しておこう。
最大着手数 46 を仮定する。
次のターンは●だとする。
このとき、
>>331 あたりの話から
●は6個、○は12個限定となる。
●が抱えられる★のキャパは最大8つ。
よって、6つの●の総キャパは48個。
ということは★2つ分しかさぼれず、
どの●も最低「6つ」は★を持っていないといけない。
ここで一番北西にある○に注目しよう。
複数あるときはそのうちのひとつに注目する。
こいつはどの方向に相方の●を持てるか?
たとえばさらに「北西の方向に持てる」と仮定する。
????! ←こんな状況だ。?には○はない。
?●?!! するとその相方●は、他に5つの○と手を繋げるか?
??○!! さっきの○が最北西なのだから、最大でもあと2つ、
?!!!! 「南、東」にしか繋げない。よってこれは無理。
!!!!!
ABC 結局同じ論法で、○は
D○E ←のうちの「E、G、H」の方向にしか相方●が持てず、
FGH 高々3方向しか繋げないということが分かる。
(つづく)
839 :
名無しさん@5周年 :2009/12/26(土) 02:52:55
(
>>383 のつづき)
同じ論法で、「最北東の○、最南西の○、最南東の○」も
高々3つの相方しか持てないことが分かる。
また、この話は「最北の○、最南の○、最東の○、最西の○」にも言える。
ABC 例えば「最北の○」は、このうちの「F、G、H」の高々3方向にしか繋げない。
D○E もし「A、B、C、D、E」に相方●がいると仮定すると、
FGH さっきと同じようにそいつの愛人が足りなくなるのだ。
よって、「ある最果ての地にいる8人の○」はみな3つしか相方を持てない。
ところで○が抱えられる★のキャパは最大4つ。
よって、12個の○の総キャパも48個。
ということは全体で★2つ分しかさぼれず、
「さぼっている○」は最高でも全体で2人まで。
さて、「8人の最果て者」は全員さぼっている○だ。
4つ手があるはずが高々3つなのだから。
さて、「最南かつ最南東」とか、ひとつの○が
「複数の最果て者」を兼ねている場合も考えられるだろうが、
12個もの○を包括するためには、最低でも「3人の異なる最果て者」が必要だ。
彼らが多角形をなして初めて内部が生まれ、全12人が収容できる。
しかしやはり「さぼれる○」は最高で2つまで。
2人までしか最果て者には成り得ない。
ここで矛盾が生まれ、題意「最大着手数 46」が否定される。
840 :
名無しさん@5周年 :2009/12/26(土) 16:27:35
4×4の結果 全60060通り 黒勝ち24632通り 白勝ち30116通り 分5312通り 3時間18分36秒 今6×6を解析しています また、上記は全パターンの解析時間ですので 1手目の対象性から1/4でやっていれば50分かからないで終わってます。 今やってる6×6は1/4で解析しています
プログラムが遅すぎるというかゲーム木が大きすぎるというか 6x6でも君が生きてるうちには決して終わらないから今すぐやめたほうが。
842 :
名無しさん@5周年 :2009/12/26(土) 22:45:09
ウィキペディア見たら6×6までは完全解析されているみたいだけど 調べても何通りあるか見当たらない。
843 :
名無しさん@5周年 :2009/12/26(土) 23:00:10
割りとかなりおそくないか 一試合1.5秒くらいかかってる計算になるね。 しかも4x4なら12手しかないわけで… 誰か彼の4x4の結果から6x6ならどれくらいかかりそうか概算してやってくれ
844 :
840 :2009/12/26(土) 23:33:36
4×4の時間なのですが 最初のプログラムは色々と機能を実装してまして また、ぐるぐる回してるのですが途中で休憩しないと CPUが100%になるので0.05秒お休みさせてました。 そんなのを改良して4×4をやりましたら 10分27秒で終わりました。
>>844 1試合 0.01秒くらいに落ちたね。おめでとう
だがしかし
4x4 の 12 手が全部埋まってから外側の 16 手を埋める変則ルールで考えても
改良後のプログラムで 416.6667 日はかかる計算になるよ。
あと千倍くらいはスピードアップしたいね。
ドラゴンボールみたいな世界だな…ここは。
さて、最大着手数 45 をやっつけてみよう。
その前に、ある最大着手数を考えたときに
●と○の数の範囲が限られるので、
それについて整理しておく。
最大着手数★を固定すると、
●と○の範囲が限定される。
大本が
>>331 で、こうなる↓
ceil(★/8) <= ●
ceil(★/4) <= ○
ceilは小数点以下繰り上げの意味。
そして元々の ●+○+★<64 より、
ceil(★/8) <= ● <= 64-★-○ ...(1)
ceil(★/4) <= ○ <= 64-★-● ...(2)
となる。
もうひとつ、良く使う用語の定義を。
盤面に現れる●と○について、
それがないと消えちゃう着手数というものがある。
寄与している着手数とも言ったりしてる。
それの最大は
>>331 で
● については最大8個、○については最大4個と説明されている。
そこで、ある●や○について、
その●の余腕数 = 8-その●の寄与している着手数
その○の余腕数 = 4-その○の寄与している着手数
と定義する。
●は8本、○は4本「腕」を持っていると考えて、余ってる腕の数、というわけ。
ある着手数を持つ盤面において、
全ての●、○の余腕数を加算したものを●の総余腕数、○の総余腕数ということにしよう。
すると、ある着手可能数★について、
●の総余腕数の最大 = 8●-★
○の総余腕数の最大 = 4○-★
となる。これを例えば ★44〜46 で全探索で調べると
★=46, ●=6, ○=12, ●総余腕<= 2, ○総余腕<= 2
★=45, ●=6, ○=12, ●総余腕<= 2, ○総余腕<= 2
★=45, ●=6, ○=13, ●総余腕<= 2, ○総余腕<= 6
★=45, ●=7, ○=12, ●総余腕<=10, ○総余腕<= 2
★=44, ●=6, ○=12, ●総余腕<= 2, ○総余腕<= 2
★=44, ●=6, ○=13, ●総余腕<= 2, ○総余腕<= 6
★=44, ●=6, ○=14, ●総余腕<= 2, ○総余腕<=10
★=44, ●=7, ○=12, ●総余腕<=10, ○総余腕<= 2
★=44, ●=7, ○=13, ●総余腕<=10, ○総余腕<= 6
★=44, ●=8, ○=12, ●総余腕<=18, ○総余腕<= 2
となる。
>>846 の式 (1),(2)を満たさないものと、
総余腕数が負になるものは、その時点でアウトとして省いてある。
848 :
838 :2009/12/27(日) 00:59:16
では最大着手数 45 の否定を。 「最果ての○は自分の余碗を消耗してしまう」という原理を応用する。 ○の最果ては8つあり、その最果ての「内部」にしか●がない場合は ○はそこでそれぞれ1つ○余碗を消費してしまう。 内部は3方向だけであり、腕の総数4に満たないからだ。 複数の最果てを○が兼ねたら、その兼ねた数だけ○余碗を消費する。 結局●がライン上かもしくは最果ての外にない限り、 ○は計8余碗の消費を免れない。 ex最北 最北西 555 754 最果ての○の余碗を消すには、 4○4 5○1 最果てライン上か、最果ての外に相棒●を追加せざるを得なくなる。 000 410 そのとき、相棒●の位置と消費してしまう●の余碗数は次のようになる。 つまり、ひとつの最果ての○の余碗1つの消去につき最低でも4の●余碗を消費する。 つまり、○余碗の回復のための「●の外打ち」数をNとすると、 ○の総余碗数 >= 8-N ●の総余碗数 >= 4N となる。これを連立させて解くと、 32 <= ●の総余碗数 + 4○の総余碗数 が必要になる。
849 :
838 :2009/12/27(日) 01:00:06
これを満たす ★=42〜46 を全て書きだすと、 ★=44, ●=7 , ○=13, ●余腕=10, ○余腕= 6 ★=43, ●=6 , ○=14, ●余腕= 2, ○余腕=10 ★=43, ●=6 , ○=15, ●余腕= 2, ○余腕=14 ★=43, ●=7 , ○=13, ●余腕=10, ○余腕= 6 ★=43, ●=7 , ○=14, ●余腕=10, ○余腕=10 ★=43, ●=8 , ○=13, ●余腕=18, ○余腕= 6 ★=43, ●=9 , ○=12, ●余腕=26, ○余腕= 2 ★=42, ●=6 , ○=14, ●余腕= 2, ○余腕=10 ★=42, ●=6 , ○=15, ●余腕= 2, ○余腕=14 ★=42, ●=6 , ○=16, ●余腕= 2, ○余腕=18 ★=42, ●=7 , ○=13, ●余腕=10, ○余腕= 6 ★=42, ●=7 , ○=14, ●余腕=10, ○余腕=10 ★=42, ●=7 , ○=15, ●余腕=10, ○余腕=14 ★=42, ●=8 , ○=13, ●余腕=18, ○余腕= 6 ★=42, ●=8 , ○=14, ●余腕=18, ○余腕=10 ★=42, ●=9 , ○=12, ●余腕=26, ○余腕= 2 ★=42, ●=9 , ○=13, ●余腕=26, ○余腕= 6 ★=42, ●=10, ○=12, ●余腕=34, ○余腕= 2 である。よって最大着手 45 は否定される。 ちなみに、この話を実際のオセロ盤の広さで考えてみると、 最果てを兼ねるなんて言ってる場合ではなくて、 できるだけ「内部」を広く取って できるだけたくさんそこに石を詰めれるように 最果て○をいっぱい作らなくといけなくなって、 そのために着手数をもっと削らないといけないことがよく分かる。 今日は以上です。
長き解析お疲れ様です。5年分のレス見てみたけど 素人の私でも感動・・・ どうか、初見の方は、応援するだけしてゆっくりと見守ってほしいですな。
851 :
名無しさん@5周年 :2009/12/27(日) 16:53:19
分散型のソフトを開発したら皆さん参加しますか? 作ろうかどうか皆さんの反応で決めたいと思います。
852 :
名無しさん@5周年 :2009/12/27(日) 18:40:20
>>851 まず分散型じゃないソフトをつくるんだ!
853 :
名無しさん@5周年 :2009/12/27(日) 19:09:43
854 :
名無しさん@5周年 :2009/12/27(日) 19:27:38
どれくらいの速度?
解析って全探索?
8×8のオセロが解析出来たら、 次は10×10のグランドオセロもおながいします
てか VHDL とか論理回路で実装したらめっちゃはやくね? INIT: own = 0x0000001000000000; opp = 0x0000000818080000; pStuck = 0; count = 0; BEGIN: can = revchk(own,opp); if can goto SET; PASS: {opp,own}={own,opp}; can = revchk(own,opp); if can goto SET; GAMEOVER: if pStuck==0 then halt; count++; {own,opp,can} = stuck[--pStuck]; //pop if can goto SET else BEGIN; SET: set = least1(can); can = can & ~set; stuck[pStuck++] = {opp,own,can}; //stuck [opp,own] = setrev(own,opp,set); goto BEGIN;
858 :
857 :2009/12/28(月) 23:39:02
これをこんな風に最適化して stuck, pop, goto BEGIN, halt が生じる間の計算を全部1クロックで実現可能。 BEGIN: }simultaneously if(!revchk(own,opp) && !revchk(opp,own) && !pStuck && stuck[pStuck-1].can){ {{own,opp,can}, stuck[pStuck], count} = { stuck[pStuck], {opp, own, revchk(own,opp) & ~least1(revchk(own,opp))}, count+1 }; //pop and stuck }simultaneously if(!revchk(own,opp) && !revchk(opp,own) && !pStuck && !stuck[pStuck-1].can){ {{own,opp,can}, pStuck, count} = {stuck[pStuck], pStuck-1, count+1}; //pop }simultaneously if(revchk(own,opp)){ {{opp,own}, stuck[pStuck], pStuck} = { setrev(own,opp,~least1(revchk(own,opp))), {opp, own, revchk(own,opp) & ~least1(revchk(own,opp)), pStuck+1 }; //stuck }simultaneously if(revchk(own,opp) && !revchk(own,opp)){ {{own,opp}, stuck[pStuck], pStuck} = { setrev(opp,own,~least1(revchk(opp,own))), {own, opp, revchk(opp,own) & ~least1(revchk(opp,own)), pStuck+1 }; //stuck }else{ halt;// halt } goto BEGIN; "simultaneously if" は同時に評価するってことね。 own(64), opp(64), can(64), stuck[pStuck](192), stuck[pStuck-1].can(64), count(233), pStuck(7) の 計 688 ビットの並列のフリップフロップと (64+64+64)x64 = 12288 ビットのスタックメモリさえあればOK
859 :
857 :2009/12/28(月) 23:59:32
stuck ってなんだよ。stack だよ
860 :
名無しさん@5周年 :2009/12/30(水) 03:32:58
>>650 四隅空いた状態で勝ったことあるよ
珍しいから写メ撮った
ああ、あのときね なんで盤面撮らずに俺撮るんだろうと思ったけど 四隅空いた盤面よりそんな俺の顔の方が珍しいってか、あはは お前馬鹿にしてんのか
862 :
名無しさん@5周年 :2010/01/05(火) 20:30:40
>>858 の感じで Verilog-HDL で記述した。
>>858 は結構間違い入ってるのが判明したけど。
4x4 のシミュレーションでちゃんと 60060 通りって出たから合ってると思う。
着手可能手探索+石反転+深化 or バックトラックを合わせて 1clk、
そのあとにメモリリードライトで 1clk という設計。
ほんとはこの2つをパイプラインにすればさらに半分になるんだけど。
探索完了まで 191,375 clk でした。
FPGA ってだいたい何 MHz までいけるんだっけ。
メモリを外付けにするならそこの I/O の時間も気になってくる。
ちなみに 4x4 の CPU シミュレーションだと 18 分かかります
863 :
名無しさん@5周年 :2010/02/01(月) 19:16:05
864 :
名無しさん@5周年 :2010/02/26(金) 11:12:45
あげるよ
まだ発表されてないが8x8オセロも後手必勝。 これは検証プロセスと論文準備の段階。 もうすぐパブリックレポート。 ちなみに6x6も後手必勝。 これは結構前に発表されている。
デタラメは要らないから。
867 :
名無しさん@5周年 :2010/05/20(木) 19:17:53
なんか話題ないの?
868 :
名無しさん@5周年 :2010/05/20(木) 22:44:58
試合結果は「勝」「負」「引き分け」の三通りしかないだろ。 試合経過はたくさんあるけど・・・
869 :
名無しさん@5周年 :2010/08/09(月) 17:21:08
保守