๐Ÿ’ปComputer/Computer concept&practice

1. Welcome Aboard

Physical Coach 2022. 4. 19. 18:18

Computer Concept & Practice(์ปดํ“จํ„ฐ ๊ฐœ๋… ๋ฐ ์‹ค์Šต)

์ปดํ“จํ„ฐ์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šฐ๊ธฐ์ „์— ๊ฐœ๋ก ์˜ ์—ญํ• ์„ ํ•˜๋Š” "Computer Concept & Practice(์ปดํ“จํ„ฐ ๊ฐœ๋… ๋ฐ ์‹ค์Šต)" ์ˆ˜์—….
์ปดํ“จํ„ฐ๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ํ•™์ƒ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ๊ธฐ์ดˆ๊ฐœ๋… ๋“ฑ์„ ์„ค๋ช…ํ•˜๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰๋˜๋Š” ๊ณผ์ •๊ณผ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ์„ ์œ„ํ•œ ๋…ผ๋ฆฌ์ ์ธ ์‚ฌ๊ณ ์— ๋Œ€ํ•˜์—ฌ ๊ฐ•์˜ํ•œ๋‹ค. 

 

 

์˜ค๋Š˜ ๊ฐ•์˜์—์„œ๋Š” ์ „์ฒด์ ์ธ ํฐ ๊ทธ๋ฆผ๊ณผ 2๊ฐ€์ง€ ์ •๋„์˜ ์ฃผ์š”๊ฐœ๋…์„ ์•Œ์•„๋ณด์ž.

์šฐ์„  ํ•ต์‹ฌ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ธ, Abstraction(๊ตณ์ด ๋ฒˆ์—ญํ•˜๋ฉด '์ถ”์ƒํ™”'๊ฐ€ ์ œ์ผ ๋‚˜์„ ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ๋‹จ์–ด ๊ทธ์ž์ฒด๋กœ ์•Œ๊ณ  ์žˆ๋Š”๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.)์— ๋Œ€ํ•ด์„œ ๋ฐฐ์›Œ๋ณด์ž. 

 

Abstraction

Abstraction์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ๋ณต์žกํ•œ ๊ตฌ์กฐ๋“ค์„ ๋‹ค๋ฃจ๊ธฐ ์‰ฝ๊ฒŒ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์˜ˆ๋ฅผ ๋“ค๋ฉด, ์•„๋ž˜์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์šฐ๋ฆฌ๋Š” ์ฐจ๊ฐ€ LPG์ด๋“ , ๋””์ ค์ด๋“ , ์ „๊ธฐ์ฐจ์ด๋“  ์ƒ๊ด€์—†์ด ๊ทธ ์›๋ฆฌ๋ฅผ ๋ชฐ๋ผ๋„ interface๋ฅผ ํ†ตํ•ด ์šด์ „์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 
์™œ๋ƒํ•˜๋ฉด, ์ž๋™์ฐจ๋Š” abstraction์ด ๋˜์–ด์žˆ์œผ๋‹ˆ๊น.

์–ด๋–ค ์—”์ง„์„ ์“ฐ๋“  ์šฐ๋ฆฌ์˜ ์šด์ „์—๋Š” ํฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.


์ธ๊ฐ„์ด ํ•œ์ˆœ๊ฐ„์— ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜
Complexity(๋ณต์žก๋„)์—๋Š” ์ œํ•œ์ด ์žˆ๋‹ค.
ํ•ธ๋“ค๋งŒ ๋Œ๋ฆฌ๋ฉด ์ž๋™์ฐจ์˜ ๋ฐ”ํ€ด๊ฐ€ ๋ฐฉํ–ฅ์„ ์ „ํ™˜ํ•˜์ง€๋งŒ, ์ฐจ์ฒด์•ˆ์ •์‹œ์Šคํ…œ์„ ์ด์šฉํ•˜๋ฉฐ ๋ฐ”ํ€ด๊ฐ€ ๋ฐฉํ–ฅ์ „ํ™˜์„ ํ•˜๊ธฐ ์œ„ํ•œ ๊ณตํ•™์ ์ธ ์›๋ฆฌ๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ํœ˜๋ฐœ์œ ๊ฐ€ ์—”์ง„์—์„œ ์ด์šฉ๋˜๋ฉฐ ๊ทธ ํž˜์ด ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ ๋“ฑ๋“ฑ๋“ฑ ํ•˜๋‚˜ํ•˜๋‚˜ ์‹ ๊ฒฝ์“ธ๋ ค๋ฉด ๋์ด ์—†๋‹ค.
์ด๋Ÿฌ๋ฉด ์•„๋ฌด๋„ ์ž๋™์ฐจ๋ฅผ ์šด์ „ํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฐ ๋””ํ…Œ์ผํ•œ ๋ถ€๋ถ„๋“ค์ด abstraction ๋˜๊ณ , ๋˜ abstraction๋˜์–ด ์šฐ๋ฆฌ๋Š” ํ•ธ๋“ค๊ณผ ๊ธฐ์–ด๋ด‰ ๋“ฑ์˜ ๋น„๊ต์  ๊ฐ„๋‹จํ•œ interface๋กœ ์šด์ „์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
(ex: ์šฐ๋ฆฐ ์œ ํŠœ๋ธŒ์˜ ์›๋ฆฌ๋ฅผ ๋ชฐ๋ผ๋„, ์กฐ์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์œ ํŠœ๋ธŒ ์ž์ฒด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์—„์ฒญ ๋ณต์žกํ•˜๊ฒ ์ง€๋งŒ, abstraction๋˜๊ณ  ๋˜ abstraction ๋˜์–ด์„œ, ์šฐ๋ฆฌ๋Š” ๊ฐ„๋‹จํ•œ interface๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ด์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.)

์ •๋ง ๋ณต์žกํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” abstraction์„ ์ด์šฉํ•˜์—ฌ ์ž๋™์ฐจ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” abstraction์„ '์–ด๋–ค ์‹œ์Šคํ…œ์—์„œ ๋‚ด๋ถ€์˜ ์ž์„ธํ•œ ์‚ฌํ•ญ๋“ค์„ interface๋กœ ์ •์˜ํ•˜์—ฌ, ๊ทธ ์‹œ์Šคํ…œ์„ ํ•˜๋‚˜์˜ building block(๊ตฌ์„ฑ์š”์†Œ)์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋ฉ”์นด๋‹ˆ์ฆ˜'์ด๋ผ๊ณ  ์ƒ๊ฐ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ abstraction์€ ์ธ๊ฐ„์ด ๋งŒ๋“  ๊ฒƒ(man-made)์™ธ์—๋„ ์ž์—ฐ์—์„œ๋„ ์ฐพ์•„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
๋ฐ‘์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ธ๊ฐ„์˜ ํ˜•์„ฑ ๊ณผ์ •๋„ abstraction์ด๋ผ๊ณ  ํ•  ์ˆ˜์žˆ๋‹ค.

์›์ž-๋ถ„์ž-์„ธํฌ-...-์ธ๊ฐ„ ๊นŒ์ง€์˜ abstraction

์ƒ๋ช…์€ ๋ญ”๊ฐ€ 1๊ฐœ์˜ ๋‹จ์œ„์ธ ๊ฒƒ ๊ฐ™์ง€๋งŒ, ๊ฒฐ๊ตญ ์ž‘์€ ๋‹จ์œ„์—์„œ ๋ถ€ํ„ฐ abstraction๋œ ๊ฒƒ์ด๋‹ค.
(๋‚ด ๋ถ„์•ผ์™€ ์—ฐ๊ด€์ง€์–ด ์„ค๋ช…ํ•˜์ž๋ฉด, ์šฐ๋ฆฌ๋Š” ๊ทผ์œก์ด ์–ด๋–ป๊ฒŒ ์›€์ง์ด๋Š”์ง€ ๋ชจ๋ฅด์ง€๋งŒ, action๊ณผ myosin์ด ์–ด๋–ค ๊ธฐ์ „์œผ๋กœ ๊ฒฐํ•ฉํ•˜๋Š”์ง€ ๋ชฐ๋ผ๋„, ์šฐ๋ฆฌ๋Š” ๋‡Œ๋ผ๋Š” ์ตœ๊ณ ์˜ interface๋ฅผ ํ†ตํ•ด ์กฐ์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค)
*์ƒ๋ช…์˜ ํƒ„์ƒ๊ณผ ์„ฑ์žฅ ์ž์ฒด๊ฐ€ abstraction์ด๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋ผ, ์ €๋ ‡๊ฒŒ ๋ณต์žกํ•˜๊ณ  ์ž‘์€์‹œ์Šคํ…œ๋“ค์ด ๊ฐ„๋žตํ™”๋˜๊ณ  ๋˜ ๊ฐ„๋žตํ™”๋˜์–ด์„œ ์šฐ๋ฆฌ๊ฐ€ ์›€์ง์ด๊ณ  ์‚ด์•„๊ฐ€๋Š” ๊ฒƒ์ด abstraction์ด๋ผ๋Š” ์˜๋ฏธ๋ผ๊ณ  ๋ง์”€๋“œ๋ฆฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฏผ์ƒ๋ ฌ ๊ต์ˆ˜๋‹˜์˜ ๋ง์”€.
"์ €๋Š” ์ข…๊ต๊ฐ€ ์—†์ง€๋งŒ, ์ฐฝ์กฐ์ฃผ๊ฐ€ ํ•˜๋Š” ์‹์„ ๋”ฐ๋ผํ•˜๋ฉด ์ตœ์†Œํ•œ ์ค‘๊ฐ„์ด์ƒ์€ ๊ฐ„๋‹ค๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.  ๊ทธ๋ž˜์„œ ์ฐฝ์กฐ์ฃผ๊ฐ€ ์ด๋Ÿฐ ๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ž์œผ๋ฉด, ์šฐ๋ฆฌ๋„ abstraction์„ ์‹œํ‚ค๋ฉด์„œ ๊ฑฐ๊ธฐ์„œ interface๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ๊ทธ component(์š”์†Œ)๋ฅผ ์ด์šฉํ•ด์„œ ๋” ํฐ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿฐ ๊ณผ์ •์„ ๊ณ„์ธต์ ์œผ๋กœ ํ•˜๋Š” ์ ‘๊ทผ๋ฐฉ์‹์„ ๊ฐ€์ง€๋Š”๊ฒŒ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค."

 

์ปดํ“จํ„ฐ์˜ abstraction ๊ณผ์ •

์ด์ฒ˜๋Ÿผ ๊ฐ€์žฅ ์œ„์—์„œ ๋ณด๋ฉด ์–ด๋–ค problems๋ฅผ ํ’€๊ณ  ์‹ถ์€ ๊ฒƒ์ด์ง€๋งŒ, ๊ฐ€์žฅ ์•„๋ž˜๋กœ ํŒŒ๊ณ ๋“ค์–ด ๊ฐ„๋‹ค๋ฉด ์ „์ž๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. 
ex) electron๋ฅผ ๊ฐ€์ง€๊ณ  transistor๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ๊ฑธ ์ด์šฉํ•ด gate๋ฅผ ๋งŒ๋“ค๊ณ , ๊ณ„์†ํ•ด์„œ ๋” ๋ณต์žกํ•œ ๊ฒƒ์„ ๋งŒ๋“ค์–ด๋‚˜๊ฐ€๋ฉฐ ISA(Instruction Set Architecture)๋ฅผ ๋งŒ๋“ค๊ฒƒ์ด๊ณ , language๋ฅผ ๋งŒ๋“ค๊ณ  algorithms๋ฅผ ๋งŒ๋“ค์–ด problems๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
(*์—ฌ๊ธฐ์„œ transistor๊ฐ€ ๋ฌด์—‡์ธ์ง€, gate๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋“ฑ์€ ์•„์ง์€ ์•Œ ํ•„์š” ์—†๋‹ค. ๋‹จ์ˆœํžˆ ์ปดํ“จํ„ฐ๊ฐ€ ์ €๋Ÿฐ ๊ฒƒ๋“ค์ด abstraction๋˜์–ด problem์„ ํ•ด๊ฒฐํ•œ๋‹ค๋Š” ์ •๋„๋งŒ ์•Œ๋ฉด๋œ๋‹ค. ์ €๋Ÿฐ ๊ฒƒ๋“ค์ด ๋ฌด์—‡์ธ์ง€๋Š” ๋’ค์—์„œ ์ž์„ธํžˆ ๋ฐฐ์šธ ์˜ˆ์ •์ด๋‹ค.)

 

Universal Computing Device

์šฐ๋ฆฌ๊ฐ€ ์ด๋ฒˆ์— ์•Œ์•ผํ•  ๊ฒƒ์€,
'๋ชจ๋“  ์ปดํ“จํ„ฐ์— ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค๋ฉด, ํ‹€๋ฆผ์—†์ด ๋˜‘๊ฐ™์€ ๊ฒƒ์„ ํ•ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค'๋Š” ์‚ฌ์‹ค์ด๋‹ค.
(All computers, given enough time and memory, are capabel of computing exactly the same things.)

๋ฌธ์ œํ’€์ด์˜ ํŒŒ์›Œ์— ์žˆ์–ด์„œ๋Š” ์ „๋ถ€ ์ฐจ์ด๊ฐ€ ์—†๋‹ค.

๋‹น์—ฐํžˆ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ์Šค๋งˆํŠธํฐ์—์„œ ํ‘ธ๋Š” ๊ฒƒ๊ณผ ์Šˆํผ์ปดํ“จํ„ฐ์—์„œ ํ‘ธ๋Š” ๊ฒƒ์€ ์ฐจ์ด๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ,
๊ทธ๊ฒƒ ์ž์ฒด๋ฅผ ํ‘ธ๋Š” power์—๋Š” ํฐ ์ฐจ์ด๊ฐ€ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ์™€ ์‹œ๊ฐ„์ด ์žˆ๋‹ค๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๊ฐ™๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ€์žฅ ์ž‘์€ computing device๋Š” ๋ฌด์—‡์ผ๊นŒ?

๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์€  A.M.turing๊ฐ€ ๊ณ ์•ˆํ•ด๋‚ธ ์ˆ˜ํ•™์  ๋ชจ๋ธ์ธ turing machine์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  turing์€ ์ด๋ ‡๊ฒŒ ๋งํ•˜๊ธฐ๋„ ํ•˜์˜€๋‹ค.
'Every computation can be performed by some Turing machine'
์ฆ‰, ์‹ค์ œ ์ปดํ“จํŒ… ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์ž์‹ ์ด ๊ณ ์•ˆํ•œ turing machine๋กœ๋„ ํ’€ ์ˆ˜์žˆ๋‹ค๊ณ  ๋งํ•˜์˜€๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์œ„์—์„œ ์Šค๋งˆํŠธํฐ๊ณผ ์Šˆํผ์ปดํ“จํ„ฐ์˜ ๋ฌธ์ œํ•ด๊ฒฐpower์—๋Š” ์ฐจ์ด๊ฐ€ ์—†๋‹ค๊ณ  ๋ฐฐ์› ๋“ฏ์ด, turing machine์€ ์•„์ฃผ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ๊ณ„์‚ฐ๊ฐ€๋Šฅํ•œ ์–ด๋–ค ๋ฌธ์ œ๋„ ํ’€ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•˜์˜€๋‹ค. (*๋ฌผ๋ก  ์‹œ๊ฐ„์€ ๋ณ„๊ฐœ์˜ ๋ฌธ์ œ์ง€๋งŒ)

์ด turing machine์—๋Š” ๊ธฐ๋ณธ ์ „์ œ๊ฐ€ ์žˆ๋‹ค. (์•„๋ž˜์˜ ๊ทธ๋ฆผ์„ ์ฐธ์กฐํ•˜์ž)
1. ์œ„์˜ tape์˜ ๊ธธ์ด๊ฐ€ ๋ฌดํ•œํ•ด์•ผํ•œ๋‹ค.
2. head๋Š” ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค.
3. ํ˜„์žฌ head๊ฐ€ ์œ„์น˜ํ•œ ๊ณณ์˜ symbol ๊ฐ’์„ read ํ•  ์ˆ˜ ์žˆ๊ณ , write ํ•  ์ˆ˜ ์žˆ๋‹ค.

turing machine์˜ time step

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ time step์„ ๊ฑฐ์นœ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.(์œ„์˜ ๊ทธ๋ฆผ ์ฐธ์กฐ)
head์˜ ์œ„์น˜์—์„œ read - write - move(left or right)

๊ทธ๋ž˜์„œ ์กฐ๊ธˆ ๋” ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•˜์—ฌ Example์„ ์‚ดํŽด๋ณด๋ฉด,
head๊ฐ€ ์ž์‹ ์˜ ์œ„์น˜์— ์žˆ๋Š” symbol์ธ a๋ฅผ readํ•˜์˜€๊ณ , 
๊ฑฐ๊ธฐ์— ๋Œ€ํ•ด k๋ผ๋Š” ๊ฐ’์„ write ํ–ˆ์œผ๋ฉฐ, 
์ดํ›„ ์™ผ์ชฝ์œผ๋กœ move ํ–ˆ๋‹ค. 
(*๊ฒฐ๊ตญ์—” ์˜์–ด์— ์ต์ˆ™ํ•ด์ ธ์•ผ ํ›„์— ์ดํ•ดํ•  ๋•Œ ์ข‹๊ธฐ ๋•Œ๋ฌธ์—, ์ตœ๋Œ€ํ•œ ์˜์–ด๋กœ ์ ์—ˆ์Šต๋‹ˆ๋‹ค.)


๊ทธ๋ ‡๋‹ค๋ฉด ์ด๊ฒƒ์œผ๋กœ ์–ด๋–ป๊ฒŒ computation์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด Cmoputableํ•œ ์•„๋ž˜์™€ ๊ฐ™์€ function(ํ•จ์ˆ˜)๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.

f(x,y) = x+y (*x,y๋Š” integers์ •์ˆ˜์ด๋‹ค)


Turing machine์—์„œ๋Š” ์ด๊ฒƒ์„ unary(1์ง„๋ฒ•)์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
(*1์ง„๋ฒ•์˜ ์˜ˆ: 5 = 11111, 2 = 11, 3 = 111)

Input string: x0y
Output string: xy0

(*input์œผ๋กœ x0y๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ์ผ๋ จ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ output์œผ๋กœ xy0์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๋‹ค.)
๋” ์ž์„ธํ•œ ์ดํ•ด๋ฅผ ๋•๊ธฐ์œ„ํ•ด, ์ด๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

turing machine์—์„œ function์˜ computation๊ณผ์ •

*์—ฌ๊ธฐ์„œ โ—‡๋Š” ์‹œ์ž‘๊ณผ ๋์„ ์•Œ๋ฆฌ๋Š” ์—ญํ• ์ด๋ผ๊ณ  ๋ณด๋ฉด๋œ๋‹ค.
*head์˜ q์˜†์— ์ˆซ์ž๋Š” ๋ช‡๋ฒˆ์งธ state์ธ์ง€ ์˜๋ฏธํ•œ๋‹ค.
*์—ฌ๊ธฐ์„œ state๋Š” ๋ฒˆ์—ญํ•˜์—ฌ ์ƒ๊ฐํ•˜๊ธฐ๋ณด๋‹จ ๊ทธ๋ƒฅ state ๊ทธ ์ž์ฒด๋กœ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋ฆผ์—์„œ start ๋ถ€๋ถ„์„ ๋ณด๋ฉด,
initial state(์ฒ˜์Œ state)์—์„œ
head๊ฐ€ โ—‡์˜†์— ์œ„์น˜ํ•˜๊ณ , x์™€ y์‚ฌ์ด์— 0์ด ์œ„์น˜ํ•œ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
(0์€ ๋‘ ์ˆซ์ž๋ฅผ ๋‚˜๋ˆ„๋Š” delimiter(๊ตฌ๋ถ„์ž)์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค)
์ด ๋ชจ์Šต์ด ์œ„์—์„œ ๋ณด์•˜๋˜ input string์ธ

x0y

๊ทธ๋ฆฌ๊ณ  Finish ๋ถ€๋ถ„์„ ๋ณด๋ฉด,
final state(๋งˆ์ง€๋ง‰ state)์—์„œ 
head๊ฐ€ ๋‹ค์‹œ โ—‡์˜†์— ์œ„์น˜ํ•˜๋ฉฐ, x๊ฐ’๊ณผ y๊ฐ’์ด ๋ถ™์–ด์žˆ๊ณ  ๋งˆ์ง€๋ง‰์— 0์ด ์˜จ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์ด ๋ชจ์Šต์ด ์œ„์—์„œ ๋ณด์•˜๋˜ output string์ธ

xy0


unary์˜ ํŠน์„ฑ์ƒ,
๋‹จ์ˆœํžˆ ๋ถ™์—ฌ์„œ ์„ธ์–ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด๋œ๋‹ค๋Š” ํŠน์„ฑ์„ ์ด์šฉํ•œ ๊ฒƒ์ด๋‹ค. 
์œ„์˜ Example๋ฅผ ์‚ดํŽด๋ณด๋ฉด, 
x=2, y=2 ์ผ๋•Œ, unary์œผ๋กœ x=11, y=11๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

*unary๋Š” ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด 1์ด๋ผ๋Š” ๋ง‰๋Œ€๊ธฐ์˜ ๊ฐฏ์ˆ˜๋กœ ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
2๋Š” 1์ด๋ž€ ์ž‘๋Œ€๊ธฐ 2๊ฐœ (2=unary 11)
5๋Š” 1์ด๋ž€ ์ž‘๋Œ€๊ธฐ 5๊ฐœ (5=unary 11111)
๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์œ„์™€ ๊ฐ™์ด add(๋”ํ•˜๊ธฐ)๋ฅผ ํ•  ๋•Œ,
๊ทธ๋ƒฅ 1์ด๋ž€ ์ž‘๋Œ€๊ธฐ ์ˆ˜๋ฅผ ํ•ฉ์ณ์„œ ์„ธ์–ด๋ฒ„๋ฆฌ๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 
2+5 ->unary->11+11111=1111111 -> 7 

๊ทธ๋ž˜์„œ ์ด turing machine์—์„œ๋Š”
๋‹จ์ˆœํžˆ ๋”ํ•˜๊ณ ์ž ํ•˜๋Š” ๋‘ ๊ฐ’์„ 0์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ ,
๋‘ ๊ฐ’ ์‚ฌ์ด์˜ 0์„ ๋์œผ๋กœ ์น˜์›Œ๋ฒ„๋ฆฌ๋ฉด
unary๋กœ ํ‘œํ˜„๋œ ๋‘ ๊ฐ’์ด ์ž๋™์œผ๋กœ add๋˜์–ด ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„๋œ turing machine์—์„œ์˜ ๊ณผ์ •

๊ทธ๋ ‡๋‹ค๋ฉด ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ turing machine์„ ์ด์šฉํ•ด add๋ฅผ ํ•  ๋•Œ ํ•„์š”ํ•œ ๊ณผ์ •์€
head๊ฐ€ ์ฒ˜์Œ์œ„์น˜์—์„œ
1์ด read๋˜๋ฉด ์˜ค๋ฅธ์ชฝ์œผ๋กœ move ๋ฐ˜๋ณต,
0์ด read๋˜๋ฉด 1์„ write,
๋‹ค์‹œ 1์ด read๋˜๋ฉด ์˜ค๋ฅธ์ชฝ์œผ๋กœ move ๋ฐ˜๋ณต,
โ—‡๊ฐ€ read๋˜๋ฉด ์™ผ์ชฝ์œผ๋กœ move,
์ดํ›„ 1์ด read๋˜๋ฉด 0์œผ๋กœ write,
์ด์ œ 1์ด read๋˜๋ฉด ์™ผ์ชฝ์œผ๋กœ move ๋ฐ˜๋ณต,
โ—‡๊ฐ€ read๋˜๋ฉด ์˜ค๋ฅธ์ชฝ์œผ๋กœ move
๊ฐ€ ๋ ๊ฒƒ์ด๋‹ค. (์œ„์˜ ๊ทธ๋ฆผ ์ฐธ์กฐ)
*์ด์ „ ์‹œ๊ฐ„์— ๋ฐฐ์› ๋˜ task๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•(sequential, conditional, iterative)๋ฅผ ํ•จ๊ป˜ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ข‹์„ ๋“ฏ ํ•˜๋‹ค!

 

Universal Turing Machine

์šฐ๋ฆฌ๋Š” ์œ„์—์„œ turing machine์˜ ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด์•˜๋‹ค. 
์ด๋ฒˆ์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ turing machine ์ค‘ ๊ฐ€์žฅ generalํ•œ universal turing machine์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

universal turing machine์˜ ๊ฐ„๋žตํ•œ ๋ชจ์Šต

์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด,
input(์ž…๋ ฅ)์œผ๋กœ ๋ฐ›๋Š” ๊ฒƒ์ด 2๊ฐœ์ธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
T(add), T(mul)๊ณผ a, b, c
universal turing machine์—์„œ๋Š” input์˜ ํ•˜๋‚˜๋กœ
add๊ธฐ๋Šฅ์ด๋‚˜ mul(multiply๊ณฑํ•˜๊ธฐ)๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ turing machine์„ ๋ฐ›๋Š”๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ input์œผ๋กœ ์‹ค์ œ ๊ณ„์‚ฐํ•  data(a,b,c ๊ฐ™์€ ๊ฒƒ๋“ค)๋ฅผ ๋ฐ›๋Š”๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
(*ex: ์ปดํ“จํ„ฐ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค. ์ปดํ“จํ„ฐ๋„ ๋‹จ์ˆœํžˆ ๊ฐ’๋งŒ ์ค€๋‹ค๊ณ  ๋Œ์•„๊ฐ€๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ์–ด์•ผ ๊ฐ’์„ ์ค„ ๋•Œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ,  turing machine์ด๋ž€ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐ›์•„์„œ data๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค)
*์–ด๋ ต๋‹ค๋ฉด turing machine์„ ์‹œํ–‰ํ•˜๋Š” ๋” ํฐ? turing machine์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด๋„ ๋  ๋“ฏ ํ•˜๋‹ค.
A machine that can implement all Turing machines --this is also a Turing machine!

์ด์ฒ˜๋Ÿผ Universal Turing machine์€ ์ž„์˜์˜ Turing machine(program์œผ๋กœ ํ•ด์„ํ•  ์ˆ˜๋„ ์žˆ๋Š”)์„ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ,
computer์™€ ๊ฐ™์ด programmableํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ก ์ ์œผ๋กœ๋Š” ์ด๋Ÿฐ turing machine์„ ๊ณ„์†ํ•ด์„œ ์กฐํ•ฉํ•ด ๋‚˜๊ฐ€๋ฉด ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” computer์™€ ๊ฐ™์€ ๊ฒƒ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
Universal Turing machin is programmable - so is a computer!
-program is part of the input data
-a computer can emulate a Universal Turing Machine and vice versa

 

Halting Problem

์šฐ๋ฆฌ๋Š” ์œ„์—์„œ turing machine์„ ์ด์šฉํ•ด computer๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€ ๋ฐฐ์› ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์ด๋ก ์ ์œผ๋กœ๋Š” turing machine ๋˜ํ•œ computer ๋ž€ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด A.M.Turing์ด ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ computation์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ์„๊นŒ?

์ด์— ๋Œ€ํ•ด์„  ์œ ๋ช…ํ•œ Halting problem์ด๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ๊ธฐ๊ณ„์žฅ์น˜๋“ค์„ ์ด์šฉํ•˜๋‹ค๋ณด๋ฉด, ๊ธฐ๊ณ„์˜ ์ •์ƒ์ž‘๋™์œ ๋ฌด๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. 
ํ•œ ๋งˆ๋””๋กœ ๊ธฐ๊ณ„๊ฐ€ ํ›„์— halting(๋ฉˆ์ถค)๋ ์ง€ ์•ˆ๋ ์ง€ ๋ง์ด๋‹ค.
halting problem์€ ์šฐ๋ฆฌ๊ฐ€ ํ›„์— '๋ชจ๋“ ' ๊ธฐ๊ณ„๋ฅผ halting ๋ ์ง€ ์•ˆ๋ ์ง€ '์ •ํ™•ํžˆ' ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋ƒ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด๋‹ค. 

https://youtu.be/92WHN-pAFCs

์ด์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ ์‚ฌ๊ณ  ์‹คํ—˜์„ ํ†ตํ•ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ๋Š”๋ฐ, ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์œ„์˜ ์˜์ƒ์„ ์ฐธ์กฐํ•˜๋ฉด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

*๋‚˜์˜ ์ƒ๊ฐ

์•„์ฃผ ์ค‘์š”ํ•œ ๊ฐœ๋…์ธ abstraction์— ๋Œ€ํ•ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ์žฅ์ด์˜€๋‹ค.
์ด์ „์— ๋ณธ ๋งŒํ™” ์ค‘์— ํ˜„์žฌ netflex์—๋„ ์žˆ๋Š” 'dr.stone'๋ผ๋Š” ๋งŒํ™”๊ฐ€ ์žˆ๋‹ค. (๋Œ€๋žต ์ง€๊ตฌ๊ฐ€ ๋ฉธ๋งํ–ˆ๊ณ , ๊ทธ ์›ํ‰์ด ๋‹ฌ์— ์žˆ์–ด์„œ ๊ณผํ•™์ฒœ์žฌ๊ฐ€ ๊ตฌ์„๊ธฐ ์‹œ๋Œ€ ๋ถ€ํ„ฐ ๊ณผํ•™์  ๋ฐœ์ „์„ ๊ฑฐ๋“ญํ•ด์„œ ๋‹ฌ๋กœ ํ–ฅํ•˜๋ ค ํ•œ๋‹ค๋Š” ๋‚ด์šฉ์ด๋‹ค.)

์—ฌ๊ธฐ์„œ ์ปดํ“จํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด ๋‚˜์˜จ๋‹ค. ์—ฌ๊ธฐ์„œ ์ด๋“ค์€ ํ˜„๋Œ€์˜ ์ปดํ“จํ„ฐ๋ฅผ ํ‰๋‚ด๋‚ด๊ธฐ ์œ„ํ•ด ๋™๊ณผ ์•„์—ฐ์„ ์„ž์€ ๊ธˆ์†์— ์ „์„ ์„ ๊ฐ๋Š”์‹์œผ๋กœ parametron(์ปดํ“จํ„ฐ์˜ ๊ธฐ์–ต,์—ฐ์‚ฐ ์†Œ์ž)์„ ๋งŒ๋“ค๊ณ , ๊ทธ์™ธ ๋‹ค์–‘ํ•œ ๋ถ€ํ’ˆ์„ ํ†ตํ•ด ๊ฐ„๋‹จํ•œ turing machine๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. 
์ดํ›„ abstraction์˜ ๊ณผ์ •์ด ๋‚˜์˜ค๋Š”๋ฐ, ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ ๊ณผ์ •์„ ์‹œํ–‰ ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋Ÿฌํ•œ turing machine๋“ค์„ ๋ชจ์•„ universal turing machine์„ ๋งŒ๋“ค๊ณ  ๋‹ค์‹œ ์ด๊ฒƒ์„ ๋ช‡ ๋งŒ๊ฐœ์”ฉ ๋งŒ๋“ค์–ด์„œ ํ›จ์”ฌ ๋” ๋ณต์žกํ•œ ๊ณ„์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋Š” turing machine, ํ˜„๋Œ€์˜ ์ปดํ“จํ„ฐ์— ๊ฐ€๊นŒ์šด ๊ฒƒ์„ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. 

์ด์ฒ˜๋Ÿผ ์–ด๋–ค ๊ณผ์ •์„ ํ†ตํ•ด turing machine์ด computation์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๋‹จ์ˆœํžˆ ์—ฌ๊ธฐ์„œ ๋์ด ์•„๋‹ˆ๋ผ ์ด๊ฒƒ์ด abstraction ๋˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ์žฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. 

+์•„๋ฌด๋ž˜๋„ haltling problem ๊ฐ™์€ ์‚ฌ๊ณ ์‹คํ—˜์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋…ผ๋ฆฌ๋ ฅ์„ ๊ฐ–์ถ˜๋‹ค๋ฉด, ์ดํ›„ ์–ด๋–ค problem์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด programming ํ•  ๋•Œ, ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌด์—‡์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋ถˆ๊ฐ€๋Šฅํ•œ์ง€ ๊ณ„ํš์„ ์„ธ์šฐ๋Š”๋ฐ ํฐ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

+abstraction์˜ ๊ฐœ๋…์œผ๋กœ, ์ธ๊ฐ„์ด ๋‡Œ๋ผ๋Š” interface๋ฅผ ์ด์šฉํ•˜์—ฌ motor control ํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ(๋ฌผ๋ก  ๋‡Œ๋งŒ์ด ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ) ๋” ๋งŽ์€ ์•„์ด๋””์–ด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์ด๊ธฐ๋„ ํ–ˆ๋‹ค.

 

+์˜ค๋Š˜์˜ ์˜๋‹จ์–ด

complexity ๋ณต์žก๋„
building block  ๊ตฌ์„ฑ์š”์†Œ
component ์š”์†Œ, ๋ถ€ํ’ˆ
capable of ~ํ•  ์ˆ˜ ์žˆ๋Š”
exactly ํ‹€๋ฆผ์—†์ด, ์ •ํ™•ํžˆ
computation ๊ณ„์‚ฐ
transition ์ดํ–‰
integer ์ •์ˆ˜
unary 1์ง„๋ฒ•
function ํ•จ์ˆ˜
delimiter ๊ตฌ๋ถ„์ž
implement ์‹œํ–‰ํ•˜๋‹ค
description ์„œ์ˆ , ์„ค๋ช…
vice versa ๋ฐ˜๋Œ€๋„ ๊ฐ™๋‹ค, ๊ฑฐ๊พธ๋กœ ํ•ด๋„ ๊ฐ™๋‹ค
emulate ํ‰๋‚ด๋‚ด๋‹ค, ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค
halt ์ค‘๋‹จ, ๋ฉˆ์ถค

 

 

'๐Ÿ’ปComputer > Computer concept&practice' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

4. The Von Neumann Model  (0) 2022.05.09
3. Digital Logic Structures  (0) 2022.04.30
2. Bits, Data Types, and Operations  (0) 2022.04.27
0. Introduction  (0) 2022.04.19