๋ชฉ๋ก์๊ณ ๋ฆฌ์ฆ/๊ธฐ๋ณธ๊ธฐ ๋ค์ง๊ธฐ (8)
๐ป
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ(Dynamic Programming) => ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋์ ํธ๋ ์๊ณ ๋ฆฌ์ฆ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ ๋ฌธ์ ๋ ํ ๋ฒ๋ง ํ์ด์ผ ํ๋ค. Optimal Substructure ๋ฅผ ๋ง์กฑํ๊ธฐ ๋๋ฌธ์, ๊ฐ์ ๋ฌธ์ ๋ ๊ตฌํ ๋๋ง๋ค ์ ๋ต์ด ๊ฐ๋ค. ๋ฐ๋ผ์, ์ ๋ต์ ํ ๋ฒ ๊ตฌํ์ผ๋ฉด ์ด๋๊ฐ์ ๋ฉ๋ชจํด๋๋๋ค. ์ด๋ฐ ๋ฉ๋ชจํ๋ ๊ฒ์ ์ฝ๋์ ๊ตฌํ์์๋ ๋ฐฐ์ด์ ์ ์ฅํ๋ ๊ฒ์ผ๋ก ํ ์ ์๋ค. ๋ฉ๋ชจ๋ฅผ ํ๋ค๊ณ ํด์ ์์ด๋ก Memoization ์ด๋ผ๊ณ ํ๋ค. ๋ ๊ฐ์ง ์์ฑ์ ๋ง์กฑํด์ผ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค. 1. Overlapping Subproblem (๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋ ์ ํธ๋๋ฐ, ์ด๋ ๋ฌธ์ ๋ค๋ผ๋ฆฌ ๊ฒน์ณ์ผํ๋ค.) ํฐ ๋ฌธ์ ์ ์์ ๋ฌธ์ ๋ฅผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํ ์ ์๋ค. ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ..
๋ค์ต์คํธ๋ผ if(dist[to] > dist[from] + cost){ dist[to] = dist[from] + cost; } - D[i] = ์์ -> i ๋ก ๊ฐ๋ ์ต๋จ ๊ฑฐ๋ฆฌ - C[i] = i๊ฐ ์ฒดํฌ๋์ด ์์ผ๋ฉด true, ์๋๋ฉด false 1. ์ฒดํฌ๋์ด ์์ง ์๋ ์ ์ ์ค์์ D์ ๊ฐ์ด ๊ฐ์ฅ ์์ ์ ์ x๋ฅผ ์ ํํ๋ค. 2. x๋ฅผ ์ฒดํฌํ๋ค. 3. x์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ ์ ์ ๊ฒ์ฌํ๋ค. ๊ฐ์ ์ (x,y,z)๋ผ๊ณ ํ์ ๋ d[y] > d[x] + z ์ด๋ฉด ๊ฐฑ์ ํด์ค๋ค. 1, 2, 3๋จ๊ณ๋ฅผ ๋ชจ๋ ์ ์ ์ ์ฒดํฌํ ๋๊น์ง ๊ณ์ํ๋ค. - ๋ชจ๋ ์ ์ ์ ํํ๋ฏ๋ก(V-1) X ์ ํ์ ํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ O(V) = O(V^2) ์ธ์ ํ๋ ฌ์ ์ด์ฉํ ๊ตฌํ for(int i=1; i
์ด์ ๊ธ ) 2020/02/29 - [์๊ณ ๋ฆฌ์ฆ/๊ธฐ๋ณธ๊ธฐ ๋ค์ง๊ธฐ] - [์๊ณ ๋ฆฌ์ฆ][DFS์BFS ์์ ์ ๋ณต] ๊ทธ๋ํ์ ํํ [์๊ณ ๋ฆฌ์ฆ][DFS์BFS ์์ ์ ๋ณต] ๊ทธ๋ํ์ ํํ ์ด๋์ ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด๋ฅผ ํด ๋ณธ ์ฌ๋์ด๋ผ๋ฉด ์๊ฒ ์ง๋ง ๋ชจ๋ ์ฝ๋ฉํ ์คํธ์ ๊ฑฐ์ ๋จ๊ณจ๋ก ์ถ์ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ๋ก DFS, BFS ์ด๋ค. ๋ฐฑ์ค ๋ฌธ์ ํ์ด๋ฅผ ํ๋ฉด์ ๊ฐ์ฅ ๋๋ฅผ ํ๋ค๊ฒ ํ๋ ๊ฒ๋ ๋ฐ๋ก DFS์BFS!! ๊ทธ๋์ ๋.. hyonee.tistory.com 2. ๊ทธ๋ํ ํ์ DFS:๊น์ด ์ฐ์ ํ์ -> ์ต๋ํ ๊น์ํ ๋ง์ด BFS:๋๋น ์ฐ์ ํ์ -> ์ต๋ํ ๋๊ฒ ๊ฐ๋ ๊ฒ ๋ชจ๋ ๊ฐ์ค์น๊ฐ 1์ธ๊ฒฝ์ฐ ์ต๋จ๊ฑฐ๋ฆฌ ํ์ - ์์ 2๊ฐ์ง ํ์ ๋ชจ๋ ๋ชฉ์ ์ ๋ชจ๋ ์ ์ ์ 1๋ฒ์ฉ ๋ฐฉ๋ฌธํ๋ ๊ฒ DFS - ์คํ์ ์ด์ฉํด์ ๊ฐ ์ ์์ ๋งํผ ์ต๋ํ ๋ง์ด ๊ฐ๊ณ ๊ฐ ์ ..
์ด๋์ ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด๋ฅผ ํด ๋ณธ ์ฌ๋์ด๋ผ๋ฉด ์๊ฒ ์ง๋ง ๋ชจ๋ ์ฝ๋ฉํ ์คํธ์ ๊ฑฐ์ ๋จ๊ณจ๋ก ์ถ์ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ๋ก DFS, BFS ์ด๋ค. ๋ฐฑ์ค ๋ฌธ์ ํ์ด๋ฅผ ํ๋ฉด์ ๊ฐ์ฅ ๋๋ฅผ ํ๋ค๊ฒ ํ๋ ๊ฒ๋ ๋ฐ๋ก DFS์BFS!! ๊ทธ๋์ ๋์ ๊ฐ์ด ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์๋ด๊ธฐ ์์ด๋ณด๋ค์ ์ํด ์์ ์ ๋ณต์ด๋ผ๋ ์นดํ ๊ณ ๋ฆฌ๋ก ์ฌ๋ฆฌ๊ณ ์ ํ๋ค. ๊ธ์ ์ฐ๋ฉด์ ๋๋ ๊ณต๋ถํ๊ณ , ์๋ฃ๊ฐ ๋ถ๋ ๋์์ด ๋๊ธธ ๋ฐ๋ผ๋ ๋ง์์ ๋๋ค :) 1. ๊ทธ๋ํ ํํ ์ธ์ ํ๋ ฌ - ์๋ฐฉํฅ ๊ทธ๋ํ ์ผ ๋ A[i][j], A[j][i] - ์ธ์ ํ๋ ฌ์ ์๋ ๊ฐ์ ๋ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์์ฃผ ์ฐ์ด์ง๋ ์๋๋ค. ์ฌ์ด ๋ฌธ์ ๋ฅผ ํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค. - ์ธ์ ํ๋ ฌ์ ๊ณต๊ฐ ๋ณต์ก๋๋ O(V^2)์ด๋ค. ๊ฐ์ค์น๊ฐ ์๋ ๊ฒฝ์ฐ) #include #include int a[10][10]; int m..
์ดํญ๊ณ์ ๋ถํ ์ ๋ณต๋ฒ์ ์ด์ฉํ ์ดํญ๊ณ์ ์๊ณ ๋ฆฌ์ฆ int binary(int n, int k){ if(k==0 || n == k) return 1; else return binary(n-1, k-1) + bin(n-1, k); } ๋์ ํ๋ก๊ทธ๋๋ฐ์ ์ด์ฉํ ์ดํญ๊ณ์ ์๊ณ ๋ฆฌ์ฆ int binary(int n, int k){ int B[n][k]; for(int i=0; i
ํ์์ ์๊ณ ๋ฆฌ์ฆ์ด๋? ์ด๋ค ์ ํ์ ํด์ผํ ๋ ๊ทธ ๋น์์ ๊ฐ์ฅ ์ต์ ์ ์ ํ์ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋งํ๋ค. - ์๊ฐ์ ์ ํ์ ๊ทธ ๋น์์ ์ต์ ์ ์ ํ์ด๋ค. ์ด๋ฐ ์ ํ๋ค์ด ๋ชจ์ฌ ์ต์ข ์ ์ธ ํด๋ต์ ์ป๋๋ค๊ณ ํ์ฌ ์ต์ข ํด๋ต์ด ์ต์ ์ด๋ผ๋ ๋ณด์ฅ์ ์๋ค. ๋ฐ๋ผ์, ํ์์ ์๊ณ ๋ฆฌ์ฆ์ ํด๋ต์ ์ป์ ํ์ ์ด ํด๋ต์ด ์ต์ ์ธ์ง ๊ฒ์ฌํด์ผ ํ๋ค. - ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ์ ์ฐจ 1๋จ๊ณ) ์ ์ ๊ณผ์ (selection procedure) : ํ์ฌ ์ํ์์ ๊ฐ์ฅ ์ข์ ์ ํ์ด๋ผ๊ณ ์๊ฐ๋๋ ํด๋ต์ ์ฐพ์์ ํด๋ต๋ชจ์(solution set)์ ํฌํจ์ํจ๋ค. 2๋จ๊ณ) ์ ์ ์ฑ๊ฒ์ฌ(feasibility test) : ์๋ก ์ป์ ํด๋ต๋ชจ์์ด ์ ์ ํ์ง๋ฅผ ๊ฒฐ์ ํ๋ค. 3๋จ๊ณ) ํด๋ต ๊ฒ์ฌ(solution check) : ์๋ก ์ป์ ํด๋ต๋ชจ์์ด ์ต์ ์ ํด์ธ์ง ๊ฒฐ์ ํ..
์ด๋ถ ํ์(์ด์งํ์) ์๊ณ ๋ฆฌ์ฆ ์ ์ฐพ์ ๋ฒ์๋ฅผ ๋ฐ์ผ๋ก ๋๋ ์ ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ฒ์ ์ค๊ฐ์ ๊ฐ์ ์์์ ๊ฐ์ผ๋ก ์ ํํ์ฌ, ๊ทธ ๊ฐ๊ณผ ํค๊ฐ์ ํฌ๊ณ ์์์ ๋น๊ตํ๋ ๋ฐฉ์์ด๋ค. ์ฒ์ ์ ํํ ์ค๊ฐ๊ฐ์ด ๋ง์ฝ ์ฐพ๋ ๊ฐ๋ณด๋ค ํฌ๋ฉด ์ต๋๊ฐ์ด ๋๊ณ , ์์ผ๋ฉด ์ต์๊ฐ์ด ๋๋ค. - ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ์ ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. - ๋จ, ์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒฝ์ฐ์๋ง ์ ์ฉํ ์ ์๋ค. - ์ต์ ์ ๊ฒฝ์ฐ๋ ์ฐพ์ผ๋ ค๋ ํค๊ฐ์ด ๋ฐฐ์ด์ ์กด์ฌํ์ง ์์ ๋์ด๋ค. - ์๊ฐ๋ณต์ก๋๋ O(logN) ์ด๋ค. ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ int BinarySearch(int arr[], int length, int key){ int first = 0; int last = length - 1; int mid = 0; while(first key){ // ์ค๊ฐ๊ฐ์ด ์ฐพ์ผ๋ ค..
๋ถํ ์ ๋ณต๋ฒ์ด๋? ๋ฌธ์ ์ ์ฌ๋ก๋ฅผ 2๊ฐ ์ด์์ ๋ ์์ ์ฌ๋ก๋ก ๋๋์ด(divide) ๊ฐ ์์ ์ฌ๋ก์ ๋ํ ํด๋ต(conquer)์ ์ฝ๊ฒ ์ป์ ์ ์์ผ๋ฉด ์ด๋ค์ ํด๋ต์ ๊ฒฐํฉ(combine)ํ์ฌ ์๋ฌธ์ ์ ํด๋ต์ ์ป๋ ๋ฐฉ์. - ๋ฌธ์ ๋ฅผ ๋๋๋ ๊ณผ์ ์ ํด๋ต์ ์ฝ๊ฒ ์ป์ ๋๊น์ง ๋ฐ๋ณต์ ์ผ๋ก ์ ์ฉํ๋ค. - ํํฅ์(top-down) ์ ๊ทผ ๋ฐฉ๋ฒ์ด๋ค. ๋ถํ (Divide) : ํด๊ฒฐํ๊ธฐ ์ฝ๋๋ก ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์์ ๋ถ๋ถ์ผ๋ก ๋๋๋ค. ์ ๋ณต(Conquer): ๋๋ ์์ ๋ฌธ์ ๋ฅผ ๊ฐ๊ฐ ํด๊ฒฐํ๋ค. ํตํฉ(Combine): (ํ์ํ๋ค๋ฉด) ํด๊ฒฐ๋ ํด๋ต์ ๋ชจ์๋ค. - ๋ณดํต ์ฌ๊ท ํ๋ก์์ ๋ก ๋จผ์ ํด๊ฒฐํ ๋ค์์ ๋ณด๋ค ํจ์จ์ ์ธ ๋ฐ๋ณต ํ๋ก์์ ๊ฐ ์๋์ง ๊ฒํ ํ๋ค. - ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์ด์ง ๊ฒ์(BinarySearch) ํฉ๋ณ ์ ๋ ฌ(MergeSort) ..