AI 三目並べ

Size: px
Start display at page:

Download "AI 三目並べ"

Transcription

1 ame Algorithms AI programming 三目並べ

2 ゲーム木 お互いがどのような手を打ったかによって次にどのような局面になるかを場合分けしていくゲーム展開を木で表すことができる 相手の手 ゲームを思考することは このゲーム木を先読みしていく必要がある

3 ミニマックス法 考え方 では局面が最良になる手を選びたい 相手は ( 自分にとって ) 局面が最悪となる手を選ぶだろう 相手が自分にとってまずい手を打ってきても そのまずさ (Min) があまり悪くない手 (Max) を打とう

4 ミニマックス法 もう少し詳しく 今 自分が打てる複数の候補手を考えた時 それぞれの手に関して 相手の対抗手 ( これもまた複数 ) を探索する この時 対抗手の評価値を全て計算する その中で最小の評価値 ( 相手にとっては最高の評価値 )hを求める 自分の候補手の中で 最も高い評価値である手を最適なものとする では評価値が max, 相手の手では評価値が min となる手を選択

5 三目並べの例 評価値 h = h0 h1 h0: 自分の石だけが置かれている縦 横 斜めの列数 h1: 相手の石だけが置かれている縦 横 斜めの列数 -99 比較 -99 比較 0 Select 現在の状態 Max 白勝利評価最悪 -99 m i n h=-1 m i n m i n 比較 白勝利評価最悪 比較 比較 -99 h=-1 h=0 h=1 相手の手 Min

6 どのように実装するか 1. 自分が打てる複数の候補手を考えた時 それぞれの手に関して 相手の対抗手を探索する 1. これを深読みレベルまで繰り返す 2. 木の末端まで来た時 評価値を計算する 2. 子ノードから返された評価値比較する 1. AI( 自分 ) のターンなら最大を選択する 2. プレイヤー ( 相手 ) のターンなら最小を選択する 3. 評価値を親ノードへと返す 1. 自分自身が子ノードの場合 選ばれた評価値を親ノードへ返す 2. 根の場合 最適な場所を返す

7 1 1.2 コード部分 public int minmax(boolean flag, int level) { String my; // 現在の手 int value; // 評価値 int child; // 子ノードからくる評価値 // うつ場所 int bestposition = -99; // 仮 if (level == 0) { return evaluation(flag); if (flag) { // AI ターンでの初期化 value = -999; my = "O"; else { // プレイヤーターンでの初期化 value = 999; my = "X"; // 評価値を計算する for (int i = 0; i < size * size; i++) { if (buttons[i].getlabel().equals("")) { buttons[i].setlabel(my); if (check(flag)) { buttons[i].setlabel(""); if (!flag) return -1000; else return i; // 次の手に移動 ここで子ノードの評価値が帰ってくる child = minmax(!flag, level - 1); 1.1 flag : AI の手のとき true プレイヤーの手のとき false level : 先読みのレベル 2 3 if (flag) { // AIならノードの中で最大の評価値を選ぶ if (child >= value) { value = child; bestposition = i; else { // プレイヤーならノードの中で最小の評価値を選ぶ if (child <= value) { value = child; bestposition = i; buttons[i].setlabel(""); if (level == SEARCH_LEVEL) { // 根 if (bestposition == -99) { // CPの負けが確実 OptionPane.showMessageDialog(null, " まいりました "); System.exit(0); return bestposition; else { // 子ノード return value; // 評価値を返す

8 イメージ 1 minmax(true, SEARCH_LEVEL); level 3 level 2 相手の手 level 1 minmax(true, 3) 打てる部分を全て試す for (int i = 0; i < size * size; i++) { if (buttons[i].getlabel().equals("")) { buttons[i].setlabel(my); 次の手を考える minmax(false, level-1); minmax(false, 2) 打てる部分を全て試す for (int i = 0; i < size * size; i++) { if (buttons[i].getlabel().equals("")) { buttons[i].setlabel(my); 次の手を考える minmax(true, level-1);

9 イメージ 2 level 3 minmax(ture, 1) 打てる部分を全て試す for (int i = 0; i < size * size; i++) { if (buttons[i].getlabel().equals("")) { buttons[i].setlabel(my); level 2 相手の手 次の手を考える minmax(false, level-1); level 1 level 0 評価値 minmax(false, 0) レベルが 0 なので親ノード if (level == 0) { return evaluation(flag); // 評価値を計算する evaluation(false) 評価値を計算して返す

10 イメージ 3 level 3 Max level 2 相手の手 Min level 1 Max minmax(false, 2) else { if (child <= value) { value = child; bestposition = i; Levelは2なので親ノードに返す return value; minmax(ture, 1) if (flag) { if (child >= value) { value = child; bestposition = i; Levelは1なので親ノードに返す return value;

11 イメージ 4 Select このノードを選択する level 3 Max level 2 相手の手 Min level 1 Max minmax(ture, 3) if (flag) { if (child >= value) { value = child; bestposition = i; Levelは3なので親ノードに返す if (level == SEARCH_LEVEL) { return bestposition;

12 αβ 法 ミニマックス法は木を全て探索 + 評価値の計算を行うので計算量が多くなる 木を全てではなく 見なくて良い枝をカットしていく方法が αβ 法 R A B C D (7) E F (8) H I (7) K L M M (8)

13 α カット 最大の評価値を取ろうとするときの下限 (α) 以下になる場合は 残りの部分は探索しない O >=5(α 値 ) A の評価値が 5 と確定後 E の評価値が 4 だとわかる この時 B の評価値は 4 以下だとわかる よって B 選ばれないので F は見ない 自分 A B <=4(β 値 ) α カット 相手 C D (7) E F (8) H I (7) K L M M (8)

14 β カット 最小の評価値を取ろうとするときの上限 (β) 以上になる場合は 残りの部分は探索しない A <=5(β 値 ) O Cの評価値が5と確定した時 Aの評価値は5 以下であることが確定する 次にを見て 評価値が7となり Dの評価値は7 以上であることが確定 よってDが選択されることはないのでK,Lはカットされる B C D >=7(α 値 ) β カット E F (8) H I (7) K L M M (8)

15 計算回数 ミニマックス法 12 回 αβ 法 7 回 R B E F D H C A I L K M M R B E F D H C A I L K M M

16 どのように実装するか (αβ カット ) 1. 自分 (CP) の手であれば 子ノードの中で最大の評価値を選ぶ 1. この時 α 値を更新する 2. この見ているノードの評価値が β 値より大きかったら for ループを抜ける 2. プレイヤーなら子ノードの中で最小の評価値を選ぶ 1. この時 β 値を更新する 2. 見ているノードの評価値が α 値よりも小さかったら for ループを抜ける

17 擬似コード flag : AI の手のとき true プレイヤーの手のとき false level : 先読みのレベル alpha : α 値 beta : β 値 public int alphabeta(boolean flag, int level, int alpha, int beta) { String my; // 現在の手 int value; // 評価値 int child; // 子ノードからくる評価値 // うつ場所 int bestposition = -99; // 仮 if (level == 0) { return evaluation(flag); if (flag) { // AI ターンでの初期化 value = -999; my = "O"; else { // プレイヤーターンでの初期化 value = 999; my = "X"; for (int i = 0; i < size * size; i++) { if (buttons[i].getlabel().equals("")) { buttons[i].setlabel(my); if (check(flag)) { buttons[i].setlabel(""); if (!flag) return -1000; else return i; child = alphabeta(!flag, level - 1, alpha, beta); 1 2 if (flag) { if (childvalue > value) { 1.1を書く else { if (childvalue < value) { 1.2 を書く 2.1 を書く 2.2 を書く

18 課題 TicTacToe_MinMax.java に書かれているコメントを参考にして以下のことに取り組みましょう マスでも動くプログラム TicTacToe4.java を作成する 2. 資料を参考に αβ 法のメソッドを実装し TicTacToe_AlphaBeta.java を作成する マスで動くようにしてください

PowerPoint Presentation

PowerPoint Presentation ゲーム木の探索について ミニマックス法のアルゴリズム アルファベータ法のアルゴリズ 三目並べゲームの例 1 ゲーム TicTacToe Othello Chess Let us find game and play! 三目並べ http://perfecttictactoe.herokuapp.com/ オセロ http://atohi.com/osg/default.aspx 将棋 2 ゲーム木の探索問題

More information

Microsoft PowerPoint - ゲーム理論2018.pptx

Microsoft PowerPoint - ゲーム理論2018.pptx 89 90 ゲーム理論 ( 第 回ゲーム木探索 I) 九州大学大学院システム情報科学研究院情報学部門横尾真 E-mail: yokoo@inf.kyushu-u.ac.jp http://agent.inf.kyushu-u.ac.jp/~yokoo/ ゲーム木探索 行動の選択が一回だけではなく 交互に繰り返し生じる 前の番に相手の選んだ手は分かる 9 9 例題 二人で交代に, から順に までの数を言う.

More information

PowerPoint Presentation

PowerPoint Presentation 幅優先探索アルゴリズム 復習 Javaでの実装 深さ優先探索 復習 Javaでの実装 1 探索アルゴリズムの一覧 問題を解決するための探索 幅優先探索 深さ優先探索 深さ制限探索 均一コスト探索 反復深化法 欲張り探索 山登り法 最良優先探索 2 Breadth-first search ( 幅優先探索 ) 探索アルゴリズムはノードやリンクからなる階層的なツリー構造で構成された状態空間を探索するアルゴリズムです

More information

1 911 9001030 9:00 A B C D E F G H I J K L M 1A0900 1B0900 1C0900 1D0900 1E0900 1F0900 1G0900 1H0900 1I0900 1J0900 1K0900 1L0900 1M0900 9:15 1A0915 1B0915 1C0915 1D0915 1E0915 1F0915 1G0915 1H0915 1I0915

More information

人工知能入門

人工知能入門 藤田悟 黄潤和 探索とは 探索問題 探索解の性質 探索空間の構造 探索木 探索グラフ 探索順序 深さ優先探索 幅優先探索 探索プログラムの作成 バックトラック 深さ優先探索 幅優先探索 n 個の ueen を n n のマスの中に 縦横斜めに重ならないように配置する 簡単化のために 4-ueen を考える 正解 全状態の探索プログラム 全ての最終状態を生成した後に 最終状態が解であるかどうかを判定する

More information

4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for

4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for 4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for 文 ) */ int i, no; for (i = 0; i

More information

メソッドのまとめ

メソッドのまとめ メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか

More information

発展プログラミング (5) 例題 5-03( 応用プログラム 3 目並べ その 2) 勝敗判定機能をそなえた 3 目並べ のゲーム盤を作りましょう 必要な変数を考えましょう 1 マス目の状態を保持する配列 整数型 :mas[] 2 何手目かを数える変数 整数型 :nante 3 ゲームが終了したかど

発展プログラミング (5) 例題 5-03( 応用プログラム 3 目並べ その 2) 勝敗判定機能をそなえた 3 目並べ のゲーム盤を作りましょう 必要な変数を考えましょう 1 マス目の状態を保持する配列 整数型 :mas[] 2 何手目かを数える変数 整数型 :nante 3 ゲームが終了したかど 発展プログラミング (5) 例題 5-03( 応用プログラム 3 目並べ その 2) 勝敗判定機能をそなえた 3 目並べ のゲーム盤を作りましょう 必要な変数を考えましょう 1 マス目の状態を保持する配列 整数型 :mas[] 2 何手目かを数える変数 整数型 :nante 3 ゲームが終了したかどうかを示す変数 整数型 :endflg 最低限 この 3 種類は必要です 前回作成した例題 5-02

More information

問題1 以下に示すプログラムは、次の処理をするプログラムである

問題1 以下に示すプログラムは、次の処理をするプログラムである 問題 1 次のプログラムの出力結果を a~d の中から選べ public class Problem1 { int i=2; int j=3; System.out.println("i"+j); a) 23,b) 5,c) i3,d) ij 問題 2 次のプログラムの出力結果を a~d の中から選べ public class Problem2 { int a=6; if((a>=2)&&(a

More information

第86回日本感染症学会総会学術集会後抄録(I)

第86回日本感染症学会総会学術集会後抄録(I) κ κ κ κ κ κ μ μ β β β γ α α β β γ α β α α α γ α β β γ μ β β μ μ α ββ β β β β β β β β β β β β β β β β β β γ β μ μ μ μμ μ μ μ μ β β μ μ μ μ μ μ μ μ μ μ μ μ μ μ β

More information

研修コーナー

研修コーナー l l l l l l l l l l l α α β l µ l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l

More information

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java 問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 public class Ex0201 { System.out.print("input> "); int input = Integer.parseInt(reader.readLine());

More information

連載講座 : 高生産並列言語を使いこなす (3) ゲーム木探索問題 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 概要 17 2 ゲーム木探索 必勝 必敗 引き分け 盤面の評価値 αβ 法 指し手の順序付け (mo

連載講座 : 高生産並列言語を使いこなす (3) ゲーム木探索問題 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 概要 17 2 ゲーム木探索 必勝 必敗 引き分け 盤面の評価値 αβ 法 指し手の順序付け (mo 連載講座 : 高生産並列言語を使いこなす (3) ゲーム木探索問題 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 概要 17 2 ゲーム木探索 17 2.1 必勝 必敗 引き分け 17 2.2 盤面の評価値 18 2.3 αβ 法 19 2.4 指し手の順序付け (move ordering) 20 3 Andersson の詰み探索およびその並列化 21 3.1 Andersson

More information

プログラミングA

プログラミングA プログラミング A 第 5 回 場合に応じた処理 繰り返し 2019 年 5 月 13 日 東邦大学金岡晃 場合に応じた処理 1 こういうプログラムを作りたい 5 教科のテスト 100 点以上各科目の点数の合計が 100 点未満 おめでとう! これで 100 点越えのプレゼントを獲得! というメッセージを出力 残念!100 点越えのプレゼントまであと ** 点! というメッセージを出力 5 教科の点数の合計が

More information

メソッドのまとめ

メソッドのまとめ 配列 (2) 2 次元配列, String http://jv2005.cis.k.hosei.c.jp/ 授業の前に自己点検 配列変数に格納される配列の ID と配列の実体の区別ができていますか 配列変数の宣言と配列の実体の生成の区別ができていますか メソッドの引数に配列が渡されるとき 実際に渡されるものは何ですか このことの重要な帰結は何ですか 引数の値渡しと参照渡しということばを例を挙げて説明できますか

More information

JAVA入門

JAVA入門 JAVA 入門後期 10 情報処理試験例題解説 H14 年度秋問 8 次の Java プログラムの説明及びプログラムを読んで, 設問に答えよ プログラムの説明 ディジタル論理回路シミュレータを作成するためのクラスとテスト用クラスである (1) ゲートを表す抽象クラス Gate のサブクラスとして, NOT ゲートを表すクラス NotGate 及び AND ゲートを表すクラス AndGate を定義する

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション Let s review! 2012.5.10(Thu) 担当者清水浜田 今までに覚えた (?) こと 入出力 変数 演算子 条件分岐 ループ構文 メソッド 今日はこれらを復習して行きます 2 String 変数名 = JOptionPane.showInputDialog( 説明 ); JOptionPane.showMessageDialog(null, 表示させたいもの ); import javax.swing.joptionpane;

More information

一般演題(ポスター)

一般演題(ポスター) 6 5 13 : 00 14 : 00 A μ 13 : 00 14 : 00 A β β β 13 : 00 14 : 00 A 13 : 00 14 : 00 A 13 : 00 14 : 00 A β 13 : 00 14 : 00 A β 13 : 00 14 : 00 A 13 : 00 14 : 00 A β 13 : 00 14 : 00 A 13 : 00 14 : 00 A

More information

情報処理Ⅰ

情報処理Ⅰ Java フローチャート -1- フローチャート ( 流れ図 ) プログラムの処理手順 ( アルゴリズム ) を図示したもの 記号の種類は下記のとおり 端子記号 ( 開始 終了 ) 処理記号計算, 代入等 条件の判定 条件 No ループ処理 LOOP start Yes データの入力 出力 print など 定義済み処理処理名 end サンプルグログラム ( 大文字 小文字変換 ) 大文字を入力して下さい

More information

プログラミングA

プログラミングA プログラミング A 第 5 回 場合に応じた処理 繰り返し 2017 年 5 月 15 日 東邦大学金岡晃 前回の復習 (1) このプログラムを作成し実行してください 1 前回の復習 (2) このプログラムを作成し実行してください 2 前回の復習 (3) 3 前回の復習 演算子 代入演算子 インクリメント シフト演算子 型変換 4 場合に応じた処理 5 こういうプログラムを作りたい 5 教科のテスト

More information

Microsoft Word - CompA-Ex doc

Microsoft Word - CompA-Ex doc コンパイラ演習参考資料 2008/09/23 担当 : 佐々木晃 算術式の処理と逆ポーランド記法 ( 第一回スライド 29 ページ ) (1) 実数値 (double の値 ) を格納するスタックを実装せよ ( 配列やリストを使うとよい ) (2) 逆ポーランド記法によって実数値の算術演算を行う計算機のプログラムを作成せよ 演算子や被演算子の各要素同士は空白で区切られるものとする (a) 四則演算のみなお

More information

P1-1 P1-2 P1-3 P1-4 P1-5 P1-6 P3-1 P3-2 P3-3 P3-4 P3-5 P3-6 P5-1 P5-2 P5-3 P5-4 P5-5 P5-6 P7-1 P7-2 P7-3 P7-4 P7-5 P7-6 P9-1 P9-2 P9-3 P9-4 P9-5 P9-6 P11-1 P11-2 P11-3 P11-4 P13-1 P13-2 P13-3 P13-4 P13-5

More information

1 913 10301200 A B C D E F G H J K L M 1A1030 10 : 45 1A1045 11 : 00 1A1100 11 : 15 1A1115 11 : 30 1A1130 11 : 45 1A1145 12 : 00 1B1030 1B1045 1C1030

1 913 10301200 A B C D E F G H J K L M 1A1030 10 : 45 1A1045 11 : 00 1A1100 11 : 15 1A1115 11 : 30 1A1130 11 : 45 1A1145 12 : 00 1B1030 1B1045 1C1030 1 913 9001030 A B C D E F G H J K L M 9:00 1A0900 9:15 1A0915 9:30 1A0930 9:45 1A0945 10 : 00 1A1000 10 : 15 1B0900 1B0915 1B0930 1B0945 1B1000 1C0900 1C0915 1D0915 1C0930 1C0945 1C1000 1D0930 1D0945 1D1000

More information

P-12 P-13 3 4 28 16 00 17 30 P-14 P-15 P-16 4 14 29 17 00 18 30 P-17 P-18 P-19 P-20 P-21 P-22

P-12 P-13 3 4 28 16 00 17 30 P-14 P-15 P-16 4 14 29 17 00 18 30 P-17 P-18 P-19 P-20 P-21 P-22 1 14 28 16 00 17 30 P-1 P-2 P-3 P-4 P-5 2 24 29 17 00 18 30 P-6 P-7 P-8 P-9 P-10 P-11 P-12 P-13 3 4 28 16 00 17 30 P-14 P-15 P-16 4 14 29 17 00 18 30 P-17 P-18 P-19 P-20 P-21 P-22 5 24 28 16 00 17 30 P-23

More information

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル 概略設計書 作成者築山修治作成日 2012 年 10 月 1 日 概要 ( どのような入力に対して, どのような出力をするかの概要説明 ) * 木 T および質問点対の集合 P が与えられたとき, 各質問点対 p = (v,w) P の最下位共通先祖 ( すなわち木 T において点 v と w の共通の先祖 a で,a の真の子孫には v と w の共通の先祖が無いような点 ) を見出す関数である.

More information

Microsoft PowerPoint - 05.pptx

Microsoft PowerPoint - 05.pptx アルゴリズムとデータ構造第 5 回 : データ構造 (1) 探索問題に対応するデータ構造 担当 : 上原隆平 (uehara) 2015/04/17 アルゴリズムとデータ構造 アルゴリズム : 問題を解く手順を記述 データ構造 : データや計算の途中結果を蓄える形式 計算の効率に大きく影響を与える 例 : 配列 連結リスト スタック キュー 優先順位付きキュー 木構造 今回と次回で探索問題を例に説明

More information

memo

memo 計数工学プログラミング演習 ( 第 4 回 ) 2016/05/10 DEPARTMENT OF MATHEMATICA INFORMATICS 1 内容 リスト 疎行列 2 連結リスト (inked ists) オブジェクトをある線形順序に並べて格納するデータ構造 単方向連結リスト (signly linked list) の要素 x キーフィールド key ポインタフィールド next x->next:

More information

< F2D92DE82E8914B82CC977088D32E6A7464>

< F2D92DE82E8914B82CC977088D32E6A7464> 釣り銭の用意の実験 [Java アプレット ] [Java アプリケーション ] 1. はじめに クラス会などの幹事を務めることはありませんか 幹事になったつもりで考えてみてください 仮に クラス会への参加者人数は 35 人で 会費は 3500 円であるとします また 参加者は 1000 円札 4 枚でお釣りを必要とする人と 1000 円札 3 枚と 500 円玉 1 個でお釣りの要らない人の 2

More information

プログラミング教育のための発展的な教材作成の実践と考察

プログラミング教育のための発展的な教材作成の実践と考察 発展プログラミング (17) 例題 Bou_03( 応用プログラム 七五三 その 5) 七五三 ( 棒消し ) ゲームの技術課題を一つずつ解決しましょう 自分の思考手順をプログラム化する方法でコンピュータの思考ルーチンを作る この七五三ゲームの最大の難関は コンピュータの思考ルーチンでしょう コンピュータは 自分の手番になったとき どう考えて どこに打つか 今回は このルーチンをプログラムします 0

More information

Microsoft PowerPoint - DA2_2017.pptx

Microsoft PowerPoint - DA2_2017.pptx 1// 小テスト内容 データ構造とアルゴリズム IⅠ 第 回単一始点最短路 (I) 1 1 第 章の構成. 単一始点最短路問題 単一始点最短路問題とは 単一始点最短路問題の考え方 単一始点最短路問題を解くつのアルゴリズム ベルマン フォードのアルゴリズム トポロジカル ソートによる解法 ダイクストラのアルゴリズム 1 1 単一始点最短路問題とは 単一始点最短路問題とは 前提 : 重み付き有向グラフ

More information

Microsoft PowerPoint - DA2_2018.pptx

Microsoft PowerPoint - DA2_2018.pptx 1//1 データ構造とアルゴリズム IⅠ 第 回単一始点最短路 (I). 単一始点最短路問題 第 章の構成 単一始点最短路問題とは 単一始点最短路問題の考え方 単一始点最短路問題を解くつのアルゴリズム ベルマン フォードのアルゴリズム トポロジカル ソートによる解法 ダイクストラのアルゴリズム 単一始点最短路問題とは 単一始点最短路問題とは 前提 : 重み付き有向グラフ 特定の開始頂点 から任意の頂点

More information

> > <., vs. > x 2 x y = ax 2 + bx + c y = 0 2 ax 2 + bx + c = 0 y = 0 x ( x ) y = ax 2 + bx + c D = b 2 4ac (1) D > 0 x (2) D = 0 x (3

> > <., vs. > x 2 x y = ax 2 + bx + c y = 0 2 ax 2 + bx + c = 0 y = 0 x ( x ) y = ax 2 + bx + c D = b 2 4ac (1) D > 0 x (2) D = 0 x (3 13 2 13.0 2 ( ) ( ) 2 13.1 ( ) ax 2 + bx + c > 0 ( a, b, c ) ( ) 275 > > 2 2 13.3 x 2 x y = ax 2 + bx + c y = 0 2 ax 2 + bx + c = 0 y = 0 x ( x ) y = ax 2 + bx + c D = b 2 4ac (1) D >

More information

< F2D A838B838D96402E6A7464>

< F2D A838B838D96402E6A7464> モンテカルロ法 [Java アプレット ] [Java アプリケーション ] 1. はじめに 一辺の長さが 2 の正方形とそれに内接する半径 1 の円が紙に書かれています この紙の上からたくさんのゴマをばらまきます 正方形の中に入ったゴマの数と そのうちで円の中に入ったゴマの数も数えます さあ このゴマの数からどうやって円周率 π を求めるのでしょうか 一辺の長さ2の正方形の面積は4で

More information

Microsoft Word - NonGenList.doc

Microsoft Word - NonGenList.doc ジェネリクスとコンパレータを使用しないリストのプログラム例 1. ポインタによる線形リスト LinkedListNG.java: ポインタによる線形リストのクラス LinkedListNG LinkedListTesterNG.java: LinkedListNG を利用するプログラム例 2. カーソルによる線形リスト AryLinkedListNG.java: カーソルによる線形リストのクラス AryLinkedListNG

More information

Microsoft PowerPoint - diip ppt

Microsoft PowerPoint - diip ppt 2006 年度デザイン情報学科情報処理 III 第 12 回マウスによる制御 ブロック崩し の部品 ボール直径 10pixel の円ラケット横 60pixel 縦 10pixel, マウスにより左右に移動ブロック横 50pixel 縦 20pixel,28 個 (7 個 4 段 ) 壁 ( フィールド ) 横 400pixel 縦 600pixel 2006 年度デザイン情報学科情報処理 III 2

More information

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value = Part2-1-3 Java (*) (*).class Java public static final 1 class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value

More information

Taro-最大値探索法の開発(公開版

Taro-最大値探索法の開発(公開版 最大値探索法の開発 0. 目次 1. 開発過程 1 目標 1 : 4 個のデータの最大値を求める 目標 2 : 4 個のデータの最大値を求める 改良 : 多数のデータに対応するため 配列を使う 目標 3 : n 個のデータの最大値を求める 改良 : コードを簡潔に記述するため for 文を使う 目標 4 : n 個のデータの最大値を求める 改良 : プログラムをわかりやすくするため 関数を使う 目標

More information

PowerPoint Presentation

PowerPoint Presentation 最適化手法 第 回 工学部計数工学科 定兼邦彦 http://researchmap.jp/sada/resources/ 前回の補足 グラフのある点の隣接点をリストで表現すると説明したが, 単に隣接点の集合を持っていると思ってよい. 互いに素な集合のデータ構造でも, 単なる集合と思ってよい. 8 3 4 3 3 4 3 4 E v 重み 3 8 3 4 4 3 {{,},{3,8}} {{3,},{4,}}

More information

Java講座

Java講座 ~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト

More information

Microsoft Word - no206.docx

Microsoft Word - no206.docx 3.2 双方向リスト 今までのリストは 前から順にたどることしかできませんでした 今度は逆にもたどることができる 双方向リストを扱います この場合は 構造体には次を表すポインタの他に前を表すポインタを持つ ことになります 今回は最初と最後をポインタを使うと取り扱いが面倒になるので 最初 (start) と最後 (end) を どちらとも構造体 ( 値は意味を持たない ) を使うことにします こうすることによって

More information

Javaによるアルゴリズムとデータ構造

Javaによるアルゴリズムとデータ構造 1 algorithm List 1-1 a, b, c List 1-1 // import java.util.scanner; class Max3 { public static void main(string[] args) { Scanner stdin = new Scanner(System.in); int a, b, c; int max; // Chap01/Max3.java

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 独習 Java ( 第 3 版 ) 6.7 変数の修飾子 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 Object クラスと Class クラス 6.7 変数の修飾子 (1/3) 変数宣言の直前に指定できる修飾子 全部で 7 種類ある キーワード final private protected public static transient volatile 意味定数として使える変数同じクラスのコードからしかアクセスできない変数サブクラスまたは同じパッケージ内のコードからしかアクセスできない変数他のクラスからアクセスできる変数インスタンス変数ではない変数クラスの永続的な状態の一部ではない変数不意に値が変更されることがある変数

More information

株式会社日清製粉グループ本社 第158期中間事業報告書

株式会社日清製粉グループ本社 第158期中間事業報告書 C O N T E N T S...1...3...5...7...9...11...12...13...14 1 2 3 4 3.7% 5.8% 8.5% 70,100kL 81.2% 0.8% 25 20 15 10 5 0 9.18 9.54 9.74 9.62 9.65 9.71 21.04 21.97 22.44 22.23 8.54 22.31 22.45 20.41 15 12 9 6

More information

89 91 93 95 97 99 101 103 105 107 109 111 113 115 H 117 119 l l 121 l l 123 125 127 129 l l l l 131 kl kl kl kl 133 135 137 139 141 143 145 147 149 151 153 155 157 159

More information

メンバ変数とインスタンス

メンバ変数とインスタンス 第 1 章まずはメニューを表示しよう 実習編第一回ということで今後ゲームを 作っていく準備をします あと ソースを書いていくよー 第 1 章まずはメニューを表示しよう 1 プロジェクトの作成 ゲームを作成するにはとりあえずプロジェクトを作らないとね ゲームプログラミング講習 0.2. プロジェクトの準備 を参考にプロジェクトを準備しよう ファイル名は半角英数をお勧めします 必要な画像ファイルをダウンロードしよう

More information

Microsoft Word - NonGenTree.doc

Microsoft Word - NonGenTree.doc ジェネリクスとコンパレータを使用しない 2 分探索木のプログラム例 BinTreeNG.java: 2 分探索木のクラス BinTreeNG BinTreeTesterNG.java: BinTreeNG を利用するプログラム例 === BinTreeNG.java =========================================================================

More information

診療ガイドライン外来編2014(A4)/FUJGG2014‐01(大扉)

診療ガイドライン外来編2014(A4)/FUJGG2014‐01(大扉) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

More information

H:\Projects2013\MatrixLibrary\MatrixLibrary\MatrixLibrary.cs /* ************************ * * * 行列関係のライブラリ * * * ************************ * * 行列の要素 A.V

H:\Projects2013\MatrixLibrary\MatrixLibrary\MatrixLibrary.cs /* ************************ * * * 行列関係のライブラリ * * * ************************ * * 行列の要素 A.V / 行列関係のライブラリ 行列の要素 A.Value[m, n] n 次単位行列 (static) Matrix.Identity(n) m n 型零行列 (static) Matrix.Zero(m, n) 行列式 (static) Matrix.Determinant(A) 逆行列 A.Inverse() m 行 n 列目を除いた小行列 A.SubMatrix(m, n) ただし 行 列の開始は

More information

2

2 問題 1 次の設問 1~5 に答えよ 設問 1. Java のソースプログラムをコンパイルするコマンドはどれか a) java b) javac c) javadoc d) jdb 設問 2. Java のバイトコード ( コンパイル結果 ) を実行するコマンドはどれか a) java b) javac c) javadoc d) jdb 設問 3. Java のソースプログラムの拡張子はどれか a).c

More information

目的 泡立ち法を例に Comparableインターフェイスの実装 抽象クラスの利用 型パラメタの利用 比較 入替 の回数を計測

目的 泡立ち法を例に Comparableインターフェイスの実装 抽象クラスの利用 型パラメタの利用 比較 入替 の回数を計測 泡立ち法とその実装 計算機アルゴリズム特論 :2017 年度只木進一 目的 泡立ち法を例に Comparableインターフェイスの実装 抽象クラスの利用 型パラメタの利用 比較 入替 の回数を計測 Comparable インターフェイ ス クラスインスタンスが比較可能であることを示す Int compareto() メソッドを実装 Integer Double String などには実装済み public

More information

ワンダー ライヴズとは? 世界の様々な特徴 能 を持つ生物たちが 自然界での生き残りをかけて戦うカードゲームです

ワンダー ライヴズとは? 世界の様々な特徴 能 を持つ生物たちが 自然界での生き残りをかけて戦うカードゲームです 遊べる! 生物のすごい能力大図鑑 ワンダー ライヴズ体験プレイ用スライド ワンダー ライヴズとは? 世界の様々な特徴 能 を持つ生物たちが 自然界での生き残りをかけて戦うカードゲームです ワンダー ライヴズとは? V.S. ワンダー ライヴズは 2 人で対戦するゲームです 今回は 海デッキと陸デッキに分かれて戦います 準備 : カードの重ね順を確認 説明のため カードの重ね順が決まっているため 今回はシャッフルをしないでそのまま遊びましょう

More information