๋ถ„๊ธฐ ํ•œ์ •๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

๋ถ„๊ธฐ ํ•œ์ •๋ฒ•

  • Branch : ์ด์ „ ์ƒํƒœ ๊ณต๊ฐ„ ํŠธ๋ฆฌ์—์„œ ๋‹ค์Œ ๊ฐ€์ง€๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•จ
  • Bound : ํ•œ๊ณ„
  • ์ด์ „์˜ ๋ฐฑ ํŠธ๋ ˆํ‚น๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค.
  • ๊ทธ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€๋Š” ์•Š๋‹ค.
  • ๊ฒฐ๊ตญ ํŠน์ • ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ–ˆ์„ ๋•Œ, ์ดํ›„๋ฅผ ์ญ‰ ๋ดค์„ ๋•Œ, ์ด๋†ˆ์ด ๊ฐˆ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์น˜? ํ˜น์€ ์ตœ์†Œ์น˜๊ฐ€ ๊ธฐ๋Œ€๊ฐ€ ๋˜๋ฉด ๊ฐ€๊ณ  ์• ์ดˆ์— ๊ธ€๋ €์œผ๋ฉด ์•ˆ๊ฐ€๋Š” ๊ฒƒ
  • ์ด์ „๊ณผ ๋‹ค๋ฅธ์ ์€, ํ•ด๋‹น ๋…ธ๋“œ์˜ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ 
  • ๋” ๋‚˜์•„๊ฐ€์„œ ์ด ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋จธ์ง€ ๊ฐ’์˜ ํ•œ๊ณ„ Bound๋ฅผ ์ฐพ๊ณ  ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ๊ฒฐ๊ตญ ํฌํ…์…œ์„ ๋ณธ๋‹ค๋Š” ๊ฒƒ(โ€ฆ ์—ํ˜€)

0-1 ๋ฐฐ๋‚ญ ์ฑ„์šฐ๊ธฐ ๋ฌธ์ œ

  • ์ž ๋‹ค์‹œ ๋Œ์•„์™”๋‹ค.
  • W์˜ ๋ฌด๊ฒŒ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋ฐฉ์ด ์žˆ์„ ๋•Œ
  • ๊ฐ€์น˜ pi, ๊ฐ๊ฐ์˜ ๋ฌด๊ฒŒ wi๊ฐ€ ์žˆ๋Š” ๋ฌผ๊ฑด n๊ฐœ๊ฐ€ ์žˆ๋‹ค๋ฉด
  • ๊ฐ€์žฅ ๊ฐ€์น˜๋ฅผ ๋†’ํžˆ๋ฉด์„œ ๊ฐ€๋ฐฉ์— ๋‹ด์„ ๋•Œ์˜ ๋ฌผ๊ฑด ๋ฆฌ์ŠคํŠธ๋Š”?

์ƒํƒœ ๊ณต๊ฐ„ ํŠธ๋ฆฌ

  • ์ž ์–˜๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ด๋Ÿฐ ์ƒํƒœ๊ณต๊ฐ„ ํŠธ๋ฆฌ๊ฐ€ ์ƒ๊ธด๋‹ค.
  • ๋ฌผ๊ฑด์ด n๊ฐœ๋ผ๋ฉด 2^n๊ฐœ์˜ ๋ง๋‹จ ๋…ธ๋“œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฑฐ์ง€.
  • ๊ทธ๋ฆฌ๊ณ  ๊ฑฐ๊ธฐ์„œ ๊ผญ ํŒ๋‹จ์„ ํ•ด์•ผํ•ด
  • ์ด์ „์—๋Š” ์ด๋Ÿฐ ์ ‘๊ทผ๋„ ํ–ˆ์—ˆ์–ด.
  • ๋™์  ๊ณ„ํš๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ, i๋ฒˆ์งธ๊นŒ์ง€์˜ ๋ฌผ๊ฑด์„ ๊ณ ๋ คํ–ˆ์„ ๋•Œ, w์˜ ๋ฌด๊ฒŒ๋ฅผ ๋„˜์ง€ ์•Š๋Š” ์ตœ๋Œ€ ๊ฐ€์น˜๋ผ๊ณ  ์ •์˜๋ฅผ ํ•˜๊ณ 
  • ๊ทธ๋Ÿผ ๊ทธ ์ƒํƒœ์—์„œ i๋ฒˆ์งธ ๋ฌผ๊ฑด์„ ๋„ฃ์—ˆ์„ ๋•Œ์˜ ๊ฐ€์น˜์™€ ๋„ฃ์ง€ ์•Š์•˜์„ ๋•Œ ๊ฐ€์น˜๋ฅผ ๋น„๊ตํ•ด์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋Š” ๊ฑฐ์ง€.
  • ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ• ์—ญ์‹œ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด 2๊ฐœ์˜ ๋น„๊ต๊ฐ€ ํ•„์š”ํ–ˆ๊ณ ,
  • ๊ฒฐ๊ตญ ๋ฌผ๊ฑด์ด n๊ฐœ์ธ ๊ฒฝ์šฐ 2^n ์ •๋„์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋ฐœ์ƒํ–ˆ์ง€.

Branch and bounds : DFS

branch and bound๋ฅผ ์‚ฌ์šฉ

  • ์ž, ๊ทธ๋Ÿผ ์ด๋ฒˆ์—๋Š” ์ด๋ ‡๊ฒŒ ํ•ด๋ณด์ž.
  • ๋‚ด๊ฐ€ ํŠน์ • ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ–ˆ์„ ๋•Œ, ์ดํ›„๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฐ€์น˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.
  • ๊ทธ๋Ÿผ ๋‚ด๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์–ป์€ ๊ฐ€์น˜๋ณด๋‹ค, ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฐ€์น˜๊ฐ€ ๋” ํฌ๋Œ€,
  • ๋ˆ ์—ฌ๊ธฐ๋‹ค๊ฐ€ ํˆฌ์žํ•˜๋ฉด ์ง€๊ธˆ ๋ฒˆ๊ฑฐ๋ณด๋‹ค 20%๋” ๋ฒˆ๋Œ€
  • ๊ทธ๋Ÿฌ๋ฉด ํˆฌ์ž ํ•˜์ž–์•„.
  • ๋˜‘๊ฐ™์ด ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๋Š” ๊ฑฐ์•ผ.
  • ๊ทธ๋Ÿฐ๋ฐ ์–˜๊ฐ€ ์ตœ๋Œ€ ๊ฐ€์น˜๋ฅผ ๊ณ„์‚ฐํ•ด๋ดค์ž ์•ˆ๋ผ
  • ๊ทธ๋Ÿฌ๋ฉด ๋‚ด๊ฐ€ ํˆฌ์ž๋ฅผ ์™œํ•ด.
  • ์ด๋Ÿฐ ๋Š๋‚Œ์ด์•ผ.
  • ๊ทธ๋Ÿผ ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ๊ตฌํ• ์ง€๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.
    • ์ผ๋‹จ ๋ฌด๊ฒŒ๋‹น ๊ฐ€์น˜๊ฐ€ ๋†’์€๊ฒŒ ๋จผ์ € ์˜ค๋Š”๊ฒŒ ๋งž์•„๋ณด์ด๋‹ˆ, ์ด ์ˆœ์„œ๋กœ ์ •๋ ฌํ•ด๋‘” ์ƒํƒœ๋กœ ์‹œ์ž‘ํ•ด๋ณด์ž.
    • profit : i๋ฒˆ์งธ ๋…ธ๋“œ๊นŒ์ง€ ๋ฐฉ๋ฌธํ–ˆ์„ ๋•Œ, ์ด๋•Œ๊นŒ์ง€ ๋„ฃ์€ ์•„์ดํ…œ์˜ ๊ฐ€์น˜ ํ•ฉ
    • weight : i๋ฒˆ์งธ ๋…ธ๋“œ๊นŒ์ง€ ๋ฐฉ๋ฌธํ–ˆ์„ ๋•Œ, ์ด๋•Œ๊นŒ์ง€ ๋„ฃ์€ ์•„์ดํ…œ์˜ ๋ฌด๊ฒŒ ํ•ฉ
    • bound : ์ด ์ดํ›„๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฐ€์น˜ (๋ฌผ๊ฑด ์ž˜๋ผ์„œ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜์ž)
    • ์ด bound๋ฅผ ๊ตฌํ•˜๋ ค๋ฉด, ๋ช‡๋ฒˆ์งธ ๋ฌผ๊ฑด์„ ๋„ฃ์—ˆ์„ ๋•Œ W๋ฅผ ๋„˜๋Š”์ง€๋ฅผ ์•Œ์•„์•ผํ•ด
    • ์˜ˆ๋ฅผ ๋“ค์–ด 6๋ฒˆ์งธ ๋ฌผ๊ฑด๊นŒ์ง€ ๋„ฃ์œผ๋‹ˆ๊นŒ W๋ฅผ ๋„˜์–ด๊ฐ€, ๊ทธ๋Ÿผ ์ตœ๋Œ€ ๊ฐ€์น˜๋ฅผ ๊ตฌํ•˜๋ ค๋ฉด 6๋ฒˆ์งธ ์›์†Œ๋Š” ๋นผ๊ณ 
    • ๋‚˜๋จธ์ง€๋ฅผ ๋‹ค ๋„ฃ์–ด์„œ ๊ฐ€์น˜๋ฅผ ๊ณ„์‚ฐํ•œ ๋‹ค์Œ์— 6๋ฒˆ์งธ๋Š” ์ž˜๋ผ์„œ ๊ฐ€์น˜๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ๋”ํ•ด์ค˜์•ผ ์ตœ๋Œ€ ๊ฐ€์น˜๊ฐ€ ๋‚˜์˜ค์ž–์•„(์ด๋ก ์ )
    • ๊ทธ 6์ด๋ผ๋Š” ์ˆซ์ž๋ฅผ k๋ผ๊ณ  ํ•ด๋ณด์ž. ๊ทธ๋Ÿฌ๋ฉด i๋ฒˆ์งธ ์ดํ›„๋ถ€ํ„ฐ k์ „๊นŒ์ง€ ๋‹ค ๋”ํ•ด์ค˜์•ผ๊ฒ ์ง€?
    • ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ
    • bound = profit + + (W-totalweight) * pk/wk
    • ์—ฌ๊ธฐ์„œ total weight๋Š” k-1๋ฒˆ์งธ๊นŒ์ง€์˜ ๋ฌด๊ฒŒ๋ฅผ ๋‹ค๋”ํ•œ ๊ฐ’์ด์•ผ.
    • ์ž ๊ทธ๋Ÿฌ๋ฉด ํƒ์ƒ‰์„ ํ•˜๋ฉด์„œ, ์ง€๊ธˆ๊นŒ์ง€ ์ตœ๋Œ€ ๊ฐ€์น˜๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜ maxprofit ํ•˜๋‚˜๋ฅผ ์žก์•„์ฃผ์ž.
    • maxprofit >= bound์ด๋ฉด ํƒ์ƒ‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
      • ๊ฐ™์•„๋„ ๊ทธ๋Ÿฌํ•œ ์ด์œ ๋Š” bound๋Š” ์ •๋ง ์ด๋ก ์  ์ตœ์„ ์ด๊ธฐ ๋•Œ๋ฌธ์ด์ง€.

ํƒ์ƒ‰ ํŠธ๋ฆฌ

  • ์—ฐ์Šตํ•˜๋ฉด์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ๋”ฐ๋ผ๊ฐ€ ๋ณด์ž.

Branch and bounds : BFS

BFS

  • ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•ด๋ณด์ž.
  • ํƒ์ƒ‰ ์ˆœ์„œ๋งŒ ๋‹ค๋ฅด๊ณ  ๋ชจ๋“  ๊ฒƒ์€ ๊ฐ™๋‹ค.

BFS ํƒ์ƒ‰ ์ˆœ์„œ

  • BFS์—์„œ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Queue๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ–ˆ๋‹ค.
  • ์ฆ‰ ํ•ด๋‹น ๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ
  • ์—ฐ๊ฒฐ๋œ ๋…€์„๋“ค ๋จผ์ € ํ์— ์ง‘์–ด๋„ฃ๊ณ 
  • ํŠ€์–ด ๋‚˜์˜จ ๋…€์„๋“ค์— ๋Œ€ํ•ด์„œ ๊ฐ™์€ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•จ์œผ๋กœ์จ ์ด๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ
  • ๊ทธ๋Ÿฐ๋ฐ, ์ด Queue๋ฅผ Priority Queue๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ€์žฅ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๋…€์„๋ถ€ํ„ฐ
  • ํƒ์ƒ‰ํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ?

Best First Search

  • ์‹ค์ œ๋กœ ํ•ด๋ณด๋ฉด ํƒ์ƒ‰ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์ด ์ค„์–ด๋“ค์—ˆ๋‹ค.

์™ธํŒ์› ๋ฌธ์ œ

  • ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋ฅผ ์ถœ๋ฐœํ•˜์—ฌ ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ํ•œ๋ฒˆ๋งŒ ๋ฐฉ๋ฌธํ•˜๊ณ  ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„์˜ค๋Š” ๊ฐ€์žฅ ์งง์€ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ
  • ์ฆ‰ ํƒ๋ฐฐ ์•„์ €์”จ๊ฐ€ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋กœ ๋‹ค ๋ฐฐ๋‹ฌํ•˜๊ณ  ์ง‘์—์™€์„œ ์‰ด๊นŒ? ์˜ ๋ฌธ์ œ์ด๋‹ค.
  • ๋งŒ์•ฝ์— ๋ชจ๋“  ๊ฐ€์ง€์ˆ˜๋ฅผ ํŒ๋‹จํ•œ๋‹ค๋ฉด (n-1)!์ด๋‹ค.
  • ์ด๋Ÿฐ ๊ฒฝ๋กœ๊ฐ€ ์•„์˜ˆ ๊ทธ๋ž˜ํ”„์— ์žˆ๋‹ค.

ํ—ค๋ฐ€ํ† ๋‹ˆ์•ˆ ํšŒ๋กœ

  • ์ด๊ฒƒ์„ ๋™์  ๊ณ„ํš๋ฒ•์œผ๋กœ ํ’€๋ ค๋ฉด ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋ง์ด ์•ˆ๋œ๋‹ค.
  • ์‚ฌ์‹ค ์™œ ์•ˆ๋˜๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค.

์™ธํŒ์› ๋ฌธ์ œ ์ƒํƒœ ๊ณต๊ฐ„ ํŠธ๋ฆฌ

  • ์ด๋ ‡๊ฒŒ ์ƒํƒœ๊ณต๊ฐ„ ํŠธ๋ฆฌ๊ฐ€ ๊ตฌ์„ฑ๋œ๋‹ค. ๋ง๋‹จ ๋…ธ๋“œ๋Š” ์ด (n-1)!๊ฐœ์ด๋‹ค.
  • ์ „๋žต์€ ๋ถ„๊ธฐ ํ•œ์ •๋ฒ•์œผ๋กœ, ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฉ๋ฌธํ•œ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ ์ดํ›„์˜ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง€๋Š” ๊ฐ€์ค‘์น˜์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๋”ํ•ด์„œ Bound๋ฅผ ์žก๋Š” ๊ฒƒ
  • ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋ฌด์Šจ ๋ง์ด๋ƒ๋ฉด..

  • ์ž ์ž˜๋ณด๋ฉด, ์ฒซ๋ฒˆ์งธ v1~v5๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๋ชจ๋‘ ๋”ํ•ด์„œ ์ผ์ฃผ ๊ฒฝ๋กœ์˜ bound๋ฅผ ์žก์•˜๋‹ค.
  • ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ด๊ฑด ์ž˜๋ชป๋๋‹ค. ๋ถˆ๊ฐ€๋Šฅํ• ์ง€๋„ ๋ชจ๋ฅด๋Š” ๊ฒฝ๋กœ์ธ๋ฐ..
  • ๊ทธ๊ฒŒ ํฌ์ธํŠธ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธดํ•˜๋‹ค. ์ฆ‰, ์ •๋ง ๊ธฐ์ ์ ์œผ๋กœ ์šด์ด๋„ˆ๋ฌด์ข‹์•„ ๊ทธ๋ž˜์„œ ์–ป๋Š” ๊ฒฐ๋ก ์„ bound๋กœ ์žก์ž๋Š” ๊ฒƒ
  • ์•„ํ•˜..
  • ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋‘๋ฒˆ์งธ ์„ธ๋ฒˆ์งธ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด,
  • ํŠน์ • ์œ„์น˜๊นŒ์ง€ ๊ฐ„๋‹ค์Œ์— ์•ˆ๊ฐ„ ๋…ธ๋“œ์— ๋Œ€ํ•ด์„œ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋งŒ ์™์™ ๋นผ์„œ ๊ทธ ๊ฒฝ๋กœ๊นŒ์ง€ ๊ฐ”์„ ๋•Œ์˜ Bound๋กœ ์žก๋Š”๋‹ค.
  • ์—ฌ๊ธฐ์„œ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ์ ์€, bound๋Š” ์ด๋ก ์ ์œผ๋กœ ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ๊ฐ’์œผ๋กœ ๊ณ„์‚ฐํ•˜๋Š”๊ฒƒ์ด ๋งž๋‹ค๋Š” ๊ฒƒ.

์ง์ ‘ ํ•ด๋ณด๊ธฐ

  • ๊ทธ๋Ÿฐ๋ฐ ์—ฌ์ „ํžˆ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๊ฑฐ์˜ ์ง€์ˆ˜๋‹ค ^^
  • ์ œํ”„๋”˜์€ n^2์— ํ’€ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
  • ์—ฌํŠผ ๊ทธ๋ž˜์„œ n=40๋งŒ ๋˜๋„ ๋ชปํ‘ผ๋‹ค๊ณ  ํ•œ๋‹ค.