Computer Science/Algorithms

μ€‘κ΅­μΈμ˜ λ‚˜λ¨Έμ§€ 정리(CRT;Chinese Remainder Theorem)

metamong 2023. 2. 26.

 

πŸ™†πŸ½‍♀️ μ–Έμ  κ°€ ν•œ λ²ˆμ€ μ •ν™•νžˆ μ •λ¦¬ν•˜κ³ , μˆ™μ§€ν•΄μ•Ό ν•  μ•Œκ³ λ¦¬μ¦˜ 'μ€‘κ΅­μΈμ˜ λ‚˜λ¨Έμ§€ 정리'

 

πŸ™†πŸ½‍♀️ 이둠을 μ •ν™•νžˆ μ•Œκ³ , μ—¬λŸ¬ μˆ˜ν•™ λ¬Έμ œμ— μ μš©ν•΄ λ³΅μž‘ν•œ 문제λ₯Ό μ‰½κ²Œ ν’€μ–΄λ³΄μž


합동식

πŸ™†πŸ½‍♀️ λŒ€μˆ˜ν•™μ—μ„œ 합동인 두 μˆ˜λŠ”, μ–΄λ–€ 수둜 λ‚˜λˆ„μ—ˆμ„ λ•Œ λ‚˜λ¨Έμ§€κ°€ 같은 두 수λ₯Ό λœ»ν•œλ‹€.

 

→ ex) 예λ₯Ό λ“€μ–΄ 12와 26은 7둜 λ‚˜λˆ„μ—ˆμ„ λ•Œ λ‚˜λ¨Έμ§€κ°€ 5μ΄λ―€λ‘œ μ•„λž˜μ™€ 같은 기호둜 μ“Έ 수 μžˆλ‹€.

$$12\equiv 26\;(mod\;7)$$

πŸ™†πŸ½‍♀️ 즉, aλ₯Ό p둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€μ™€ bλ₯Ό p둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°€ κ°™λ‹€λ©΄,

$$a\equiv b\;(mod\;p)$$

πŸ™†πŸ½‍♀️ 이λ₯Ό μ‹μœΌλ‘œ ν‘œν˜„ν•œλ‹€λ©΄,

$a=pn+b$

* ν•©λ™μ‹μ˜ μ„±μ§ˆ

β‘  λ§μ…ˆμ€ μ–Έμ œλ‚˜ 성립 (λ™μΌν•œ 수λ₯Ό λ”ν•˜λ©΄ λ™μΌν•œ 수의 λ‚˜λ¨Έμ§€λŠ” λ‹Ήμ—°νžˆ λ™μΌν•˜λ―€λ‘œ 성립)

$$a \equiv b\;(mod \; m) \Leftrightarrow a+c\equiv b+c\;(mod\;m)$$

 

β‘‘ 즉 λΊ„μ…ˆλ„ 성립 (μœ„μ—μ„œ cλ₯Ό λΉΌλ©΄ λœλ‹€)

 

β‘’ κ³±μ…ˆλ„ μ–Έμ œλ‚˜ 성립 (λ™μΌν•œ 수λ₯Ό κ³±ν•˜λ©΄ 

$$a \equiv b\;(mod \; m) \Leftrightarrow a*c\equiv b*c\;(mod\;m)$$

→ 증λͺ…

$$a \equiv b\;(mod\;m)\Leftrightarrow c*m+d\equiv e*m+d\;(mod\;m)$$

μ–‘ 변에 kλ°°λ₯Ό λ”ν•˜λ©΄

$$c*m*k+d*k\equiv e*m*k+d*k\;(mod\;m)\Leftrightarrow a*k\equiv b*k\;(mod\;m)$$

 

β‘£ λ‚˜λˆ—μ…ˆμ€ c와 m이 μ„œλ‘œμ†Œμ΄λ©΄ 성립

$$a*c\equiv b*c\;(mod\;m)\Leftrightarrow a\equiv b\;(mod\;m)$$

 

β‘€ modularκΉŒμ§€ λ‚˜λˆˆλ‹€λ©΄ 무쑰건 성립

$$a*c\equiv b*c\;(mod\;m*c)\Leftrightarrow a\equiv b\;(mod\;m)$$

μ€‘κ΅­μΈμ˜ λ‚˜λ¨Έμ§€ 정리

πŸ™†πŸ½‍♀️ μ •μ˜

 "$m_1, m_2, ... , m_n$κ°€ μŒλ§ˆλ‹€ μ„œλ‘œμ†Œμ΄λ©΄, λ‹€μŒ 연립 합동식

$$x\equiv a_1\;(mod\;m_1)$$

$$x\equiv a_2\;(mod\;m_2)$$

...

$$x\equiv a_n\;(mod\;m_n) $$

은  $mod\; m_1\ast m_2 \ast ... \ast m_n$에 λŒ€ν•΄ μœ μΌν•œ ν•΄λ₯Ό 가진닀."

 

πŸ™†πŸ½‍♀️ μ€‘κ΅­μΈμ˜ λ‚˜λ¨Έμ§€ 정리 μœ„ 합동식에 λŒ€ν•΄ μœ μΌμ„± & μ‘΄μž¬μ„±μ€ 증λͺ…λ˜μ—ˆμœΌλ‹ˆ, ν•΄λ‹Ή ν•΄λ₯Ό μ°ΎλŠ” μ•Œκ³ λ¦¬μ¦˜μ„ μ•Œμ•„μ•Ό ν•œλ‹€

(μ€‘κ΅­μΈμ˜ λ‚˜λ¨Έμ§€ 정리 증λͺ… μƒλž΅)

 

πŸ™†πŸ½‍♀️

β‘  n=2인 경우 ν•΄λ₯Ό 찾을 수 μžˆλ‹€λ©΄, n > 2인 κ²½μš°λŠ” μ‰½κ²Œ ν•΄κ²° κ°€λŠ₯

β‘‘ n>2인 경우 ν•΄μ˜ 쑴재 여뢀도 n=2인 경우만 ν•  수 있으면 νŒλ³„ κ°€λŠ₯

n=2인 경우

πŸ™†πŸ½‍♀️ n=2에 μ£Όλͺ©ν•˜λ©΄

→ $m_1, m_2$κ°€ μ„œλ‘œμ†Œμ΄λ©΄ λ‹€μŒ 연립 합동식

$$x\equiv a_1\;(mod\;m_1)$$

$$x\equiv a_2\;(mod\;m_2)$$

은 $mod \; m_1m_2$에 λŒ€ν•΄ μœ μΌν•œ ν•΄λ₯Ό 가진닀.

 

πŸ™†πŸ½‍♀️ μœ„ 연립 합동식을 ν’€μ–΄ μ“°λ©΄

$$x \equiv a_1(mod\;m_1) \leftrightarrow x = m_1y+a_1$$

두 번째 식과 μ—°λ¦½ν•˜λ©΄ ($m_1, m_2$κ°€ μ„œλ‘œμ†ŒμΌ λ•Œ)

$x = m_1y + a_1 \equiv a_2 (mod \; m_2) \Leftrightarrow y \equiv (m_1)^{-1}(a_2 - a_1) (mod \; m_2)$

($m_1^{-1}$은 $mod \; m_2$에 λŒ€ν•œ κ³±μ…ˆμ˜ 역원)

 

$t = (m_1)^{-1}(a_2 - a_1)$둜 두면,

$y = m_2n + t$꼴이고, $x = m_1y + a_ 1 = m_1m_2n + m_1t + a_1$

 

λ”°λΌμ„œ,

$x \equiv m_1t + a_1 (mod \;m_1m_2)$

 

πŸ™†πŸ½‍♀️ λ§Œμ•½, $m_1, m_2$κ°€ μ„œλ‘œμ†Œκ°€ 아닐 경우

두 번째 식과 μ—°λ¦½ν•˜λ©΄ ($m_1, m_2$κ°€ μ„œλ‘œμ†ŒμΌ λ•Œ)

$x = m_1y + a_1 \equiv a_2 (mod \; m_2) \Leftrightarrow m_1y \equiv a_2 - a_1 (mod \; m_2)$

 

μ΄λŠ” μ•„λž˜μ™€ 같이 λ‚˜νƒ€λ‚Ό 수 있고,

$m_1y = m_2k + (a_2 - a_1)$

 

$m_1, m_2$λŠ” μ„œλ‘œμ†Œκ°€ μ•„λ‹ˆλ―€λ‘œ 각각 $gcd(m_1,m_2)$의 배수

λ”°λΌμ„œ, μœ„μ˜ yκ°€ 쑴재 ↔ $a_2 - a_1$이 $gcd(m_1,m_2)$의 배수

 

λ”°λΌμ„œ, 양변을 $gcd(m_1,m_2)$둜 λ‚˜λˆ„λ©΄ (modular 포함)

$m_1y \equiv a_2 - a_1 (mod\;m_2) \Leftrightarrow (m_1/gcd(m_1,m_2))y \equiv (a_2 - a_1)/gcd(m_1,m_2)\;(mod\;m_2/gcd(m_1,m_2))$

 

πŸ™†πŸ½‍♀️ 결과적으둜 $m_1, m_2$κ°€ μ„œλ‘œμ†ŒμΈ κ²½μš°μ™€ 식이 같아짐을 μ•Œ 수 μžˆλ‹€.

μ˜ˆμ‹œ

β‘  

$$x \equiv 4\;(mod\;20)$$

$$x \equiv 5\;(mod\;24)$$

 

→ $x = 20y +4$λ₯Ό 두 번째 합동식에 λŒ€μž…

→ $20y +4 \equiv 5\;(mod\;24) \Leftrightarrow 20y \equiv 1\;(mod\;24)$

→ $20y = 24k + 1$둜, ν•΄κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ

 

β‘‘

$$x \equiv 11\;(mod\;20)$$

$$x \equiv 15\;(mod\;24)$$

 

→ $x = 20y +11$λ₯Ό 두 번째 합동식에 λŒ€μž…

→$20y +11 \equiv 15\;(mod\;24) \Leftrightarrow 20y \equiv 4\;(mod\;24)\Leftrightarrow 5y \equiv 1\;(mod\;6) \Leftrightarrow y \equiv 5\;(mod\;6)$

→ $y = 6k + 5$ λŒ€μž…ν•˜λ©΄ $x = 20y + 11 = 20(6k + 5) + 11 = 120n + 111$

→ $x \equiv 111\;(mod\;120)$

 

β‘’ μ€‘κ΅­μΈμ˜ λ‚˜λ¨Έμ§€ 정리 μ˜ˆμ‹œ

→ 주어진 μ„Έ 개의 연립 합동식을 λ§Œμ‘±ν•˜λŠ” xλ₯Ό κ΅¬ν•œλ‹€

$$x \equiv {\color{Red} 2}\;(mod\;3)$$

$$x \equiv {\color{Red} 3}\;(mod\;5)$$

$$x \equiv {\color{Red} 2}\;(mod\;7)$$

→ 각 ν•©λ™μ‹μ—μ„œ λ‹€λ₯Έ modular듀을 κ³±ν•œλ‹€. (ν•©λ™μ‹μ˜ κ²°κ³ΌλŠ” λͺ¨λ‘ 1둜 μ„€μ •)

$${\color{Red} {35}}*x_1 \equiv 1\;(mod\;3)$$

$${\color{Red} {21}}*x_2 \equiv 1\;(mod\;5)$$

$${\color{Red} {15}}*x_3 \equiv 1\;(mod\;7)$$

→ κ΅¬ν•œ 합동식을 μ•Œλ§žκ²Œ ν‘Όλ‹€.

$$x_1 \equiv {\color{Red} 2}\;(mod\;3)$$

$$x_2 \equiv {\color{Red} 1}\;(mod\;5)$$

$$x_3 \equiv {\color{Red} 1}\;(mod\;7)$$

각각 λΉ¨κ°„μƒ‰μ˜ 숫자λ₯Ό ν•©λ™μ‹λ³„λ‘œ κ³±ν•œ λ’€ λ”ν•œ κ²°κ³Όκ°€ λͺ¨λ“  modularλ₯Ό κ³±ν•œ κ°’κ³Ό 합동

$$x \equiv 2*35*2 + 3*21*1 + 2*15*1 \equiv 233 \equiv {\color{Red} {23}}\;(mod\;105)$$


* 좜처1) <합동식> https://m.blog.naver.com/a4gkyum/220676133854

* 좜처2) kaist <μ€‘κ΅­μΈμ˜ λ‚˜λ¨Έμ§€ 정리> https://youtu.be/mOYl_pkNEAE

* 좜처3) KMO 바이블 <μ€‘κ΅­μΈμ˜ λ‚˜λ¨Έμ§€ 정리> https://youtu.be/5vQsSBK60Vk

* 좜처4) blog https://blog.naver.com/kks227/221635322468

 

'Computer Science > Algorithms' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

πŸ₯­Selection Sort  (0) 2023.07.26
Divide&Conquer(DAC)  (0) 2023.03.20
πŸ”ΈCoordinate CompressionπŸ”Έ  (0) 2023.01.24
πŸ«‚ Prefix Sum  (0) 2023.01.18
Regular Expression  (0) 2023.01.11

λŒ“κΈ€