. 亀山担当分 . ソフトウェアサイエンス概論 I –論理を使った問題解決法– . 1 週目 論理パズル 論理を使った「問題」の形式化 (定式化) 2 週目 亀山幸義 数独パズル 論理を使った「問題」の解法 筑波大学情報科学類 3 週目 ソフトウェアの仕様と検証 論理を使った「問題」の記述 . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– . Y Z 5 Y 9 1 Y Y Y . XZ XZ 7 Z 7 X X X 2 X 4 X 7 Z 8 8 6 6 7 2 6 X 2 7 5 Z 7 ソフトウェアサイエンス概論 I –論理を使った問題解決法– どうやって解くか? 数独 (SUDOKU) 4 亀山幸義 6 5 1 8 9 7 1 4 2 制約 (Constraints): 各行 (row) に 1-9 が 1 回ずつ現れる。(X=1,2,3,5,6,8,9) 各列 (column) に 1-9 が 1 回ずつ現れる。 (Y=2,3,6,7,8) 各 3*3 ブロッ – 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法 クに 1-9 が 1 回ずつ現れる。(Z=1,2,3,6,8,9) Y Y A Z 8 7 6 5 4 3 9 4 2 右上の 3*3 ブロックに着目する。 横方向の制約により、X には 7 がはいらない。 同様に、Y にも 7 がはいらない。 縦方向の制約により、Z には 7 がはいらない。 ブロックの制約により、A に 7 がはいる。 9 4 X 2 6 1 3 X . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– . 解き方の続き 4 解き方 7 7 5 2 6 8 2 7 9 1 6 1 6 5 7 B B 8 7 きりがないのでやめます。 ともかく、このような推論を繰返すことにより解くことがで きる。 命題論理 4 D 9 A ∧ B (and, かつ、論理積) A ∨ B (or, または、論理和) A ⇒ B (implication, ならば、含意) ¬A (not, でない、否定) 3 C 2 4 推論 右上で 4 がはいるのは 2 つの B のどちらか。 A ∨ B と ¬A から B を導く。 A ∨ B と A ⇒ C と B ⇒ C から C を導く。 そのどちらのケースでも右下の C に 4 は来ない。 よって右下では、D に 4 がはいる。 . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– あらゆる解の候補 数独をコンピュータで自動的に解く 「解の侯補」をすべて生成して、解かどうかチェック 1. 解の候補を表そう。論理式 M(x, y , z) 81-22=59 個のマス目があいている。 959 通りの解侯補 (ほぼ 2 ∗ 1056 通り)。 例 1: あいているマスに全て 1 を入れる。 例 2: あいているマスに全て 1 を入れる。 例 3: 1 行目のあきマスに 1 をいれ、2 行目のあきマスに 2 を。。。 ... M(1, 1, 3): 「一番左上のマスに 3 がはいる」 M(3, 5, 7): 「3 行 5 列のマスに 7 がはいる」 M(x, y , n): 「x 行 y 列のマスに n がはいる」 1 ≤ x, y , z ≤ 9 なので 93 個の論理式。 それを論理式で表現してみよう . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– . 制約の表現 初期配置 2. 制約を論理式で表現しよう。 「x 行 y 列のマスには、1-9 のどれか 1 つだけ」 M(x, y , 1) ∨ M(x, y , 2) ∨ . . . ∨ M(x, y , 9). M(x, y , 1) ⇒ (¬M(x, y , 2) ∧ . . . ∧ ¬M(x, y , 9)). これを 1 ≤ x, y ≤ 9 のすべてに対して生成。 3. 初期配置を論理式で表現しよう。 「x 行には、1-9 が 1 回ずつ現れる」 「1 行 1 列のマスは 4 がはいっている」: M(1, 1, 4). M(x, 1, 1) ∨ M(x, 2, 1) ∨ . . . ∨ M(x, 9, 1). 「1 行 4 列のマスは 7 がはいっている」: M(1, 4, 7). M(x, 1, 2) ∨ M(x, 2, 2) ∨ . . . ∨ M(x, 9, 2). 「2 行 3 列のマスは 7 がはいっている」: M(2, 3, 7). ··· M(x, 1, 9) ∨ M(x, 2, 9) ∨ . . . ∨ M(x, 9, 9). これを 1 ≤ x ≤ 9 のすべてに対して生成。 同様に、 「y 列には、1-9 が 1 回ずつ現れる」 「各小正方形には、1-9 が 1 回ずつ現れる」 . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– どうやって解を求めるか? 全体は? 解の侯補と論理式の対応: 4. ここまでに出てきた条件の論理積 (∧) を作る。 1 つ 1 つの M(x, y , n) は、真か偽の値を取る. (M(1, 1, 1) ∨ M(1, 1, 2) ∨ . . . ∨ M(1, 1, 9)) すべての M(x, y , n) に対して,それが真か偽かを決めると、 1 つの「解の候補」が決まる。 ∧ (M(1, 1, 1) ⇒ (¬M(1, 1, 2) ∧ . . . ∧ ¬M(1, 1, 9))) M(1, 1, 1)=true, M(1, 1, 2)=false, · · · . (割り当て) ∧ ... 本当の解: 論理式全体が true(真) になるような割り当て (解の侯補) が,解 かなり大きな論理式。とても人間が読めた代物ではない。 が、解侯補たちの個数 (2 ∗ 1056 程度) に比べると、はるかに 小さい. 例: M(1, 1, 3) ∧ (¬M(1, 2, 5)) を true にする割り当ての 1 つは, M(1, 1, 3)=true, M(1, 2, 5)=false. . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– . 論理式の充足可能性 命題論理の充足可能性問題 充足可能 (satisfiable) とは? 質問: 命題論理の論理式が与えられたとき、充足可能性問題は高 速に解くことができるか? (A ∨ B) ∧ (¬A ∨ ¬B) は充足可能。 A = true,B = false のとき、全体が true になる。 答: 命題論理式の充足可能性判定は、NP 完全問題! (A ∨ B) ∧ (A ∨ ¬B) ∧ (¬A) は充足不能。 NP 完全問題は、NP 問題の中で解くのに最も時間のかかる 問題。 A,B に true/false をどう割り当てても、全体が true になら ない。 NP 完全問題は、多項式時間 (ax n + bx n−1 + ... の形の式を多 項式という) では解けない、と信じられている。 充足可能とは、その論理式全体が真になるようなパターン (「割 当て」という) が、1 つ以上あるとき。 数独パズルの制約 (論理式) が充足可能なとき、数独パズルの 「解」が存在。 . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– 「P=NP」: 理論計算機科学における最大の未解決難問! . 命題論理の充足可能性問題 命題論理の充足可能性問題 (SATisfiability Problem) を判定するソ フトウェア。 入力: ある種の「標準形」の命題論理式 出力: 充足可能かどうか 出力のおまけ: 充足可能な場合は、具体的な割当て (解) を 1 つ与える。 SAT solver (充足可能性問題の解決器) SAT competition: 世界最高速 SAT solver の競争。 標準形: Conjunctive Normal Form (CNF): (A ∨ B ∨ · · · ) ∧ (C ∨ D ∨ · · · ) ∧ · · · の形の命題論理式 ただし、A, B, C , D, · · · は、命題変数、または、「命題変数の否 定」の形 SAT 界の オリンピック、ワールドカップ、F1 ! 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– SAT solver 質問: 命題論理の充足可能性問題のうち、現実に現れる問題の多 くは高速に解くことができるか? 答: YES. . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– . SAT solver は速い 今日のまとめ 論理を使った「問題」の定式化 (前回と今回)。 論理を使った「問題」の解法。 数独パズル (9*9) 程度であれば、瞬時に (ノート PC の CPU で 1 秒未満で) 解ける。 SAT ソルバ: 命題論理における充足可能性 (SAT 問題) 判定。 2000 年を過ぎたあたりから、扱える論理式のサイズが急速に 増大. コンピュータ・サイエンスにおける問題解決の典型 数式、論理式等を用いて「問題」を定式化・モデル化する。 今日、非常に多くの分野で利用されている。例: 情報システ ムの検証法の 1 つである「モデル検査」。 その数式・論理式を、コンピュータを使って高速に解く。 ソルバ (solver): 何らかの世界での高速判定ソフトウェア。 おまけ: P と NP、NP 完全、P=NP 問題 . . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法– . . 亀山幸義 ソフトウェアサイエンス概論 I –論理を使った問題解決法–
© Copyright 2024 Paperzz