์๋ ๋ชจ๋
์ด ๋ ธํธ์์ ๋๋ ์ปดํจํฐ ๊ณผํ์์ ๊ทธ๋ํ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ฃผ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋์ดํ๊ธฐ๋ก ๊ฒฐ์ ํ์ผ๋ฉฐ, ๋์๊ฒ "๊ฒฐ์ ํ"๋ ๋ช ๊ฐ์ง ๊ตฌ์กฐ์ ๋ํด์๋ ๋ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ์์ํด ๋ณด๊ฒ ์ต๋๋ค. ํ์ง๋ง ๋งจ ์ฒ์๋ถํฐ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค. ์ ์๊ฐ์๋ ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์ด๋ฏธ ๊ทธ๋ํ๊ฐ ๋ฌด์์ธ์ง, ๊ทธ๋ํ๊ฐ ๋ฌด์์ธ์ง(๋ฐฉํฅ์ฑ, ๋ฐฉํฅ์ฑ ์์, ๊ฐ์ค์น ๋ถ์ฌ, ๊ฐ์ค์น ์์, ๋ค์ค ๋ชจ์๋ฆฌ ๋ฐ ๋ฃจํ ์ ๋ฌด)๋ฅผ ์๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์, ๊ฐ์. "๊ทธ๋ํ ์ ์ฅ"์ ์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์๋ ์ด๋ค ์ต์
์ด ์๋์?
1. ํ๋ ฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ
1.1 ์ธ์ ํ๋ ฌ. ์ธ์ ํ๋ ฌ(Adjacency Matrix)์ ํ๊ณผ ์ด์ ์ ๋ชฉ์ด ๊ทธ๋ํ์ ๊ผญ์ง์ ๊ฐ์์ ํด๋นํ๋ ํ๋ ฌ์ด๋ฉฐ, ๊ฐ ์์ a(i,j)์ ๊ฐ์ ๊ผญ์ง์ ์ฌ์ด์ ๊ฐ์ ์ ๋ฌด์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. i์ j(๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ๊ฒฝ์ฐ ์ด๋ฌํ ํ๋ ฌ์ ๋์นญ์ด๊ฑฐ๋ ๋ชจ๋ ๊ฐ์ ์ฃผ ๋๊ฐ์ ์์๋ง ์ ์ฅํ๋ค๋ ๋ฐ ๋์ํ ์ ์์์ด ๋ถ๋ช ํฉ๋๋ค). ๊ฐ์ค์น๊ฐ ์ ์ฉ๋์ง ์์ ๊ทธ๋ํ์ ๊ฒฝ์ฐ a(i,j)๋ i์์ j๊น์ง์ ๊ฐ์ ์๋ก ์ค์ ๋ ์ ์์ผ๋ฉฐ(๊ทธ๋ฌํ ๊ฐ์ ์ด ์์ผ๋ฉด a(i,j)= 0), ๊ฐ์ค์น๊ฐ ์ ์ฉ๋ ๊ทธ๋ํ์ ๊ฒฝ์ฐ์๋ ๊ฐ์ค์น๋ก ์ค์ ๋ ์ ์์ต๋๋ค. (์ด ๋ฌด๊ฒ) ์ธ๊ธ๋ ๊ฐ์ฅ์๋ฆฌ.
1.2 ์ฌ๊ฑด ๋งคํธ๋ฆญ์ค. ์ด ๊ฒฝ์ฐ ๊ทธ๋ํ๋ ์ผ๋ฐ์ ์ผ๋ก ํ ๋ฒํธ๊ฐ ์ ์ ์์ ํด๋นํ๊ณ ์ด ๋ฒํธ๊ฐ ๋ฏธ๋ฆฌ ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง ๊ฐ์ฅ์๋ฆฌ์ ํด๋นํ๋ ํ ์ด๋ธ์๋ ์ ์ฅ๋ฉ๋๋ค. ๊ผญ์ง์ ๊ณผ ๋ชจ์๋ฆฌ๊ฐ ์๋ก ์ผ์นํ๋ ๊ฒฝ์ฐ ํด๋น ์ ์ 1์ด ์๋ ๊ฐ์ด ๊ธฐ๋ก๋ฉ๋๋ค(๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ๊ฒฝ์ฐ ๊ผญ์ง์ ๊ณผ ๋ชจ์๋ฆฌ๊ฐ ์ผ์นํ๋ฉด 1์ด ๊ธฐ๋ก๋๊ณ ์งํฅ์ฑ ๊ทธ๋ํ์ ๊ฒฝ์ฐ ๋ชจ์๋ฆฌ๊ฐ "1"๋ก ๊ธฐ๋ก๋จ) ๊ผญ์ง์ ์์ "์ข ๋ฃ"๋๊ณ ์ ์ ์ "ํฌํจ"๋ ๊ฒฝ์ฐ "-1"์ ๋๋ค("๋ง์ด๋์ค" ๊ธฐํธ๋ ์ซ์ "-1"์ "ํฌํจ"๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ์ตํ๊ธฐ ์ฝ์ต๋๋ค). ๊ฐ์ค์น ๊ทธ๋ํ์ ๊ฒฝ์ฐ 1๊ณผ -XNUMX ๋์ ๊ฐ์ ์ ์ด ๊ฐ์ค์น๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
2. ์ด๊ฑฐํ ๋ฐ์ดํฐ ๊ตฌ์กฐ
2.1 ์ธ์ ๋ชฉ๋ก. ๊ธ์, ์ฌ๊ธฐ์๋ ๋ชจ๋ ๊ฒ์ด ๊ฐ๋จํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ํ์ ๊ฐ ์ ์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ฃผ์ด์ง ์ ์ ์ ์ธ์ ํ ๋ชจ๋ ์ ์ ์ ์๋ฅผ ์ ์ฅํ๋ ์ด๊ฑฐํ ๊ตฌ์กฐ(๋ชฉ๋ก, ๋ฒกํฐ, ๋ฐฐ์ด ๋ฑ)์ ์ฐ๊ด๋ ์ ์์ต๋๋ค. ๋ฐฉํฅ์ฑ ๊ทธ๋ํ์ ๊ฒฝ์ฐ, ํน์ง ์ ์ ์์ "๋ฐฉํฅ์ฑ" ๊ฐ์ฅ์๋ฆฌ๊ฐ ์๋ ์ ์ ๋ง ๋ชฉ๋ก์ ์ถ๊ฐํฉ๋๋ค. ๊ฐ์ค์น ๊ทธ๋ํ์ ๊ฒฝ์ฐ ๊ตฌํ์ด ๋ ๋ณต์กํด์ง๋๋ค.
2.2 ๊ฐ๋น๋ผ ๋ชฉ๋ก. ๊ฝค ๋์ค์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค. Captain Obviousness๊ฐ ๋งํ๋ฏ์ด ๊ฐ์ฅ์๋ฆฌ ๋ชฉ๋ก์ ์ค์ ๋ก ๊ทธ๋ํ์ ๊ฐ์ฅ์๋ฆฌ ๋ชฉ๋ก์ด๋ฉฐ, ๊ฐ ๊ฐ์ฅ์๋ฆฌ๋ ์์ ์ ์ , ๋ ์ ์ ์ผ๋ก ์ง์ ๋ฉ๋๋ค(๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ ์์๋ ์ค์ํ์ง ์์ง๋ง ํตํฉ์ ์ํด์๋ ๋ค์์ ์ํํ ์ ์์ต๋๋ค). ์๋ฅผ ๋ค์ด ์ ์ ์ ์ฆ๊ฐํ๋ ์์๋ก ์ง์ ํ๊ณ ๊ฐ์ค์น(๊ฐ์ค์น ๊ทธ๋ํ์๋ง ํด๋น)๋ฅผ ์ง์ ํ๋ ๋ฑ ๋ค์ํ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค.
์์ ๋์ด๋ ๋งคํธ๋ฆญ์ค ๋ชฉ๋ก์ ๋ ์์ธํ(๋ฐ ๊ทธ๋ฆผ๊ณผ ํจ๊ป) ๋ณผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
2.3 ์ธ์ ๋ฐฐ์ด. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ตฌ์กฐ๋ ์๋๋๋ค. ํต์ฌ์ ์ธ์ ๋ชฉ๋ก์ ํ๋์ ์ด๊ฑฐํ ๊ตฌ์กฐ(๋ฐฐ์ด, ๋ฒกํฐ)๋ก "ํจํน"ํ๋ ํ์์ ๋๋ค. ์ด๋ฌํ ๋ฐฐ์ด์ ์ฒ์ n๊ฐ(๊ทธ๋ํ์ ์ ์ ์์ ๋ฐ๋ผ) ์์์๋ ๋์ผํ ๋ฐฐ์ด์ ์์ ์ธ๋ฑ์ค๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ด ์ธ๋ฑ์ค๋ถํฐ ์์ํ์ฌ ์ฃผ์ด์ง ๋ฐฐ์ด์ ์ธ์ ํ ๋ชจ๋ ์ ์ ์ด ์ฐ์์ผ๋ก ๊ธฐ๋ก๋ฉ๋๋ค.
์ฌ๊ธฐ์์ (๋ ์์ ์๊ฒ) ๊ฐ์ฅ ์ดํดํ๊ธฐ ์ฌ์ด ์ค๋ช
์ ์ฐพ์์ต๋๋ค.
3. ์ธ์ ๋ฒกํฐ์ ์ฐ๊ด ์ธ์ ๋ฐฐ์ด
์ ๋ฌธ ํ๋ก๊ทธ๋๋จธ๋ ์๋์ง๋ง ์ฃผ๊ธฐ์ ์ผ๋ก ๊ทธ๋ํ๋ฅผ ์ฒ๋ฆฌํ๋ ์ด ์ค์ ์์ฑ์๋ ๊ฐ์ฅ์๋ฆฌ ๋ชฉ๋ก์ ๊ฐ์ฅ ์์ฃผ ์ฒ๋ฆฌํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ค์ ๋ก ๊ทธ๋ํ์ ๋ฃจํ์ ๊ฐ์ ์ด ์ฌ๋ฌ ๊ฐ ์์ผ๋ฉด ํธ๋ฆฌํฉ๋๋ค. ๋ฐ๋ผ์ ๊ณ ์ ์ ์ธ ๋ชจ์๋ฆฌ ๋ชฉ๋ก์ ๊ฐ๋ฐํ ๋ "๊ฐ๋ฐ/๋ถ๊ธฐ/์์ /๋์ฐ๋ณ์ด", ์ฆ ์ธ์ ๋ฒกํฐ์ ์ฐ๊ด ์ธ์ ๋ฐฐ์ด์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ผ ๊ฒ์ ์ ์ํฉ๋๋ค.
3.1 ์ธ์ ๋ฒกํฐ
์ฌ๋ก (a1): ๋น๊ฐ์ค ๊ทธ๋ํ
๋น๊ฐ์ค ๊ทธ๋ํ์ ๋ํ ์ธ์ ๋ฒกํฐ๋ฅผ ์ง์ ์ ์(a[2i], a[2i+1],..., ์ฌ๊ธฐ์ i์ ๋ฒํธ๋ c 0)์ ์์ ์งํฉ์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ์ฌ๊ธฐ์ ๊ฐ ์ซ์ ์์ a[2i], a[2i+1 ]์ ์ ์ a[2i]์ a[2i+1] ์ฌ์ด์ ๊ทธ๋ํ ๊ฐ์ฅ์๋ฆฌ๋ฅผ ๊ฐ๊ฐ ์ง์ ํฉ๋๋ค.
์ด ๊ธฐ๋ก ํ์์๋ ๊ทธ๋ํ ๋ฐฉํฅ ์ฌ๋ถ์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ง ์์ต๋๋ค(๋ ์ต์
๋ชจ๋ ๊ฐ๋ฅ). digraph ํ์์ ์ฌ์ฉํ ๋ ๋ชจ์๋ฆฌ๋ a[2i]์์ a[2i+1]๋ก ํฅํ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ฌ๊ธฐ ๋ฐ ์๋: ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ๊ฒฝ์ฐ ํ์ํ ๊ฒฝ์ฐ ์ ์ ๊ธฐ๋ก ์์์ ๋ํ ์๊ตฌ ์ฌํญ์ ์ ์ฉํ ์ ์์ต๋๋ค(์: ํ ๋น๋ ์ซ์์ ๊ฐ์ด ๋ฎ์ ์ ์ ์ด ๋จผ์ ์ต๋๋ค).
C++์์๋ std::Vector๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ ๋ฒกํฐ๋ฅผ ์ง์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ฐ๋ผ์ ์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ด๋ฆ์ด ๋ฉ๋๋ค.
์ฌ๋ก (a2): ๋น๊ฐ์ค ๊ทธ๋ํ, ๊ฐ์ ๊ฐ์ค์น๋ ์ ์์ ๋๋ค.
์ฌ๋ก (a1)๊ณผ ์ ์ฌํ๊ฒ ์ ์ ๊ฐ์ ๊ฐ์ค์น๋ฅผ ๊ฐ๋ ๊ฐ์ค์น ๊ทธ๋ํ์ ๋ํ ์ธ์ ๋ฒกํฐ๋ฅผ ์ซ์์ ์ ๋ ฌ๋ ์งํฉ(๋์ ๋ฐฐ์ด)(a[3i], a[3i+1], a[3i+2], ..., ์ฌ๊ธฐ์ i์ ๋ฒํธ๋ c 0), ์ฌ๊ธฐ์ ์ซ์ a[3i], a[3i+1], a[3i+2]์ ๊ฐ "์ผ์คํญ"์ a[3i] ๋ฒํธ์ ๊ผญ์ง์ ์ฌ์ด์ ๊ทธ๋ํ ๊ฐ์ฅ์๋ฆฌ๋ฅผ ์ง์ ํฉ๋๋ค. ๋ฐ a[3i+1]์ด๋ฉฐ, ๊ฐ a [3i+2]๋ ์ด ๊ฐ์ ์ ๊ฐ์ค์น์ ๋๋ค. ์ด๋ฌํ ๊ทธ๋ํ๋ ๋ฐฉํฅ์ด ์ง์ ๋ ์๋ ์๊ณ ๊ทธ๋ ์ง ์์ ์๋ ์์ต๋๋ค.
์ฌ๋ก (b): ๋น๊ฐ์ค ๊ทธ๋ํ, ์ ์๊ฐ ์๋ ๊ฐ์ ๊ฐ์ค์น
์๋ฅผ ๋ค์ด, ์ด์ข ์์๋ฅผ ํ๋์ ๋ฐฐ์ด(๋ฒกํฐ)์ ์ ์ฅํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ตฌํ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ํ๋ ํ ์์ ๋ฒกํฐ์ ์ ์ฅ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ์ฒซ ๋ฒ์งธ ๋ฒกํฐ๋ ๊ฐ์ค์น๋ฅผ ์ง์ ํ์ง ์์ ๊ทธ๋ํ์ ์ธ์ ๋ฒกํฐ์ด๊ณ ๋ ๋ฒ์งธ ๋ฒกํฐ์๋ ํด๋น ๊ฐ์ค์น๊ฐ ํฌํจ๋ฉ๋๋ค(C++์ ๋ํ ๊ตฌํ ๊ฐ๋ฅ: std::pair). ). ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ ๋ฒกํฐ์ ์ธ๋ฑ์ค 2i, 2i+1 ์๋์ ์๋ ์ ์ ์์ผ๋ก ์ ์๋ ๊ฐ์ฅ์๋ฆฌ์ ๊ฒฝ์ฐ ๊ฐ์ค์น๋ ๋ ๋ฒ์งธ ๋ฒกํฐ์ ์ธ๋ฑ์ค i ์๋์ ์๋ ์์์ ๋์ผํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๊ฒ์ด ์ ํ์ํ๊ฐ์?
๊ธ์, ์ด ์ค์ ์ ์๋ ์ด๊ฒ์ด ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ์, ๊ณต์์ ์ธ ๊ด์ ์์ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์์ต๋๋ค.
- ๋ค๋ฅธ "์ด๊ฑฐํ" ๊ตฌ์กฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ธ์ ๋ฒกํฐ๋ ๋งค์ฐ ์ปดํฉํธํ๊ณ ์ธ์ ํ๋ ฌ(ํฌ์ ๊ทธ๋ํ์ ๊ฒฝ์ฐ)๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ฐจ์งํ๋ฉฐ ์๋์ ์ผ๋ก ๊ตฌํํ๊ธฐ ์ฝ์ต๋๋ค.
- ๊ทธ๋ํ์ ๊ผญ์ง์ ์ ์์น์ ์ผ๋ก ์์๋ก ํ์๋ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌํ โ๋ณํโ๊ฐ ํ์ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
- ๊ทธ๋ํ์๋ ๊ฐ์ค์น๊ฐ ์๋ก ๋ค๋ฅธ(์์, ์์, XNUMX๊น์ง) ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ๊ณผ ์ฌ๋ฌ ๋ฃจํ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ ํ์ด ์์ต๋๋ค.
- ๊ฐ์ฅ์๋ฆฌ์ ๋ค๋ฅธ ์์ฑ์ ํ ๋นํ ์๋ ์์ต๋๋ค. ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ ์น์ 4๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ทธ๋ฌ๋ ์ด "๋ชฉ๋ก"์ด ๊ฐ์ฅ์๋ฆฌ์ ๋ํ ๋น ๋ฅธ ์ก์ธ์ค๋ฅผ ์๋ฏธํ์ง๋ ์๋๋ค๋ ์ ์ ์ธ์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์ฐ๊ด ์ธ์ ๋ฐฐ์ด(Associative Adjacency Array)์ด ๊ตฌ์ถ๋ฉ๋๋ค. ์ด์ ๋ํด์๋ ์๋์์ ์ค๋ช ํฉ๋๋ค.
3.2 ์ฐ๊ด ์ธ์ ๋ฐฐ์ด
๋ฐ๋ผ์ ํน์ ๊ฐ์ฅ์๋ฆฌ์ ๋ํ ์ก์ธ์ค, ๊ฐ์ค์น ๋ฐ ๊ธฐํ ์์ฑ์ด ์ค์ํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ ์ฌํญ์ผ๋ก ์ธํด ์ธ์ ํ๋ ฌ์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ธ์ ๋ฒกํฐ๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฐ๋ผ์ ํค๋ ๊ทธ๋ํ์ ๊ฐ์ฅ์๋ฆฌ์ด๋ฉฐ, ์์ํ๋ ์ ์ ์์ผ๋ก ์ง์ ๋ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ด๋ป๊ฒ ์๊ฒผ๋์? ์ฐ๊ด ๋ฐฐ์ด์ ํค๊ฐ ์๋๊ฐ์? ๊ทธ๋ ๋ค๋ฉด ๊ตฌํํด ๋ณด๋ ๊ฒ์ ์ด๋จ๊น์? ๊ฐ ํค(์์ํ ์ ์ ์)๊ฐ ๊ฐ(๊ฐ์ฅ์๋ฆฌ์ ๊ฐ์ค์น๋ฅผ ์ง์ ํ๋ ์ ์ ๋๋ ์ค์)๊ณผ ์ฐ๊ด๋๋ ์ฐ๊ด ๋ฐฐ์ด์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. C++์์๋ std::map ์ปจํ ์ด๋(std::map)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. , int> ๋๋ std::map , double>) ๋๋ std::multimap(์ฌ๋ฌ ๋ชจ์๋ฆฌ๊ฐ ์์๋๋ ๊ฒฝ์ฐ). ๊ธ์์, ์ฐ๋ฆฌ๋ "ํ๋ ฌ" ๊ตฌ์กฐ๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ฐจ์งํ๋ ๊ทธ๋ํ ์ ์ฅ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ฌ๋ฌ ๊ฐ์ ๋ฃจํ์ ๋ชจ์๋ฆฌ๊ฐ ์๋ ๊ทธ๋ํ๋ฅผ ์ ์ํ ์ ์์ผ๋ฉฐ, ๊ผญ์ง์ ๋ฒํธ์ ์์๊ฐ ์๋์ง์ ๋ํ ์๊ฒฉํ ์๊ตฌ ์ฌํญ๋ ์์ต๋๋ค(๋ชจ๋ฅด๊ฒ ์ด์). ๋๊ฐ ์ด๊ฒ์ ํ์๋ก ํ์ง๋ง ์ฌ์ ํ).
4. ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๊ฝ ์ฐจ ์์ง๋ง ๋ญ๊ฐ ๋น ์ก์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฌ์ค์ ๋๋ค. ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ๊ทธ๋ํ ๊ฐ์ฅ์๋ฆฌ์ ๋ช ๊ฐ์ง ํน์ฑ์ ํ ๋นํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์ ์ฅํด์ผ ํ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ํน์ฑ์ ๋ช ํํ๊ฒ ์ ์๋ก ์ค์ด๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ฉด ์ธ์ ๋ฒกํฐ ๋ฐ ์ฐ๊ด ์ธ์ ๋ฐฐ์ด์ ํ์ฅ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ "์ถ๊ฐ ํน์ฑ์ด ์๋ ๊ทธ๋ํ"๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ ์๋ก ์ง์ ๋ 2๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ์ฅํ๋ ๋ฐ ํ์ํ ๊ฐ ๋ชจ์๋ฆฌ์ ๋ํด ๊ฐ์ค์น๊ฐ ์ ์ฉ๋์ง ์์ ๊ทธ๋ํ๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ธ์ ๋ฒกํฐ๋ฅผ "์"์ด ์๋ ์ ์ "2์ค์ฃผ"(a[2i], a[1i+2], a[2i+2], a)์ ์์ ์งํฉ์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค. [3i+2]โฆ) ์ฌ๊ธฐ์ a[2i+2] ๋ฐ a[3i+2]์ ํด๋น ๊ฐ์ฅ์๋ฆฌ์ ํน์ฑ์ ๊ฒฐ์ ํฉ๋๋ค. ๊ฐ์ ์ ์ ์ ๊ฐ์ค์น๋ฅผ ๊ฐ๋ ๊ทธ๋ํ์ ๊ฒฝ์ฐ ์์๋ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฌํฉ๋๋ค(์ ์ผํ ์ฐจ์ด์ ์ ์์ฑ์ด ๊ฐ์ ์ ๊ฐ์ค์น๋ฅผ ๋ฐ๋ฅด๊ณ a[3i+2] ๋ฐ a[4i+4] ์์๋ก ์ง์ ๋๋ค๋ ๊ฒ์ ๋๋ค. , ๊ฐ์ฅ์๋ฆฌ ์์ฒด๋ 5๊ฐ ์๋ XNUMX๊ฐ์ ์์ ๋ฒํธ๋ก ์ง์ ๋ฉ๋๋ค). ๊ทธ๋ฆฌ๊ณ ์ ์๊ฐ ์๋ ๊ฐ์ ๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ์ ๊ฒฝ์ฐ ํน์ง์ ๊ฐ์ค์น๊ฐ ์ ์ฉ๋์ง ์์ ๊ตฌ์ฑ ์์์ ๊ธฐ๋ก๋ ์ ์์ต๋๋ค.
์ ์ ๊ฐ์ ๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ์ ๋ํด ์ฐ๊ด ์ธ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จ์ผ ์ซ์๊ฐ ์๋ ๊ฐ์ ๊ฐ์ค์น ์ธ์ ํ์ํ ๋ค๋ฅธ ๋ชจ๋ ๊ฐ์ ์ง์ ํ๋ ์ซ์ ๋ฐฐ์ด(๋ฒกํฐ)์ ๊ฐ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค. ํน์ง. ๋์์, ์ ์๊ฐ ์๋ ๊ฐ์ค์น์ ๊ฒฝ์ฐ ๋ถํธํ ์ ์ ๋ถ๋ ์์์ ์ซ์๋ก ๋ถํธ๋ฅผ ์ง์ ํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. (์, ๋ถํธํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ฌํ ๋ถํธ๊ฐ ๋ง์ง ์๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋๋ฌด "๊น๋ค๋กญ๊ฒ" ์ด์ค์ผ๋ก ์ค์ ํ์ง ๋ง์ญ์์ค. ๊ทธ๋ฌ๋ฉด ์๋ฌด๊ฒ๋ ์๋ ์๋ ์์ต๋๋ค. ์ด๋ C++์์ ํ์ฅ๋ ์ฐ๊ด ์ธ์ ๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ ์ ์์์ ์๋ฏธํฉ๋๋ค: std::map , std::๋ฒกํฐ> ๋๋ std::map , std::๋ฒกํฐ, ์ฌ๊ธฐ์ "ํค-๊ฐ-๋ฒกํฐ"์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ๊ฐ์ฅ์๋ฆฌ์ ๊ฐ์ค์น๊ฐ ๋๊ณ ๊ทธ ๋ค์์๋ ํด๋น ํน์ฑ์ ์ซ์ ์ง์ ์ด ์์นํฉ๋๋ค.
๋ฌธํ :
์ผ๋ฐ์ ์ธ ๊ทธ๋ํ ๋ฐ ์๊ณ ๋ฆฌ์ฆ ์ ๋ณด:
1. Cormen, Thomas H., Leiserson, Charles I., Rivest, Ronald L., Stein, Clifford. ์๊ณ ๋ฆฌ์ฆ: ๊ตฌ์ฑ ๋ฐ ๋ถ์, 2ํ: Trans. ์์ด๋ก๋ถํฐ โ M.: ์๋ฆฌ์์ค ์ถํ์ฌ, 2011.
2. ํ๋ผ๋ฆฌ ํ๋ญํฌ. ๊ทธ๋ํ ์ด๋ก . M.: ๋ฏธ๋ฅด, 1973.
๋์ผํ ๋ฒกํฐ ๋ฐ ์ธ์ ์์์ ์ฐ๊ด ๋ฐฐ์ด์ ๋ํ ์ ์์ ๋ณด๊ณ ์:
3. Chernoukhov S.A. ๊ทธ๋ํ๋ฅผ ํํํ๊ณ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ผ๋ก์์ ์ธ์ ๋ฒกํฐ ๋ฐ ์ฐ๊ด ์ธ์ ๋ฐฐ์ด / SA Chernouhov. ๊ทธ๋ํ๋ฅผ ํํํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก์์ ์ธ์ ๋ฒกํฐ ๋ฐ ์ธ์ ๋งต // ๊ตญ์ ๊ณผํ ๋ฐ ์ค๋ฌด ํ์์ ๊ธฐ์ฌ ๋ชจ์ "ํ์ ์ ์ธ ๊ฐ๋ฐ ๊ฒฐ๊ณผ ๊ตฌํ ๋ฌธ์ ๋ฐ ์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ"(Saratov, 14.09.2019๋
2019์ 65์ผ) โ Sterlitamak: AMI, 69, p. XNUMX-XNUMX
์ฃผ์ ์ ๋ํ ์ ์ฉํ ์จ๋ผ์ธ ์์ค:
4.
5.
์ถ์ฒ : habr.com