slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
数値解析 Ⅱ PowerPoint Presentation
Download Presentation
数値解析 Ⅱ

Loading in 2 Seconds...

play fullscreen
1 / 18

数値解析 Ⅱ - PowerPoint PPT Presentation


  • 113 Views
  • Uploaded on

数値解析 Ⅱ.  ~五目並べプログラムを作る~. F班 メンバー          班長 雨堤 智宏           アルゴリズム解析 角田 泰彬             竹林 秀高 ppt 作成 清水 貴史. 参考 宍戸輝光氏作成 「五目ならべゲーム」. ① 既存の五目並べプログラムをプレイ. 先手・後手交互に石を打って、先に一直線上に五つの石を並べたほうが勝ち. ○. A. ○. B. 三つの石の並びが勝負を左右する. ② 五目並べとは?. 黒番なら A か B に置けば次手で勝ちが確定 白番なら A か B に置いて黒の勝ちを阻止.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

数値解析 Ⅱ


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

数値解析Ⅱ

 ~五目並べプログラムを作る~

F班 メンバー 

        班長 雨堤 智宏          

アルゴリズム解析 角田 泰彬

            竹林 秀高

ppt作成 清水 貴史

slide2

参考 宍戸輝光氏作成 「五目ならべゲーム」参考 宍戸輝光氏作成 「五目ならべゲーム」

①既存の五目並べプログラムをプレイ

slide3

先手・後手交互に石を打って、先に一直線上に五つの石を並べたほうが勝ち先手・後手交互に石を打って、先に一直線上に五つの石を並べたほうが勝ち

A

B

三つの石の並びが勝負を左右する

②五目並べとは?

黒番ならAかBに置けば次手で勝ちが確定

白番ならAかBに置いて黒の勝ちを阻止

slide4

・配石可能な場所に重要度の高い順に点数をつける・配石可能な場所に重要度の高い順に点数をつける

 例)自分が4連しており、勝ちが確定する場所には15,000点

    相手が4連しており、置かなければ負けが確定する場所には12,000点

    自分が2連しており、その両端に置くことにより3連ができる場所には10点

                                       など

・全ての盤面評価が終わると、その中から最高点の場所にCPUの手を決定

 最高点が複数存在する場合は、その中からランダムで選出

盤面評価からCPUの手の決定までの流れ

③宍戸氏のプログラムの特徴

・16×16256マス全ての盤面にある石の場所と数を記憶する

slide5

HUMかCPUのいずれかが一直線上の連続する5点のうち2点に並ぶまで意味の無い手を打ち続けるHUMかCPUのいずれかが一直線上の連続する5点のうち2点に並ぶまで意味の無い手を打ち続ける

・序盤に何の戦略性も無い無意味な手を打つ

・相手の動きに合わせて打つ⇔例え先手でも出遅れる

④宍戸氏のプログラムの問題点

例 CPU後手の場合

●:先手HUMAN

●:後手CPU

slide6

定石とは?

→序盤の手順に戦略性のある定石を導入

⑤プログラムの是正

slide7

CPU先手の時、HUMが離れた場所に打ってきた場合CPU先手の時、HUMが離れた場所に打ってきた場合

HUM先手の時、第一手に端に置かれた場合

⑤プログラムの是正

slide8

挑戦するも知識不足に加え、バグが無くならず断念・・・・挑戦するも知識不足に加え、バグが無くならず断念・・・・

・相手が奇抜な手を打ってきた時にも定石を交えな

 がら対応できるプログラムが必要

・定石の数は豊富でその全てに対応するプログラム

 を作成する必要がある

⑤プログラムの是正

slide9

とにかく序盤に無理やりにでも2連を作る

9

9

ⅰ)HUM(●)が●の直近周囲(①~

  ⑧)に無い場合

①~⑧からランダムに選択して決定

9

●が二つ並んだので以降は既存のプログラムに準じて手を決定

9

⑥せめて無駄な手を無くす

Ⅰ)CPU先手(●)の場合

第一手は有無を言わさず座標[9,9]

slide10

とにかく序盤に無理やりにでも2連を作る

9

×

9

ⅱ)HUM(●)が●の直近周囲(①~⑧)のいずれかにある場合

●を挟んで●の反対側を除く6箇所からランダムに選択して決定

(図の例では●が⑥にある場合は③を除外)

9

9

●が二つ並んだので以降は既存のプログラムに準じて手を決定

⑥せめて無駄な手を無くす

Ⅰ)CPU先手(●)の場合

第一手は有無を言わさず座標[9,9]

slide11

とにかく序盤に無理やりにでも2連を作る

有無を言わさず座標[9,9]にCPUの手を決定

9

a)HUMの第2手(トータル3手目)の場所の情報は無視

CPU一手目の囲りに注目

一手目の囲りに●が0個の場合

9

①~⑧からランダムに選択してCPUの手を決定

⑥せめて無駄な手を無くす

Ⅱ)HUM先手(●)の場合

ⅰ)HUMの第一手が座標[9,9]に無い場合

slide12

とにかく序盤に無理やりにでも2連を作る

有無を言わさず座標[9,9]にCPUの手を決定

b)HUMの第2手(トータル3手目)の場所の情報は無視

CPU一手目の囲りに注目

一手目の囲りに●が1個の場合

×

●を挟んで●の反対側を除く6箇所からラン

ダムに選択して決定

(図の例では●が④にある場合は⑤を除外)

⑥せめて無駄な手を無くす

Ⅱ)HUM先手(●)の場合

ⅰ)HUMの第一手が座標[9,9]に無い場合

slide13

とにかく序盤に無理やりにでも2連を作る

有無を言わさず座標[9,9]にCPUの手を決定

c)HUMの第2手(トータル3手目)の場所の情報は無視

CPU一手目の囲りに注目

一手目の囲りに●が2個の場合

×

×

●を挟んで●の反対側を除く5箇所からラン

ダムに選択して決定

(図の例では●が①と④にある場合は⑤と⑧を除外)

⑥せめて無駄な手を無くす

Ⅱ)HUM先手(●)の場合

ⅰ)HUMの第一手が座標[9,9]に無い場合

slide14

とにかく序盤に無理やりにでも2連を作る

×

有無を言わさず座標[10,10]にCPUの手を決定

a)HUMの第2手(トータル3手目)の場所の情報は無視

CPU一手目の囲りに注目

一手目の囲りに●が2個の場合

×

●を挟んで●の反対側を除く5箇所からラン

ダムに選択して決定

(図の例では●が①と④にある場合は⑤と⑧を除外)

⑥せめて無駄な手を無くす

Ⅱ)HUM先手(●)の場合

ⅱ)HUMの第一手が座標[9,9]に有る場合

slide15

とにかく序盤に無理やりにでも2連を作る

×

有無を言わさず座標[10,10]にCPUの手を決定

b)HUMの第2手(トータル3手目)の場所の情報は無視

CPU一手目の囲りに注目

一手目の囲りに●が1個の場合

●を挟んで●の反対側を除く6箇所からラン

ダムに選択して決定

⑥せめて無駄な手を無くす

Ⅱ)HUM先手(●)の場合

ⅱ)HUMの第一手が座標[9,9]に有る場合

slide16

とにかく序盤に無理やりにでも2連を作る

⑥せめて無駄な手を無くす

Ⅰ-ⅰ)CPU先手-黒が近くにない場合

Ⅰ-ⅱ)CPU先手-黒が近くに有る場合

Ⅱ-ⅰ)HUM先手-黒が近くにない場合

Ⅱ-ⅰ)HUM先手-黒が近くに1個の場合

Ⅱ-ⅰ)HUM先手-黒が近くに1個の場合

slide17

9

既存のプログラムでは対処できていたことに対処出来なくなった

9

⑥考察と更なる改良点

オセロと違い、広い盤面のどこから打ち始めてもいいという条件(最初から端っことか)が、特に序盤のCPUの手を決めるプログラムを作ることはなかなか難しかった。

宍戸氏のプログラムにおける序盤の脆弱性を無くす為に、無理やり二連を作るように修正を施しましたが、それによって新たな問題が出てきた。

例)HUM先手 (9,9)に無い場合