์ดํƒœํ™
ํ™'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)

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

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

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

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

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

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

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

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

ํ™'story

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

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

2022. 10. 20. 03:32

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

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

 

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

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ Basic Arithmetic์˜ ์—ฐ์žฅ์„ ์ธ ํ–‰๋ ฌ๊ณฑ์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ด€์ ์—์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

ํ–‰๋ ฌ์— ๋Œ€ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๊ฐ€ ํ•˜๊ธฐ ์‹ซ์–ด์„œ ๋ฏธ๋ฃจ๊ณ  ์žˆ๋‹ค ์ด์ œ์•ผ ํฌ์ŠคํŒ… ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ–‰๋ ฌ ์ค‘์—์„œ๋„ ๋‘ $n\times{n}$ Matrix์˜ ๊ฒฝ์šฐ๋งŒ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ”Ž ๋‘ $n \times n$ Matrix ๊ณฑํ•˜๊ธฐ ์—ฐ์‚ฐ

 

๋จผ์ € ํ–‰๋ ฌ์˜ ๊ฐ entry๋“ค ๊ฐ„์˜ ์‚ฌ์น™์—ฐ์‚ฐ์€ ๋ชจ๋‘ $O(1)$์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ๋กœ ์•„๋ž˜์˜ ํ–‰๋ ฌ์„ ํ†ตํ•ด ๋‘ $n \times n$ ํ–‰๋ ฌ์„ ๊ณฑํ•˜๋Š” ๋ฐ์— ํ•„์š”ํ•œ ์‹œ๊ฐ„๋ณต์žก๋„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

โœ๏ธ Solution 1

 

์œ„ ์˜ˆ์‹œ์—์„œ $c_1 = a_1b_1 + a_2b_4 + a_3b_7$ ์ด ๋˜๋ฉฐ, ์ด๋Š” ์ด 2๋ฒˆ์˜ addition ๊ณผ 3๋ฒˆ์˜ multiplication ์—ฐ์‚ฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

๋‹ค๋ฅธ entry ๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ™์€ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•œ๋ฐ ๋ชจ๋“  entry์˜ ๊ฐœ์ˆ˜๋Š” 9๊ฐœ์ด๋ฏ€๋กœ $(2 + 3) \times 9$์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฅผ ์ผ๋ฐ˜ํ™” ํ•˜๋ฉด $n - 1$๋ฒˆ์˜ addition ์—ฐ์‚ฐ๊ณผ $n$๋ฒˆ์˜ multiplication ์—ฐ์‚ฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

์ฆ‰, addition ์—ฐ์‚ฐ๊ณผ multiplication ์—ฐ์‚ฐ์€ $O(n)$์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋˜ํ•œ entry์˜ ์ด ๊ฐœ์ˆ˜๋Š” $n^2$๊ฐœ ์ด๋ฏ€๋กœ ์ด ์†Œ๋ชจ์‹œ๊ฐ„์€

 

$$O(n) \times n^2 = O(n^3)$$

 

์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

โœ๏ธ Solution 2

 

Divide and Conquer๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ™์€ ํ–‰๋ ฌ ๊ณฑ์„ ๋” ๋น ๋ฅธ ์‹œ๊ฐ„์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

์œ„์™€ ๊ฐ™์€ $n \times n$ํ–‰๋ ฌ X์™€ Y๊ฐ€ ์กด์žฌํ•  ๋•Œ ์ด๋ฅผ $n/2 \times n/2$ํ–‰๋ ฌ(submatrix) 4๊ฐœ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋‚˜๋ˆ„์–ด์ง„ ํ–‰๋ ฌ์„ ๊ฐ๊ฐ "A ~ H"๋ผ๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋‘ ํ–‰๋ ฌ X์™€ Y๋ฅผ ๊ณฑํ•ด์ ธ ์–ป์–ด์ง„ ํ–‰๋ ฌ์„ XY๋ผ๊ณ  ํ•˜๋ฉด ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ํ–‰๋ ฌ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

์ด์ œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ตฌํ•ด๋ณผ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค.

 

$n/2 \times n/2$ ์—ฐ์‚ฐ์ด (AE, BG, AF, BH, CE, DG, CF, DH) ์ด 8๋ฒˆ ์ง„ํ–‰๋˜๋ฏ€๋กœ  $8T(n/2)$๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋˜ํ•œ submatrixํ•˜๋‚˜๋‹น addition์ด  $(n/2)^2$๋ฒˆ ๋งŒํผ ์ง„ํ–‰๋˜๋ฏ€๋กœ $O(n^2)$์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ Divide and Conquer๋ฅผ ์ด์šฉํ•˜๋ฉด

 

$$T(n) = 8T(n/2) + O(n^2)$$

 

์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ  Master Theorem์— ์กฐ๊ฑด์„ ํ™•์ธํ–ˆ์„ ๋•Œ $log_28 = 3 > 1$ ์ด๋ฏ€๋กœ $T(n)$์˜ ์ผ๋ฐ˜ํ•ด๋Š” $O(n^2)$์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

โœ๏ธ Solution 3

๋” ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ Strassen ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•˜๋Š”๋ฐ ์ด๋Š” ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

 

 

https://ko.wikipedia.org/wiki/%EC%8A%88%ED%8A%B8%EB%9D%BC%EC%84%BC_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

์ŠˆํŠธ๋ผ์„ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ์„ ํ˜•๋Œ€์ˆ˜ํ•™์—์„œ ์ŠˆํŠธ๋ผ์„ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋…์ผ์˜ ์ˆ˜ํ•™์ž ํด์ปค ์ŠˆํŠธ๋ผ์„ผ(Volker Strassen)์ด 1969๋…„์— ๊ฐœ๋ฐœํ•œ ํ–‰๋ ฌ ๊ณฑ์…ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ •์˜์— ๋”ฐ๋ผ n×n ํฌ๊ธฐ์˜ ๋‘ ํ–‰๋ ฌ์„

ko.wikipedia.org

 

 

 

 

์ฐธ๊ณ ๋กœ ํ˜„์žฌ ๊ฐ€์žฅ ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ $O(n^{2.378596})$์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” Selection ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ๋ฐฐ์›Œ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

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

[Algorithm] Dynamic Programming(1) - Warm Up  (0) 2022.11.15
[Algorithm] ๋ถ„ํ• ์ •๋ณต(4) - Selection  (0) 2022.10.20
[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(3) - DFS(2), Biconnected Graph  (0) 2022.10.13
[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(2) - DFS(๊นŠ์ด์šฐ์„ ํƒ์ƒ‰)(1)  (0) 2022.10.08
[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1) - ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ์šฉ์–ด  (0) 2022.10.04
    'Computer Science/Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Algorithm] Dynamic Programming(1) - Warm Up
    • [Algorithm] ๋ถ„ํ• ์ •๋ณต(4) - Selection
    • [Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(3) - DFS(2), Biconnected Graph
    • [Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(2) - DFS(๊นŠ์ด์šฐ์„ ํƒ์ƒ‰)(1)
    ์ดํƒœํ™
    ์ดํƒœํ™
    ๊ณต๋ถ€ํ•˜์ž ํƒœํ™์•„

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