์ฉ์ด
- ๋ฐฐ์ด: ์ธ๋ฑ์ค์ ์์๊ฐ(ใindex, valueใ)์ ์์ผ๋ก ๊ตฌ์ฑ๋ ์งํฉ์ด๋ฉฐ, ์ ์๋ ๊ฐ ์ธ๋ฑ์ค๋ ๊ทธ ์ธ๋ฑ์ค์ ๊ด๋ จ๋ ๊ฐ์ ์ ์ํจ
- 2์ฐจ์ ๋ฐฐ์ด: ์์๊ฐ์ ํน์ ํ๊ธฐ ์ํด ํ์ํ ์ธ๋ฑ์ค๊ฐ ๋ ๊ฐ์ธ ๋ฐฐ์ด
- ํ์ฐ์ ์ ์ฅ ๋ฐฉ์ ํ๋ ฌ: ํ๋์ ํ์ ์ฐ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ํ ๋นํ๊ณ , ๊ทธ ๋ค์ ํ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋นํ๋ ๋ฐฉ๋ฒ
- ์ด์ฐ์ ์ ์ฅ ๋ฐฉ์ ํ๋ ฌ: ํ๋์ ์ด์ ์ฐ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ํ ๋นํ๊ณ , ๊ทธ ๋ค์ ์ด์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋นํ๋ ๋ฐฉ๋ฒ
- ํฌ์ํ๋ ฌ(sparse matrix): ์์๊ฐ์ด 0์ธ ์์๊ฐ ๊ทธ๋ ์ง ์์ ์์๋ณด๋ค ์๋์ ์ผ๋ก ๋ง์ ํ๋ ฌ์ ์๋ฏธํจ
๋ฐฐ์ด์ ์ ์
- ์ผ์ ํ ์ฐจ๋ก๋ ๊ฐ๊ฒฉ์ ๋ฐ๋ผ ๋ณ์ฌ ๋์ (์ฌ์ ์ ๊ตฌ์กฐ)
- '์ฐจ๋ก'(์์)์ ๊ด๋ จ๋ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ๊ตฌ์กฐ
- ์ธ๋ฑ์ค์ ์์๊ฐ(๏ผindex, value๏ผ)์ ์์ผ๋ก ๊ตฌ์ฑ๋ ์งํฉ
- ์์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ, DDR)์ ๋ฌผ๋ฆฌ์ ์ธ ์์น๋ฅผ '์์'์ ์ผ๋ก ๊ฒฐ์ ํ๋ ํน์ง
- ๋ฐฐ์ด์ ์์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ ์ ์ฅ๋๋ ‘์์๊ฐ์ ๋ฌผ๋ฆฌ์ ์์’
๋ฐฐ์ด์ ์๋ฏธ
- 'ํธ์'(์ธ๋ฑ์ค)๋ก ํํ๋๋ ์์๋ฅผ ๊ฐ๋ '์ํํธ'(๋ฉ๋ชจ๋ฆฌ ์์ญ, ์์๊ฐ์ ์ํ ์ ์ฅ์)
- ์์๋ค์ด ๋ชจ๋ ๊ฐ์ ์๋ฃํ๊ณผ ๊ฐ์ ํฌ๊ธฐ์ ๊ธฐ์ต๊ณต๊ฐ์ ๊ฐ์ง
- ๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ์ ์ด์ฉํด์ ๋ฐฐ์ด์ ์์๊ฐ์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ ์ง์ ์ ๊ทผ์ด ๊ฐ๋ฅํจ
- ์ธ๋ฑ์ค๊ฐ์ ์ถ์ํ๋ ๊ฐ : ์ปดํจํฐ์ ๋ด๋ถ๊ตฌ์กฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ฌด๊ดํ๊ฒ ๊ฐ๋ฐ์์๊ฒ ๊ฐ๋ ์ ์ผ๋ก ์ ์๋จ
- ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฌผ๋ฆฌ์ ์ธ ์์น๊ฐ(์ฃผ์๊ฐ)
- ์ธ๋ฑ์ค์ ์ฃผ์๊ฐ์ ๊ด๊ณ
์ถ์์๋ฃํ : ๊ฐ์ฒด(๋ฐ์ดํฐ) ๋ฐ ๊ด๋ จ๋ ์ฐ์ฐ์ ์ ์
์๋ฃํ : ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ํ ๋น์ ์ํ ์ ์ธ
1์ฐจ์ ๋ฐฐ์ด์ ์ ์
- ํ ์ค์ง๋ฆฌ ๋ฐฐ์ด์ ์๋ฏธํ๋ฉฐ, ํ๋์ ์ธ๋ฑ์ค๋ก ๊ตฌ๋ถ๋จ
- A[i]๋ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์ A[0]์ด ์ ์ฅ๋ ์ฃผ์์ธ a๋ก๋ถํฐ ์์ํ์ฌ, A[0]๋ถํฐ A[i-1]๊ฐ๊น์ง i๊ฐ์ ๋ฐฐ์ด A[]๋ฅผ ์ง๋์ ์ ์ฅ๋จ
- ๋ฐ๋ผ์, A[]์ ์์์ฃผ์๋ฅผ a๋ผ๊ณ ๊ฐ์ ํ๋ฉด, A[i]์ ์ ์ฅ ์ฃผ์๋ [a+i*k]๊ฐ ๋จ
ํ๋ ฌ์ ๋ฐฐ์ด ํํ
- ํ๋ ฌ์ ์ปดํจํฐ์์ ํํํ๊ธฐ์๋ 2์ฐจ์ ๋ฐฐ์ด์ด ์ ํฉํ๋ค
์ด ์ฐ์ ๋ฐฐ์ด
- 1์ฐจ์ ๋ฐฐ์ด์ ์ฌ๋ฌ ๊ฐ ์ธ์ ๋์ ๊ฒ์ด 2์ฐจ์ ๋ฐฐ์ด
ํ ์ฐ์ ํ ๋น
- ๊ฐ๋ก์ 1์ฐจ์ ๋ฐฐ์ด ๋จ์๋ก ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฐ์ ํ ๋นํจ
์ด ์ฐ์ ํ ๋น
- ์ธ๋ก์ 1์ฐจ์ ๋ฐฐ์ด ๋จ์๋ก ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฐ์ ํ ๋นํจ
ํฌ์ํ๋ ฌ
- ์์๊ฐ์ด 0์ธ ์์๊ฐ ๊ทธ๋ ์ง ์์ ์์๋ณด๋ค ์๋์ ์ผ๋ก ๋ง์
ํฌ์ํ๋ ฌ์ ์ผ๋ฐ์ ๋ฐฐ์ดํํ
- ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ๋ง๊ณ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด์ 0์ธ ์์๋ ์ ์ฅํ์ง ์๊ณ 0์ด ์๋ ๊ฐ๋ง์ ๋ฐ๋ก ๋ชจ์์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด ํ์ํจ
(์ถ์ํ ํ ๊ฒ์ ํ ๋ฒ ๋ ์ถ์ํ ํ์)
์ ๋ฆฌํ๊ธฐ
- ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ์์๊ฐ(๏ผindex, value๏ผ)์ ์์ผ๋ก ๊ตฌ์ฑ๋ ์งํฉ์ผ๋ก์, ์ ์๋ ๊ฐ ์ธ๋ฑ์ค๋ ๊ทธ ์ธ๋ฑ์ค์ ๊ด๋ จ๋ ๊ฐ์ ๊ฐ์ต๋๋ค.
- ๋ฐฐ์ด์ ์์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ ์ ์ฅ๋๋ ‘์์๊ฐ์ ๋ฌผ๋ฆฌ์ ์์’๋ฅผ ์๋ฏธํฉ๋๋ค.
- ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ฌผ๋ฆฌ์ ์ธ ์์น(๋ฉ๋ชจ๋ฆฌ ์ฃผ์)์ ์์๊ฐ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ์์(๋ ผ๋ฆฌ์ ์ธ ์์)์ ์ผ์นํฉ๋๋ค.
- ๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ์ ์ด์ฉํด์ ๋ฐฐ์ด์ ์์๊ฐ์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ ์ง์ ์ ๊ทผ(direct access)์ ๋๋ค.
- ๋ฐฐ์ด์ ๋ฌผ๋ฆฌ์ ์ธ ์ ์ฅ ์์๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ์ํด์ ๊ฒฐ์ ๋๋ฉฐ, ๊ทธ ์์์ ๋ฐ๋ผ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์์ ์ ์ฅ ์์น์ ์์๊ฐ ๋ฉ๋๋ค.
- create(n)์ n๊ฐ์ ์์๋ค์ ์ ์ฅํ ์ ์๋ ๊ณต๋ฐฑ ๋ฐฐ์ด(empty array)์ ์์ฑํฉ๋๋ค. ๋ฐฐ์ด์ ์์ฑํ ๋ n๊ฐ์ ์์๋ค์ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ์ ๋ง๋ค์ด์ง์ง๋ง ๊ทธ ์์ ์ฑ์์ง ์์๊ฐ๋ค์ด ์์ง์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์ฐ์ฐ retrieve(a,i)๋ ๋ฐฐ์ด a์ ์ธ๋ฑ์ค i๋ฅผ ๋งค๊ฐ ๋ณ์๋ก ์ ๋ฌ๋ฐ์ ์ธ๋ฑ์ค i ์์น์ ๋์๋๋ ์์๊ฐ e๊ฐ ์๋ค๋ฉด ์์๊ฐ e๋ฅผ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค.
- ์ฐ์ฐ store(a, i, e)๋ ๋ฐฐ์ด a์ ์ธ๋ฑ์ค i, ์์๊ฐ e๋ฅผ ๋งค๊ฐ ๋ณ์๋ก ์ ๋ฌ๋ฐ์ Index๋ฅผ ๊ฒ์ฌํ์ฌ i๊ฐ์ด ์ ํจํ ๊ฒฝ์ฐ ์์ด ๋๊ฒ ์์๊ฐ์ i๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ์ฅํ๊ณ ๋ฐฐ์ด a๋ฅผ ๋ฐํํฉ๋๋ค.
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฐ์ด์ 1์ฐจ์ ๋ฐฐ์ด์ด๋ฉฐ, ํ์ค์ง๋ฆฌ ๋ฐฐ์ด์ ์๋ฏธํ๋ฏ๋ก ์ธ๋ฑ์ค๋ ํ๋์ ๋๋ค. ํ์ค์ง๋ฆฌ ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ ์์ญ๋ ํ์ค๋ก ํ ๋น๋ฐ์ต๋๋ค.
- 2์ฐจ์ ๋ฐฐ์ด์ ํ์ฐ์ ์ ์ฅ๋ฐฉ์์ ํ๋์ ํ์ด ๋ชจ๋ ์ฐ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น๋ฐ๊ณ , ๋ค์ ํ์ด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฐ์์ ์ผ๋ก ํ ๋น๋ฐ๋ ๋ฐฉ์์ด๋ค.
- 2์ฐจ์ ๋ฐฐ์ด์ ์ด์ฐ์ ์ ์ฅ๋ฐฉ์์ ํ๋์ ์ด์ด ๋ชจ๋ ์ฐ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น๋ฐ๊ณ , ๋ค์ ์ด์ด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฐ์์ ์ผ๋ก ํ ๋น๋ฐ๋ ๋ฐฉ์์ด๋ค.
- ์์๊ฐ์ด 0์ธ ์์๊ฐ ๊ทธ๋ ์ง ์์ ์์๋ณด๋ค ์๋์ ์ผ๋ก ๋ง์ ํ๋ ฌ์ ํฌ์ํ๋ ฌ(sparse matrix)์ด๋ผ ํฉ๋๋ค.