๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸจ Algorithm

์•Œ๊ณ ๋ฆฌ์ฆ˜ 7์ฃผ์ฐจ ์›”์š”์ผ

by UKHYUN22 2022. 4. 8.
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