07 26 - nolsigan/nolsigan.github.io GitHub Wiki

Algorithm

์‹œ๊ฐ„๋ณต์žก๋„

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ์—ฐ์‚ฐ์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅ์˜ ํฌ๊ธฐ์— ๋Œ€ํ•œ ํ•จ์ˆ˜๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ.

Big O notation์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ ์ง€๋ฐฐ์ ์ธ ํ•ญ๋งŒ ์‚ด๋ฆฐ๋‹ค.
๋งˆ์Šคํ„ฐ ์ •๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งˆ์Šคํ„ฐ ์ •๋ฆฌ

https://ko.wikipedia.org/wiki/%EB%A7%88%EC%8A%A4%ED%84%B0_%EC%A0%95%EB%A6%AC

๊ณ„์‚ฐ๋ณต์žก๋„ ํด๋ž˜์Šค

  • P
    • ๋‹คํ•ญ ์‹œ๊ฐ„์— ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋“ค์˜ ์ง‘ํ•ฉ
  • NP
    • ๋‹ต์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ์ด๊ฒƒ์ด ์ •๋‹ต์ธ์ง€๋ฅผ ๋‹คํ•ญ ์‹œ๊ฐ„ ๋‚ด์— ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋“ค์˜ ์ง‘ํ•ฉ
    • P ๋ฌธ์ œ๋„ NP ๋ฌธ์ œ์— ํฌํ•จ๋จ
  • NP-hard
    • NP์— ์†ํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๋‹ค๋Œ€์ผ ํ™˜์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋“ค์˜ ์ง‘ํ•ฉ
    • ex) SAT
  • NP-complete
    • NP-hard์ด๋ฉด์„œ NP์ธ ๋ฌธ์ œ

ํ’€๋ คํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์–ด๋–ค ๋ณ€ํ™˜์„ ๊ฑฐ์น˜๋ฉด NP-hard, NP-complete ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค๋ฉด,
๊ณง ์ด ๋ฌธ์ œ๋Š” NP-hard ์ด์ƒ์œผ๋กœ ์–ด๋ ค์šฐ๋ฉฐ ์ด ๋ฌธ์ œ๋ฅผ ๋‹คํ•ญ ์‹œ๊ฐ„์— ํ‘ธ๋Š” ๊ฒƒ์€ ์ธ๋ฅ˜ ์—ญ์‚ฌ์ƒ ์•„๋ฌด๋„ ๋ชปํ•œ ๋ฌธ์ œ์ด๋‹ค.
๋”ฐ๋ผ์„œ ๋ชจ๋ธ๋ง์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๊ทผ์‚ฌํ•ด๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ํ˜„๋ช…ํ•˜๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ •๋‹น์„ฑ ์ฆ๋ช…

  • ๊ท€๋‚ฉ๋ฒ•๊ณผ ๋ฐ˜๋ณต๋ฌธ ๋ถˆ๋ณ€์‹
  • ๊ท€๋ฅ˜๋ฒ•
  • ๋น„๋‘˜๊ธฐ์ง‘์˜ ์›๋ฆฌ
  • ๊ตฌ์„ฑ์  ์ฆ๋ช…

๋ฌด์‹ํ•˜๊ฒŒ ํ’€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ฐฐ์šฐ๋‹ค๋ณด๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋„ ๊ตณ์ด ๋ณต์žกํ•˜๊ฒŒ ํ’€๋ ค๊ณ  ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค.
์ปดํ“จํ„ฐ์˜ ์ตœ๋Œ€ ์žฅ์ ์ธ ๊ณ„์‚ฐ ์†๋„๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์‹ํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š” ๊ทธ๋ƒฅ ๊ทธ๋ ‡๊ฒŒ ํ‘ธ๋Š” ๊ฒƒ์ด๋‹ค.

Brute Force๋ฅผ ์ด์šฉํ•ด ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์ด ๊ณ„์‚ฐ๋Ÿ‰์„ ๊ณ„์‚ฐํ•œ๋‹ค. 1์ดˆ์— ์•ฝ 1์–ต๊ฐœ์˜ ๊ณ„์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋Œ€๋žต ๋ช‡์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ์ง€ ๊ณ„์‚ฐํ•˜์—ฌ๋ณธ๋‹ค.