Parsing of Context
Download
Report
Transcript Parsing of Context
전산학도들은 무엇으로 사는가?
2007. 3. 9.
최광무
전산학과
2015-07-18
전산학도들은 무엇을 고민하나?
전산학도인 나는 무엇을 고민하나?
두 개의 간단한 문제
몇 가지 나의 인생의 화두들
2015-07-18
2/28
전산학에서는 무엇을 고민하는가?
프로그램이 잘 돌아가야 한다.
어떤 것이 프로그램이 잘 돌아 가는 것인가?
올바른 프로그램을 (빨리) 완성해야 한다.
원하는 대로 잘 동작해야 한다.
programming
specification vs. implementation
사용자가 불편을 이야기하면 고쳐주어야 한다.
2015-07-18
maintenance
3/28
해결방안들
Software Engineering
Artificial Intelligence
Programming Languages
Mathematics
2015-07-18
4/28
다른 사람들은 무엇으로 대화하나?
예술
인문사회과학
언어
Thinking habits are governed by the language he uses.
자연과학, 공학
음악, 그림, …
수학
전산학
Programming languages(?)
2015-07-18
5/28
Dijkstra’s mini language
if x y m := x
|x y m := y
fi
if x y m := x
else
|x < y m := y
fi
nondeterminacy
if x > y m := x
else
|x y m := y
fi
x=y
(m = x m = y) (m x) (m y)
2015-07-18
6/28
다른 예
q1, q2, q3, q4 := Q1, Q2, Q3, Q4;
do q1 > q2 q1, q2 := q2, q1
| q2 > q3 q2, q3 := q3, q2
| q3 > q4 q3, q4 := q4, q3
od
q1 q2 q3 q4
sorting(?)
qi들은 Qi들의 permutation이다.
2015-07-18
7/28
또 다른 예
k, j := 0, 1;
do j ≠ n if f(j) f(k) j := j+1
| f(j) f(k) k:=j; j:=j+1
fi
od
(0 k < n) ∧ (∀i: 0 i < n: f(k) f(i))
k의 값은?
2015-07-18
8/28
Loop Invariance
loop (iterative construct)
변하지 않는 조건(invariance)
변하는 조건(variance, terminating condition)
loop invariance
initialize
update after loop body
remains true after loop termination
qi들은 Qi들의 permutation이다.
(0 k < j) ∧(∀i: 0 i < j: f(k) f(i))
2015-07-18
9/28
Terminating condition
Varying function
두 번째 예
monotonically decreasing function
positive
q1Q
3
q2Q
2
+
+ q3Q + q4
where Q = max(Q1, Q2, Q3, Q4)
세 번째 예
n-j
2015-07-18
10/28
Post condition
Loop invariance ∧ all guards are false
두 번째 예
qi들은 Qi들의 permutation이다.
∧ q1 q2 q3 q4
세 번째 예
(0 k < j) ∧ (∀i: 0 i < j: f(k) f(i))
∧ (j = n)
= (0
k < n) ∧ (∀i: 0 i < n: f(k) f(i))
2015-07-18
11/28
Loop Invariance
Initialize
Update
Terminated
do od ≡ skip
if fi ≡ abort
2015-07-18
P
P∧(¬BB)
BB
loop
body
P
12/28
인생의 흐름
청년기
중년기
가슴
장, 노년기
머리
건강
지덕체(知德體)
홍익인간(弘益人間)
2015-07-18
13/28
우리나라는 누가 먹여 살려왔나?
6~70년대
8~90년대
Engineer
2000~10년대
공돌이, 공순이(?)
문화
김구, 백범일지
나의 소원
2015-07-18
14/28
Map Coloring
A
B
C
D
E
diff(A,B)∧diff(A,C)∧diff(A,D)∧diff(B,C)
∧diff(B,E)∧diff(C,D)∧diff(C,E)∧diff(D,E)
diff(X, Y) diff1(X, Y) ∨ diff1(Y, X)
diff1(red, blue)
diff1(red, green)
diff1(red, yellow)
diff1(blue, green)
diff1(blue, yellow)
diff1(green,yellow)
2015-07-18
15/28
Logic program
세 가지 clause
Query clause
Rule clause
h b1 ∧ b2 ∧ … ∧ bn
Fact clause
b1 ∧ b2 ∧ … ∧ bn
h
Prolog
2015-07-18
16/28
Top down evaluation of Logic
Program
query clause (AND)
body predicates (OR)
rule clauses (AND)
body predicates (OR) recursion
rule clauses (AND)
recursion
…
fact clauses (AND)
basis
Q – p – R – p – …– R – p – F.
*
Q – p – (R – p) – F.
2015-07-18
17/28
AND/OR Proof Tree
AND/OR Proof Tree
Clause(∧)
AND logic among children body predicates, if any
Predicates(∨)
clauses and predicates
interlaced graph
OR logic among children clauses with same head
predicate.
*
Q – p – (R – p) – F.
*
∧– ∨– (∧–∨) – ∨.
2015-07-18
18/28
AND/OR Proof Tree
diff(A,B) … diff(D,E)
diff(A,B)
…
…
diff(B,C)
diff(X,Y) diff1(X,Y)
diff(X,Y) diff1(Y,X)
diff1(X,Y)
diff1(red,blue)
2015-07-18
diff(D,E)
diff1(red,green)
diff1(Y,X)
…
19/28
AND logic in query and rule clause
Shared variable among body predicates
Join scheme
Variable binding
모든 tuple들을 다 만들어서 binding을 확인
Easy but inefficient
Forward scheme
하나의 predicate가 상수를 binding 한 후,
나머지 predicate들은 그 상수를 이용
generator and consumers model
2015-07-18
20/28
Data dependency graph
변수들의 생산-소비관계를 표현
생산 predicate의 결정
Nondeterministic
diff(A,B)
A
a
B
a
d i ff ( a , C )
c
diff(b,c)
2015-07-18
d i ff ( b , E )
d i ff ( a , D )
E
D
C
b
b
c
d
diff(c,d)
c
e
diff(c,e)
d
e
diff(d,e)
21/28
AND 논리
Query, rule clause의 body predicate 간의
변수 공유
Join scheme
Variable binding
모든 tuple들을 만든 후에 변수공유 확인
Forward scheme
하나의 predicate가 변수를 생산하고,
나머지 변수를 공유하는 predicate가 상수를 이용
Generator and consumers model
2015-07-18
22/28
Forward/backward execution
Forward execution
아들 OR predicate들이 동시/차례로 시작
diff(A, B) – (diff(a, C), diff(a, D), diff(b, E)) – ???
모든 아들 predicates가 성공을 보고하면 성공을 보고
Backward execution
특정 아들 predicate이 실패를 보고하면, 그 predicate에
변수를 공급하였던 predicate애 새로운 값을 공급할 것을
명령
빠지지 않고(systematic) 빨라야(intelligent)한다.
2015-07-18
23/28
예
diff(A,B)
A
B
a
a
d i ff ( a , C )
c
diff(b,c)
d i ff ( b , E )
d i ff ( a , D )
E
D
C
b
b
d
c
c
e
diff(c,e)
diff(c,d)
d
e
diff(d,e)
Fail!
A
2015-07-18
B
C
D
E
24/28
Nested Loop Model
5
for (A, B, C, D, E) in color
if diff(A, B) ∧ … ∧ diff(D, E) then …
2
for (A, B) in color where diff(A,B)
for C in color where diff(a, C)
for D in color where diff(a, D)
for E in color where diff(b, E)
if diff(b,c)∧diff(c,d)∧diff(c,e)∧diff(d,e) then …
When diff(b, c) fails
Naive backtracking
diff(b, E)→ diff(a, D)→ diff(a, C)→ diff(A, B)
Intelligent backtracking
2015-07-18
diff(a, C)→ diff(A, B)
25/28
격물치지 성의정심
修身齊家 治國平天下(수신제가 치국평천하)
대학(大學) 제 2장
대구(對句)
格物致知 誠意正心(격물치지 성의정심)
F = -k x
복원력
한쪽 방향으로 멀리가면 갈수록 더 큰 힘으로
반대로 잡아 당기는 힘이 생기는 사회
좌익 vs 우익, 보수 vs 진보
2015-07-18
26/28
두 개의 세상
格物致知(격물치지)
學而之銘名
(학이지명명)
理(이)
서양
자연과학, 공학
Evolution
敎宗(교종)
꾸준한 노력과 훈련
2015-07-18
誠意正心(성의정심)
名可名, 非常名
(명가명, 비상명)
氣(기)
동양
인문, 사회과학
Revolution
禪宗(선종)
한 순간에 오는 깨달음
27/28
감사합니다
2015-07-18
28/28