๐ก์งํฉ์ปค๋ฒ๋ฌธ์ (Set Covering Problem)
- n๊ฐ์ ์์๋ฅผ ๊ฐ์ง ์งํฉ U
- U์ ๋ถ๋ถ์งํฉ๋ค์ ์์๋กํ๋ ์งํฉ F
- F์ ์์๋ค์ธ ์งํฉ๋ค ์ค์์ ์ด๋ค ์งํฉ๋ค์ ์ ํํ์ฌ ํฉ์งํฉํ๋ฉด U์ ๊ฐ๊ฒ ๋๋๊ฐ?
- ์ฌ๊ธฐ์, F์์ ์ ํํ๋ ์งํฉ๋ค์ ์๋ฅผ ์ต์ํํ๋ ๋ฌธ์ ์ด๋ค.
โ์ต์ ํด๋ฅผ ์ด๋ป๊ฒ ์ฐพ์์ผํ ๊น?
- ๊ฐ์ฅ ๋จ์ํ ๋ฐฉ๋ฒ : F์ ์๋ ์งํฉ๋ค์ ๋ชจ๋ ์กฐํฉ์ 1๊ฐ์ฉ ํฉ์งํฉํ์ฌ U๊ฐ ๋๋์ง ํ์ธํ๊ณ , U๊ฐ ๋๋ ์กฐํฉ์ ์งํฉ ์๊ฐ ์ต์์ธ ๊ฒ์ ์ฐพ๋ ๊ฒ
- Brute Force Algorithm : n๊ฐ์ ์์๊ฐ ์์ผ๋ฉด (2^n -1)๊ฐ๋ฅผ ๋ค ๊ฒ์ฌ ํ์
- n์ด ์ปค์ง๋ฉด ์ต์ ํด๋ฅผ ์ฐพ๋ ๊ฒ์ ์ค์ง์ ์ผ๋ก ๋ถ๊ฐ๋ฅ
- ์ค์ ๋ก ์งํฉ์ปค๋ฒ๋ฌธ์ ๋ NP-hard ๋ฌธ์ ๋ก polynomial time optimal algorithm์ ์ค๊ณํ๊ธฐ ๋งค์ฐ ์ด๋ ต๋ค. (ํ์ค์ ์ธ ์๊ฐ ๋ด์ ํด๋ฅผ ์ฐพ๊ธฐ ์ด๋ ต)
- ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด, ์ต์ ํด๋ฅผ ์ฐพ๋ ๋์ ์ต์ ํด์ ๊ทผ์ ํ ๊ทผ์ฌํด(approximation solution)๋ฅผ ์ฐพ๋ ๊ฒ.
๐ก์์ฌ์ฝ๋
1. C = ∅
2. while(U!=∅)do{
3. U์ ์์๋ค์ ๊ฐ์ฅ ๋ง์ด ํฌํจํ๊ณ ์๋ ์งํฉ Si๋ฅผ F์์ ์ ํํ๋ค. // ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
4. U = U-(Si์ ์์๋ค)
5. Si๋ฅผ F์์ ์ ๊ฑฐํ๊ณ , Si๋ฅผ C์ ์ถ๊ฐํ๋ค.
}
6. return C
-> ์ต์ข ํด๊ฐ optimal์ ์๋๋ค.
๐ก์๊ฐ๋ณต์ก๋
- while ๋ฃจํ์ ์ํํ์ : ์ต๋ n๋ฒ
- ์๋ํ๋ฉด ๋ฃจํ๊ฐ 1๋ฒ ์ํ๋ ๋๋ง๋ค ์งํฉ U์ ์์ 1๊ฐ์ฉ๋ง ์ปค๋ฒ๋ ๋, ์ต์ ์ ๊ฒฝ์ฐ ๋ฃจํ๊ฐ n๋ฒ ์ํ๋์ด์ผํ๊ธฐ ๋๋ฌธ
- ๋ฃจํ๊ฐ 1๋ฒ ์ํ๋ ๋์ ์๊ฐ๋ณต์ก๋
- Line2 : O(1)
- Line3 : U์ ์์๋ค์ ๊ฐ์ฅ ๋ง์ด ํฌํจํ๊ณ ์๋ ์งํฉ S๋ฅผ ์ฐพ์ผ๋ ค๋ฉด, ํ์ฌ ๋จ์์๋ Si๋ค ๊ฐ๊ฐ์ U์ ๋น๊ตํด์ผํ๋ค. ๋ฐ๋ผ์ Si์ ์๋ ์ต๋ n์ด๊ณ , ๊ฐ Si์ U์ ๋น๊ต๋ O(n)์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก, line3์ O(n^2)์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
- Line4 : ์งํฉ U์์ ์งํฉ Si์ ์์๋ค์ ์ ๊ฑฐํ๋ ๊ฒ์ด๋ฏ๋ก O(n)์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
- Line5 : Si๋ฅผ F์์ ์ ๊ฑฐํ๊ณ , Si๋ฅผ C์ ์ถ๊ฐ : O(1)์ ์๊ฐ
- ๋ฃจํ 1ํ์ ์๊ฐ๋ณต์ก๋๋ O(1) + O(n^2) + O(n) + O(1) = O(n^2)
- ์ด ์๊ฐ ๋ณต์ก๋ O(n) x O(n^2) = O(n^3)
๐ก๊ทผ์ฌ๋น์จ
- ๊ทผ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ทผ์ฌํด๊ฐ ์ต์ ํด์ ์ผ๋ง๋ ๊ทผ์ฌํ์ง๋ฅผ ๋ํ๋ค๋ ๊ทผ์ฌ๋น์จ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํจ๊ป ์ ์ํด์ผํ๋ค.
- ์งํฉ ์ปค๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ๊ทผ์ฌ๋น์จ์ Klogn : ์๊ณ ๋ฆฌ์ฆ์ด ์ต์
๊ฒฝ์ฐ์ ํด์ผ์ง๋ผ๋ ๊ทธ ์งํฉ ์๊ฐ Klogn๊ฐ๋ฅผ ๋์ง ์๋๋ค๋ ๋ป.
- K = ์ต์ ํด์ ์งํฉ์ ์
- ์งํฉ ๋ฌธ์ ์ ์ต์ ํด๋ฅผ ์ฐพ๋๋ฐ๋ ์ง์์๊ฐ์ด ๊ฑธ๋ฆฌ๋, SetCover ์๊ณ ๋ฆฌ์ฆ์ O(n^3)์๊ฐ์ ๊ทผ์ฌํด๋ฅผ ์ฐพ์ผ๋ฉฐ ๊ทธ ํด๋ ์ค์ง์ ์ผ๋ก ์ต์ ํด์ ๋น์ท
โฐ์์ฉ
- ๋์๊ณํ์์ ๊ณต๊ณต๊ธฐ๊ด ๋ฐฐ์น
- ๊ฒฝ๋น ์์คํ
- ์ปดํจํฐ๋ฐ์ด๋ฌ์ค ์ฐพ๊ธฐ
- ๋๊ธฐ์ ์ ๊ตฌ๋งค ์ ์ฒด ์ ์
- ๊ธฐ์ ์ ๊ฒฝ๋ ฅ ์ง์ ๊ณ ์ฉ
- ๋นํ๊ธฐ ์กฐ์ข ์ฌ ์ค์ผ์ฅด๋ง, ์กฐ๋ฆฝ ๋ผ์ธ ๊ท ํํ, ์ ๋ณด๊ฒ์ ๋ฑ
Reference
์์ธ๊ณผํ๊ธฐ์ ๋ํ๊ต ์ปดํจํฐ๊ณตํ๊ณผ ์๊ณ ๋ฆฌ์ฆ ์์
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ํํ๋ง ์์ถ (0) | 2021.10.13 |
---|---|
[Algorithm] ์์ ์ค์ผ์ค๋ง (0) | 2021.10.13 |
[Algorithm] ๋ถ๋ถ ๋ฐฐ๋ญ ๋ฌธ์ (0) | 2021.10.13 |
[Algorithm] ์ต๋จ ๊ฒฝ๋ก ์ฐพ๊ธฐ : ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ (0) | 2021.10.11 |
[Algorithm] ์ต์ ์ ์ฅ ํธ๋ฆฌ : ํฌ๋ฃจ์ค์ปฌ & ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ (0) | 2021.10.11 |