4. Courserian
最近はCourseraでデータ分析・機械学習に
手を出してみたりも。
Computing for Data Analysis
by Roger D. Peng @ Johns Hopkins University
Data Analysis
by Jeff Leek @ Johns Hopkins University
Machine Learning
by Andrew Ng @ Stanford University
Introduction to Recommender
Systems
by Joseph A Konstan and Michael D Ekstrand
@ University of Minnesota
Process Mining: Data science in
Action
by Wil van der Aalst @ Eindhoven University of
Technology
などなど
朝日新聞 2013.8.22 教育欄
「ネット講義 東大を世界に」
NHKクローズアップ現代2013.09.17
「あなたもハーバード大へ
∼広がる無料オンライン講座∼」
『ルポ MOOC革命』
金成 隆一
9. 充足可能性 vs. 定理証明
論理式の分類
恒真 (valid)
任意の割り当てで真: M ⊧ φ for all M
例: P∨¬P, 3 > 2
充足可能 (satisfiable)
真になる割り当てが存在: M ⊧ φ for some M
例: P∨¬Q, 3 > x, P∨¬P
充足不能 (unsatisfiable)
真になる割り当てが存在しない: M ⊭ φ for all M
例: P∧¬P, x > 2 ∧ 0 ≧ x
定理証明と充足可能性の関係 (完全性より)
φが証明可能 φが恒真 (¬φ)が充足不可能
すなわち、φを証明するには¬φが充足不可能なことを示せばよい。
valid
satisfiable
unsatisfiable
11. SATの性能向上の歴史
1986
BDD
≈ 100 var
1992
GSAT
≈ 300 var
1996
Stålmarck
≈ 1000 var
1996
GRASP
≈1k var
1960
DP
≈10 var
1988
SOCRATES
≈ 3k var
1994
Hannibal
≈ 3k var
1962
DLL
≈ 10 var
2001
Chaff
≈10k var
1996
SATO
≈1k var
B.C. (Before Chaff) 時代
http://www.cs.cmu.edu/~emc/spring06/home_files/zchaff4ed.new.ppt
16. SATのアルゴリズム: 学習の必要性
Those who do not learn from their
mistakes are doomed to repeat them
長い探索の果てに、
Pとは無関係に
充足不能なことが判明
同じ探索を再度繰り返す?
Pの値を変えても充足不能
なことは明らか。
学習と制約伝播により回避できる
P=true P=false
31. 代表的な理論: EUF
EUF (Equality and Uninterpreted Function)
任意に解釈してよい関数と等号に関する理論
変数もゼロ引数の関数記号(定数記号)として考える
公理無しの一番基本的な「理論」
例:
f(b) = c ∧ f(c) = a ∧ g(a) = h(a,a) ∧ ¬(g(b) = h(c,b))
は充足可能?
これに b = c を追加した場合はどうか?
ソルバのアルゴリズム:
Union-Find を拡張したアルゴリズムで Congruence
Closure を計算するなど
32. (set-logic QF_UF)
(set-option :produce-models
true)
(declare-sort U 0)
(declare-fun f (U) U)
(declare-fun g (U) U)
(declare-fun h (U U) U)
(declare-fun a () U)
(declare-fun b () U)
(declare-fun c () U)
(assert (= (f b) c))
(assert (= (f c) a))
(assert (= (g b) (h a a)))
(assert (not (= (g b) (h c b))))
(check-sat)
(get-model)
(assert (= b c))
(check-sat)
$ cvc4 --incremental test.smt2
sat
(model
; cardinality of U is 5
(declare-sort U 0)
; rep: @uc_U_0
; rep: @uc_U_1
; rep: @uc_U_2
; rep: @uc_U_3
; rep: @uc_U_4
(define-fun f ((_ufmt_1 U)) U
(ite (= @uc_U_2 _ufmt_1) @uc_U_0 @uc_U_2))
(define-fun g ((_ufmt_1 U)) U @uc_U_3)
(define-fun h ((_ufmt_1 U) (_ufmt_2 U)) U
(ite (= @uc_U_0 _ufmt_1)
(ite (= @uc_U_0 _ufmt_2) @uc_U_3 @uc_U_4)
@uc_U_4))
(define-fun a () U @uc_U_0)
(define-fun b () U @uc_U_1)
(define-fun c () U @uc_U_2)
)
unsat
← 入力ファイル
↓実行例