728x90
Branch and Bound - Best First Search
๋ชจ๋ Node๋ฅผ ๋ฐฉ๋ฌธํ์ง ์๋๋ค. ๋ง๋ค์ง๋ ์๋๋ค. Start์์๋ ๋ ๊ฐ์ Node๋ฅผ ๋ง๋ค์ง๋ง Expand๋ฅผ ํ ๊ฒ์ธ๊ฐ ์๋๋ฉด ๊ทธ๋ง ๋ ๊ฒ์ธ๊ฐ๋ฅผ ๊ฒฐ์ ํด์ผ ๋๋ค. ๋ฐฉ๋ฌธํ์ง ์๋๋ค๋ฉด ๊ฒฝ์ฐ์ ์๊ฐ ์ค์ด๋ค๊ฒ ๋๋ค. ๊ทธ๋ด๋งํ ๊ฐ์น๊ฐ ์๋ ์ง๋ฅผ ํ๋จํ๋ ์์
์ ํด์ผ ํ๋ค.
Item should be sorted in descending order according to bi/wi ์ฒซ ๋ฒ์งธ O1์ด ๋จ์ ๋ฌด๊ฒ๋น ๊ฐ์น๊ฐ ํฐ ๊ฒ์ด ์ค๊ฒ ๋๋ sorting์ ๊ฑฐ์ณ์ผ ํ๋ค.
Branch and Bound
๊ฐ๊ฐ์ Node๋ง๋ค Benefit weight bound๋ฅผ ๊ณ์ฐํ๋ค. ์ฒซ ๋ฒ์งธ ์์ดํ
์ Knapsack ์ง์ด๋ฃ์์ ๋ ์ด์ต์ ๊ณ์ฐํด์ผ ํ๋ค. Don't choose O1์ Benefit์ 0์ด ๋๊ณ Choose O1์ Benefit์ O1์ Benefit์ด ๋๋ค. O2์ ๊ฒฝ์ฐ๋ Benefit์ด ๋ ๊ฐ๋ฅผ ๋ํ ๊ฐ์ด ๋๋ค. Choose์ ๊ฒฝ์ฐ๋ ๋ค์ด์จ ์์ดํ
์ benefit์ด ๋ํด์ง๋ค. bound๋ ํ์ฌ ์๋ Node๋ฅผ ๋ฐ์ผ๋ก Expand๋ฅผ ํ๋ค๊ณ ๊ฐ์ ํ์ ๋ ์๋ง๋ ์ป์ ์ ์๋ Benefit์ Upper Bound๋ฅผ ์๋ฏธํ๋ค. ๋ฐ์ผ๋ก Node๊ฐ ์๊ณ Expand๊ฐ ์์ด๋ ์ด๊ฒ ์ด์์ผ๋ก ์ป์ ์ ์๋ค๊ฐ Upper Bound๊ฐ ๋๋ค. ๋ด๊ฐ ์ต๋ํ์ผ๋ก ์ป์ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฐ์ ์์ธกํด๋ณด๋ ๊ฒ์ด๋ค. ๋ฐ์ผ๋ก ๋ด๋ ค๊ฐ๋ดค์ ๋ ์ป๊ธฐ ํ๋ค๋ค๋ฉด expand๋ฅผ ํ์ง ์๋๋ค. level i๋ผ๋ ๊ฒ์์ Total Weight๋ฅผ ๊ณ์ฐํ๋ค.
Tot_Weight์ ์ฌํ๊น์ง Knapsack์ ์ง์ด๋ฃ์ W1 + W2 + .. ์์ ์์์ ํ๋ค. W4๋ฅผ ์ง์ด๋ฃ์ ์ ์์ผ๋ฉด ์ง์ด๋ฃ๊ณ 5๋ฒ์งธ ์์ดํ
์ ์ง์ด๋ฃ์ ์ ์๋ ์ฌ์ ๊ฐ ์์ผ๋ฉด ๋ ์ง์ด๋ฃ.... W, ์ง์ด๋ฃ์ ์ ์๋ ์ ์ฒด ์ฉ๋์ ๋ฒ์ด๋์ง ์๋ ํ์์ ๊ณ์ ์ง์ด๋ฃ๋๋ค. weight์ ํ์ฌ๊น์ง ์ง์ด๋ฃ์ Weight๋ค์ ํฉ์ ์๋ฏธํ๊ณ ๊ทธ๋ค์ wj๋ ์์ผ๋ก ์ง์ด๋ฃ๊ฒ ๋ Weight๋ค์ ์๋ฏธํ๋ค.
Branch and Bound
tot_weight ์ ์ง๊ธ๊น์ง ์ง์ด๋ฃ์ Weight์ ์ง์ด๋ฃ์ Weight๋ฅผ ๋งํ๋ค. ์ต๋ํ ์์ดํ
์ ํฉ์ด tot_weight์ด๋ค. 1๋ฒ O 2๋ฒ X 3๋ฒ O ์ธ ์ํ๋ผ๊ณ ํด๋ณด์ ๊ทธ๋ผ W1 ๊ณผ W3์ด ๋ค์ด๊ฐ ์์ ๊ฒ์ด๋ค. ๊ทธ ๋ค์ 4๋ฒ 5๋ฒ 6๋ฒ์ ์ง์ด๋ฃ์ ์ ์์ง๋ง 7๋ฒ์ ๋ชป๋ฃ๋ ์ํฉ. ๋๋จธ์ง ๋ถ๋ถ์ด ์กด์ฌํ๋๋ฐ ๋ง์น 7๋ฒ์งธ ์์ดํ
์ ์๋ผ์ ์ง์ด๋ฃ์ ์ ์๋ค๊ณ ๊ฐ์ ์ ํ๋ ๊ฒ. ๊ทธ๋ ๋ค๋ฉด ๊ทธ๋ ๊ฒ ๋ฃ๊ฒ ๋๋ฉด W - tot_weight์์ ์๋ผ์ 7๋ฒ ์์ดํ
์ ์ง์ด๋ฃ์์ ๋๋ฅผ ์๋ฏธํ๋ค. ๋จ์๋ฌด๊ฒ๋น Benefit์ด ๋์ ์์๋๋ก sort๋ฅผ ํ๊ธฐ ๋๋ฌธ์
Branch and Bound
extand๋ฅผ ํ Node๋ค ์ค์์ Max Benefit์ด ์ ์ญ๋ณ์๋ก ํ์ํ๋ค. bound๊ฐ 10์ด๊ณ max๊ฐ 20์ด๋ฉด ์ด๋ป๊ฒ ๋๋๊ฐ? ํด๋น ๋
ธ๋ ์๋๋ก extandํด๋ดค์ ์ป์ ์ ์๋ ์ต๋๊ฐ 10๋ฐ์ ์๋๋ฏ๋ก extand ํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ด๋ค. ๋ง์ฝ bound๊ฐ 30์ด๋ผ๊ณ ํ๋ฉด 30์ ๋ฐ๋ ๋ณด์ฅ์ ์์ง๋ง ํด๋ณผ ๋ง ํ๊ธฐ์ Extand๋ฅผ ํ๊ฒ ๋๋ค.
Branch and Bound
Promising, ๋ฐ์ผ๋ก expand๋ฅผ ํด๋ ๋๊ฒ ๋ค, nonpromising expandํด๋ ํ์์๋ค. bound๊ฐ max_benefit๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์๋ ๋๋ weight์ด W๋ณด๋ค ํฐ ๊ฒฝ์ฐ non-promising์ ํด๋นํ๋ค. promising์ ๊ฒฝ์ฐ bound๊ฐ max_benefit๋ณด๋ค ํฌ๊ฑฐ๋ weight๊ฐ W๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ์ promisingํ ์ ์๋ค๊ณ ํํํ๋ค.
Branch and Bound
์ฒซ ๋ฒ์งธ case๋ weight์ด W๋ณด๋ค ํฐ ๊ฒฝ์ฐ ํ์ฌ Knapsack ๋ณด๋ค weight๊ฐ ํฐ ๊ฒฝ์ฐ benefit์ ์๋ฏธ๊ฐ ์๊ฒ ๋๋ค. ๋ ๋ฒ์งธ ๊ฒฝ์ฐ ์ง์ด๋ฃ์ ์ ์์ง๋ง bound๊ฐ Max_benefit๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ expand๋ฅผ ํ ํ์๊ฐ ์์ด์ง๋ค. ์ด ๊ฒฝ์ฐ ์ ํจํ๊ธฐ๋ ํ์ง๋ง Extandํ ํ์๊ฐ ์๋ค.
Branch and Bound
BFS์ ์ ์ฌํ๋ค๊ณ ๋ณผ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก BFS๋ฅผ applyํ๋ค. promising node์ non promising node๋ฅผ ๊ณ์ฐํ๊ฒ ๋๋ค. ๊ฐ ๋
ธ๋์์ benefit๊ณผ weight, bound๋ฅผ ๊ณ์ฐํ๊ฒ ๋๋ค. ๊ฐ๊ฐ์ node๋ง๋ค Bound๊ฐ ๊ณ์ฐ๋๋๋ฐ ๊ฐ์ฅ ํฐ Bound๋ฅผ ๊ฐ์ง ๋
ธ๋๋ฅผ ์ค์ฌ์ผ๋ก extandํ๊ฒ ๋๋ค. ๋จ์ ๋ฌด๊ฒ ๋น Benefit์ด ๊ฐ์ฅ ๋ง์ด ๋๊ฐ๋ ๊ฒ์ ๋จผ์ ๋์ค๋๋ก sort๋ฅผ ํ๋ค.
Branch and Bound
(0,0)์ด๋ผ๊ณ ํ๋ฉด knapsack์ ์๋ฌด๊ฒ๋ ๋ค์ด๊ฐ์ง ์์ ์ํ๋ฅผ ์๋ฏธํ๋ค. tot_weight์ ํ์ฌ๊น์ง ์ง์ด๋ฃ์ weight์ด๋ฏ๋ก 0์ด ๋๋ค. knapsack์ 2์ 5๋ฅผ ์ง์ด๋ฃ์ ์ ์๊ฒ ๋๋ค. bound๋ฅผ ํ์ฌ ์ง์ด๋ฃ์ด์ ์ป์ ์ด์ต์ด 0์ด๊ณ ์ง์ด๋ฃ์ ์ ์๋ ์ด์ต์ 40 + 30์ ํด๋นํ๋ค. ๊ทธ๋ฌ๋ฉด 9๋งํผ ๋จ๊ฒ ๋๋๋ฐ, 3๋ฒ ์งธ ์์ดํ
10์ 9๋งํผ ์๋ฅด๋ฉด ๋๋ค.
Branch and Bound
๋ ๊ฐ์ Node ์ค Bound๊ฐ ๋ ํฐ ์ผ์ชฝ Node๋ฅผ Extandํ๋ ๊ฒ์ด ์ข๋ค.
โ
Terms You should know or learn now
Vertex๋ฅผ node๋ผ๊ณ ๋ถ๋ฅธ๋ค. edge๋ ์ฐ๊ฒฐ๋ ์ ์ ์๋ฏธํ๋ค. Degree๋ผ๋ ๊ฒ์ ๋ช ๊ฐ์ Vertex๋ค์ด ์ฐ๊ฒฐ๋์ด ์๋ ๊ฐ๋ฅผ ๋งํ๋ค.
Degree of A๋ ์ฌ๊ธฐ์ 2๋ผ๊ณ ๋ณผ ์ ์๋ค. i๋ผ๋ Vertex์ Degree๋ 3์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. Digraph๋ Edge์ ๋ฐฉํฅ์ฑ์ด ์์ ๋๋ฅผ ์๋ฏธํ๋ค.
๋ฐฉํฅ์ฑ์ด ์๋ ๊ทธ๋ํ๋ฅผ Digraph๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ช ๊ฐ์ Edge๊ฐ Vertex๋ก ๋ค์ด์ค๋ ๊ฐ๋ฅผ ์๋ฏธํ๋ค. H๋ Indegree๊ฐ 3์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
a๊ฐ์ ๊ฒฝ์ฐ output degree์ input degree๋ก ๋ณผ ์ ์๋ค.
Terms you should know or learn now
Wegith๋ ์ค์์ผ ์๋ ์๊ณ ์ ์ ์ ์ ๋ ์๋ค. Undirect ๊ทธ๋ํ์์ ์๊ธฐ ์์ ์ผ๋ก ๋ค์ด๊ฐ๋ graph๋ ์กด์ฌํ์ง ์๋๋ค.
Direct graph == Digraph Edge๊ฐ ์ถ๋ฐํ๋ ๊ณณ์ head๋ผ๊ณ ํ๊ณ ๋์ฐฉํ๋ ๊ณณ์ tail์ด๋ผ๊ณ ํ๋ค. Direct Graph์์๋ ์๊ธฐ ์์ ์ผ๋ก
์ฐ๊ฒฐ๋ ์ ์๋ค.
Symmetric digraph, v์์ w w์์ v ๋๋ค ์กด์ฌํ๋ ๊ฒฝ์ฐ.
Complete Graph, ๋ชจ๋ ๋
ธ๋๊ฐ edge๊ฐ ์ฐ๊ฒฐ๋์ด ์์ ๋๋ฅผ ์๋ฏธํ๋ค.
Size of Graph๋. Number of node๋ฅผ n์ผ๋ก ํํํ๊ธฐ๋ ํ๊ณ r๋ก ํํํ๊ธฐ๋ ํ๋ค. Number of edge๋ฅผ m ๋๋ e๋ผ๊ณ ํํํ๋ค.
Dense Graph๋ edge๊ฐ ๋ง์ ๋, m = n(n-1)/2๋ฅผ ๋ง์กฑํ ๋ complete graph๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Sparse graph๋ edge๊ฐ ์ ์ ๋๋ฅผ ์๋ฏธํ๋ค. edge๊ฐ ํ๋๋ ์์ ๋๋ ์ด๋ ๊ฒ ๋ถ๋ฅผ ์ ์๋ค.
Paths and Cycles
P1๋ path์ด๊ณ P2๋ path์ด๋ค. cycle์์ vertex๊ฐ ๋ ๋ฒ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด simpleํ์ง ์๋ค๊ณ ํํํ๋ค.
Spanning Graph
๋ชจ๋ vertex๊ฐ ํฌํจ๋์ด์๋ค๋ฉด ๊ทธ๋ ๊ฒ ํํํ๋ค.
conected component ๋ maximal connected subgraph๋ผ๊ณ ํ ์ ์๋ค. ์ผ๋ถ๋ถ์ connected component๊ฐ ๋ ์ ์๋ค. ์ ์ฒด์ ์ผ๋ก
์ดํด๋ด์ผ ํ๋ค.
strongly connected digraph
u์์ v๋ก ๊ฐ ์ ์๊ณ v์์๋ u๋ก ๊ฐ ์ ์์ด์ผ ํ๋ค. Acycle์ ciycle์ด ์๋ ๊ฒจ์ฐ Directed acyclic graph๋ฅผ DAG๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Example
Direct graph์ด๋ค. ์ด๋ก์ ์ง์ญ์ Strongly Connected Graph์ด๋ค. ์๋ก ์๋ฐฉํฅ์ผ๋ก ์ด๋ป๊ฒ๋ ๊ฐ ์ ์๋ค. vertex๊ฐ ํ๋์ฌ๋ ๊ฐ๋ฅํ๋ค.
Trees
tree๋ผ๋ ๊ฒ์ graph์ด๋ฉด์ Connected ๋์ด์์ด์ผ ํ๋ค. cycle์ด ์กด์ฌํ์ง ์๋๋ค,
Spanning Graph
์๋ Graph์์ ํฌํจ๋๊ณ ์๋ ๋ชจ๋ Vertex๋ฅผ ํฌํจํด์ผ ํ๋๋ฐ ์ด์ ๋์์ Tree ๊ตฌ์กฐ๋ฅผ ๋ง์กฑํ ์ ์์ด์ผ ํ๋ค.
Graph adjacency Matrix
'๐ Major Study (Bachelor) > ๐จ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
9์ฃผ์ฐจ ํ์์ผ ์๊ณ ๋ฆฌ์ฆ (0) | 2022.04.27 |
---|---|
์๊ณ ๋ฆฌ์ฆ 7์ฃผ์ฐจ ๋ชฉ์์ผ (0) | 2022.04.14 |
์๊ณ ๋ฆฌ์ฆ 6์ฃผ์ฐจ ๋ชฉ์์ผ (0) | 2022.04.07 |
์๊ณ ๋ฆฌ์ฆ 6์ฃผ์ฐจ ๊ฐ์ (0) | 2022.04.04 |
์๊ณ ๋ฆฌ์ฆ 5์ฃผ์ฐจ ์์์ผ ๊ฐ์ (0) | 2022.04.04 |