1read 100read
2011年10月1期プログラム【思考】オセロのAIを作りたいのだが【難問】 TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
【PureVideo】DirectX Video Acceleration【AVIVO】
JAVAってこんなことも出来ないの?
最高にド低脳な発言してください in ム版(XVII)
J#って何のためにあるの?


【思考】オセロのAIを作りたいのだが【難問】


1 :07/05/29 〜 最終レス :11/10/21
オセロを作っているのだが、思考ルーチンとかが全くわからない。
C言語自体完全独学で、参考書とかもほとんど読んでない。
どしたら作れる?
どうやったらいいのか教えてくれ。

2 :
とりあえず人間対人間のオセロは作れるのか?

3 :
>>2
半年くらい前に作ったことがある。
ちょっとバグはあったけど、そこそこ普通にゲームする分には動いた。
またオセロ作ろうと思ったんだけど、AIの基本とかを知ってから
作り始めたほうがいいと思って、まだ作り始めてない。
先に、人間対人間のオセロ作ったほうがいい?
作ったほうがいいなら、今日の夜にでも作ってみるよ。
あとトリップつけてみる。
どうぞよろすぃく

4 :
>>1
http://pc11.2ch.net/test/read.cgi/tech/1173784074/

5 :
このスレそのものというより
関連スレやこのスレの過去スレで挙げられていた参考サイトや資料を見れ

6 :
こういうの考えると面白そうなんだけど時間を食いまくるんだよなぁw
AIの勉強するだけなら○×ゲームくらいから始めたらどうだw?
これなら素手でも全パターン書き下せなくもないぞ?

7 :
>>1
いちいち糞スレ勃てる莫迦な君には一生かかっても無理。

8 :
なぜオセロがAIだと思うのだろうか?

9 :
>思考ルーチンとかが全くわからない。
からだろう。

10 :
俺も、>>4のスレに触発されて、人間対人間をRubyで作ったよ。
それだけだけど。

11 :
リバーシじゃないからだろ。

12 :
十数年前の厨房のころアセンブラで組んだ俺様参上。
今のマシンスペックなら全総当たりも可能じゃないか?

13 :
白いほうがボケて黒いほうがもー腹立つ〜っていうのが基本線

14 :
>>4, 5
ありがとう。 適当に見てみたけど、ソースがもう手に入らないから参考にできなかった。
外部リンクはまだ見てない。
>>7
根拠は?
>>8, 9
AIと思考ルーチンの違いもわかんねぇーよ すまんね
で、人間対人間は作ったほうがいいの?

15 :
>>1
釣りではないことを祈ってマジレス
とりあえず、ミニマックス法とアルファ・ベータ法くらいおさえとけ
>>6にも出てるけど、○×ゲームみたいな小さなものから理解するのがお勧め
それができたら、あとはオセロの方でいかに良い評価関数を作れるかが、一番難しくて面白いとこだろうな
おれはやったことないけど、やる気あるならガンガレ

16 :
>>14
>根拠は?
1. 調べる事もせず
2. プログラミングのレベルも低そう
3. 単発質問スレを勃てて人に訊く
ひとことで言えば、莫迦だから。

17 :
>>16
その程度のことで, "一生できない"と考える思考回路は
どこで教育を受けたら形成されるんだ?

18 :
「バカは死ななきゃ治らない」って事じゃね?

19 :
「バカは死んでも治らない」って事じゃね?

20 :
>>12
おっ、御同輩かな?アスキーのマイクロオセロリーグ
をwktrして読んでた。Z80のアセンブラで小山オセロ
に勝てるくらいになってたが、モリタン登場で衝撃。
必死に逆アセンブルした。
全総当たりはまだ無理。6x6オセロなら少し前の
AI学会誌で解析されてた。後手2石勝ちだったような。
ちなみにこの手の二人ゼロサムゲームで後手有利
なのは珍しく、それが証明されたのは初めてだとか。
去年の日本AI学会では、プロ棋士を招いて将棋で
コンピュータが人間に勝てるのは何時頃に成るかを
予測してた。今年の学会ももうすぐじゃまいか?

21 :
min-max探索と、α-β枝刈りは基本だけど、
SSS*探索とか、あるいはもっとニューラル
ネットやGAを用いた手法なんかも登場してる。
また専用チップなんかの開発もされてて
ディープブルーなんかがそう。
将棋くらいまでならSSS*探索くらいで4段
レベルのものが作れると言われてるが、
囲碁となるとNNによるパターンマッO
やGAの世界に成るだろうと言われてる。
しかし作れば作る程、人間の脳って凄いね。

22 :
>>1
もし見れるなら、>>4のpart1から読んだほうがいいよ。
そのスレ主は限りなく頭でっかちの馬鹿。
別の意味で勉強になる。
こんな人間(馬鹿)にはなるな。

23 :
はさんだ時の判定ってどうやるんですか??
むずかしすぎるんですけど

24 :
な…何がどう難しいんだ・・・?

25 :
無視かよ
誰も相手してくれないから、人間対人間作ってみっぞ
半年ぶりくらいにコード書くから、どんくらいじかんかかるかわからんが

26 :
http://pascal.wanderers.jp/lsmcc/7lines/example/01.html
ここに7行オセロがある。

27 :
age

28 :
とりあえず、人間対人間のオセロはできたぜ。
最後はやっつけになって、適当にコード書いていったけどな。
まだ、パスの時は自分で"PASS"、勝敗がついたら自分で数える。
って手間があるが、ここを作ればいいのか?
見ためのことなんて考えてないから、ひどいけどよ。
とりあえず簡単な、"END"って入力されたら石の数を数えるようにしようかな。
それとどうじに、コードも整理するか。
7行で書ける奴もいるみたいだが、今のところ327行書いてるな。
100行位はコメントだが。
久しぶりにコード書いたから、こんなコードでも10時間くらいかかった。
>>23と同じく、はさんでるかはさんでないかどう判断するかで時間がかかったぜ。

29 :
ttp://hp.vector.co.jp/authors/VA015468/platina/algo/
これ見て作れなかったらプログラマとは言えないだろ。

30 :
誰が自称でプログラマっていったんだ?

31 :
>>1
日記はブログで。

32 :
日記じゃねぇーからここに書くな

33 :
"END"で石の数を数えるようにしたぜ。
コードも適当に整理した。
次は何したらいいんだ?
1. PASSの自動判断
2. 終了の自動判断
こんなもんか?
両方とも根本的に前提になかったから、大幅にコード書きたさなきゃな。
今は446行。 確実に倍以上に増えると思う。

34 :
>>33
七行オセロが何をやっているか調べろ。
こまかいテクニックがいくつかある。
お前にとってはかなり有意義だと思う。

35 :
>>34
見てみたけど、何の参考にもならなかったが。
順番に調べてって、最初に置ける場所に置くのなら結構すぐに実装できる。

36 :
>次は何したらいいんだ?
ソースをあげる。

37 :
>>36
あげてどうすんの?

38 :
>>1
序盤は置ける場所の中で一番とれる数の少ないところを取る
終盤は置ける場所の中で一番とれる数の多いところを取る
これだけでちっとは強くなるかもね

39 :
>>36
ソース汚いから読めないよ絶対
今なんか意味が分からない状態になって来てるし
>>38
やってみるよ
適当に左上のから検索して行って、一番数が取れるところに石を置いて行くようにしたら
1 2 3 4 5 6 7 8
a ●●●●●●●・
b ●●●●○・・・
c ●○○○・・・・
d ・・○○○・・・
e ・・・○○○・・
f ・・・・・・・・
g ・・・・・・・・
h ・・・・・・・・
これで終るぜ。 同数の石が取れる場合は、置く場所をランダムに決めた方がいいのか

40 :
左上から検索していって、最小の数取れるところに置くようにしても
1 2 3 4 5 6 7 8
a ●●●●●●●・
b ●●●●○・・・
c ●○○○・・・・
d ・・○○○・・・
e ・・・○○○・・
f ・・・・・・・・
g ・・・・・・・・
h ・・・・・・・・
これで終るんだな。 マスに優先度を付けたら解決できるかな

41 :
いや 違う終ってねぇ。
自動パス判断をやってないから、黒でループしてるだけだ。
すまん。
パス判断作るよ。

42 :
どっちのアルゴリズムでも、自動パスを付けても
1 2 3 4 5 6 7 8
a ●●●●●●●○
b ●●●●●●○○
c ●●●●●○●○
d ●●●●○●●○
e ●●●●●●●○
f ●●●○●●●○
g ●●●●○○●○
h ○○○○○○●●
同じ結果になった。
自動終了も付けようかな

43 :
頭が悪いと後手が有利って事か

44 :
じゃぁ、俺は後手やる

45 :
オセロって白が実質先手だよね?

46 :
なんで?

47 :
>>46
黒は最初、打つ手が一手しかないから。
だから実質、白から始めるゲームかなと思って。

48 :
頭悪い?

49 :
保守

50 :
汚くてもとりあえずソースあげたほうがいいんじゃないか?
アドバイスのしやすさ変わってくるし。

51 :
俺にもオセーロ!

52 :
>>51
2点

53 :
チェス作っといて
チェーーース

54 :
2chにソースあげるのはお勧めできないな
基本的に叩かれるだけ

55 :
独学でやってたやつってスパゲッティソースしか書けないだろw

56 :
>>55
お前のこと?

57 :
>>47
少なく見積もっても4箇所、最大で4箇所あるぜ!
どうでもいいけど、上の方で散々ヒント貰っときながら
まーだこんなレベルなんだな。>>1

58 :
>>57
お前 >>1 より馬鹿?
その4箇所は回転重複x鏡面重複に過ぎん。

59 :
>>1は、このスレ以外を見に行ってる雰囲気無いからな

60 :
>>58
お前 >>57 より馬鹿?
その4箇所の次は、何パターンしか無いと思ってんだよ。

61 :
>>60
ごめん、お前、馬鹿っていうより頭のかわいそうな子だったのね。

62 :
実質ある程度の思考が出て来るのは5手目からだぞ
なんでそんなに必死なんだ?

63 :
このスレは、
煽り始めた奴が反論されただけで必死になるのは何故か?
という思考ルーチンについて論じるスレになりました。

64 :
今一生懸命2手目で置ける箇所がなん箇所あるか数えてんのかな

65 :
早く報告してくれよ

66 :
どこにあげればいいの? うちに帰ったらあげるよ。
ただ、マジでぐちゃぐちゃだよ。

67 :
オセロの一手目は確かに対称な4種類しかないが、
二手目はそれぞれに対して3種類あるね。

68 :
結局3種類だろ
実質1種類だが

69 :
>>68
kwsk

70 :
◎とりあえず置けるところに完全ランダムで石を置くロジックを作る。
◎評価マップ(角が一番高い、とか)を作って優先順位を作ってみる。
>>38の言うように序盤は少なく終盤は沢山取らせてみる。
◎置いてひっくり返した後に相手にとって置ける箇所が少なくなるように打たせてみる。
◎逆に自分の打てる箇所が増えるように打たせてみる。
◎これらを考慮して数手先を評価する先読みロジックに挑戦
と、ここまで作ってみたことがある。EXCELで。
自分でテストプレイするんじゃなく、CPU同士でやらせて強くなっていくところを確認しながら遊んでた。
あと、定石のデータベースを作ったりいろいろやってみようとも思ったがもう止めた。

71 :
オセロって、ゲームやってると気づくけど角が必ずしも重要じゃないよな。
ロジックとしてうまく言えないけど、可能性のある近い将来、そこを
必要とするかしないか、もしくは埋めておく必要があるかないかが重要なのであって、
評価ポイントを決めておいて、評価の高いほうを選択する、というのは
ちょっと違うような希ガス。
とりあえず携帯ケームか何かで、オセロゲームを数千ゲームやって、
コンピュータの挙動がいかなるものかを頭に焼き付けてみたらどうだろ。

72 :
>>70
定石、この人が作ったのを流用するとか。
自作プログラム
http://uguisu.skr.jp/othello/7-3.html

73 :
おー、Linuxな人なんだな。
しかし人から流用するの大変なんだな。
人のソース読むのってめんどい。
オセロ自体の質問はオセロ板に行くのがいいかもね。
>>71
むしろ角を取らせて、とかいろいろあるっぽいね。
下手なオセロゲームだと置き方がパターン化するから、
せめてインターネットリバーシとかで人とやるのがいいかも。

74 :
ばぁーか

75 :
うーむ俺もリバーシ作ってるけどなかなか強くならん
盤面が変化するたびに合法手をすべて求めてるんだがこれがネックになってる気がしてならん
なんかもっと効率の良い方法はないのだろうか

76 :
で、誰もうpローダを紹介しないと

77 :
んなのどこでもいいだろ
ttp://www.uploda.org/

78 :
合法手ってなんだ?

79 :
人とか以外じゃないか?

80 :
合法手ってのは、「ルール上、指すことができる手」ってことらしい。
説明もなしにこんな非一般的な言葉使うなよw

81 :
法関係ないじゃん

82 :
>>78
ググれよ阿呆。
>>80
むしろヒントになるキーワードを与えてくれてんじゃん。
>>81
カエレ。

83 :
>盤面が変化するたびに合法手をすべて求めてるんだがこれがネックになってる気がしてならん
いや、これは基本だろ。常識的に考えて・・・

84 :
計算結果をキャッシュしておけば毎回計算する必要はない

85 :
まず全局面を先読みしておいて、手が進むごとに枝刈りしていくのか。

86 :
最近のマシンだと本当に出来そうだから困る

87 :
どうでもいいがキャッシングは計画的にな

88 :
6×6オセロは後手必勝だけど
あれって完全読みしたのかな?

89 :
>>88
君はその後手必勝をどうやって知ったのだ。

90 :
4x4はどっちが必勝?

91 :
・・・・
・◯●・
・●○・
・・・・

92 :
・・・・
・◯○○
・●○・
・・・・

93 :
____________
|_|_|_|●|
|_|◯|●|○|
|_|●|○|_|
|_|_|_|_|

94 :
・●・●
・●●○
・●○・
・・・・

95 :
____________
|_|_|○|●|
|_|◯|○|○|
|_|●|○|_|
|_|_|_|_|

96 :
その表組見にくい

97 :
>>1はどこいった?

98 :
□□○●
□○○●
□●●●
□□□□

99 :
++++
+○●+
+●○+
++++
これじゃ囲碁か

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
【PureVideo】DirectX Video Acceleration【AVIVO】
JAVAってこんなことも出来ないの?
最高にド低脳な発言してください in ム版(XVII)
J#って何のためにあるの?