์ดํƒœํ™
ํ™'story
์ดํƒœํ™
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (171)
    • TW (39)
    • AI (47)
      • ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ (10)
      • Kaggle (2)
      • Machine Learning (26)
      • Computer Vision (0)
      • Deep Learning (0)
      • ROS2 (7)
    • Computer Science (29)
      • Data Structure (0)
      • Algorithm (18)
      • Computer Architecture (5)
      • SOLID (0)
      • System Programing (6)
    • LOLPAGO (10)
      • ํ”„๋ก ํŠธ์—”๋“œ (10)
      • ๋ฐฑ์—”๋“œ (0)
    • BAEKJOON (2)
    • React (5)
    • ์–ธ์–ด (8)
      • C++ (8)
    • GIT (0)
    • MOGAKCO (19)
    • ๋ฏธ๊ตญ ์—ฌํ–‰๊ธฐ (3)
    • etc. (7)
      • Blog (2)
      • ์ฝœ๋ผํ†ค (2)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Ai
  • ๋ฐฑ์ค€
  • ๋จธ์‹ ๋Ÿฌ๋‹
  • NLP
  • C++
  • react
  • computerscience
  • ๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ•
  • tw
  • ๋”ฅ๋Ÿฌ๋‹
  • algorithm
  • baekjoon
  • ML
  • LOLPAGO
  • ๊ธฐ๊ณ„ํ•™์Šต
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ROS2
  • kaggle
  • computer architecture
  • pytorch

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
์ดํƒœํ™

ํ™'story

[Algorithm] ๋ถ„ํ• ์ •๋ณต(2) - Multiplication
Computer Science/Algorithm

[Algorithm] ๋ถ„ํ• ์ •๋ณต(2) - Multiplication

2022. 9. 29. 20:57

๐Ÿค” ๋ถ„ํ• ์ •๋ณต

๋ถ„ํ• ์ •๋ณต์ด๋ž€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•œ ๋’ค ๋ถ„ํ• ๋œ ๋ฌธ์ œ๋“ค์„ ์žฌ๊ท€์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜์—ฌ ํ•ด๋‹น ๋‹ต์„ ์ ์ ˆํ•˜๊ฒŒ ์กฐํ•ฉํ•˜์—ฌ ํฐ ๋ฌธ์ œ์˜ ๋‹ต์„ ์ œ์‹œํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋•Œ ๋ถ„ํ• ๋œ ๋ฌธ์ œ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ํฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ Conquer์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ถ„ํ• ์ •๋ณต์˜ Multiplication ์˜ˆ์‹œ๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ”Ž Multiplication

๋‘ n ๋น„ํŠธ ์ด์ง„์ˆ˜์ธ $x$์™€ $y$๋ฅผ ๊ณฑํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

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

 

ํŽธ์˜์ƒ $n$์€ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ ๊ผด์ด๋ผ ๊ฐ€์ •ํ•˜๊ณ , $x$์˜ ์™ผ์ชฝ $n/2$ ๋น„ํŠธ ๋ถ€๋ถ„๊ณผ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์„ ๊ฐ๊ฐ $x_L, x_R$์ด๋ผ๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋งˆ์ฐฌ๊ธฐ์ž๋กœ $y_L, y_R$์„ ์ •์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

$x = 1 0 1 1 0 1 1 0,  y = 1 0 0 1 1 1 0 0$๋ผ๋Š” ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด Multiplication์„ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

$x_L, x_R, y_L, y_R$์€ ๊ฐ๊ฐ์˜ ์ •์˜์— ์˜ํ•ด $x, y$๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

$$x = 2^{\frac{n}{2}}x_L + x_R$$

$$x = 2^{\frac{n}{2}}y_L + y_R$$

 

๋”ฐ๋ผ์„œ $x*y = (2^{\frac{n}{2}}x_L + x_R)(2^{\frac{n}{2}}y_L + y_R) = 2^nx_Ly_L + 2^{\frac{n}{2}}(x_Ly_R + x_Ry_L) + x_Ry_R$๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋•Œ $x * y$์€ Main Problem $x_Ly_L, x_Ly_R, x_Ry_L, x_Ry_R$์€ Subproblem ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์œ„์˜ ์‹์— ๋”ฐ๋ผ $x, y$๋ฅผ ๊ณฑํ•˜๋Š” ๋ฌธ์ œ๋Š” ๋‘ $n/2$ ๋น„ํŠธ ์ด์ง„์ˆ˜๋ฅผ ๊ณฑํ•˜๋Š” Subproblem 4๊ฐœ + shift์—ฐ์‚ฐ $n + n/2$๋ฒˆ add์—ฐ์‚ฐ 3๋ฒˆ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ๋‘ $n$๋น„ํŠธ ์ด์ง„์ˆ˜ $x, y$๋ฅผ ๊ณฑํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ $T(n)$์ด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ

 

$$T(n) = 4T(n/2) + O(n)$$

 

๋ผ๋Š” ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋•Œ Master Theorem์—์„œ $a = 4, b = 2, d = 1$์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ $T(n) = O(n^2)$์ด ๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ”Ž Gauss's Trick

๋” ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์œ„์˜ ์‹์„ ์กฐ๊ธˆ ๋ณ€ํ˜•ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฅผ ์šฐ๋ฆฌ๋Š” 'Gauss's Trick'์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค

 

 $x*y = (2^{\frac{n}{2}}x_L + x_R)(2^{\frac{n}{2}}y_L + y_R) = 2^nx_Ly_L + 2^{\frac{n}{2}}(x_Ly_R + x_Ry_L) + x_Ry_R$

 

์˜ ์‹์—์„œ $(x_Ly_R + x_Ry_L)$๋ฅผ $(x_L + x_R)(y_L + y_R) - x_Ly_L - x_Ry_R$์ด๋ผ๊ณ  ๋ณ€ํ˜•ํ•ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ $(x_L + x_R)(y_L + y_R) = x_Ly_R + x_Ry_L + x_Ly_L + x_Ry_R$์ด๋ผ๋Š” ์„ฑ์งˆ์„ ์ด์šฉํ•˜๋ฉด $x, y$์˜ ๊ณฑ์€ ๋‘ n๋น„ํŠธ ์ด์ง„์ˆ˜๋ฅผ ๊ณฑํ•˜๋Š” subproblem 3๊ฐœ{$(x_L + x_R)(y_L + y_R), x_Ly_L, x_Ry_R$} ๊ณผ ๊ธฐํƒ€ $O(n)$์—ฐ์‚ฐ๋“ค๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฅผ ์ˆ˜๋„ ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

$x, y$๋ฅผ ๊ณฑํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ $T(n)$์ด๋ผ๊ณ  ํ•˜๋ฉด $T(n) = 3T(n/2) + O(n)$์ž…๋‹ˆ๋‹ค.

 

์œ„ ์‹์˜ ์ผ๋ฐ˜ํ•ด๋Š” Master Theorem์— ์˜ํ•ด $T(n) = O(n^{log_23) ≈ O(n^{1.59})$๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

 

 

ํ˜„์žฌ ์ œ์ผ ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ $O(nlogn)$์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์ฐธ๊ณ ๋กœ ์•Œ์•„๋‘์„ธ์šฉ.

 

 

 

 

 

 

 

 

 

 

'Computer Science > Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1) - ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ์šฉ์–ด  (0) 2022.10.04
[Algorithm] ๋ถ„ํ• ์ •๋ณต(5) - Median of Medians  (0) 2022.10.04
[Algorithm] ๋ถ„ํ• ์ •๋ณต(1) - Master Theorem๊ณผ ์ผ๋ฐ˜ํ•ด  (0) 2022.09.28
[Algorithm] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ(2) - Basic Arithmetic  (0) 2022.09.28
[Algorithm] Master Theorem ๋ง›๋ณด๊ธฐ  (0) 2022.09.14
    'Computer Science/Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1) - ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ์šฉ์–ด
    • [Algorithm] ๋ถ„ํ• ์ •๋ณต(5) - Median of Medians
    • [Algorithm] ๋ถ„ํ• ์ •๋ณต(1) - Master Theorem๊ณผ ์ผ๋ฐ˜ํ•ด
    • [Algorithm] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ(2) - Basic Arithmetic
    ์ดํƒœํ™
    ์ดํƒœํ™
    ๊ณต๋ถ€ํ•˜์ž ํƒœํ™์•„

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”