U E D R , A S I H C RSS

TAOCP/Basic Concepts

1. 1.1 Algorithms


1.1. •Œ ๋ฆฌ˜ E(œ ด๋ฆฌ๋“œ˜ •Œ ๋ฆฌ˜(Euclid's algorithm))

~cpp 
–‘˜  •ˆ˜ mณผ nฃผ–ดกŒ„•Œ, ฒƒ๋“ค˜ œ๋Œ€ณต•ˆ˜(greatest common divisor)
(mณผ n„ ๋ชจ๋‘ ๋‚˜๋ˆ„๋Š” ฐ€žฅ ฐ –‘˜  •ˆ˜)๋ฅผ ตฌ•œ‹ค.
E1. [๋‚˜๋จธง€ ตฌ•˜ธฐ] m„ nœผ๋กœ ๋‚˜๋ˆ„  ๋‚˜๋จธง€๋ฅผ rด๋•˜ž.(0 <= r < n)
E2. [ฒƒด 0ฐ€?] r = 0 ด๋ฉด, •Œ ๋ฆฌ˜€ ๋๋‚œ‹ค; nด ๋‹ด๋‹ค.
E3. [„ธฐ] m <- n, n <- r œผ๋กœ „ ••œ‹ค, ธ๋ฆฌ  E1๋‹„๋กœ ๋Œ•„„‹ค.โ– 

~cpp 
Fig 1. •Œ ๋ฆฌ˜ E˜ ˆœ„œ๋„

        |<------------------------------------------------------|
       โ†“                                                       |
--------------------          ------------------ •„‹ˆ˜ค   -------------
| E1.๋‚˜๋จธง€ ตฌ•˜ธฐ |-------->( E2.ฒƒด 0ฐ€? )-------->| E3.„ธฐ |
--------------------          ------------------          -------------
                                        |˜ˆ
                                       โ†“

m = 119 ™€ n = 544 ฐ€ ฃผ–ดกŒ๋‹  •˜ž
E1 ๋‹„—„œ ‹œž‘. m„ nœผ๋กœ ๋‚˜๋ˆ„๋ฉด ๋ชซ€ 0  ๋‚˜๋จธง€๋Š” 119ด๋‹ค. ธ๋Ÿฌ๋ฏ€๋กœ r <- 119
E2 ๋‹„—„œ r โ‰  0 ด๋ฏ€๋กœ  šฉ๋˜ง€ •Š๋Š”๋‹
E3 ๋‹„—„œ m <- 544, n <- 119
ฒƒœผ๋กœ ˜Œ— m < n ์ด๋ฉด ํ•ญ์ƒ m๊ณผ n์ด ๊ตํ™˜๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค
šฐ๋ฆฌ๋Š” ๋‹Œณผ ฐ™€ ƒˆ๋กœšด ๋‹„๋ฅผ ถ”ฐ€•  ˆ˜ žˆ๋‹ค(ผญ •„š”•˜„ •Š๋‹ค)

~cpp 
E0. [m >= n ง€ ™••˜ธฐ] m < n ด๋ผ๋ฉด, m <-> n „ ต™˜•œ‹

E1œผ๋กœ ๋Œ•„ฐ€„œ 544/119 = 4+68/119, ธ๋Ÿฌ๋ฏ€๋กœ r <- 68
‹‹œ E2๋Š”  šฉ๋˜ง€•Š 
E3—„œ m <- 119, n <- 68
‹Œˆœ™˜—„œ r <- 51, m <- 68, n <- 51
‹Œ— r <- 17, m <- 51, n <- 17
๋งˆง€๋ง‰œผ๋กœ 51„ 17๋กœ ๋‚˜๋ˆ„—ˆ„•Œ, r <- 0, ๊ทธ๋Ÿฌ๋ฏ€๋กœ E2์—์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ข…๋ฃŒ๋œ๋‹ค
119™€ 544˜ œ๋Œ€ณต•ˆ˜๋Š” 17ด๋‹


1.2. •Œ ๋ฆฌ˜˜ 5ฐ€ง€ ‘š”•œ Šน•

1) œ •œ„ฑ(Finiteness)
•Œ ๋ฆฌ˜€ œ •œ•œ‹„ ›„— •ƒ ข…๋ฃŒ๋˜–ด••œ‹

2) ๋ช…™•„ฑ(Definiteness)
•Œ ๋ฆฌ˜˜ ฐ ๋‹„๋Š”  •™•žˆ  •˜๋˜–ด••œ‹

3) ž…๋ ฅ(Input)
•Œ ๋ฆฌ˜€ 0œ ƒ˜ ž…๋ „ ฐ€„‹

4) œ ฅ(Output)
•Œ ๋ฆฌ˜€ •˜๋‚˜ ƒ˜ œ „ ฐ€„‹

5) šจœ„ฑ(Effectiveness)
•Œ ๋ฆฌ˜€ ๋ณด†ต šจœ œผ๋กœ ˆ˜–‰๋˜๋„๋ก ธฐ๋Œ€๋œ‹


1.3. •Œ ๋ฆฌ˜˜ œ๋…„ ˆ˜•™  ‘•ฉ๋ก ˜ ด€„๋กœ ๋‚˜ƒ€๋‚ดธฐ

„‚ฐ ธ ๋ฐฉ๋ฒ•(computational method)„ 4Œ˜ (Q,I,ฮฉ,f)๋กœ ˜•‹„ ฐ–ถฐ  •˜•˜ž
Q๋Š” ๋ถ€๋ถ„‘•ฉ I™€ ฮฉ๋ฅผ ฌ••˜๋Š” ‘•ด๋‹
f๋Š” Q—„œ Q žธฐž‹ œผ๋กœ ฐ€๋Š” •ˆ˜ด๋‹
ฮฉ˜ ๋ชจ๋“  ›†Œ q— ๋Œ€•˜—ฌ f(q)๋Š” q™€ ฐ™•„••œ‹ค.
Q : „‚ฐ
I : ž…๋ 
ฮฉ : œ 
f : „‚ฐ œน™
‘•ฉ I˜ ›†Œ x˜ ž…๋ € „‚ฐˆ˜—ด, x0, x1, x2,..., ๋ฅผ ๋‹Œณผ ฐ™ •˜•œ‹
~cpp 
	x0 = x	 	xk + 1 = f(xk) (k >= 0)
ฮฉ— †•˜๋Š” xk — ๋Œ€•˜—ฌ kฐ€ ฐ€žฅ ž‘€  •ˆ˜ผ๋ฉด „‚ฐˆ˜—ด€ k๋‹„—„œ ข…๋ฃŒ๋œ‹  •œ‹ค. ธ๋ฆฌ  ฒฝšฐ— x๋กœ๋ถ€„ฒฐณผ xkฐ€ ƒ„ฑ๋œ‹  •œ‹ค.

•Œ ๋ฆฌ˜ E๋Š” ๋‹Œณผ ฐ™ด๋Ÿฐ ด€„๋กœ ˜•‹™”๋œ‹ค.
Q๋ฅผ ๋ชจ๋“ ‹ผ (n), ๋ชจ๋“  ˆœ„œžˆ๋Š” Œ (m,n), ๋ชจ๋“  ˆœ„œžˆ๋Š” 4Œ (m,n,r,1), (m,n,r,2), (m,n,p,3) (m,n,p๋Š” –‘˜  •ˆ˜, r€ Œ•„‹Œ  •ˆ˜)˜ ‘•ด๋•˜ž.
I๋ฅผ ๋ชจ๋“  Œ (m,n)˜ ๋ถ€๋ถ„‘•ด๋•˜ž.
ฮฉ๋ฅผ ๋ชจ๋“ ‹ผ (n)˜ ๋ถ€๋ถ„‘•ด๋•˜ž.
f๋Š” ๋‹Œณผ ฐ™ •˜๋œ‹ค.
~cpp 
f((m,n)) = (m,n,0,1};	f((n)) = (n);
f((m,n,r,1)) = (m, n, m„ nœผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธง€, 2);
r = 0 ด๋ฉด f((m,n,r,2)) = (n), ธ๋ ‡ง€ •Šœผ๋ฉด (m,n,r,3);
f((m,n,p,3)) = (n,p,p,1).

2. 1.3. MIX

ฑ…˜ ˆ˜๋งŽ€ ๋ถ€๋ถ„—„œ MIX–ธ–ดฐ€ ๋“ฑžฅ•œ‹ค. ๋”ฐ๋„œ ๋…ž๋Š”  ˆ„ ฃผ˜ นŠฒŒ ณต๋ถ€•••œ‹ค.

2.1. 1.3.1. Description of MIX

2.1.1. šฉ–ดณผ ‘œธฐ๋ฒ•

  • Words( Partitial fieslds of wordsฌ•จ)
    —ฌ„ฏ ๋ฐ”Šธ๋กœ ด๋ฃจ–ด„‹ค. •œ ๋ฐ”Šธ—๋Š” 0~63นŒง€ ˆซžฐ€ ๋“ค–ดฐˆ ˆ˜ žˆ๋‹ค. ธ๋ฆผœผ๋กœ ๋‚˜ƒ€๋‚ด๋ฉด ๋‹Œณผ ฐ™๋‹ค.
    0 1 2 3 4 5
    ยฑ Byte Byte Byte Byte Byte
    •„๋“œ  œ•œฃผ–ดงˆ ˆ˜ žˆ๋‹ค. ˜•‹€ (L:R)ด๋‹ค. (L~R˜ ๋ฒ”œ„๋ฅผ ๋œ•œ‹ค.)
    <!> ˜ˆ) (0:0)๋Š” ๋ถ€˜ธ, (1:5)๋Š” ๋ถ€˜ฐ€ —†๋Š” ˆซž, (3:4)๋Š” 3,4๋ฒˆงธ ๋ฐ”Šธ
  • Registers
     ˆง€Šค„ฐ๋Š” •ž— †Œ๋ฌธž r„ ๋ถ™—ฌ ‘œธฐ
    A, X register
    ยฑ Byte Byte Byte Byte Byte
  • I register - rI1~rI6นŒง€ žˆŒ.
    ยฑ Byte Byte
    J register
    + Byte Byte
    ™ธ—
    Overfolw toggle - on, off
    Comparison indicator, - EQUAL, LESS, GREATER
    Input, Output Devices
  • Instruction format
    0 1 2 3 4 5
    ยฑ A A I F C
    C - ๋ช…๋ –ด ฝ”๋“œ(the poeration code)
    F - ๋ช…๋ –ด˜ ๋ณ€ฒฝ(a modification of the operation code). (L:R)ด๋ผ๋ฉด 8L+R = F
    ยฑAA - ๋ฉ”๋ชจ๋ฆฌ ฃผ†Œ(the address)
    I - ธ๋ฑŠค(the index specification). ฐ’ด 1~6œผ๋กœ rI1~rI6— žˆ๋Š” ๋‚ดšฉณผ ๋ฉ”๋ชจ๋ฆฌ ฃผ†Œ๋ฅผ ๋”•
    —ฌธฐ„œ ๋”•„ ฃผ†Œ๋ฅผ M, M— ๋“ค–ดžˆ๋Š” ฐ’„ CONTETNS(M)ด๋  •œ‹ค.
  • Notation
    ~cpp OP ADDRESS, I(F)
    ฐ™€ ˜•‹œผ๋กœ “ด๋‹ค.
    <!> ''˜ˆ) LDA๋Š” ๋ช…๋ –ด ฝ”๋“œฐ€ 8ด๋‹ค.
    LDA 2000, 2(0:3) € || + || 2000 |||| 2 || 3 || 8 || ณผ ฐ™๋‹ค.''

2.1.2. —ฐ‚ฐ

  • Loading operators.
    CONTENTS(M)„ ˆง€Šค„— ๋„ฃ๋Š”๋‹ค.
    LDA, LDX, LDi, LDAN, LDXN, LDiNžˆ๋‹ค.
  • Storing operators.
     ˆง€Šค„˜ ฐ’„ CONTENTS(M)— ๋„ฃ๋Š”๋‹ค.
    STA, STX, STi, STJ, STZฐ€ žˆ๋‹ค.
  • Arithmetic operators.
    ‚ฌน™—ฐ‚ฐ„ •œ‹ค. ADD, SUB, MUL, DIVฐ€ žˆ๋‹ค.
  • Address transfer operators.
    —ฐ‚ฐ—„œ M€ ๋ฉ”๋ชจ๋ฆฌ …€„ ฐ€๋ฆฌ‚คง€ •Š , ธ๋ƒฅ ๋ถ€˜žˆ๋Š” ˆซž๋กœ “ฐธ๋‹ค. ENTr, ENNr, INCr, DECrฐ€ žˆ๋‹ค. ( r€ A, X, 1~6)
    <!> ˜ˆ) ENTA 2000 - > rA || + || 0 || 0 || 0 || 2000 ||
  • Comparison operator
     ˆง€Šค„™€ CONTENTS(M)„ ๋น„ต•„œ LESS, GREATER, EQUAL„ „ ••˜๋Š” ๋ช…๋ –ดด๋‹ค. CMPA, CMPX, CMPiฐ€ žˆ๋‹ค. CMPi๋ฅผ • •Œ๋Š” •ž— „ž๋ฆฌฐ€ 0ด๋  ฐ€ ••œ‹ค.
  • Jump operators.
    Mฐ€๋ฆฌ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ …€๋กœ  ”„•œ‹ค. JSJ๋ฅผ ๋นผ๋ฉด  ”„๋ฅผ •˜๋ฉด„œ  ”„ ๋ช…๋ –ด ๋‹Œ œ„˜๋ฅผ rJ—  €žฅ•œ‹ค. the comparison indicator๋ฅผ šฉ•˜ฑฐ๋‚˜(JL, JE, JG, JGE, JLE, JNE) , ๋ ˆง€Šค„ฐ(JrN, JrZ, JrP, JrNN, JrNZ, JrNP)๋ฅผ šฉ•œ‹ค.
  • Miscellaneous operators.
    ‹œ”„Šธ ๋ช…๋ € rA™€ rX๋ฅผ ‚ฌšฉ•œ‹ค. SLA, SRA, SLAX, SRAX, SLC, SRCฐ€ žˆ๋‹ค. M€ ‹œ”„Šธ•˜๋Š” šŸˆ˜๋ฅผ ๋‚˜ƒ€๋‚ธ๋‹ค.
    MOVE๋ช…๋ € F๋งŒผ CONTENTS(M)„ rI1ฐ€๋ฆฌ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ …€๋กœ ฐ’„ ๋ณต‚ฌ•œ‹ค.
    <!> ''˜ˆ1) rI1 = 1001ผ ๋•Œ MOVE 1000,(3)
    CONTENTS(1000) -> CONTENTS(1001), rI1 = 1002
    CONTENTS(1001) -> CONTENTS(1002), rI1 = 1003
    CONTENTS(1002) -> CONTENTS(1003), rI1 = 1004''
    ธ๋Ÿผ ๋‹Œ—” –ด๋–ปฒŒ ๋˜๋‚˜?
    <!> ˜ˆ2) rI1 = 2000ผ ๋•Œ MOVE 1000,(3)
    ''CONTENTS(1000) -> CONTENTS(2000), rI1 = 2001
    CONTENTS(1001) -> CONTENTS(2001), rI1 = 2002
    CONTENTS(1002) -> CONTENTS(2002), rI1 = 2003''
    (rI1ฐ’‘„‘„ ๋ฐ”๋€Œ๋Š”ฒŒ •„‹ˆ๋ผ ๋‹ค ๋๋‚˜  F๋งŒผ ๋”•„‹  ƒฐ•˜๋ฉด๋ผ --„™˜)
  • NOP ๋ช…๋ € •„๋ฌดฒƒ๋„ •˜ง€ •Š๋Š”๋‹ค.
    HLT ๋ช…๋ € ธฐ„๋ฅผ ๋ฉˆ˜‹ค(The machine stops.)
  • Input-output opertors.
    •„𔕠•Œ ๋ณด๋   ƒ๋žต–ˆ๋‹ค.
  • Conversion operators.
    NUM€ rAX๋ฅผ ฐ€ง€  ˆซž๋กœ ๋ฐ”พธ–ด rA—  €žฅ•œ‹ค. ฐ ๋ฐ”Šธฐ€ •œ ž๋ฆฌ๋กœ ๋ฐ”๋€Œ๋Š”๋ฐ, ˜ ž๋ฆฌ๋งŒ ฐ€ง€  ๋ฐ”พผ๋‹ค(10 -> 0, 23->3 )
    CHAR๋Š” rA๋ฅผ ฐ€ง€  ๋ฌธž ฝ”๋“œ๋กœ ๋ฐ”พธ–ด rAX—  €žฅ•œ‹ค.
  • Timing
    ฐ ๋ช…๋ –ด๋Š” ‹–‰ ‹œ„(excution time)žˆ๋‹ค.

2.2. 1.3.3 Applications to Permutations

MIX ”„๋กœธ๋žจ˜ ˜ˆ œ๋ฅผ ๋ณด—ฌค€๋‹ค. ‘š”•œ ˆœ—ด˜ „งˆ(properties of permutations)„ †Œœ•œ‹ค.

ˆœ—ด€ abcdef๋ฅผ žฌ๋ฐฐ—ด(rearrangement)ด๋‚˜ ด๋ฆ„๋ฐ”พธธฐ(renaming)๋ฅผ •„œ –ป๋Š”๋‹  ๋ณผ ˆ˜ žˆ๋‹ค. ด๋ฅผ ๋‹Œณผ ฐ™‘œ‹œ•  ˆ˜ žˆ๋‹ค.(p.164ฐธกฐ)
( a b c d e f )
( c d f b e a )
ˆœ™˜ ‘œ‹œ(a cycle notation)๋กœ “ฐ๋ฉด ๋‹Œณผ ฐ™๋‹
( a c f ) ( b d )
•„ค : aฐ€ c๋กœ ๋ฐ”๋€Œ๋Š” ฒƒ(a goes to c)„ a->c๋  ‘œ‹œ•œ‹ค. ๋”ฐ๋„œ œ„˜ ‘œ˜„€ a->c->f->a, b->d->b๋ฅผ ๋‚˜ƒ€๋‚ธ๋‹ค.e->eฐ™ด ๋ณ€•˜ง€ •Š๋Š” ฒƒ€ ƒ๋žต•œ‹ค.

2.2.1. Products of permutations

‘ ˆœ—ด„ ณฑ•œ‹ค. (•„•ˆ˜™€ ๋น„Š•˜‹ค.)
(a b c d e f ) ร— (a b c d e f )
(c d f b e a ) (b d c a f e )
= (a b c d e f )
(c a e d f b )
ด๋ฅผ a cycle notationœผ๋กœ “ฐ๋ฉด
(a c f ) (b d )(a b d )(e f) = (a c e f b)
ณผ •€ ™ผชฝ๋ถ€„‹œž‘•„œ ˜ค๋ฅธชฝœผ๋กœ ฐ€๋ฉด„œ ฐพ๋Š” ๋ฐฉ‹ด๋‹ค. a๋ถ€„‹œž‘•˜๋ฉด a->c , c—„œ ‹œž‘•˜๋ฉด c->f->eด๋Ÿฐ ‹œผ๋กœ ฐพ„ ˆ˜ žˆ๋‹ค. ณผ •„ ปด“จ„ฐ๋กœ ‹œ๋„•ด๋ณดž.

2.2.2. Algorithm A

A1. ๋ชจ๋“  ™ผชฝ „˜— ” „ ๋‚จธด๋‹ค. ˜ค๋ฅธชฝ „˜ธ๋ฅผ ™ผชฝ „˜ธ ๋‹Œ ๋ฌธž๋กœ ๋ฐ”พธ  ” „ ๋‚จธด๋‹ค.
˜ˆ) (a c f g) -> (a c f g a
A2. ™ผชฝ—„œ ˜ค๋ฅธชฝœผ๋กœ ฐ€๋ฉด„œ ” —†๋Š” ฒซ๋ฒˆงธ ๋ฌธž๋ฅผ START๋  •œ‹ค. ™ผชฝ „˜™€ ธ ๋ฌธž๋ฅผ œ •˜  ” „ ๋‚จธด๋‹ค. ๋ชจ๋“  ๋ฌธž— ” ด ๋‚จ„ ฒฝšฐ ข…๋ฃŒ•œ‹ค.
A3. ๋‹Œ๋ฌธž๋ฅผ CURRENT๋กœ „Œ…•œ‹ค.
A4. ˜ค๋ฅธชฝœผ๋กœ ฐ€๋ฉด„œ CURRENT™€ ฐ™€ ๋ฌธž๋ฅผ ฐพ๋Š”๋‹ค. ฐพ€ ฒฝšฐ ” „ ๋‚จธฐ  A3๋กœ „‹ค. (๋ชป ฐพ  ˜ค๋ฅธชฝ ๋นŒง€ ฐ€๋ฉด A5๋กœ „‹ค.)
A5. STARTโ‰  CURRENTด๋ฉด CURRENT๋ฅผ œ •˜  ‹ ™ผชฝ๋ถ€„‹œž‘•„œ A4๋กœ „‹ค.( ฐ™œผ๋ฉด A6๋กœ „‹ค.)
A6. (™„ „•œ ‚ฌด„ ฐพ•˜œผ๋ฏ€๋กœ) ˜ค๋ฅธชฝ „˜ธ๋ฅผ ๋‹  A2๋กœ „‹ค.
* Timing
ž˜ ๋ชจ๋ฅด ‹ค.

2.2.3. Another Approach(Algorithm B)

What is this computer-oriented method for permutation multipulication?
˜ค๋ฅธชฝ—„œ ™ผชฝœผ๋กœ ˜ค๋ฉด„œ‹„ ฐพ๋Š” ๋ฐฉ๋ฒ•ด๋‹ค.
(—ฌธฐ„œ๋Š” ฑ…— žˆ๋Š” Table2(p.173)๋ฅผ ๋ด••œ‹ค. „ธ๋กœ •œ „ด Ti๋ฅผ ๋‚˜ƒ€๋‚ธ๋‹ค. ธ ๋ฐ–— i, j, Z ฐ’„  –ด ๋†“œผ๋ฉด ••  ˆ˜ žˆ๋‹ค. n€ ๋ฌธž˜ œˆ˜ด๋‹ค.)
B1. ๋ชจ๋“  1โ‰คkโ‰คn— ๋Œ€•„œ Tk โ† k. ˜ค๋ฅธชฝ๋ถ€„„ ค€๋น„๋ฅผ •œ‹ค.
B2. ‹„ ˜ค๋ฅธชฝ๋ถ€„•˜๋‚˜”ฉ œผ๋ฉด„œ
) ด๋ฉด Zโ†0•˜  B2๋ฐ˜๋ณต
( ด๋ฉด B4๋กœ.
™ธ—๋Š” iธ xi๋ฅผ ฐ€ง€  B3๋กœ
B3. Zโ†”Ti๋ฅผ •˜  ๋‚˜„œ Ti = 0ด๋ฉด jโ†i๋ฅผ •œ ๋’ค B2๋กœ.
B4. Tj โ† Z ›„— B2๋กœ.
  • Timing
    —ฐŠต๋ฌธ œ10— žˆ๋‹ค.

2.2.4. Inverse

ˆœ—ด —ฐ‚ฐ„ ›๋ž˜๋Œ€๋กœ ๋Œ๋ฆฌ๋Š” ˆœ—ด(—ญ–‰๋ ณผ ๋น„Š•˜‹ค.)
๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ“ฐ๋ฉด ‰ฝฒŒ •ฒฐ( Y[Xk โ† k )
•˜ง€๋งŒ žฌ๋ฏธ‚ผ•„ nใ…ฃ ๋งคšฐ ฌ  ๋‚จ๋Š” ๋ฉ”๋ชจ๋ฆฌฐ€ —†๋‹  •ด๋ณดž.

2.2.5. Algorithm I

(ด๋ฒˆ—๋„ Table 3(p.177)๋ฅผ ๋ณด๋ฉด„œ •˜๋ฉด ๋œ‹ค.)

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:09
Processing time 0.0367 sec