2012 sigpl 겨울학교
TRANSCRIPT
언어 , 문법 , 기계 , 파서 , 고쳐쓰기 , 현대수학의 한계 ,그리고 미래의 전산학
최광무한국과학기술원 전산학과
SIGPL 겨울학교2012. 2. 3.
한국과학기술원 전산학과 최광무
차례• 언어이론의 기초• Regular 언어(language)
– 한글 모아쓰기 기계 (automata)• Rewriting System 혹은 파서
– Context-free 언어의 해석(parsing)• 왼 파서 (left parser) - 왼쪽 부터 유도하기(leftmost derivation)
– 위 아래 (top-down) 파서• 오른 파서(right parser) - 오른쪽부터 유도하기를 거꾸로(rightmost derivation in reversed order)
– 아래 위 (bottom-up) 파서– Deterministic parsing of CFG
• 왼 파서 Strong LL(k) 파서 ⊆ LL(k) 파서 .• 오른 파서 LR(k) 파서 ⊇ LALR(k) 파서 ⊇ SLR(k) 파서 .
• 현대수학에서 계산(computable)에 관한 Turing-Church의 주장 (Thesis)– TM Turing 1930.– μ-recursive 부분함수 Church 1934.
• 현대수학의 비극– Cantor’s diagonalization argument 1874; 1891.
• uncountable, 실수(實數 ; real number)– Russell's 모순 (Paradox) 1901; 1911.– Gödel의 incompleteness theorem 1931.
• Hilbert의 실패한 꿈 1929.– Halting 문제 (problem)과 같은 문제들
• 끝내기 이야기2/38SIGPL 겨울학교 , 2012-
02-03
미분을 완전히 그리고 적절히정의하였는가 ?
유클리드 기하학 - 증명의 아름다움피타고라스 – 무리수미분이 이상하다 ?
한국과학기술원 전산학과 최광무
언어 (Languages) – 소통수단• 인문사회과학
– 철학 , 역사 , 사회학 , 경제 , 법률– 모국어 (자연언어 )
• 애매 (Ambiguous) 하다• 복잡하다
– 영어강의• ???
• 예술– 음악 , 미술 , 스포츠– 연주 , 형태 , 행동
• 자연과학 , 공학 , 전산학– 수학
• 엄밀 (Rigorous, Formal) 하다• 간단하다
– 전산학• 프로그래밍 언어
3/38SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
구문론 ( 構文論 ; Syntax)• 4개의 전문용어(terminology)
– 어휘(vocabulary, alphabet), Σ• 기본문자들의 집합• 언어의 axiomS(atom)
– 문자(symbol) a ∈ Σ.• 어휘의 원소
– 문자열(string) x ∈ .• 문자(symbol)들이 줄 선(sequence) 것• 문자열(수열)
– 언어(language) L ⊆ .• 문장(문자열)들의 집합
• 언어와 어휘 , 문자열의 예– 이진수 Σ = {0, 1} 2자– 십진수 Σ = {0, 1, 2, …, 9} 10자– 한글 Σ = {ㄱ , ㄴ , …, ㅎ , ㅏ , ㅑ , …, ㅣ} 24자
• ㄱ ㅕㅇㅜㄹㅎㅏㄱㄱㅛ– 영어 Σ = {a, b, …, z} 26자
• Winter School– 컴퓨터 Unicode
• 겨울학교
4/38
한글 모아쓰기 오토마타한글 모아쓰기 기계
SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
전문용어 4 개 +• ε 빈 문자열 (empty string)
– 산수에 +에서 0이나 ⅹ에서 1과 같은 항등원 (identity)• = {ε}• = = {0, 1}• = {00, 01, 10, 11}• …• = {x∈{0, 1}| |x| = n}• …• = ∪ ∪ ∪ …
– 문자열의 universe(전 집합 )– 가 많이 있다 .
• 4개의 전문용어– 문자 (symbol) a ∈ Σ 어휘 (vocabulary) Σ– 문자열 (string) x ∈ 언어 (language) L ⊆
• 언어의 문장 (statement)확인문제 (membership problem)– 문자열 x ∈ 가 문장 (x ∈ L)인가 , 아닌가 (x ¬∈ L).– 기계 (automata)
5/38SIGPL 겨울학교 , 2012-02-03
† = ∪ ∪ ∪ …
L
Σ∗
Σa∈Σ
y ∈
•
•
x ∈• ∈L
¬∈L
† = / {ε}, = † ∪ {ε}.
한국과학기술원 전산학과 최광무
문법 (Grammar)• 예 “ x = 5” 라는 문장에 필요한 문법규칙
– < 문 > → <좌 > “=“ < 우 >– < 좌 > → “x” | …– < 우 > → “5” | …
• 문법 G = (N, , P, S) 의 요소 4 개– N: 넌 터미널 (Nonterminal symbolS), 단 V = N ∪ .
• N = {< 문 >, < 좌 >, < 우 >}– : 터미널 (Terminal symbolS)
• = {“x”, “=“, “5”}– S: 시작 문자 (Start symbol)
• S ∈ N, S = < 문 >– P: 규칙 (Production ruleS)
• P ⊆ N x (N∪)*.• (A, α) ∈ P 일 때 , A → α ∈ P 또는 A → α 로 쓴다 .
6/38SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
문법 G = (N, , P, S) 과 유도 , 언어• 유도 (derivation), ⇒
– A → α ∈ P 일 때 , 임의의 β, γ ∈ V*에 대하여 , 단 V* = (N∪)*.– βAγ ⇒A→α βαγ.– ⇒ ⊆ V* ⅹ V*.– → ⊆ ⇒.
• →는 유한 , ⇒는 무한 .• 유도의 확장 : ⇒n, ⇒*.
– ⇒0 = idV*. {α ⇒0 α| α ∈ V*}– ⇒n = ⇒n-1 ∙ ⇒ n ≥ 1.
– ⇒* = ⇒0 ∪ ∪ ∪ … • 언어 , L(G): 문법 G가 정의한 언어 L(G)
– L(G) = {w ∈ T* | S ⇒* w}.• 예 :
– <문> ⇒ <좌> “=“ <우>– ⇒ “x” “=“ <우>– ⇒ “x” “=“ “5”
< 문 >
“=” < 우 >< 좌 >
“x” “5”
7/38SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
문법의 계층 (hierarchical) 구조• Type 3: 정규(regular) 문법
– A → xB, A → y. A, B ∈ N, x, y ∈ *.• 오른 줄(right linear) (정규 )문법
– A → aB, A → b. A, B ∈ N, a, b ∈ .• 오른 줄 (정규)문법의 normal form
– A → Bx, A → y. A, B ∈ N, x, y ∈ *.• 왼 줄(left linear) (정규 )문법
– 오른 줄 (정규)문법 ⇔ 왼 줄 (정규)문법• x1x2…xnyn ↔ ynxnxn-1…x1.
– 줄(linear) 구조 .• 줄(linear list)
• Type 2: 문맥자유(context-free) 문법– A → α. A ∈ N, α ∈ V* = (N∪)*.– A → BC, A → a except S → ε. A, B, C ∈ N, a ∈ .
• 문맥자유 문법의 normal form• Chomsky’s normal form(CNF)
– 계층(hierarchical) 구조• 나무(tree)
• Type 1: 문맥민감(context-sensitive; recursive) 문법– βAγ → βαγ, A →β:γ α. A ∈ N, α ∈ V†, β, γ ∈ V*.– α → β. α ∈ V†, β ∈ V*, |α| ≤ |β|.
• Type 0: unrestricted 문법– α → β. α ∈ V†, β ∈ V*.
8/38
SA1 x1
A2x2
An xn
…An-1
yn
S
An-1
…
yn
A1x1
A2x2
Anxn
문법CSGCFGRG
문법의 계층구조
SIGPL 겨울학교 , 2012-02-03
β
S
B
y
γ
z
α
x
한국과학기술원 전산학과 최광무
기계 (Automata) 의 계층구조• Type 3: 유한상태기계 (Finite state automata; FA)
– 상태(stateS), 입력 문자 (S), state 변화(transitionS)– 초기(initial) 상태 , 끝나는(finalS) 상태– 결정적 (deterministic), 비결정적 (non-deterministic)– 정규(regular) 문법 , 언어
• Type 2: Stack을 가진 기계 (Pushdown automata; PDA)– FA + stack– 문맥자유 (context-free) 문법 , 언어
• Type 1, 0: Turing machine( 메모리를 가진 기계 )– FA + memory(tape)– 컴퓨터 , 프로그램
• Type 1: TM– 항상 끝난다 (terminate).– 알고리즘
• Type 0: TM– 끝나지 않을 수도 있다 (infinite loop).– 프로그램
9/38
TMPDAFA
기계의 계층구조
프로그램알고리즘문맥자유
정규
언어 ( 문제 ) 의 계층구조프로그램 할 수 없다
문제가 아니다 .수학의 대상이 아니다 .Cantor, Russell, Gödel, Hilbert, …
SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
언어와 문법의 예 (1)• Type 3: 정규 언어
– L3 = { anbm| n, m ≥ 0 }.– 정규식 (regular expression)
• a*b*.• 합(union), 곱(concatenation), 반복곱의 합(closure; *).• 더하기 , 붙이기 , 많이
– 유한상태기계 (FA)• Nondeterministic• Deterministic• 한글모아쓰기기계(automata)
– 정규문법 :• G3N: A → aA | B | ε, B → bB | ε.
• Type 2: 문맥자유 언어– L2n = { anbn| n ≥ 0 }. L2n ⊆ L3.G2n: S → aSb | ε.– L2= = { x ∈ {a, b}*| |x|b = |x|a }. L2= ⊆ L2n.G2=: S → aSbS | bSaS | ε.
• L(G2=) ⊆ L2=, L2= ⊆? L(G2=).– Lk,m = {x ∈ {a, b}*| |x|b = k∙|x|a + m}.Gk,m?
10/38
A B
a bε
A B
a bb
G3D: A → aA | bB | ε, B → bB | ε.
SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
언어와 문법의 예 (2)• Type 1: 문맥민감 언어
– L13 = { anbncn| n ≥ 0}.– G13: S → aSBC | aBC | ε.– CB → HB, HB → HC, HC → BC,– aB → ab, bB → bb, bC → bc, cC → cc.– S ⇒S→aSBC
n-1 an-1S(BC)n-1 ⇒S→aBC an(BC)n = anB(CB)n-1C – (⇒CB→HB∙HB→HC∙HC→BC)¹/₂n(n-1) anBnCn – ⇒aB→ab anbBn-1Cn ⇒bB→bb
n-1 anbnCn – ⇒bC→bc anbncCn-1 ⇒cC→cc
n-1 anbncn.• Type 1: recursive 언어
– L1xx = { xx| x ∈ {a, b}* }.– G1xx: S → aAS | bBS | T– Aa → aA, Ba → aB, Ab → bA, Bb → bB,– BT → Tb, AT → Ta, T → ε.– S ⇒S→aAS|bBS
n (aA|bB)nS ⇒S→T (aA|bB)nT ⇒Aa→aA|Ba→aB|Ab→bA|Bb→bBn (a|b)n(A|B)nT
– ⇒BT→Tb|AT→Tan (a|b)nT(a|b)n ⇒T→ε (a|b)n(a|b)n.
• Type 0: 언어
11/38SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
고쳐쓰기 (Rewriting system)• 고쳐쓰기 R = (C, →, ι, Φ)
– C: 고쳐쓰기 상황(ConfigurationS)– → ⊆ C ⅹ C.
• α → β, α, β ∈ C.– ι: 처음 상황(initial configuration)
• ι ∈ C.– Φ: 끝 상황(final configurationS)
• Φ ⊆ C.• 유도(derivation), ⇒
– α → β 일 때 , 임의의 γ, δ ∈ C에 대하여γAδ ⇒α→β γβδ.– →, ⇒, ⇒* ⊆ C ⅹ C.
• 고쳐쓰기의 정상적인 마침.ι ⇒* φ ∈ Φ.
• 문법 고쳐쓰기– 문장을 만들어가는 고쳐쓰기
• 생성문법(generative grammar)– 문법 G = (N, Σ, P, S)의 고쳐쓰기 RG = ((N ∪ Σ)*, →G = P, S, Σ*).– L(RG) = {w ∈ Σ* (= Φ)| ι = S w ∈ Σ*(= Φ)} = L(G).
• 기계 고쳐쓰기– 문장을 없애가며 확인하는 고쳐쓰기(문장확인기계)– 기계 M 의 고쳐쓰기 RM = (C ⅹ Σ*, →M, (ci, w), {(cF, ε)}).
• C: 고쳐쓰기(기계) 상황• Σ*: 나머지 입력문자열
– L(RM) = {w ∈ Σ* | ι = (ci, w) (cF, ε) ∈ Φ}.12/38SIGPL 겨울학교 , 2012-
02-03
정규문법 , 문장확인 유한상태기계 ,그리고 고쳐쓰기• 정규 문법 G3 = (N, Σ, P, S).
• 유한상태기계 A = (Q, Σ, δ, qS, F).
• 기계 A의 고쳐쓰기 상황(configurationS)– 기계의 상태(stateS) Q ⅹ 나머지 입력문자열 Σ*.
• 문법 G3를 위한 고쳐쓰기 RA = (Q ⅹ Σ*, →A, (qs, w), {(qf, ε)| qf ∈ F}).qB ∈ δ(qA, y) ⇔ (qA, y) →(qA, y)→(qB, ε) (qB, ε) ⇔ A → yB ∈ P.
• 유한상태기계 A ⇔ (정규)고쳐쓰기 RA. ⇔ 정규문법 G3.
S
z
A
x
By
S ⇒* xA ⇒A→yB xyB ⇒* xyz.
δ( , y)δ *( , z) = qF.qF ∈ F.
qAδ *( , z)
= qBδ *( , z) =δ( , y)
δ*( , x)
qS
qFz…qS
x… qAy
qB
(qS, xyz)⇒ 𝐴∗(qA, yz)
(qA, y)→(qB, ε) (qB, z)⇒ 𝐴∗(qF, ε) qF ∈ F.
SIGPL 겨울학교 , 2012-02-03 한국과학기술원 전산학과 최광무 13/38
(qS, xyz) (qA, yz)
(qB, z) (qF, ε)
한국과학기술원 전산학과 최광무
문맥자유문법 유도파스 (parse) 나무 (tree)• 문맥자유문법
– A → α, A ∈ N, α ∈ V* = (N∪)*.• 문맥자유문법의 문자의 구분
– N: 터미널이 아닌(nonterminal) 문자• 바꿀 문자.
– T: 터미널(terminal) 문자• 바꾼 문자.
• 유도과정에서 바꿀 문자가 여럿 나온다.• 파스(parse)나무(tree)
– 나무에는 가지(subtree)가 있다.• 시작(subroot)이 바꿀 문자• 끝(leaf)이 바꾼 문자
– 계층적(hierarchical) 구조(structure).• 문맥자유문법 고치기(유도)의 일반 꼴
– S x0A1x1A2x2 … xn-1Anxn • 0 ≤ ∀k ≤ n: xk ∈ *, 1 ≤ ∀k ≤ n: Ak ∈ N,
• A1, Ak, …, An 중 어떤 문자를 먼저 바꾸어도 나무는 같다 .• 무엇이 파스나무를 다르게 하는가?• 바꿀 문자가 가진 문법 규칙에서 우변 고르기
– A → α | β.– Nondeterministic
14/38
S
A1 Ak An
y1 yk ynx0 xn
…
…xk-1x1
…
…xk xn-1 x0y1x1y2x2 … xn-1ynxn∈ *.
Ak yk ∈ *.
SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
문맥자유문법의 두 가지 고치기 순서(⇒/⇒)
• 문장 구하기의 두 가지 고치기 순서– 왼쪽부터 고치기(Leftmost derivation)– 오른쪽부터 고치기 (Rightmost derivation)
• 왼쪽부터 고치기 (⇒)• S xBγ
– x∈*, γ∈V*, B∈N,
• 오른쪽부터 고치기 (⇒)• S αBz
– α∈V*, z∈*, B∈N,
• 고치기 순서에 따른 두 가지 기계– 고치기 순서가 달라도 결과나무는 같다 .– 왼 파서 (Left parser)
• 왼쪽부터 고치며 , 위에서 아래로 (top-down) 나무 만들기 (parsing).– 오른 파서 (Right parser)
• 오른쪽부터 고치기를 거꾸로 하며 , 아래서 위로 (bottom-up) 나무 만들기 . 15/38
xβγ xyγ xyz ∈ *.B → β, β y ∈ *, γ z ∈ *.
αβz αyz xyz ∈ *.B → β,
β y ∈ *, α x ∈ *.
S
B
S
B
β
y
β
y
x
γ
z
α
x z
SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
왼 유도 (⇒), 파스나무 ,Stack, 입력문자열 , (Stack, 입력문자열 )
문⇒ 문→좌 = 우 좌 = 우⇒ 좌→ x x = 우⇒ 우→ 5 x = 5
16/38
문= 우좌
x 5x = 5
문좌=우x
5위에서 아래로왼쪽에서 오른쪽으로나무가 자란다 .
확인한다 .예상한다 .
예상과확인끝
시작 ( 문 , x=5)⇒ 문→좌 = 우 ( 좌 = 우 , x=5)⇒ 좌→ x (x= 우 , x=5)⇒↓x (= 우 , =5)⇒↓= ( 우 , 5)⇒ 우→ 5 (5, 5)⇒↓5 (ε, ε).
SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
왼 파서 (→), 문장확인기계예상과 확인 (Guess and verify)• 왼 파서의 상황 : V*ⅹΣ*.
– Stack 상황 : V* = (N ∪ )*, 단 α ∈ V*, 일 때 , stack top 이 1:α.– 나머지 입력 문자열 : Σ*.
• (1) Stack top 이 Y=B ∈ N일 때 :– S xBγ ⇒ xβγ xyγ xyz– •S x•Bγ x•βγ xy•γ xyz• – (S, xyz) (Bγ, yz) (βγ, yz) (γ, z) (ε, ε)
• B → β를 선택 (nondeterministic)하여 B 를 β 로 예상한다 .• Stack 에서 B 를 pop 하고 β 를 push.• (B, ε) → (β, ε). B 를 β로 예상 Guess(Produce) A as α.
• (2) Stack top 이 Y=a=y ∈ 일 때 :– S xaγ =() xyγ xyz– •S x•aγ xa•γ = xy•γ xyz• – (S, xyz) (aγ, az) (= ) (γ, z) (ε, ε)
• Stack top a가 현재입력문자 a 와 같은가를 확인 .• Stack 에서 a 를 pop 하고 입력문자열에서도 a 를 제거 . ↓• (a, a) →(= → (ε, ε)). a 를 확인 Verify(shift) a.
17/38SIGPL 겨울학교 , 2012-02-03
S
B
β γ
yx zS
a
= γ
yx z
한국과학기술원 전산학과 최광무
왼 파서 - 2• 문법 G의 왼 파서 → = (V*ⅹΣ*, →, (S, w), {(ε, ε)}).
– 첫 상황 ι = (S, w) ∈ V*ⅹΣ*.– 끝 상황 Ф = {(ε, ε) ∈ V*ⅹΣ*}.– → = {(B, ε) → (β, ε)| B → β} ∪ {(a, a) → (ε, ε)| a ∈ Σ}
• 왼 파서는 stack이 입력문자열을 유도하는가 예상하고 확인한다 .– 첫 상황 끝 상황 .(S, w) (ε, ε).– 일반 상황 (α, xyz) (Y, z), α ∈ V*, x, y, z ∈ *, Y ∈ N ∪ Σ.
• 증명 αz xYz ⇔ (α, xyz) (Y, yz).• B → β1 | β2 (β1 ≠ β2)일 때 ,
– (B, ε) → (β1, ε). (B, ε) → (β2, ε).– 비결정적 (Nondeterministic)이다 .– 왼 파서는 문맥자유언어의 문장확인문제를 푸는 기계이다 .– 문맥자유언어의 문장확인문제는 NP이다 .
• 그러나 CYK 알고리즘은 O(n3).– 문맥자유언어의 문장확인문제는 P이다 .
• (S, w) (ε, ε) ↔ •S w• → S . w ∈ Σ*, π ∈ *.– |π| ≤ |π| + |w|.– 왼 유도 ()는 왼 파서(⇒)의 요약해석 (abstract interpretation)이다 .– 왼 파서 (⇒)와 ⇒ 은 같다.
SIGPL 겨울학교 , 2012-02-03 17-1/38
한국과학기술원 전산학과 최광무
왼 파서의 예상을 예상한다 .결정적 (deterministic) SLL(k) 파서• 문맥자유문법 G = (N, Σ, P, S)의 왼 파서의 예상
→ = {(B, ε) → (β, ε)| B → β}• B → β1 | β2 (β1 ≠ β2).• (S, xyz) (Bγ, yz) (β1γ, yz) (γ, z) (ε, ε)
– B ⇒ β1 y1 ∈ *,– k:y1 ∈ Firstk(β1).
• (S, xyz) (Bγ, yz) (β2γ, yz) (γ, z) (ε, ε)– B ⇒ β2 y2 ∈ *,– k:y2 ∈ Firstk(β2).
• γ ⇒* z ∈ *,– k:z ∈ Followk(B).
• k:Firstk(β1)∙Followk(B) ∩ k:Firstk(β2)∙Followk(B) = ø이면 결정적.– u1 ∈ k:Firstk(β1)∙Followk(B): (B, u1) →SLL(k) (β1, u1)– u2 ∈ k:Firstk(β2)∙Followk(B): (B, u2) →SLL(k) (β2, u2)
• 문법 G의 Strong LL(k) 파서 →SLL(k) = (V*ⅹΣ*, →, (S, w), {(ε, ε)}),– → = {(B, y) → (β, y)| B → β, y ∈ k:Firstk(β)∙Followk(B)}– ∪ {(a, a) → (ε, ε)| a ∈ Σ}
• 문법 G의 Strong LL(k) 파서가 결정적(deterministic)이면,– 문법 G는 SLL(k) 문법이다.– Left to right scan with Leftmost derivation using k-lookahead symbols.
• SLL(1) 문법 ⊆ SLL(k) 문법 ⊆ LL(k) 문법(u1 = k:y1z, u2 = k:y2z).• 하지만 k=1인 경우 , SLL(1) 문법 = LL(1) 문법.
18/38
S
B
β
yx
γ
z왼파서(B, ε) → (β1, ε)(B, ε) → (β2, ε)
SIGPL 겨울학교 , 2012-02-03
β1β2
y1y2
한국과학기술원 전산학과 최광무
오른 파서는오른 유도(⇒) 를 거꾸로 (←) 한다 .
x = 5←x← 좌 좌 = 5←5← 우 좌 = 우← 좌 = 우←문 문 .
19/38
문= 우좌
x 5x = 5
문좌=우x
5
오른쪽에서 왼쪽으로아래에서 위로나무가 자란다 .
확인한다 .저장한다 .
저장과확인끝
시작 (ε, x=5)⇒↑x (x, =5)⇒ x← 좌 ( 좌 , =5)⇒↑= (= 좌 , 5)⇒↑5 (5= 좌 , ε)⇒ 5← 우 ( 우 = 좌 , ε)⇒ 우 = 좌←문 ( 문 , ε).
SIGPL 겨울학교 , 2012-02-03
( 좌 = 우 )R
한국과학기술원 전산학과 최광무
오른 파서 (→)저장과 확인 (Shift and reduce)• 오른 파서가 하는 두 가지 행동
– Stack에 입력문자 a ∈ Σ를 저장(shift)한다 .• Stack에서 a를 저장하고 입력문자열에서 a를 제거 .• (ε, a) → (a, ε). a ∈ Σ를 stack에 저장 shift a ∈ Σ.
– Stack에 A → α의 우변 αR이 있을 때 : αR을 A로 확인(reduce)한다 .• Stack에서 αR을 pop하고 A를 push한다 .• (αR, ε) → (A, ε). Stack에 α 를 A 로 확인 reduce α to A.
• 오른 파서는 입력문자열을 stack에 저장한 후 확인한다 .– 첫 상황 끝 상황 . (ε, w) (S, ε).– 일반 상황 (ε, xyz) (YαR, z), α ∈ V*, x, y, z ∈ *, Y ∈ N ∪ Σ.
• 증명 αYz xyz ⇔ (ε, xyz) (YαR, z).
• 오른 파서의 비결정성 (Nondeterminism)– Stack에 규칙 A → α의 우변 αR이 있을 때
• 입력문자열에서 a를 저장 (shift)할까 , αR을 A로 확인(reduce)할 까?– shift-reduce conflict
• 또 다른 규칙 A’ → α’의 우변 α’R이 있을 때 ,– reduce-reduce conflict
20/38SIGPL 겨울학교 , 2012-02-03
S
Y
αα
zx y
β
한국과학기술원 전산학과 최광무
오른 파서와 LR(1) itemSx = 5←x← 좌 좌 = 5←5← 우 좌 = 우← 좌 = 우←문 문 .
21
문= 우좌
x 5x = 5
문좌=우x
5
오른쪽에서 왼쪽으로아래에서 위로나무가 자란다 .
확인한다 .저장한다 .
저장과확인끝
시작 (ε, x=5)⇒↑x (x, =5)⇒ x← 좌 ( 좌 , =5)⇒↑= (= 좌 , 5)⇒↑5 (5= 좌 , ε)⇒ 5← 우 ( 우 = 좌 , ε)⇒ 우 = 좌←문 ( 문 , ε).
SIGPL 겨울학교 , 2012-02-03
[S’ → • 문 , ε][ 문 → •좌 = 우 , ε][ 좌 → • x, =]
[S’ → 문• , ε]
[ 문 → 좌 =• 우 , ε][ 우 → • 5, ε]
[ 좌 → x•, =]
[ 문 → 좌 = 우• , ε]
[ 문 → 좌• = 우 , ε]
[ 우 → 5•, ε]
한국과학기술원 전산학과 최광무
오른 파서의 비결정성 줄이기오른 파서 → LR(k) 파서• 문자(오른 파서) 대신에 LR(k) state(LR(k) 파서)를 stack에 넣는다.
– X ∈ N ∪ → [XαR]LR(k) ↔ 〈XαR〉LR(k).• Rk = {[B → β1•β2, x]| B→β1β2, x ∈ ≤k }: LR(k) itemS.• LR(k) itemsS: 〈 〉∙ k: V* → 2Rk.
〈αβ1〉k = {[B → β1•β2, k:z]| S αBz ⇒ αβ1β2z, B → β1β2}
• δ1R LR(k)(ρk) δ2
R, if 〈δ1〉k = 〈δ2〉 k.– 오른쪽에 있는 문자를 stack top에 넣으므로 stack 문자열이 뒤집어져(δR) 있다.– LR(k)는 집합 V*에 정의된 같은관계이다 .– 같은부류 [δ]LR(k)를(stack 문자열의 집합) LR(k) state라 한다.
• [δR]LR(k) ↔ [δR]ρk ↔ [δR]k ↔ 〈[δR]LR(k)〉k ↔ 〈δ〉LR(k) ↔ 〈δ〉ρk ↔ 〈δ〉k.– ParLR(k)(V*)를 [V*]LR(k)라고 쓰고 LR(k) state의 집합이다.
• LR(k) state ↔LR(k) item의 집합 ↔ stack 문자열의 집합• Stack에 있는 βR←B로 확인할 때 ,
– •S αB•z αβ•z αy•z •xyz.– •xyz αy•z αβ•z αB•z S•.– (ε, xyz) (αR, yz) (βRαR, y2z) ⇒ (BαR, z) (S, ε).– (βR, ε) → (B, ε)를 (βRαR, x) →LR(k) (BαR, x), x = k:z로 제한하여 확인한다 .
• [B → β1•β2, x] ∈ 〈αβ1〉 LR(k) ↔ [β1RαR]LR(k) 일 때,
– β2 = ε이면 x를 보고 β1←B로 확인(reduce)한다.– 1:β2 ∈ 이면 저장(shift)한다.– 1:β2 ∈ N이면 확인을 미리 준비(《 》∙ )한다.
22/38SIGPL 겨울학교 , 2012-02-03
S
B
αα
zx y
β
한국과학기술원 전산학과 최광무
LR(k) 파서 만들기• 《 》∙ ρk: Rk → 2Rk.
– 《[B→β1•Aβ2, x]》ρk = {[A→•ξ, y]| A → ξ, y ∈ Firstk(β2x)}– [A→ξ•, y] ∈ 〈αβ1ξ〉ρk일 때, y를 보고 ξ←A로 확인할 준비한다.
• 〈ε〉ρk = 《[S’→•S, ε]》ρk* ∈ []LR(k)로 시작(basis).
• [B→β1•Xβ2, x] ∈ 〈αβ1〉ρk ∈ []LR(k)이면(recursion),[B→β1X•β2, x] ∈ 《〈αβ1X〉ρk 》ρk
* ∈ []LR(k).• 〈αβ1X〉ρk = 《[B→β1X•β2, y]》ρk
* = {[B→β1X•β2, y]} ∪ 《[B→β1X•β2, y]》ρk†.
단 {[B→β1X•β2, y]} ∪ 《[B→β1X•β2, y]》ρk† = ø.
• 문법 G = (N, , P, S)의 LR(k) 파서,– LRk(G) = (([]LR(k) ⅹ*, →LR(k), (〈ε〉k, w), {(〈ε〉k∙〈S〉k, ε)}).– →LR(k) = {(〈αβ1〉k, a) →LR(k) (〈αβ1∙a〉k∙〈αβ1〉k, ε)– | a ∈ Σ, [A → β1•aβ2, x] ∈ 〈αβ1〉k}– ∪ {(〈αβ1∙ξ〉k∙〈αβ1∙ξ:|ξ|-1〉k∙ … ∙〈αβ1∙ξ:1〉k∙〈αβ1〉k, x) →LR(k) (〈αβ1∙A〉k∙〈αβ1〉k, x)– | [B → β1•Aβ2, y] ∈ 〈αβ1〉k, [A → •ξ, x] ∈ 《〈αβ1〉k》k
†,– [A → ξ•, x] ∈ 〈αβ1ξ〉k, [B → β1A•β2, y] ∈ 〈αβ1A〉k}.
23/38SIGPL 겨울학교 , 2012-02-03
[S’→•S, ε]
∈ 〈 ε 〉k
[S’→S•, ε]
∈ 〈 S 〉 k
[B→β1•Aβ2, x]
∈ 〈 αβ1 〉 k
[B→β1A•β2, x]
∈ 〈 αβ1A 〉k
[A→•ξ, y]
∈ 《〈 αβ1 〉k 》 k
†
[A→ξ•, y]
∈ 〈 αβ1ξ 〉k
S
Aαβ1
ξ
왼 파서의 비결정성 더 줄이기SLL(k) 파서 → LL(k) 파서
• 문자(SLL(k) 파서) 대신에 LL(k) state(LL(k) 파서)를 stack에 넣는다 .– X ∈ N ∪ → [XαR]LR(k) ↔ 〈XαR〉LR(k).
• Lk = {[B → β1•β2, x]| B→β1β2, x ∈ ≤k}: LL(k) itemS.• 예상할 때 , 올 수 있는 입력 문자열을 SLL(k) 보다 더 자세히 계산한다 .• LL(k) itemS: 〈 〉∙ k: V* → 2Lk.
〈β2γ〉k = {[B → β1•β2, x]| S Bγ ⇒lm xβ1β2γ, B → β1β2, x ∈ Firstk(β2γ)}
• δ1 LL(k)(λk) δ2, if 〈δ1〉k = 〈δ2〉k.– 왼쪽에 있는 문자를 stack top에 넣으므로 stack 문자열이 뒤집히지 않는다.– LL(k)는 집합 V*에 정의된 같은관계이다.– 같은부류 [δ]LL(k)(stack 문자열들의 집합)를 LL(k) state라 한다 .
• [δ]LL(k) ↔ [δ]λk ↔ [δ]k ↔ 〈[δ]LL(k)〉k ↔ 〈δ〉LL(k) ↔ 〈δ〉λk ↔ 〈δ〉k.– ParLL(k)(V*)를 [V*]LL(k) 라고 쓰고 LL(k) state의 집합이다.
• Stack에 있는 B→β로 예상할 때,– •S x•Bγ x•βγ xy•γ xyz•.– (S, xyz) (Bγ, yz) ⇒ (βγ, yz) (γ, z) (ε, ε).– (B, u) →SLL(k) (β, u)에서 u ∈ k:Firstk(β)∙Followk(A)로 예상하나 ,– (B, x) →LL(k) (β, x)에서 x = k:yz로 제한하여 예상한다 .
• {k:yz} ⊆ k:Firstk(β)∙Followk(A).• [B → β1•β2, x] ∈ 〈β2γ〉 LL(k) ↔ [β2γ]LL(k) 일 때,
– β1 = ε이면 x를 보고 B→β2로 예상한다.– β1:1 ∈ 이면 이면 확인(verify)한다 .– β1:1 ∈ N이면 예상을 미리 준비(《 》∙ )한다 .
한국과학기술원 전산학과 최광무 24/38SIGPL 겨울학교 , 2012-02-03
S
B
β γ
yx z
LL(k) 파서 만들기• 《 》∙ λk: Lk → 2Lk.
– 《[B→β1A•β2, x]》λk = {[A→ξ•, x]| A → ξ}– [A→•ξ, x] ∈ 〈β2γ〉λk일 때, A→ξ로 예상할 준비한다.
• 〈ε〉λk = 《[S’→S•, ε]》λk* ∈ []LL(k) 로 시작(basis).
• [B→β1X•β2, x] ∈ 〈β2γ〉λk ∈ []LL(k)이면(recursion),[B→β1•Xβ2, y] ∈ 《〈Xβ2γ〉λk》λk
* ∈ []LL(k), y ∈ Firstk(Xx).
• 〈Xβ2γ〉λk = 《[B→β1•Xβ2, y]》λk* = {[B→β1•Xβ2, y]} ∪ 《[B→β1•Xβ2, y]》λk
†.단 {[B→β1•Xβ2, y]} ∪ 《[B→β1•Xβ2, y]》λk
† = ø.• 문법 G = (N, , P, S)의 LL(k) 파서,
– LLk(G) = (([]LL(k) ⅹ*, →LL(k), ([ε]k∙[S]k, w), {([ε]k, ε)}).– →LL(k) = {([A∙β2γ]k∙[γ]k, x) →LL(k) {([ξ∙β2γ]k∙[ξ:|β|-1∙β2γ]k∙ … ∙[ξ:1∙β2γ]k∙[β2γ]k, x)– | [B → β1A•β2, y] ∈ 〈β2γ〉k, [A →ξ•, y] ∈ 《〈β2γ〉k》k
†,– [A → •ξ, x] ∈ 〈β2γ〉k, [B → β1•Aβ2, X] ∈ 〈A∙β2γ〉k}. x ⊆ X.– ∪ {([aβ2γ]k∙[γ]k, a) →LL(k) ([β2γ]k, ε)– | a ∈ Σ, [A → β1•aβ2, x] ∈ 〈aβ2γ〉k}
한국과학기술원 전산학과 최광무 25/38SIGPL 겨울학교 , 2012-02-03
[S’→S•, ε]
∈ [ε]k [S’→•S, s]
∈ [S]k
[B→β1A•β2, x]
∈ [β2γ]k [B→β1•Aβ2, X]
∈ [Aβ2γ]k
[A→ξ•, x]
∈ 《 [β2γ]k 》k†
[A→•ξ, y]
∈ [ξβ2γ ]k
S
Aβ2γ
ξ
한국과학기술원 전산학과 최광무
왼 파서의 종류• 유한상태기계
– A = (Q , →A, (, w), {(f, ε)| f∈F})– (q, x) →A (p, ε).
• 왼 파서– L = (( ), →L, (S, w), {(ε, ε)})– B 를 β로 (B → β) 예상 (guess B as β) a ∈ Σ를 확인 (verify a)– (B, ε) →L (β, ε), (a, a) →L (ε, ε).
• SLL(k) 왼 파서– SLL(k) = (( ), →SLL(k), (S, w), {(ε, ε)})– (B, x) →SLL(k) (β, x), (a, a) →SLL(k) (ε, ε).– x ∈ Firstk(β∙Follwk(B)),
• LL(k) 왼 파서– LL(k) = (([]LL(k) ), →LL(k), ([ε]k[S]k, w), {([ε]k}, (ε, ε)})– ([B∙γ]k∙[γ]k, x) →LL(k) ([β∙γ]k…[γ]k, x), ([a∙γ]k∙[γ]k, a) →LL(k) [γ]k, ε).
• [B → •β, x] ∈ 〈β∙γ〉 LL(k), [~ → ~•a~, a~] ∈ 〈a∙γ〉 LL(k).• SLL(k) ⊆ 문법 LL(k)문법 .
26/38SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
오른 파서의 종류• 오른 파서
– R = (( ), →R, (ε, w), {(S, ε)})– a ∈ Σ를 저장(shift a) β를 B로(B → β) 확인(reduce β to B)– (ε, a) →R (a, ε); (, ε) →R (B, ε)
• LR(k) 오른 파서 LR(k, k)– LR(k) = (([]LR(k) ), →LR(k), ([ε]k, w), {([ε]k∙[S]k}, (ε, ε)})– LR(k) 상태 , LR(k) 확인(reduce)– ([]k, a) →LR(k) ([]k∙]k, ε), ([]k…[]k, x) →LR(k) ([]k∙[]k, x)– [~ → ~•a~, a~] ∈ 〈α〉 LR(k), [B → β•, x] ∈ 〈αβ〉 LR(k).
• SLR(k) 오른 파서 LR(0, K) K ⊇ k.– SLR(k) = (([]LR(0) ), →SLR(k), ([ε]0, w), {([ε]0∙[S]0}, (ε, ε)})– LR(0) 상태 , Followk(B) 확인(reduce)– ([]0, a) →SLR(k) ([]0∙[]0, ε), ([]0…[]0, y) →SLR(k) ([]0∙[]0, y)– [~ → ~•a~] ∈ 〈α〉 LR(0), [B → β•] ∈ 〈αβ〉 LR(0), y ∈ Followk(B).
• LALR(k) 오른 파서 LR(0, k)– LALR(k) = (([]LR(0) ), →LALR(k), ([ε]0, w), {([ε]0∙[S]0}, (ε, ε)})– LR(0) 상태 , LR(k) 확인(reduce)– ([]0, a) →LALR(k) ([]0∙[]0, ε), ([]0…[]0, x) →LALR(k) ([]0∙[]0, x)– [~ → ~•a~] ∈ 〈α〉 LR(0), [B → β•, x] ∈ 〈αβ〉 LR(k).
• SLR(k)문법 ⊆ LALR(k)문법 ⊆ LR(k)문법 .
27/38SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
LL, RR/LR, RL 파서
21/38
S
B
β γ
yx z
S
B
α
S
B
S
B
βα
yx z
β
S
B
y
γ
z
α
x
LL RR
LR RLSIGPL 겨울학교 , 2012-02-03
α
zx y
β β
x y z
γ
한국과학기술원 전산학과 최광무
결정적 왼 / 오른 파서• 왼 파서의 결정적 파서
– Stack 이 유도할 문자열을 미리 계산하여 예상하고 후에 확인한다 . – SLL(k) 문법 ⊆ LL(k) 문법이지만– SLL(1) 문법 = LL(1) 문법– 좌 반복 (left recursive) 문법은 LL(k) 가 아니다 .
• A → Aα | β 이면• Firstk(Aα) ⊇ Firstk(A) ⊇ Firstk(β).
• 오른 파서의 결정적 파서– Stack 에 미리 기억하고 후에 확인한다 .
• 왼 파서는 ( 성실한 ) 미래학자이고 ,– Stack 에 있는 미래 ( 우문맥 (right context)) 를 미리 예측하고 확인한다 .
• 오른 파서는 ( 성실한 ) 역사학자이다 .– Stack 에 과거 ( 좌문맥 (left context)) 를 기억하여 정리하고 확인한다 .
• … ⊆ LL(k) 문법 ⊆ SLR(k) 문법 ⊆ …28/38SIGPL 겨울학교 , 2012-
02-03
한국과학기술원 전산학과 최광무
Turing 기계 (machine) 는 컴퓨터다 .• Turing 기계(machine; TM) Turing 1930.• M = (Q, Σ, Γ, →TM, qs, qf)
– Q: StateS– Σ: 입력문자Γ: Tape 문자(Σ ⊆ Γ, B ∈ Γ, B ¬∈ Σ)– qs ∈ Q: 시작 상태 qf ∈ Q: 마지막 상태 .– TM의 상태 : QⅹΓ*ⅹΓ*: StateⅹTape 왼쪽내용ⅹTape 오른쪽내용 .– (q, αZ, Xβ) →TM
(p/Y/L) (p, αZY, β)– (q, αZ, Xβ) →TM
(p/Y/R) (p, α, ZYβ)• L(TM) = {w ∈ Σ*| (q0, ε, w) ⇒TM
* (qf, α, β)}.• TM은 메모리에 읽고 쓰고 , head를 움직일 수 있다 .• TM은 컴퓨터다 .
– 1 cell을 32bit로 확장(word)한다 .– 단일 head를 다중 head로 바꿀 수 있다 .
• Register, memory– 산수와 논리(ALU)를 흉내 낼 수 있다 .– Program 메모리와 data 메모리를 구분한다 .
• Von Neumann 구조• Stored(Programmable) control logic
– Hardware vs. Software• TM은 프로그램이다 .
SIGPL 겨울학교 , 2012-02-03 29/38
프로그램알고리즘
NP-complete
문제 ( 프로그램 ) 의 계층구조프로그램 할 수 없다
한국과학기술원 전산학과 최광무
TM 은 프로그램이다• 프로그램의 꽃
– 반복 (재귀 )구조 (loop)• 변하지 않는 (loop invariance) 성질• 변하는 (loop termination) 성질
• 반복구조 (loop)의 문제– 끝나지 않을 수 (infinite loop) 도 있다
• 항상 끝나는 프로그램 (알고리즘 )– Type 1– Recursive– 전체 (total) 함수
• 끝나지 않은 수 도 있는 프로그램– Type 0– Recursively enumerable– 부분 (partial) 함수
• Recursively enumerable 밖에는 무엇이 있나?– 프로그램 할 수 없는 문제들
SIGPL 겨울학교 , 2012-02-03 30/38
한국과학기술원 전산학과 최광무
함수와 컴퓨터 ( 프로그램 , TM)• 문제를 푸는 두 가지 방법
– 프로그램(TM)• 해결 방법(operational)• 어떻게 하는가(how)?• (ε, qs, w) (α, qf, β). w ∈ Σ*, αβ ∈ Γ*.
– 함수• 문제(functional)• 무엇을 하는가(what)?• fTM(w) = αβ.
• 함수 f: Nn → Nm.– Nn ↔ N ↔ Nm.– f: Nn → Nm. ↔ f’: N → N.
• 부분함수 g: N → N. ∃x∈ N: [g(x) = X ¬∈N(undefined).
• 기본재귀함수(primitive recursive) 함수– 상수 함수
• 영(zero) 함수: ζ: N → N({0}).– ζ(x) = 0.
• 다음수(successor) 함수: σ: N → N.– σ(n) = n+1.
– 인수 찾기(projection): πkn: Nn → N. πk
n(x) = ak 단 1≤k≤n ∧ x = (a1, …, ak,, … ,an).• 기본재귀
– f: N ⅹ N → N를• g: N → N와 h: N ⅹ N ⅹ N → N로 정의한다.
– f(x, ζ(n)) = g(x). f(x, 0) = g(x).– f(x, σ(n)) = h(x, n, f(x, n)). f(x, n+1) = h(x, n, f(x, n)).
SIGPL 겨울학교 , 2012-02-03 31/38
한국과학기술원 전산학과 최광무
TM, 최소화 재귀함수 ,Turing-Church 의 주장
• Ackermann함수는 기초재귀로는 안 된다 .A(0, y) = y+1A(x+1, 0) = A(x, 1)A(x+1, y+1) = A(x, A(x+1), y))
• μ-(최소화)재귀함수 – Church 1934; lecture at Princetonf(x) = μ n [g(x, n) = 0] Min n: [g(x, n) = 0 ∧ (1 ≤ ∀k ≤ n: ∃g(x, k)]
• Turing의 주장– TM(프로그램)은 계산가능(computable, programmable)이다.
• TM ⇒ 계산가능 .– 계산가능은 TM(프로그램)이다(?)라고 주장(Thesis)
• TM ⇔ 계산가능 .• Church의 주장
– μ-재귀함수는 TM으로 프로그램할 수 있다.– TM도 μ-재귀함수로 표현할 수 있다.(증명)
• TM ⇔ μ-재귀함수 .– 계산가능은 μ-재귀함수이기도 하다.
• Turing-Church의 주장– 계산가능은 프로그램(TM)이나 μ-재귀함수이다.
• 프로그램 ⇔ μ-재귀함수 ⇔ 계산가능(?)– 계산가능은 λ-calculus(Church 1934, Kleene 1935, Rosser 1935)다.– 계산가능은 combinatory logic(Schönfinkel 1924, Curry 1929)이다.– 계산가능은 type 0 grammar(Chomsky 1959)이다.
SIGPL 겨울학교 , 2012-02-03 32/38
한국과학기술원 전산학과 최광무
Cantor 의 대각선화 주장 (1874; 1891)비극의 시작• 무한이진수 ↔ 자연수(셀 수 있게 무한)이라고 하자.• a1 = 00000…• a2 = 11111…• a3 = 01101…• …• a = 011 … 대각선화(diagonalization)• ¬a = 100 … 대각선화의 부정• a, ¬a ∈ 무한이진문자열,
그러나, a ↔ 자연수, ¬a ¬↔ 자연수.
• 무한이진수 ¬↔ 자연수.– |자연수의 부분집합| > |자연수|
• 자연수 셀 수 있게(countable) 무한(많다)• 자연수의 부분집합 셀 수 없이(uncountable) 무한(많다)
• 증명의 핵심– 대각선화(diagonalization) 후에 부정한다.
• Russell에 영향을 준 것으로 예상 .– Self-recursion에 대한 부정.– 내 개인 생각
33/38SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
Russell 의 모순 (paradox, 1901; 1911)• Cantor 의 naive set theory 에 대한 부정• Let R = {x| x ¬∈ R}• 매우 아름다운 집합에 대한 정의
– 집합도 집합의 원소가 될 수 있다 .• {{}, {{}}, {{{}}}, …}
– 집합이 그 집합 자신을 원소로 갖는 것은 이상하다 .• 사각형의 집합이 사각형의 집합을 원소로 가지지 않는다 .
– 그러나 ,• in x = R then (R ∈ R) ⇔ (R ¬∈ R).• 자기자신으로 재귀 (self-recursion) 에 대한 부정 .
• 자신을 부정하는 사람은 존재하지 않는다 .34/38SIGPL 겨울학교 , 2012-
02-03
x ¬∈ x.
한국과학기술원 전산학과 최광무
Hilbert 의 실패한 꿈 (1929)Gödel 의 불완전성 정리 (1931)
• Hilbert의 꿈(program), 1929.– 공리(axiom)로 시작한 완전하고(complete) 일관된(consistent) 수학(정리 , theorem; 식 , formula)의 모든 정리
(theorem)는 일관된 증명(proof; 프로그램)이 있다 .• Gödel의 불완전성 정리(Incompleteness Theorem), 1931.
– 증명(proof)도 정리(theorem)다.1. 완전하고 일관된 공리를 가진 수학은 없다 .2. 자신의 일관됨을 주장하는 정리는 일관되지 않다 .• Gödel의 불완전성 정리의 증명
– G(T): 정리 → Gödel수: 정리 T의 Gödel수– prov: Gödel수 → 수; prov(G(T)) = G(p) if ∃p: 정리 T의 증명; = Gödel수가 아닌 수 , otherwise.– p ⇔ F(G(p))– Consider Beweisbar(y: Gödel수) = ∃x: ((y = G(T): T: x의 정리) ∧ (x = G(p): (p: y의 증명))– Beweisbar(Gödel의 모국어인 독일어로 provable)는 너무 길다.
• Beweisbar(y) = G(p): (p: y의 증명)• Gödel수(증명 ↔ 정리 ↔ 자연수)도 필요 없다 .
• Bew(T: 정리) = if prov(T) → true | ¬prov(T) → false fi.• Bew(T) = F(T).• 대각선화(diagonalization)하고 부정한다 .• ¬Bew(T: 정리) = if prov(T) → false | ¬prov(T) → true fi.• ¬Bew(T) = ¬F(T).• Self recursion
– ¬Bew(Bew) = ¬prov(prov) ⇔ prov(prov) = Bew(Bew).
35/38SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
Halting problem 과 같은 문제들• Let H(p, d) = if p(d) stops → ¬stop
| p(d) ¬stop → stopsfi.
• in p = d = H• then H(H, H) stops ⇔ H(H) ¬stop ⇔ H(H, H) ¬stop.• 거짓말쟁이 개똥이가 , “이 글은 내가 썼다”
그 글을 개똥이가 썼나 , 안 썼다?• 이발 못하는 사람만 이발해주는 이발사 .
자신이 자신을 이발 할 까 , 안 할 까?• 이종형용사 (Heterological)는 이종형용사인가 아닌가?
– 형용사가 표현하는 성질을 가지지 않은 형용사• 예 (단음절 )monosyllabic heterological(다음절 )polysyllabic ¬ heterological• 그러나 Heterological ???
• p ⇔ ¬ p.– Gödel의 불완전성 두 번째 정리(첫 번째 정리의 corollary).– 큰일 났다 !
• 그런데 , 이거 모두 말장난 (논리장난 ) 아닌가?– 맞다 ()
36/38SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
서양 과학과 동양 인문학• 서양 과학
– 수학 또는 과학• F = ma.• E = mc2.
– 19c말 – 20c초 , 쉬운 과학과 공학을 이용한 무력으로 세계제패 .• 경제적 우월성
– 과학 또는 수학은 쉽다 .– 공학은 어렵다 .
• 자연과 사람의 문제 .– Cantor, Russell, Gödel, Hilbert, ...
• 형식주의 , 논리주의의 붕괴• 과학(수학) 만능에 대한 수학자들의 경고 .
• 동양 인문학– 사람에 대한 이해와 존경– 사람이 제일 어렵다 .
• 미래의 전산학– 사람의 문제를 다룬다 .– 기존의 공학과는 전혀 다른 새로운 학문이다 .– 프로그램학
• SIGPL
37/38SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
전산학과 사람• 미래학자들
– 전화기 망한다 .• 전 세계 인구의 1/3이 교환수• 기계식 교환기 , 컴퓨터 교환기
– 기술적 비약 (Technical take-off)– 컴퓨터 망한다 .
• 전 세계 인구의 반이 프로그래머• ???• 새로운 파라다임 .
• 좋은 프로그래밍언어– E. W. Dijkstra(1970년대 )
• 사람을 위한 프로그래밍언어 vs. 기계를 위한 프로그래밍 언어– 최광무 (1990년대 )
• 사람을 위한 프로그래밍언어 vs. 수학을 위한 프로그래밍 언어• 사람을 위한 프로그램학
– 수학과의 만남– 인문사회학과의 만남– 사람과의 만남
38/38SIGPL 겨울학교 , 2012-02-03
한국과학기술원 전산학과 최광무
미래에 지도자• 수신제가 (修身齊家 ) 치국평천하 (治國平天下 )– 공자 , 대학 제 2 장
• 격물치지 (格物致知 ) 성의정심 (誠意正心 )– 격물치지
• 이공학 공부• 세상 무서운 줄 안다 .
– 성의정심• 인문사회학 공부• 사람 귀한 줄 안다 .
• 미래에 지도자– 세상 무서운 줄 알고 , 사람 귀한 줄 아는 사람
SIGPL 겨울학교 , 2012-02-03 38-1
감사합니다 한국과학기술원 전산학과 최광무 38-2
전산학과 인문사회학 공부모두 열심히 하신 후에 ,미래에 훌륭한 지도자가되시기 바랍니다 .SIGPL 겨울학교 , 2012-02-03