Seungjae Lee 2022. 8. 27. 23:25

์šฉ์–ด

  1. ๋ฐฐ์—ด: ์ธ๋ฑ์Šค์™€ ์›์†Œ๊ฐ’(ใ€ˆindex, valueใ€‰)์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ์ด๋ฉฐ, ์ •์˜๋œ ๊ฐ ์ธ๋ฑ์Šค๋Š” ๊ทธ ์ธ๋ฑ์Šค์™€ ๊ด€๋ จ๋œ ๊ฐ’์„ ์ •์˜ํ•จ
  2. 2์ฐจ์› ๋ฐฐ์—ด: ์›์†Œ๊ฐ’์„ ํŠน์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ธ๋ฑ์Šค๊ฐ€ ๋‘ ๊ฐœ์ธ ๋ฐฐ์—ด
  3. ํ–‰์šฐ์„  ์ €์žฅ ๋ฐฉ์‹ ํ–‰๋ ฌ: ํ•˜๋‚˜์˜ ํ–‰์„ ์—ฐ์†์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ํ–‰์„ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•
  4. ์—ด์šฐ์„  ์ €์žฅ ๋ฐฉ์‹ ํ–‰๋ ฌ: ํ•˜๋‚˜์˜ ์—ด์„ ์—ฐ์†์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ์—ด์„ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•
  5. ํฌ์†Œํ–‰๋ ฌ(sparse matrix): ์›์†Œ๊ฐ’์ด 0์ธ ์›์†Œ๊ฐ€ ๊ทธ๋ ‡์ง€ ์•Š์€ ์›์†Œ๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์€ ํ–‰๋ ฌ์„ ์˜๋ฏธํ•จ

๋ฐฐ์—ด์˜ ์ •์˜

  • ์ผ์ •ํ•œ ์ฐจ๋ก€๋‚˜ ๊ฐ„๊ฒฉ์— ๋”ฐ๋ผ ๋ณ„์—ฌ ๋†“์Œ (์‚ฌ์ „์  ๊ตฌ์กฐ)
  • '์ฐจ๋ก€'(์ˆœ์„œ)์™€ ๊ด€๋ จ๋œ ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ
  • ์ธ๋ฑ์Šค์™€ ์›์†Œ๊ฐ’(๏ผœindex, value๏ผž)์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ
  • ์›์†Œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„(๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ, DDR)์˜ ๋ฌผ๋ฆฌ์ ์ธ ์œ„์น˜๋ฅผ '์ˆœ์„œ'์ ์œผ๋กœ ๊ฒฐ์ •ํ•˜๋Š” ํŠน์ง•
  • ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ ์ €์žฅ๋˜๋Š” ‘์›์†Œ๊ฐ’์˜ ๋ฌผ๋ฆฌ์  ์ˆœ์„œ’

๋ฐฐ์—ด์˜ ์˜๋ฏธ

  • 'ํ˜ธ์ˆ˜'(์ธ๋ฑ์Šค)๋กœ ํ‘œํ˜„๋˜๋Š” ์ˆœ์„œ๋ฅผ ๊ฐ–๋Š” '์•„ํŒŒํŠธ'(๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ, ์›์†Œ๊ฐ’์„ ์œ„ํ•œ ์ €์žฅ์†Œ)
  • ์›์†Œ๋“ค์ด ๋ชจ๋‘ ๊ฐ™์€ ์ž๋ฃŒํ˜•๊ณผ ๊ฐ™์€ ํฌ๊ธฐ์˜ ๊ธฐ์–ต๊ณต๊ฐ„์„ ๊ฐ€์ง
  • ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๊ฐ’์„ ์ด์šฉํ•ด์„œ ๋ฐฐ์—ด์˜ ์›์†Œ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•จ
  • ์ธ๋ฑ์Šค๊ฐ’์€ ์ถ”์ƒํ™”๋œ ๊ฐ’ : ์ปดํ“จํ„ฐ์˜ ๋‚ด๋ถ€๊ตฌ์กฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฐœ๋…์ ์œผ๋กœ ์ •์˜๋จ
  • ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์€ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฌผ๋ฆฌ์ ์ธ ์œ„์น˜๊ฐ’(์ฃผ์†Œ๊ฐ’)
  • ์ธ๋ฑ์Šค์™€ ์ฃผ์†Œ๊ฐ’์˜ ๊ด€๊ณ„
    แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-08-27 แ„‹แ…ฉแ„’แ…ฎ 3.37.41

์ถ”์ƒ์ž๋ฃŒํ˜• : ๊ฐ์ฒด(๋ฐ์ดํ„ฐ) ๋ฐ ๊ด€๋ จ๋œ ์—ฐ์‚ฐ์˜ ์ •์˜

์ž๋ฃŒํ˜• : ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ํ• ๋‹น์„ ์œ„ํ•œ ์„ ์–ธ

1์ฐจ์› ๋ฐฐ์—ด์˜ ์ •์˜

  • ํ•œ ์ค„์งœ๋ฆฌ ๋ฐฐ์—ด์„ ์˜๋ฏธํ•˜๋ฉฐ, ํ•˜๋‚˜์˜ ์ธ๋ฑ์Šค๋กœ ๊ตฌ๋ถ„๋จ
  • A[i]๋Š” ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ A[0]์ด ์ €์žฅ๋œ ์ฃผ์†Œ์ธ a๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, A[0]๋ถ€ํ„ฐ A[i-1]๊ฐœ๊นŒ์ง€ i๊ฐœ์˜ ๋ฐฐ์—ด A[]๋ฅผ ์ง€๋‚˜์„œ ์ €์žฅ๋จ
  • ๋”ฐ๋ผ์„œ, A[]์˜ ์‹œ์ž‘์ฃผ์†Œ๋ฅผ a๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, A[i]์˜ ์ €์žฅ ์ฃผ์†Œ๋Š” [a+i*k]๊ฐ€ ๋จ

ํ–‰๋ ฌ์˜ ๋ฐฐ์—ด ํ‘œํ˜„

  • ํ–‰๋ ฌ์„ ์ปดํ“จํ„ฐ์—์„œ ํ‘œํ˜„ํ•˜๊ธฐ์—๋Š” 2์ฐจ์› ๋ฐฐ์—ด์ด ์ ํ•ฉํ•˜๋‹ค

์—ด ์šฐ์„  ๋ฐฐ์—ด

  • 1์ฐจ์› ๋ฐฐ์—ด์„ ์—ฌ๋Ÿฌ ๊ฐœ ์„ธ์›Œ ๋†“์€ ๊ฒƒ์ด 2์ฐจ์› ๋ฐฐ์—ด

ํ–‰ ์šฐ์„  ํ• ๋‹น

  • ๊ฐ€๋กœ์˜ 1์ฐจ์› ๋ฐฐ์—ด ๋‹จ์œ„๋กœ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์šฐ์„  ํ• ๋‹นํ•จ
    แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-08-27 แ„‹แ…ฉแ„’แ…ฎ 11.12.45

์—ด ์šฐ์„  ํ• ๋‹น

  • ์„ธ๋กœ์˜ 1์ฐจ์› ๋ฐฐ์—ด ๋‹จ์œ„๋กœ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์šฐ์„  ํ• ๋‹นํ•จ
    แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-08-27 แ„‹แ…ฉแ„’แ…ฎ 11.14.28

ํฌ์†Œํ–‰๋ ฌ

  • ์›์†Œ๊ฐ’์ด 0์ธ ์›์†Œ๊ฐ€ ๊ทธ๋ ‡์ง€ ์•Š์€ ์›์†Œ๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์Œ

ํฌ์†Œํ–‰๋ ฌ์˜ ์ผ๋ฐ˜์  ๋ฐฐ์—ดํ‘œํ˜„

  • ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ง‰๊ณ  ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ 0์ธ ์›์†Œ๋Š” ์ €์žฅํ•˜์ง€ ์•Š๊ณ  0์ด ์•„๋‹Œ ๊ฐ’๋งŒ์„ ๋”ฐ๋กœ ๋ชจ์•„์„œ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•จ
    (์ถ”์ƒํ™” ํ•œ ๊ฒƒ์„ ํ•œ ๋ฒˆ ๋” ์ถ”์ƒํ™” ํ•˜์ž)
    แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-08-27 แ„‹แ…ฉแ„’แ…ฎ 11.23.37

์ •๋ฆฌํ•˜๊ธฐ

  1. ๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค์™€ ์›์†Œ๊ฐ’(๏ผœindex, value๏ผž)์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ์œผ๋กœ์„œ, ์ •์˜๋œ ๊ฐ ์ธ๋ฑ์Šค๋Š” ๊ทธ ์ธ๋ฑ์Šค์™€ ๊ด€๋ จ๋œ ๊ฐ’์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.
  2. ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ ์ €์žฅ๋˜๋Š” ‘์›์†Œ๊ฐ’์˜ ๋ฌผ๋ฆฌ์  ์ˆœ์„œ’๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ์˜ ๋ฌผ๋ฆฌ์ ์ธ ์œ„์น˜(๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ)์˜ ์ˆœ์„œ๊ฐ€ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค์˜ ์ˆœ์„œ(๋…ผ๋ฆฌ์ ์ธ ์ˆœ์„œ)์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๊ฐ’์„ ์ด์šฉํ•ด์„œ ๋ฐฐ์—ด์˜ ์›์†Œ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ์ ‘๊ทผ(direct access)์ž…๋‹ˆ๋‹ค.
  5. ๋ฐฐ์—ด์˜ ๋ฌผ๋ฆฌ์ ์ธ ์ €์žฅ ์ˆœ์„œ๋Š” ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค์— ์˜ํ•ด์„œ ๊ฒฐ์ •๋˜๋ฉฐ, ๊ทธ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ์˜ ์ €์žฅ ์œ„์น˜์˜ ์ˆœ์„œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  6. create(n)์€ n๊ฐœ์˜ ์›์†Œ๋“ค์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๋ฐฑ ๋ฐฐ์—ด(empty array)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ๋•Œ n๊ฐœ์˜ ์›์†Œ๋“ค์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์€ ๋งŒ๋“ค์–ด์ง€์ง€๋งŒ ๊ทธ ์•ˆ์— ์ฑ„์›Œ์ง„ ์›์†Œ๊ฐ’๋“ค์ด ์•„์ง์€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  7. ์—ฐ์‚ฐ retrieve(a,i)๋Š” ๋ฐฐ์—ด a์™€ ์ธ๋ฑ์Šค i๋ฅผ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์•„ ์ธ๋ฑ์Šค i ์œ„์น˜์— ๋Œ€์‘๋˜๋Š” ์›์†Œ๊ฐ’ e๊ฐ€ ์žˆ๋‹ค๋ฉด ์›์†Œ๊ฐ’ e๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  8. ์—ฐ์‚ฐ store(a, i, e)๋Š” ๋ฐฐ์—ด a์™€ ์ธ๋ฑ์Šค i, ์›์†Œ๊ฐ’ e๋ฅผ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์•„ Index๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ i๊ฐ’์ด ์œ ํšจํ•  ๊ฒฝ์šฐ ์Œ์ด ๋˜๊ฒŒ ์›์†Œ๊ฐ’์„ i๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ €์žฅํ•˜๊ณ  ๋ฐฐ์—ด a๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  9. ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฐ์—ด์€ 1์ฐจ์› ๋ฐฐ์—ด์ด๋ฉฐ, ํ•œ์ค„์งœ๋ฆฌ ๋ฐฐ์—ด์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ์ธ๋ฑ์Šค๋Š” ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ํ•œ์ค„์งœ๋ฆฌ ๋ฐฐ์—ด์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๋„ ํ•œ์ค„๋กœ ํ• ๋‹น๋ฐ›์Šต๋‹ˆ๋‹ค.
  10. 2์ฐจ์› ๋ฐฐ์—ด์˜ ํ–‰์šฐ์„  ์ €์žฅ๋ฐฉ์‹์€ ํ•˜๋‚˜์˜ ํ–‰์ด ๋ชจ๋‘ ์—ฐ์†์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ• ๋‹น๋ฐ›๊ณ , ๋‹ค์Œ ํ–‰์ด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹น๋ฐ›๋Š” ๋ฐฉ์‹์ด๋‹ค.
  11. 2์ฐจ์› ๋ฐฐ์—ด์˜ ์—ด์šฐ์„  ์ €์žฅ๋ฐฉ์‹์€ ํ•˜๋‚˜์˜ ์—ด์ด ๋ชจ๋‘ ์—ฐ์†์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ• ๋‹น๋ฐ›๊ณ , ๋‹ค์Œ ์—ด์ด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹น๋ฐ›๋Š” ๋ฐฉ์‹์ด๋‹ค.
  12. ์›์†Œ๊ฐ’์ด 0์ธ ์›์†Œ๊ฐ€ ๊ทธ๋ ‡์ง€ ์•Š์€ ์›์†Œ๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์€ ํ–‰๋ ฌ์„ ํฌ์†Œํ–‰๋ ฌ(sparse matrix)์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค.