πŸ–₯ Computer Science/계산이둠

μ„œλ‘  μ•žμ„œ 배운 μœ ν•œ μ˜€ν† λ§ˆνƒ€μ™€ ν‘Έμ‹œλ‹€μš΄ μ˜€ν† λ§ˆνƒ€λ₯Ό 비ꡐ해보면, μž„μ‹œ μ €μž₯μž₯μ†Œμ˜ νŠΉμ„±μ΄ λ‘˜ μ‚¬μ΄μ˜ 차이λ₯Ό λ§Œλ“€μ–΄λƒ„μ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. λ§Œμ•½ μ €μž₯μž₯μ†Œκ°€ μ—†λ‹€λ©΄ μœ ν•œ μ˜€ν† λ§ˆνƒ€μ΄λ©°, μ €μž₯μž₯μ†Œκ°€ μŠ€νƒμ΄λΌλ©΄ μœ ν•œ μ˜€ν† λ§ˆνƒ€λ³΄λ‹€ 더 κ°•λ ₯ν•œ ν‘Έμ‹œλ‹€μš΄ μ˜€ν† λ§ˆνƒ€λ₯Ό κ°–κ²Œ λ©λ‹ˆλ‹€. λ§Œμ•½ μ˜€ν† λ§ˆνƒ€μ— μ’€ 더 μœ μ—°ν•œ μ €μž₯μž₯μ†Œλ₯Ό 더해쀀닀면, λ”μš± κ°•λ ₯ν•œ 언어ꡰ을 λ°œκ²¬ν•  수 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 두 개, μ„Έ 개의 μŠ€νƒ, 큐, λ˜λŠ” λ‹€λ₯Έ μ €μž₯ μž₯치λ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ μ–΄λ–€ κ²°κ³Όκ°€ λ‚˜μ˜¬κΉŒμš”? 각각의 μ €μž₯μž₯μ†ŒλŠ” μƒˆλ‘œμš΄ μ’…λ₯˜μ˜ μ˜€ν† λ§ˆνƒ€λ₯Ό μ •μ˜ν•˜κ³ , 그것을 ν†΅ν•˜μ—¬ μƒˆλ‘œμš΄ 언어ꡰ을 μ •μ˜ν•  수 μžˆμ„κΉŒμš”? μ΄λŸ¬ν•œ 접근은 λŒ€λΆ€λΆ„μ˜ 경우 ν₯미둜운 κ²°κ³Όλ₯Ό μ΄λŒμ–΄λ‚΄μ§€λŠ” λͺ»ν–ˆμŠ΅λ‹ˆλ‹€. κ°€μž₯ κ°•λ ₯ν•œ μ˜€ν† λ§ˆνƒ€μ™€ κ³„μ‚°μ˜ ν•œκ³„μ— λŒ€ν•˜μ—¬ 무엇을 이야기할 수 μžˆμ„κΉŒμš”?..
λ¬Έλ§₯-자유 문법은 μœ ν•œ μ˜€ν† λ§ˆνƒ€λ‘œλŠ” 인식될 수 μ—†μœΌλ©°, ν‘Έμ‹œλ‹€μš΄ μ˜€ν† λ§ˆνƒ€μ— μ˜ν•΄μ„œ 인식될 수 μžˆμŠ΅λ‹ˆλ‹€. ν‘Έμ‹œλ‹€μš΄ μ˜€ν† λ§ˆνƒ€λŠ” μ˜€ν† λ§ˆνƒ€μ™€ λΉ„μŠ·ν•œ μƒκΉ€μƒˆλ₯Ό μ§€λ…”μœΌλ‚˜, μŠ€νƒ(Stack)을 μΆ”κ°€λ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. 비결정적 ν‘Έμ‹œλ‹€μš΄ μ˜€ν† λ§ˆνƒ€ (NFDA) ν‘Έμ‹œλ‹€μš΄ μ˜€ν† λ§ˆνƒ€λŠ” λ‹€μŒκ³Ό 같이 ν‘œν˜„λ©λ‹ˆλ‹€. μ œμ–΄ μœ λ‹›μ˜ 각 μ›€μ§μž„μ€ μž…λ ₯ νŒŒμΌλ‘œλΆ€ν„° ν•˜λ‚˜μ˜ μ‹¬λ²Œμ„ 읽고, λ™μ‹œμ— μŠ€νƒ 연산을 ν†΅ν•˜μ—¬ μŠ€νƒμ˜ λ‚΄μš©μ„ λ°”κΏ‰λ‹ˆλ‹€. μ œμ–΄ μœ λ‹›μ˜ 각 μ›€μ§μž„μ€ ν˜„μž¬μ˜ μž…λ ₯뿐 μ•„λ‹ˆλΌ, ν˜„μž¬ μŠ€νƒμ˜ Top에 μžˆλŠ” μ‹¬λ²Œμ— μ˜ν•˜μ—¬ κ²°μ •λ©λ‹ˆλ‹€. μ›€μ§μž„μ˜ κ²°κ³ΌλŠ” μ œμ–΄ μœ λ‹›μ˜ μƒˆλ‘œμš΄ μƒνƒœμ™€ μŠ€νƒμ˜ ν†±μ—μ„œμ˜ λ³€ν™”μž…λ‹ˆλ‹€. 비결정적 ν‘Έμ‹œλ‹€μš΄ 인식기 (nondeterminisitc pushdown acceptor, npda)λŠ” λ‹€μŒκ³Ό 같이 μ •μ˜λ©λ‹ˆλ‹€. $$M = ..
CYK μ•Œκ³ λ¦¬μ¦˜ 문법이 Chomsky μ •κ·œν˜•μΈ κ²½μš°μ—λ§Œ μ œλŒ€λ‘œ μž‘λ™ν•˜λ©°, λ‹€μŒκ³Ό 같이 문제λ₯Ό μž‘μ€ 문제둜 λ‚˜λˆ„μ–΄ ν•΄κ²°ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. Chomsky μ •κ·œν˜•λ―Ό 문법 G = (V, T, S, P)에 λŒ€ν•˜μ—¬, λ¬Έμžμ—΄ w = $a_1...a_n$이 μ£Όμ–΄μ‘Œλ‹€κ³  ν•˜κ² μŠ΅λ‹ˆλ‹€. λ¬Έμžμ—΄ w의 i번째 μ‹¬λ²ŒλΆ€ν„° j번째 μ‹¬λ²ŒκΉŒμ§€μ˜ λΆ€λ¬Έμžμ—΄μ„ $w_{ij}$라 ν•˜κ² μŠ΅λ‹ˆλ‹€. 즉 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. $$w_{ij} = a_i...a_j$$ λ˜ν•œ V의 뢀뢄집합 $V_{ij}$λ₯Ό λ‹€μŒκ³Ό 같이 μ •μ˜ν•©λ‹ˆλ‹€. $$V_{ij} = \left\{ A \in V \;: \; A \; \overset{*}{\Rightarrow}\; w_{ij} \right\}$$ μ΄λ•Œ, λ¬Έμžμ—΄ wλŠ” L(G)에 μ†ν•˜λ―€λ‘œ, $$S \in V_{1n}$$ $V_{i..
Chomsky μ •κ·œν˜• Chomsky μ •κ·œν˜•μ€ μƒμ„±κ·œμΉ™μ˜ μš°λ³€μ— μžˆλŠ” μ‹¬λ²Œλ“€μ˜ 수λ₯Ό 2개 μ΄ν•˜λ‘œ μ—„κ²©ν•˜κ²Œ μ œν•œν•œ ν˜•νƒœμž…λ‹ˆλ‹€. λ¬Έλ§₯ 자유 문법 Gμ—μ„œ λͺ¨λ“  μƒμ„±κ·œμΉ™μ΄ λ‹€μŒμ˜ ν˜•νƒœλ₯Ό λ§Œμ‘±ν•˜λ©΄ Gλ₯Ό Chomsky μ •κ·œν˜•μ΄λΌ ν•©λ‹ˆλ‹€. $$A \to BC$$ ν˜Ήμ€ $$A \to a$$ 단 μ—¬κΈ°μ„œ A, B, C ∈ V 이고 a ∈ T μž…λ‹ˆλ‹€. μ•„λž˜λŠ” Chomsky μ •κ·œν˜•μ˜ μ˜ˆμ‹œμž…λ‹ˆλ‹€. $$S \to AS \;|\;a$$ $$A \to SA \;|\;b$$ μ•„λž˜λŠ” Chomsky μ •κ·œν˜•μ΄ μ•„λ‹™λ‹ˆλ‹€. $$S \to AS \;|\;AAS$$ $$A \to SA \;|\;bb$$ Chomsky μ •κ·œν˜•μœΌλ‘œ λ³€ν™˜ν•˜κΈ° 주어진 문법 GλŠ” λžŒλ‹€ μƒμ„±κ·œμΉ™κ³Ό, λ‹¨μœ„ μƒμ„±κ·œμΉ™μ„ 가지고 μžˆμ§€ μ•Šμ•„μ•Όν•©λ‹ˆλ‹€. (가지고 μžˆλŠ” 경우 이λ₯Ό μ œκ±°ν•œ λ’€..
λ¬Έλ§₯ 자유 λ¬Έλ²•μ˜ μƒμ„±κ·œμΉ™μ˜ μš°μΈ‘μ— λ‚˜μ˜€λŠ” λ¬Έμžμ—΄μ˜ ν˜•νƒœμ—λŠ” μ–΄λ– ν•œ μ œμ•½λ„ μ—†μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 였히렀 이런 μ œν•œμœΌλ‘œ 인해 λ³΅μž‘μ„±μ΄ μ¦κ°€ν•˜λŠ” 단점을 κ°€μ§‘λ‹ˆλ‹€. μ΄μ œλΆ€ν„° μ €ν¬λŠ” μ΄λŸ¬ν•œ μ œμ•½ μ—†λŠ” 문법 λŒ€μ‹ , μ œν•œλœ ν˜•νƒœλ₯Ό λ§Œμ‘±ν•˜λŠ” λ™μΉ˜μΈ λ¬Έλ²•μœΌλ‘œ λ³€ν˜•ν•˜λŠ” 방법을 μ‚΄νŽ΄λ³Ό κ²ƒμž…λ‹ˆλ‹€. λ¬Έλ²•μ˜ λ³€ν˜• 방법 빈 λ¬Έμžμ—΄(λ)이 λ‚˜νƒ€λ‚˜λŠ” λ¬Έλ²•μ΄λ‚˜ μ–Έμ–΄λŠ” λ‹€μ†Œ λ°”λžŒμ§ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€. μ΄λŠ” λ§Žμ€ 정리와 증λͺ…μ—μ„œ λ³„κ°œμ˜ 역할을 ν•˜λ©°, νŠΉλ³„νžˆ μ£Όμ˜ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€. μ €ν¬λŠ” μ΄λŸ¬ν•œ 빈 λ¬Έμžμ—΄μ„ κ³ λ €λŒ€μƒμ—μ„œ μ œκ±°ν•˜μ—¬ 였직 λλ₯Ό ν¬ν•¨ν•˜μ§€ μ•ŠλŠ” μ–Έμ–΄λ§Œμ„ μ‚΄νŽ΄λ³΄λ € ν•©λ‹ˆλ‹€. L을 λ¬Έλ§₯ 자유 언어라 ν•˜κ³ , Gλ₯Ό L-{λ}(L μ—μ„œ 빈 λ¬Έμžμ—΄ 제거)을 μƒμ„±ν•˜λŠ” λ¬Έλ§₯ 자유 문법이라 ν•˜κ² μŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ V에 μƒˆλ‘œμš΄ μ‹œμž‘ μ‹¬λ²Œμ„ μΆ”κ°€ν•˜κ³  λ‹€μŒμ˜ μƒˆλ‘œμš΄ 생..
νŒŒμ‹±(Parsing) 주어진 λ¬Έμžμ—΄ wκ°€ μ–΄λ– ν•œ 문법 Gλ‘œλΆ€ν„° μƒμ„±λ˜λŠ” μ–Έμ–΄ L(G)에 μ†ν•˜λŠ”μ§€μ˜ μ—¬λΆ€λ₯Ό μ•Œμ•„μ•Ό ν•˜λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό νŒλ³„ν•˜κΈ° μœ„ν•œ μ•Œκ³ λ¦¬μ¦˜μ„ μ†Œμ†μ„±(membership) μ•Œκ³ λ¦¬μ¦˜μ΄λΌ ν•©λ‹ˆλ‹€. νŒŒμ‹±μ˜ μ˜λ―ΈλŠ” L(G)에 μ†ν•˜λŠ” wκ°€ μœ λ„λ˜λŠ”λ° μ‚¬μš©λœ 일련의 μƒμ„±κ·œμΉ™μ„ μ°ΎλŠ” 것 μž…λ‹ˆλ‹€. λ‹¨μˆœν•œ νŒŒμ‹± λ°©λ²•μœΌλ‘œλŠ” 체계적(systematically)으둜 κ°€λŠ₯ν•œ λͺ¨λ“  μœ λ„λ“€μ„ ꡬ성해 κ°€λ©΄μ„œ, κ·Έ 쀑에 w와 μΌμΉ˜ν•˜λŠ” 것이 μžˆλŠ”μ§€λ₯Ό μ•Œμ•„λ³΄λŠ” κ²ƒμž…λ‹ˆλ‹€. ꡬ체적으둜, μ²˜μŒμœΌλ‘œλŠ” λ‹€μŒκ³Ό 같은 ν˜•νƒœμ˜ μ‹œμž‘ μ‹¬λ²Œμ„ μ’Œλ³€μœΌλ‘œ κ°–λŠ” λͺ¨λ“  μƒμ„±κ·œμΉ™λ“€μ„ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€. $$S \to x$$ μ‹œμž‘ μ‹¬λ²Œ Sλ‘œλΆ€ν„° ν•œ 단계에 μœ λ„λ  수 μžˆλŠ” λͺ¨λ“  λ¬Έμž₯ν˜•νƒœ wλ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€. λ§Œμ•½ μ–΄λŠ x도 μΌμΉ˜ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, 이후 각x의 ..
λ¬Έλ§₯ 자유 μ–Έμ–΄ 문법 G = (V, T, S, P)μ—μ„œ λͺ¨λ“  μƒμ„±κ·œμΉ™μ΄ $$A \to x$$ 의 ν˜•νƒœλ₯Ό 가지면 Gλ₯Ό λ¬Έλ§₯-자유 문법(Context-free Grammer, CFG)이라 ν•©λ‹ˆλ‹€. μ΄λ•Œ A와 xλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. $$A \in V, \;\;\;\; x \in (V \cup T)^{*}$$ λ˜ν•œ μ–Έμ–΄ L에 λŒ€ν•΄μ„œ L = L(G)λ₯Ό λ§Œμ‘±ν•˜λŠ” λ¬Έλ§₯-자유 문법 Gκ°€ μ‘΄μž¬ν•˜κ³ , 였직 그럴 λ•Œμ—λ§Œ L을 λ¬Έλ§₯-자유 μ–Έμ–΄(Context-free Lanuage, CFL)라고 ν•©λ‹ˆλ‹€. μœ„μ˜ μ •μ˜μ— μ˜ν•˜μ—¬ λͺ¨λ“  μ •κ·œ 문법은 λ¬Έλ§₯ 자유 문법이 되며 λ”°λΌμ„œ μ •κ·œ μ–Έμ–΄λŠ” λ¬Έλ°± 자유 μ–Έμ–΄μž„μ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. 즉 μ •κ·œ 언어ꡰ은 λ¬Έλ§₯ 자유 μ–Έμ–΄κ΅°μ˜ 진뢀뢄 μ§‘ν•©μž…λ‹ˆλ‹€. λ¬Έλ§₯ μžμœ λΌλŠ” 이름은 λ¬Έμž₯ ν˜•νƒœ(sentencial..
μ§€λ‚œλ²ˆ 글에 μ΄μ–΄μ„œ μ •κ·œ 언어에 λŒ€ν•œ νŒλ³„μ— μ‚¬μš©λ  수 μžˆλŠ” νŽŒν•‘ 보쑰정리에 λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. νŽŒν•‘ 보쑰정리 (Pumping lemma) νŽŒν•‘ λ³΄μ‘°μ •λ¦¬λŠ” λΉ„λ‘˜κΈ°μ§‘ 원리λ₯Ό λ‹€λ₯Έ ν˜•νƒœλ‘œ μ΄μš©ν•œ κ²ƒμž…λ‹ˆλ‹€. 이에 λŒ€ν•œ 증λͺ…은 λ‹€μŒ 관찰에 κΈ°λ°˜μ„ 두고 μžˆμŠ΅λ‹ˆλ‹€. n개의 정점을 κ°–λŠ” 전이 κ·Έλž˜ν”„μ—μ„œ, 길이가 n 이상인 λͺ¨λ“  보행은 μ–΄λ–€ 정점이 반볡, 즉 사이클을 κ°€μ Έμ•Ό ν•œλ‹€ νŽŒν•‘ λ³΄μ‘°μ •λ¦¬λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. L을 λ¬΄ν•œ μ •κ·œ μ–Έμ–΄(infinite regular lanuage)라 ν•˜λ©΄, λ‹€μŒ μ„±μ§ˆμ„ λ§Œμ‘±ν•˜λŠ” μ–‘μ˜ μ •μˆ˜ m이 μ‘΄μž¬ν•©λ‹ˆλ‹€. λ‹€μŒμ„ λ§Œμ‘±ν•˜λŠ” λͺ¨λ“  λ¬Έμžμ—΄ w에 λŒ€ν•˜μ—¬ $$|w| \geq m, \;\;\;\;\;\; w \in L$$ λ¬Έμžμ—΄ wλŠ” μ•„λž˜μ˜ 쑰건을 λ§Œμ‘±ν•˜λ„λ‘ 뢄할될 수 μžˆμŠ΅λ‹ˆλ‹€. $$w ..
말 λž‘
'πŸ–₯ Computer Science/계산이둠' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘