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