๐Ÿ‡บ๐Ÿ‡ธ USC ๋น…๋ฐ์ดํ„ฐ ์ปจํผ๋Ÿฐ์Šค ์ฐธ๊ฐ€๊ธฐ๐Ÿ‡บ๐Ÿ‡ธ |[USC AI/DS] Lesson 3. Problem Solving via Search

๋Œ€ํ˜„ยท2026๋…„ 8์›” 13์ผ
post-thumbnail

๐Ÿ‡บ๐Ÿ‡ธ USC ๋น…๋ฐ์ดํ„ฐ ์ปจํผ๋Ÿฐ์Šค ์ฐธ๊ฐ€๊ธฐ๐Ÿ‡บ๐Ÿ‡ธ |[USC AI/DS] Lesson 3. Problem Solving via Search

ํ•™๊ต์—์„œ ์ปดํ“จํŒ… ๋ฌธ์ œ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๋Š” ๊ณผ๋ชฉ์„ ๋“ค์„ ๋•Œ ๋ฐฐ์› ๋˜ ๋‚ด์šฉ๋“ค์ด ๊ฑฐ์˜ ๋Œ€๋‹ค์ˆ˜ ๋“ฑ์žฅํ•œ ๋‹จ์›์ด์—ˆ๋‹ค.

๊ธฐ์ดˆ์ ์ธ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์„ ์‹œ์ž‘์œผ๋กœ
๊ทธ๋ž˜ํ”„์™€ ํŠธ๋ฆฌ์˜ ๊ฐœ๋…, ๊ทธ๋ฆฌ๊ณ  ๋Œ€ํ‘œ์ ์ธ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ BFS์™€ DFS๋ฅผ ๋‹ค๋ฃฌ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด๋ฒˆ ๊ฐ•์˜์—์„œ๋Š” ๋‹จ์ˆœํžˆ

DFS๋Š” ๊นŠ๊ฒŒ ํƒ์ƒ‰ํ•œ๋‹ค.
BFS๋Š” ๋„“๊ฒŒ ํƒ์ƒ‰ํ•œ๋‹ค.

์ •๋„์—์„œ ๋๋‚˜์ง€ ์•Š์•˜๋‹ค.

์กฐ๊ธˆ ๋” ๊ทผ๋ณธ์ ์ธ ๊ด€์ ์—์„œ

์ปดํ“จํ„ฐ๊ฐ€ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ 'ํƒ์ƒ‰ ๋ฌธ์ œ'๋กœ ๋ฐ”๊พธ๊ณ , ๊ทธ ์•ˆ์—์„œ ํ•ด๋‹ต์„ ์–ด๋–ป๊ฒŒ ์ฐพ์•„๊ฐ€๋Š”๊ฐ€?

๋ฅผ ์„ค๋ช…ํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  BFS์™€ DFS๋ฟ๋งŒ ์•„๋‹ˆ๋ผ

  • Uniform Cost Search
  • Depth-Limited Search
  • Iterative Deepening Search

์™€ ๊ฐ™์€ ํƒ์ƒ‰ ์ „๋žต๋„ ํ•จ๊ป˜ ๋‹ค๋ค˜๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—…์—์„œ ์ด๋ฏธ ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ์ด๋ผ ์ต์ˆ™ํ•œ ๋ถ€๋ถ„๋„ ๋งŽ์•˜์ง€๋งŒ,
์ด๋ฒˆ์—๋Š” ์ด๋ฅผ AI์˜ Problem-Solving Agent ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ณธ๋‹ค๋Š” ์ ์ด ์žฌ๋ฏธ์žˆ์—ˆ๋‹ค.


Problem Solving์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๊ฐ•์˜์—์„œ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ๊ต‰์žฅํžˆ ์ถ”์ƒ์ ์œผ๋กœ ์ •์˜ํ•œ๋‹ค.

์–ด๋–ค ๋ฌธ์ œ์—๋Š” ํ˜„์žฌ ์ƒํƒœ๊ฐ€ ์žˆ๊ณ ,

Initial State

์šฐ๋ฆฌ๊ฐ€ ๋„๋‹ฌํ•˜๊ณ  ์‹ถ์€ ์ƒํƒœ๊ฐ€ ์žˆ๋‹ค.

Goal State

๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋‹ค๋ฅธ ์ƒํƒœ๋กœ ๋ณ€ํ™”์‹œํ‚ค๋Š” ํ–‰๋™์ด ์กด์žฌํ•œ๋‹ค.

Operator / Action

๊ฒฐ๊ตญ ๋ฌธ์ œ ํ•ด๊ฒฐ์ด๋ผ๋Š” ๊ฒƒ์€

Initial State
โ†“
Action
โ†“
State
โ†“
Action
โ†“
State
โ†“
...
โ†“
Goal State

์ฒ˜๋Ÿผ ์ดˆ๊ธฐ ์ƒํƒœ์—์„œ ๋ชฉํ‘œ ์ƒํƒœ๊นŒ์ง€ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ํ–‰๋™์˜ ์ˆœ์„œ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ธธ ์ฐพ๊ธฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.

ํ˜„์žฌ ์œ„์น˜ : ์ „๋ถ๋Œ€ํ•™๊ต
๋ชฉํ‘œ ์œ„์น˜ : ์ „์ฃผ์—ญ

๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ํ–‰๋™์€

๋ฒ„์Šค๋ฅผ ํƒ„๋‹ค.
ํƒ์‹œ๋ฅผ ํƒ„๋‹ค.
๊ฑท๋Š”๋‹ค.

๋“ฑ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

์ปดํ“จํ„ฐ ์ž…์žฅ์—์„œ๋Š” ๊ฒฐ๊ตญ

"์–ด๋–ค ํ–‰๋™๋“ค์„ ์–ด๋–ค ์ˆœ์„œ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ๋ชฉํ‘œ ์ƒํƒœ๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ์„๊นŒ?"

๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด ๋ฌธ์ œ ํ•ด๊ฒฐ์ด๋‹ค.

๊ฐ•์˜์—์„œ๋Š” ํŠนํžˆ ๊ฐ€๋Šฅํ•˜๋ฉด ์ตœ์†Œ์˜ ์—ฐ์‚ฐ ๋˜๋Š” ์ตœ์†Œ ๋น„์šฉ์œผ๋กœ ๋ชฉํ‘œ ์ƒํƒœ์— ๋„๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ์ค‘์š”ํ•˜๊ฒŒ ๋‹ค๋ฃฌ๋‹ค.


Offline Problem Solving๊ณผ Online Problem Solving

์—ฌ๊ธฐ์„œ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ์‹๋„ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

Offline Problem Solving

Offline Problem Solving์€
์‹ค์ œ๋กœ ํ–‰๋™ํ•˜๊ธฐ ์ „์— ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋จผ์ € ์ฐพ์•„๋†“๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋ฌธ์ œ ๋ถ„์„
โ†“
ํ•ด๊ฒฐ ๊ฒฝ๋กœ ํƒ์ƒ‰
โ†“
๊ฒฝ๋กœ ๊ฒฐ์ •
โ†“
์‹ค์ œ ํ–‰๋™

๋ง ๊ทธ๋Œ€๋กœ ๊ณ„ํš์„ ๋ชจ๋‘ ์„ธ์šด ๋’ค ์›€์ง์ธ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด๋น„๊ฒŒ์ด์…˜์ด ๊ฒฝ๋กœ๋ฅผ ๋จผ์ € ๊ณ„์‚ฐํ•˜๊ณ 

์ „๋ถ๋Œ€
โ†’ ๋ฐฑ์ œ๋Œ€๋กœ
โ†’ ๊ธฐ๋ฆฐ๋Œ€๋กœ
โ†’ ์ „์ฃผ์—ญ

์ด๋ผ๋Š” ๊ธธ์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค.

๊ฐ•์˜์—์„œ๋Š” ์ด๋ฅผ ์•ฝ๊ฐ„ ์žฌ๋ฏธ์žˆ๊ฒŒ

solution executed "eyes closed"

๋ผ๊ณ  ํ‘œํ˜„ํ–ˆ๋‹ค.

์ด๋ฏธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
๊ทธ ๊ณ„ํš์„ ๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.


Online Problem Solving

๋ฐ˜๋Œ€๋กœ Online Problem Solving์€
ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์™„์ „ํžˆ ์•Œ์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ์—์„œ ํ–‰๋™ํ•œ๋‹ค.

ํ–‰๋™
โ†“
์ƒˆ๋กœ์šด ์ •๋ณด ํš๋“
โ†“
๋‹ค์Œ ํ–‰๋™ ๊ฒฐ์ •
โ†“
์ƒˆ๋กœ์šด ์ •๋ณด ํš๋“
โ†“
...

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฏธ๋กœ ์ „์ฒด ์ง€๋„๋ฅผ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์—์„œ
์ง์ ‘ ์›€์ง์ด๋ฉฐ ๊ธธ์„ ์ฐพ๋Š” ๋กœ๋ด‡์„ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

์ด ๊ฒฝ์šฐ์—๋Š”

ํƒ์ƒ‰ โ†’ ํ–‰๋™ โ†’ ๊ด€์ฐฐ โ†’ ๋‹ค์‹œ ํƒ์ƒ‰

์ด ๋ฐ˜๋ณต๋œ๋‹ค.


Problem์˜ ์ข…๋ฅ˜

๊ฐ•์˜์—์„œ๋Š” ๋ฌธ์ œ๋ฅผ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ฃผ์–ด์ง€๋Š”์ง€์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ์šฉ์–ด๊ฐ€ ์กฐ๊ธˆ ๋ณต์žกํ•ด ๋ณด์˜€๋Š”๋ฐ
๊ฒฐ๊ตญ ํ•ต์‹ฌ์€

ํ˜„์žฌ ์ƒํ™ฉ์„ ์–ผ๋งˆ๋‚˜ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ๋Š”๊ฐ€?

๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์› ๋‹ค.


Single-State Problem

๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๊ฒฝ์šฐ๋‹ค.

ํ™˜๊ฒฝ์ด Deterministicํ•˜๊ณ  Fully Observableํ•˜๋‹ค.

์ฆ‰,

ํ˜„์žฌ ๋‚ด๊ฐ€ ์–ด๋”” ์žˆ๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์žˆ๊ณ 
+
์–ด๋–ค ํ–‰๋™์„ ํ–ˆ์„ ๋•Œ ์–ด๋–ค ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€๋„ ์•Œ๊ณ  ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด

A โ†’ B โ†’ C โ†’ Goal

์ด๋ผ๋Š” ๊ธธ์„ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด

Right
Right
Right

์™€ ๊ฐ™์€ ํ–‰๋™ Sequence๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ํ’€๊ฒŒ ๋˜๋Š”
๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ ๋Œ€๋ถ€๋ถ„์€ ์ด๋Ÿฐ ํ˜•ํƒœ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


Conformant Problem

์ด๋ฒˆ์—๋Š” ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์—†๋‹ค.

์ฆ‰ Non-observable ํ™˜๊ฒฝ์ด๋‹ค.

์„ผ์„œ๊ฐ€ ์—†์–ด์„œ ๋‚ด๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ค ์ƒํƒœ์ธ์ง€ ๋ชจ๋ฅด์ง€๋งŒ
๊ทธ๋ž˜๋„ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด์„œ ๋ชฉํ‘œ์— ๋„๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.

์ด๋•Œ๋Š” ๋‹จ์ˆœํ•œ ๋ฌผ๋ฆฌ์ ์ธ State ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ

ํ˜„์žฌ ์กด์žฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” State๋“ค์˜ ์ง‘ํ•ฉ

์„ ๊ณ ๋ คํ•˜๊ฒŒ ๋œ๋‹ค.

๊ฐ•์˜์—์„œ๋Š” ์ด๋ฅผ Belief State๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.


Contingency Problem

ํ™˜๊ฒฝ์ด

Nondeterministic
๋˜๋Š”
Partially Observable

ํ•œ ๊ฒฝ์šฐ๋‹ค.

ํ–‰๋™์˜ ๊ฒฐ๊ณผ๊ฐ€ ํ•ญ์ƒ ๋™์ผํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๊ณ 
ํ™˜๊ฒฝ์˜ ์ผ๋ถ€ ์ •๋ณด๋งŒ ๊ด€์ฐฐํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋„ ๋‹จ์ˆœํ•œ ํ•˜๋‚˜์˜ Action Sequence๊ฐ€ ์•„๋‹ˆ๋ผ

๋งŒ์•ฝ A๋ผ๋ฉด โ†’ ํ–‰๋™ 1
๋งŒ์•ฝ B๋ผ๋ฉด โ†’ ํ–‰๋™ 2

๊ฐ™์€ ์กฐ๊ฑด๋ถ€ ๊ณ„ํš(Contingent Plan) ๋˜๋Š” Policy๊ฐ€ ๋œ๋‹ค.

์ฆ‰,

Search
โ†“
Execution
โ†“
์ƒˆ๋กœ์šด ์ •๋ณด
โ†“
Search

๊ฐ€ ๋ฐ˜๋ณต๋  ์ˆ˜ ์žˆ๋‹ค.


Vacuum World

๊ฐ•์˜์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด
AI ๋ถ„์•ผ์—์„œ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” Vacuum World ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

์ฒญ์†Œ๊ธฐ๊ฐ€ ๋‘ ๊ณต๊ฐ„์„ ์ด๋™ํ•˜๋ฉด์„œ
๋จผ์ง€๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋งค์šฐ ๋‹จ์ˆœํ•œ ํ™˜๊ฒฝ์ด๋‹ค.

์ฒญ์†Œ๊ธฐ๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ–‰๋™์€

Left
Right
Vacuum
NoOp

์ •๋„๋‹ค.

๋ชฉํ‘œ๋Š” ๋‹จ์ˆœํ•˜๋‹ค.

๋ชจ๋“  ๊ณต๊ฐ„์— ๋จผ์ง€๊ฐ€ ์—†๋Š” ์ƒํƒœ

์ด๋‹ค.

Single-State Problem์ด๋ผ๋ฉด ํ˜„์žฌ ์ฒญ์†Œ๊ธฐ ์œ„์น˜์™€
๋จผ์ง€๊ฐ€ ์–ด๋”” ์žˆ๋Š”์ง€ ๋ชจ๋‘ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ

Right
Vacuum

๊ฐ™์€ ๋ช…ํ™•ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ˜„์žฌ ์œ„์น˜๋‚˜ ๋จผ์ง€์˜ ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค๋ฉด
๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ƒํƒœ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ™˜๊ฒฝ์ด ๋ถˆํ™•์‹คํ•˜๋‹ค๋ฉด

Right
if dirt then Vacuum
Left
if dirt then Vacuum
...

์ฒ˜๋Ÿผ ์กฐ๊ฑด์— ๋”ฐ๋ผ ํ–‰๋™์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.

๊ฒฐ๊ตญ ๊ฐ™์€ ์ฒญ์†Œ ๋ฌธ์ œ๋ผ๋„

ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ผ๋งˆ๋‚˜ ์•Œ๊ณ  ์žˆ๋А๋ƒ์— ๋”ฐ๋ผ ๋ฌธ์ œ์˜ ํ˜•ํƒœ๊ฐ€ ์™„์ „ํžˆ ๋‹ฌ๋ผ์ง„๋‹ค.


๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ• ๊นŒ?

์ด์ œ๋ถ€ํ„ฐ๊ฐ€ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰๊ณผ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

๊ฐ•์˜์—์„œ๋Š” ํ•˜๋‚˜์˜ Single-State Problem์„ ๋„ค ๊ฐ€์ง€ ์š”์†Œ๋กœ ์ •์˜ํ•œ๋‹ค.

1. Initial State
2. Successor Function
3. Goal Test
4. Path Cost

ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์ž.


1. Initial State

ํƒ์ƒ‰์ด ์‹œ์ž‘๋˜๋Š” ์ƒํƒœ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฃจ๋งˆ๋‹ˆ์•„์˜ ๋„์‹œ ๊ฐ„ ๊ธธ ์ฐพ๊ธฐ ๋ฌธ์ œ์—์„œ

ํ˜„์žฌ ์œ„์น˜ = Arad

๋ผ๋ฉด

Initial State = Arad

๊ฐ€ ๋œ๋‹ค.


2. Successor Function

ํ˜„์žฌ ์ƒํƒœ์—์„œ
๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋“ค์„ ์ •์˜ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Arad์—์„œ ์ง์ ‘ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋„์‹œ๊ฐ€

Zerind
Sibiu
Timisoara

๋ผ๋ฉด

S(Arad)
=
{Zerind, Sibiu, Timisoara}

์ •๋„๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰,

ํ˜„์žฌ ์ƒํƒœ์—์„œ ์–ด๋–ค ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ ์–ด๋–ค ์ƒํƒœ๊ฐ€ ๋˜๋Š”๊ฐ€?

๋ฅผ ์ •์˜ํ•œ๋‹ค.

์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ๊ทธ๋ž˜ํ”„์˜ ์ธ์ ‘ ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š” ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๊ฐ™๋‹ค.


3. Goal Test

ํ˜„์žฌ ์ƒํƒœ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ชฉํ‘œ์ธ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ชฉ์ ์ง€๊ฐ€ Bucharest๋ผ๋ฉด

ํ˜„์žฌ ๋„์‹œ == Bucharest ?

๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฉด ๋œ๋‹ค.

์ด์ฒ˜๋Ÿผ ๋ชฉํ‘œ๊ฐ€ ์ •ํ™•ํ•œ ํ•˜๋‚˜์˜ ์ƒํƒœ๋กœ ์ฃผ์–ด์งˆ ์ˆ˜๋„ ์žˆ๊ณ ,

์ฒญ์†Œ๊ธฐ ๋ฌธ์ œ์ฒ˜๋Ÿผ

๋ชจ๋“  ๋จผ์ง€๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ๋Š”๊ฐ€?

์ฒ˜๋Ÿผ ์กฐ๊ฑด ํ˜•ํƒœ๋กœ ์ •์˜๋  ์ˆ˜๋„ ์žˆ๋‹ค.


4. Path Cost

๋ชฉํ‘œ๊นŒ์ง€ ์ด๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋น„์šฉ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋„์‹œ ๊ฐ„ ์ด๋™์—์„œ๋Š”

๊ฑฐ๋ฆฌ

๊ฐ€ ๋น„์šฉ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜๋ฉด ํผ์ฆ์—์„œ๋Š”

ํ•œ ๋ฒˆ ์ด๋™ = ๋น„์šฉ 1

์ด๋ผ๊ณ  ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ „์ฒด ๊ฒฝ๋กœ ๋น„์šฉ์€

๊ฐ ์ด๋™ ๋น„์šฉ์˜ ํ•ฉ

์ด ๋œ๋‹ค.

๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํžˆ Goal์— ๋„์ฐฉํ•˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹ˆ๋ผ
๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ๋Š”

Goal๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ ์ค‘ ๊ฐ€์žฅ ๋น„์šฉ์ด ์ž‘์€ ๊ฒฝ๋กœ

์ผ ์ˆ˜ ์žˆ๋‹ค.


State Space, Problem Space

์ด์ œ ๋ฌธ์ œ๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ•์˜์—์„œ๋Š” ์ด๋ฅผ State Space, ๋˜๋Š” Problem Space๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

State Space๋Š” ๊ฒฐ๊ตญ ํ•˜๋‚˜์˜ Graph๋‹ค.

Node
โ†’ ๋ฌธ์ œ์—์„œ ๊ฐ€๋Šฅํ•œ State

Edge
โ†’ ํ•œ State์—์„œ ๋‹ค๋ฅธ State๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” Action

์˜ˆ๋ฅผ ๋“ค์–ด

A โ†’ B โ†’ C
     โ†“
     D โ†’ Goal

์ด๋ผ๋Š” ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค๋ฉด

A, B, C, D, Goal์€ ๊ฐ๊ฐ State์ด๊ณ 
ํ™”์‚ดํ‘œ๋Š” ๊ฐ€๋Šฅํ•œ Action์„ ์˜๋ฏธํ•œ๋‹ค.

์ฆ‰,

๋ฌธ์ œ๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ๋ฐ”๊พธ๊ณ , ๊ทธ๋ž˜ํ”„์—์„œ Initial State๋ถ€ํ„ฐ Goal State๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๊ฒƒ

์ด Search Problem์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


Romania Route Finding

๊ฐ•์˜์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด
๋ฃจ๋งˆ๋‹ˆ์•„์˜ ๋„์‹œ ์ง€๋„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ˜„์žฌ ์œ„์น˜๊ฐ€

Arad

์ด๊ณ  ๋ชฉ์ ์ง€๊ฐ€

Bucharest

๋ผ๊ณ  ํ•ด๋ณด์ž.

๊ทธ๋Ÿฌ๋ฉด ๋ฌธ์ œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

Initial State
= Arad

States
= ๊ฐ ๋„์‹œ

Actions
= ์—ฐ๊ฒฐ๋œ ๋„์‹œ๋กœ ์ด๋™

Goal
= Bucharest

Path Cost
= ๋„์‹œ ๊ฐ„ ๊ฑฐ๋ฆฌ

๊ทธ๋Ÿฌ๋ฉด ๋ฌธ์ œ๋Š” ์™„์ „ํžˆ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.

Arad
โ†“
Sibiu
โ†“
Fagaras
โ†“
Bucharest

๊ฐ™์€ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๋ฌผ๋ก  ์ด ๊ฒฝ๋กœ๊ฐ€ ํ•ญ์ƒ ๊ฐ€์žฅ ์งง์€ ๊ฒฝ๋กœ๋ผ๋Š” ์˜๋ฏธ๋Š” ์•„๋‹ˆ๋‹ค.

์ดํ›„ ์–ด๋–ค Search Strategy๋ฅผ ์‚ฌ์šฉํ•˜๋А๋ƒ์— ๋”ฐ๋ผ
์ฐพ๊ฒŒ ๋˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.


8-Puzzle๋„ ๊ฒฐ๊ตญ Graph ๋ฌธ์ œ๋‹ค

๋‹ค์Œ ์˜ˆ์ œ๋Š” 8-Puzzle์ด๋‹ค.

3ร—3 ์นธ ์•ˆ์—์„œ ํ•˜๋‚˜์˜ ๋นˆ์นธ์„ ์ด๋™์‹œํ‚ค๋ฉด์„œ
์ˆซ์ž๋ฅผ ๋ชฉํ‘œ ๋ฐฐ์—ด๋กœ ๋งŒ๋“œ๋Š” ํผ์ฆ์ด๋‹ค.

์ฒ˜์Œ ๋ณด๋ฉด ๊ทธ๋ž˜ํ”„์™€ ๋ณ„๋กœ ๊ด€๋ จ์ด ์—†์–ด ๋ณด์ธ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๊ฒƒ๋„ State Space๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜๋‚˜์˜ ํผ์ฆ ๋ฐฐ์น˜๋ฅผ

State

๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋นˆ์นธ์„

Left
Right
Up
Down

์œผ๋กœ ์›€์ง์ด๋Š” ๊ฒƒ์„ Action์œผ๋กœ ์ƒ๊ฐํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด

ํ˜„์žฌ ํผ์ฆ
โ†“
๋นˆ์นธ ์ด๋™
โ†“
์ƒˆ๋กœ์šด ํผ์ฆ

์ด ๋œ๋‹ค.

์ฆ‰ ๊ฐ๊ฐ์˜ ํผ์ฆ ๋ฐฐ์น˜๊ฐ€ Node์ด๊ณ 
ํ•œ ๋ฒˆ์˜ ์ด๋™์ด Edge์ธ ๊ฑฐ๋Œ€ํ•œ Graph๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

Goal Test๋Š”

ํ˜„์žฌ ํผ์ฆ == ๋ชฉํ‘œ ํผ์ฆ

์ด๊ณ ,

ํ•œ ๋ฒˆ ์›€์ง์ผ ๋•Œ ๋น„์šฉ์„ 1์ด๋ผ๊ณ  ๋‘๋ฉด

Path Cost = ์ด๋™ ํšŸ์ˆ˜

๊ฐ€ ๋œ๋‹ค.

์ฒ˜์Œ์—๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ
์ถ”์ƒํ™”ํ•˜๊ณ  ๋‚˜๋ฉด ๊ฒฐ๊ตญ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ๋ผ๋Š” ์ ์ด ์žฌ๋ฏธ์žˆ๋‹ค.


Graph๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์—ฌ๊ธฐ์„œ ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋„ ๋‹ค์‹œ ๋‹ค๋ค˜๋‹ค.

๊ทธ๋ž˜ํ”„๋Š” ํฌ๊ฒŒ

Node(Vertex)
Edge

๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

Node๋Š” ํ•˜๋‚˜์˜ State๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ 
Edge๋Š” Node ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

๊ฐ•์˜์—์„œ๋Š” ์ฃผ๋กœ Directed Graph๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•œ๋‹ค.

A โ†’ B

๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ๋ฐ˜๋“œ์‹œ

B โ†’ A

๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์—ฐ๊ฒฐ๋œ Node๋“ค์„ ๋”ฐ๋ผ๊ฐ€๋Š” ์ˆœ์„œ๋ฅผ Path๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด

A โ†’ B โ†’ C โ†’ D

๊ฐ€ ํ•˜๋‚˜์˜ Path๋‹ค.

Edge๊ฐ€ 3๊ฐœ์ด๋ฏ€๋กœ ์ด ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋Š” 3์ด๊ณ 
ํฌํ•จ๋œ Node์˜ ๊ฐœ์ˆ˜๋Š” 4๊ฐœ๋‹ค.


Search Graph์™€ Search Tree๋Š” ๋‹ค๋ฅด๋‹ค

์—ฌ๊ธฐ์—์„œ ๊ฐœ์ธ์ ์œผ๋กœ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•  ๋งŒํ–ˆ๋˜ ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค.

๋ฐ”๋กœ

State Space Graph

์™€

Search Tree

์˜ ์ฐจ์ด๋‹ค.

State Space Graph์—์„œ๋Š”
ํ•˜๋‚˜์˜ State๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•œ ๋ฒˆ๋งŒ ์กด์žฌํ•œ๋‹ค.

ํ•˜์ง€๋งŒ Search Tree์—์„œ๋Š” ๊ฐ™์€ State๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋“ฑ์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด Search Tree์˜ Node๋Š” ๋‹จ์ˆœํžˆ State ํ•˜๋‚˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ

๊ทธ State์— ๋„๋‹ฌํ•˜๊ธฐ๊นŒ์ง€์˜ ์ „์ฒด ๊ฒฝ๋กœ

๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด

S โ†’ A โ†’ C

์™€

S โ†’ B โ†’ C

๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.

State Space Graph์—์„œ๋Š” C๋ผ๋Š” Node๊ฐ€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•œ๋‹ค.

ํ•˜์ง€๋งŒ Search Tree์—์„œ๋Š”

S-A-C

S-B-C

๋ผ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
C๊ฐ€ ๋‘ ๋ฒˆ ๋“ฑ์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ Search Tree์—๋Š” ์ƒ๋‹นํžˆ ๋งŽ์€ ์ค‘๋ณต ๊ตฌ์กฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.


State Node์™€ Tree Node๋„ ๋‹ค๋ฅด๋‹ค

State ์ž์ฒด์™€
Search ๊ณผ์ •์—์„œ ์‚ฌ์šฉํ•˜๋Š” Tree Node๋„ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค.

State๋Š” ๋ง ๊ทธ๋Œ€๋กœ

ํ˜„์žฌ ์„ธ๊ณ„์˜ ์ƒํƒœ

๋‹ค.

ํ•˜์ง€๋งŒ Tree Node๋Š” ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์—
๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

State
Parent
Children
Depth
Path Cost
Action

์ฆ‰,

State โ‰  Search Tree Node

๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.


Search์˜ ํ•ต์‹ฌ, Frontier

Search Algorithm์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด ํ•˜๋‚˜ ๋“ฑ์žฅํ•œ๋‹ค.

๋ฐ”๋กœ Frontier, ๋˜๋Š” Fringe๋‹ค.

Frontier๋Š”

์•„์ง ํƒ์ƒ‰ํ•ด์•ผ ํ•  ํ›„๋ณด Node๋“ค์˜ ์ง‘ํ•ฉ

์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

ํƒ์ƒ‰ ๊ณผ์ •์„ ๊ต‰์žฅํžˆ ๋‹จ์ˆœํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Start Node๋ฅผ Frontier์— ๋„ฃ๋Š”๋‹ค.

while Frontier๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด

    Frontier์—์„œ Node ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค.

    Goal์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

    Goal์ด๋ผ๋ฉด ์ข…๋ฃŒํ•œ๋‹ค.

    ์•„๋‹ˆ๋ผ๋ฉด Neighbor๋“ค์„ Frontier์— ๋„ฃ๋Š”๋‹ค.

์—ฌ๊ธฐ์„œ ์ •๋ง ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€

Frontier์—์„œ "์–ด๋–ค Node๋ฅผ ๋จผ์ € ์„ ํƒํ•  ๊ฒƒ์ธ๊ฐ€?"

์ด๋‹ค.

์ด ์„ ํƒ ๋ฐฉ์‹์ด ๋ฐ”๋กœ Search Strategy๊ฐ€ ๋œ๋‹ค.


Search Strategy๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๊ธฐ์ค€

ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹จ์ˆœํžˆ

๋‹ต์„ ์ฐพ์•˜๋Š”๊ฐ€?

๋งŒ์œผ๋กœ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ฐ•์˜์—์„œ๋Š” ๋„ค ๊ฐ€์ง€ ๊ธฐ์ค€์„ ์‚ฌ์šฉํ•œ๋‹ค.

Completeness

ํ•ด๋‹ต์ด ์กด์žฌํ•œ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”๊ฐ€?

Time Complexity

์–ผ๋งˆ๋‚˜ ๋งŽ์€ Node๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

Space Complexity

์–ผ๋งˆ๋‚˜ ๋งŽ์€ Node๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

Optimality

์ฐพ์€ ๋‹ต์ด ์ตœ์†Œ ๋น„์šฉ์˜ ์ตœ์ ํ•ด์ธ๊ฐ€?

์ด ๋„ค ๊ฐ€์ง€ ๊ธฐ์ค€์œผ๋กœ
๊ฐ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.


Uninformed Search

์ด๋ฒˆ ๊ฐ•์˜์—์„œ ๋‹ค๋ฃจ๋Š” ํƒ์ƒ‰ ์ „๋žต์€
์ฃผ๋กœ Uninformed Search๋‹ค.

๋ง ๊ทธ๋Œ€๋กœ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด ์—†์ด
๋ฌธ์ œ ์ •์˜์— ์ฃผ์–ด์ง„ ์ •๋ณด๋งŒ์œผ๋กœ ํƒ์ƒ‰ํ•œ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Breadth-First Search
Uniform-Cost Search
Depth-First Search
Depth-Limited Search
Iterative Deepening Search

BFS : Breadth-First Search

๋จผ์ € ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ์ •๋ง ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” BFS๋‹ค.

BFS๋Š”

๊ฐ€์žฅ ์–•์€ Node๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ Tree๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.

        A
      /   \
     B     C
    / \   / \
   D   E F   G

BFS์˜ ํƒ์ƒ‰ ์ˆœ์„œ๋Š”

A
โ†“
B, C
โ†“
D, E, F, G

๊ฐ€ ๋œ๋‹ค.

์ฆ‰,

A โ†’ B โ†’ C โ†’ D โ†’ E โ†’ F โ†’ G

์ฒ˜๋Ÿผ Level ๋‹จ์œ„๋กœ ํƒ์ƒ‰ํ•œ๋‹ค.


BFS๋Š” ์™œ Queue๋ฅผ ์‚ฌ์šฉํ• ๊นŒ?

BFS์—์„œ๋Š” ๋จผ์ € ๋“ค์–ด์˜จ Node๋ฅผ ๋จผ์ € ํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ FIFO(First In First Out) ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋ฐ”๋กœ Queue๋‹ค.

Queue

A ์‚ฝ์ž…

A ์ œ๊ฑฐ
B, C ์‚ฝ์ž…

B ์ œ๊ฑฐ
D, E ์‚ฝ์ž…

C ์ œ๊ฑฐ
F, G ์‚ฝ์ž…

์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ํƒ์ƒ‰ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ BFS ๊ตฌํ˜„์„ ๋ณด๋ฉด ๊ฑฐ์˜ ํ•ญ์ƒ

queue<Node> q;

๊ฐ€ ๋“ฑ์žฅํ•œ๋‹ค.


BFS์˜ ์žฅ์ 

BFS์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํŠน์ง•์€

Edge์˜ ๋น„์šฉ์ด ๋ชจ๋‘ ๊ฐ™๋‹ค๋ฉด ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ

์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋“  ์ด๋™ ๋น„์šฉ์ด 1์ด๋ผ๋ฉด

ํ•œ ๋ฒˆ ์ด๋™
๋‘ ๋ฒˆ ์ด๋™
์„ธ ๋ฒˆ ์ด๋™
...

์ˆœ์„œ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—
Goal์„ ์ฒ˜์Œ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ์˜ ๊ฒฝ๋กœ๊ฐ€ ๊ฐ€์žฅ ์งง๋‹ค.

๊ทธ๋ž˜์„œ

๋ฏธ๋กœ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ
๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ ๊ฑฐ๋ฆฌ
์ตœ์†Œ ์ด๋™ ํšŸ์ˆ˜

๊ฐ™์€ ๋ฌธ์ œ์—์„œ BFS๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

์ตœ๊ทผ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ
DFS๋กœ ์ ‘๊ทผํ–ˆ๋‹ค๊ฐ€ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋˜ ์ด์œ ๋„ ์ด๊ฒƒ๊ณผ ์—ฐ๊ฒฐ๋œ๋‹ค.

์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ธ๋ฐ ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ๋๊นŒ์ง€ ํ™•์ธํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค.


BFS์˜ ๋‹จ์ 

๋ฌธ์ œ๋Š” Memory๋‹ค.

BFS๋Š” ๊ฐ™์€ Level์˜ Node๋“ค์„ ๋ชจ๋‘ Frontier์— ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค.

Branching Factor๋ฅผ b,
๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ•ด๋‹ต์˜ ๊นŠ์ด๋ฅผ d๋ผ๊ณ  ํ•˜๋ฉด
ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๋Š” Node์˜ ์ˆ˜๋Š” ๋Œ€๋žต ์ง€์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค.

1
+ b
+ bยฒ
+ bยณ
+ ...
+ bแตˆ

๋”ฐ๋ผ์„œ ์‹œ๊ฐ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ
๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งค์šฐ ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค.

๊ฐ•์˜์—์„œ๋„ BFS์—์„œ ํŠนํžˆ Space Complexity๊ฐ€ ํฐ ๋ฌธ์ œ๋ผ๊ณ  ๊ฐ•์กฐํ–ˆ๋‹ค.


DFS : Depth-First Search

๋‹ค์Œ์€ DFS๋‹ค.

DFS๋Š” BFS์™€ ์™„์ „ํžˆ ๋ฐ˜๋Œ€๋‹ค.

ํ˜„์žฌ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ณณ๊นŒ์ง€ ์ตœ๋Œ€ํ•œ ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐ„๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ™์€ Tree๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.

        A
      /   \
     B     C
    / \   / \
   D   E F   G

๋” ์•„๋ž˜์— Node๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด
DFS๋Š” ๋Œ€๋žต

A
โ†“
B
โ†“
D
โ†“
D์˜ ์ž์‹
โ†“
...

์ฒ˜๋Ÿผ ํ•œ์ชฝ ๋๊นŒ์ง€ ๋‚ด๋ ค๊ฐ„๋‹ค.

๋” ์ด์ƒ ๊ฐˆ ๊ณณ์ด ์—†์œผ๋ฉด ๋‹ค์‹œ ๋Œ์•„์™€
๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค.


DFS๋Š” ์™œ Stack์„ ์‚ฌ์šฉํ• ๊นŒ?

DFS์—์„œ๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋ฐœ๊ฒฌํ•œ Node๋ฅผ ๋จผ์ € ํƒ์ƒ‰ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ

LIFO
Last In First Out

๊ตฌ์กฐ๊ฐ€ ์ ํ•ฉํ•˜๋‹ค.

์ฆ‰ Stack์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์žฌ๊ท€ ํ•จ์ˆ˜๋„ ๋‚ด๋ถ€์ ์œผ๋กœ Call Stack์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—
DFS๋ฅผ ์žฌ๊ท€๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ต‰์žฅํžˆ ๋งŽ๋‹ค.

void dfs(int node) {

    visited[node] = true;

    for (int next : graph[node]) {

        if (!visited[next]) {
            dfs(next);
        }
    }
}

๋‚˜๋„ ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด ๊ฐ€์žฅ ๋จผ์ € ๋– ์˜ค๋ฅด๋Š” ๋ฐฉ์‹์ด
์ด ์žฌ๊ท€ DFS์ธ ๊ฒƒ ๊ฐ™๋‹ค.


DFS์˜ ์žฅ์ 

DFS์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋‹ค.

BFS๋Š” ๊ฐ Level์˜ Node๋ฅผ ๋Œ€๋ถ€๋ถ„ ๋ณด๊ด€ํ•ด์•ผ ํ•˜์ง€๋งŒ
DFS๋Š” ํ˜„์žฌ ํƒ์ƒ‰ ์ค‘์ธ ๊ฒฝ๋กœ ์ค‘์‹ฌ์œผ๋กœ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ์ผ๋ฐ˜์ ์œผ๋กœ BFS๋ณด๋‹ค ํ›จ์”ฌ ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์ •๋‹ต์ด ๊นŠ์€ ์œ„์น˜์— ์žˆ๊ณ 
์šด ์ข‹๊ฒŒ ํ•ด๋‹น ๋ฐฉํ–ฅ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•œ๋‹ค๋ฉด ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋‹ต์„ ์ฐพ์„ ์ˆ˜๋„ ์žˆ๋‹ค.


DFS์˜ ๋‹จ์ 

ํ•˜์ง€๋งŒ DFS์—๋Š” ์ค‘์š”ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

๋จผ์ € ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด

A โ†’ B โ†’ C โ†’ D โ†’ E โ†’ Goal

์ด๋ผ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋จผ์ € ๋ฐœ๊ฒฌํ–ˆ๋”๋ผ๋„

์‹ค์ œ๋กœ๋Š”

A โ†’ F โ†’ Goal

์ด๋ผ๋Š” ํ›จ์”ฌ ์งง์€ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

DFS๋Š” ์ฒซ ๋ฒˆ์งธ Goal์„ ์ฐพ์•˜๋‹ค๊ณ  ํ•ด์„œ
๊ทธ๊ฒƒ์ด ์ตœ์ ์ด๋ผ๋Š” ๋ณด์žฅ์ด ์—†๋‹ค.

๋˜ํ•œ Cycle์ด ์กด์žฌํ•˜๋Š” Graph์—์„œ ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด

A โ†’ B โ†’ C โ†’ A โ†’ B โ†’ C โ†’ ...

์ฒ˜๋Ÿผ ๋ฌดํ•œํžˆ ๋ฐ˜๋ณต๋  ์ˆ˜๋„ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ์‹ค์ œ ๊ตฌํ˜„์—์„œ๋Š” ๋ณดํ†ต

visited[]

๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.


BFS์™€ DFS๋ฅผ ๋น„๊ตํ•ด๋ณด๋ฉด

๋‘˜์˜ ์ฐจ์ด๋ฅผ ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

BFSDFS
๋„“๊ฒŒ ํƒ์ƒ‰๊นŠ๊ฒŒ ํƒ์ƒ‰
QueueStack / Recursion
์–•์€ Solution์— ์œ ๋ฆฌ๊นŠ์€ Solution์— ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
๋™์ผ ๋น„์šฉ์—์„œ ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ณด์žฅ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ณด์žฅ X
๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ํผ์ƒ๋Œ€์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ 

๊ฒฐ๊ตญ

DFS์™€ BFS ์ค‘ ๋ฌด์—‡์ด ๋” ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ๊ฐ€?

๋ผ๋Š” ์งˆ๋ฌธ์€ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.

๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์„ ์š”๊ตฌํ•˜๋Š”์ง€๋ฅผ ๋จผ์ € ๋ด์•ผ ํ•œ๋‹ค.


Uniform Cost Search

์—ฌ๊ธฐ์—์„œ BFS์˜ ํ•œ๊ณ„๊ฐ€ ํ•˜๋‚˜ ๋“ฑ์žฅํ•œ๋‹ค.

BFS๋Š” ์ด๋™ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š”๋‹ค.

ํ•˜์ง€๋งŒ

์ด๋™ ํšŸ์ˆ˜๊ฐ€ ์ ๋‹ค
=
๋น„์šฉ์ด ๊ฐ€์žฅ ์ž‘๋‹ค

๋Š” ํ•ญ์ƒ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด

A โ†’ B โ†’ Goal

์ด๋ผ๋Š” ๊ฒฝ๋กœ์˜ ๋น„์šฉ์ด

A โ†’ B = 100
B โ†’ Goal = 100

Total = 200

์ด๋ผ๊ณ  ํ•ด๋ณด์ž.

๋ฐ˜๋ฉด

A โ†’ C โ†’ D โ†’ Goal

์€ ์ด๋™ ํšŸ์ˆ˜๋Š” ๋” ๋งŽ์ง€๋งŒ

10 + 10 + 10 = 30

์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

BFS๋Š” ์ด๋™ ํšŸ์ˆ˜๋งŒ ๋ณด๋ฉด ์ฒซ ๋ฒˆ์งธ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ง„์งœ ์ตœ์†Œ ๋น„์šฉ ๊ฒฝ๋กœ๋Š” ๋‘ ๋ฒˆ์งธ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด Uniform Cost Search(UCS)๋‹ค.


Uniform Cost Search์˜ ํ•ต์‹ฌ

UCS๋Š” Frontier์—์„œ

๊ฐ€์žฅ Path Cost๊ฐ€ ์ž‘์€ Node

๋ถ€ํ„ฐ ์„ ํƒํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ผ๋ฐ˜ Queue๊ฐ€ ์•„๋‹ˆ๋ผ
Priority Queue๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Frontier

Path Cost 3
Path Cost 7
Path Cost 12

๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ญ์ƒ Cost 3๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•œ๋‹ค.

์ฆ‰,

์ง€๊ธˆ๊นŒ์ง€ ๋“ค์–ด๊ฐ„ ๋น„์šฉ์ด ๊ฐ€์žฅ ์ž‘์€ ๊ฒฝ๋กœ๋ถ€ํ„ฐ ํ™•์žฅํ•œ๋‹ค.

๋ชจ๋“  Step Cost๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด
UCS๋Š” BFS์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ ์ ˆํ•œ ์–‘์˜ Step Cost ์กฐ๊ฑด์—์„œ๋Š”
์ตœ์†Œ ๋น„์šฉ์˜ Optimal Solution์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.


Depth-Limited Search

DFS์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š”

๋์—†์ด ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์•„์˜ˆ ๊นŠ์ด์— ์ œํ•œ์„ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค.

์ด๊ฒƒ์ด Depth-Limited Search๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด

Depth Limit = 3

์ด๋ผ๊ณ  ํ•˜๋ฉด

Depth 0
Depth 1
Depth 2
Depth 3

๊นŒ์ง€๋งŒ ํƒ์ƒ‰ํ•˜๊ณ 
๊ทธ ์•„๋ž˜๋Š” ํƒ์ƒ‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด

DFS์— ์ตœ๋Œ€ ๊นŠ์ด ์ œํ•œ์„ ์ถ”๊ฐ€ํ•œ ๋ฐฉ์‹

์ด๋‹ค.


Iterative Deepening Search

๊ทธ๋Ÿฐ๋ฐ Depth Limit์„ ์–ผ๋งˆ๋กœ ์„ค์ •ํ•ด์•ผ ํ• ๊นŒ?

1?
3?
10?
100?

์ •๋‹ต์ด ์–ด๋””์— ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—
์ ์ ˆํ•œ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๊ฒฐ์ •ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜์˜จ ๋ฐฉ๋ฒ•์ด Iterative Deepening Search(IDS)๋‹ค.

์•„์ด๋””์–ด๋Š” ๋งค์šฐ ๋‹จ์ˆœํ•˜๋‹ค.

Depth Limit = 0์œผ๋กœ DFS

์—†์œผ๋ฉด

Depth Limit = 1๋กœ DFS

์—†์œผ๋ฉด

Depth Limit = 2๋กœ DFS

์—†์œผ๋ฉด

Depth Limit = 3๋กœ DFS

...

์ •๋‹ต์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ Depth Limit์„ ๊ณ„์† ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.


๊ทธ๋Ÿฐ๋ฐ ๊ฐ™์€ Node๋ฅผ ๊ณ„์† ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€?

๋‚˜๋„ ์ด ๋ถ€๋ถ„์„ ๋ณด๊ณ  ์ฒ˜์Œ์—๋Š”

"์ด๊ฑฐ ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ์ธ ๊ฒƒ ์•„๋‹Œ๊ฐ€?"

๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Depth 3๊นŒ์ง€ ๊ฐ€๋ ค๋ฉด

Depth 1 ํƒ์ƒ‰
Depth 2 ํƒ์ƒ‰
Depth 3 ํƒ์ƒ‰

์„ ๋ฐ˜๋ณตํ•˜๋ฏ€๋กœ
์œ„์ชฝ Node๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐฉ๋ฌธํ•˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ Tree ํƒ์ƒ‰์—์„œ๋Š” ๋ณดํ†ต
๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ Level์˜ Node ์ˆ˜๊ฐ€ ์••๋„์ ์œผ๋กœ ๋งŽ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Branching Factor๊ฐ€ 10์ด๋ฉด

Depth 0 โ†’ 1๊ฐœ
Depth 1 โ†’ 10๊ฐœ
Depth 2 โ†’ 100๊ฐœ
Depth 3 โ†’ 1,000๊ฐœ
Depth 4 โ†’ 10,000๊ฐœ

๊ฐ€ ๋œ๋‹ค.

์ฆ‰ ์ƒ์œ„ Level์„ ๋ช‡ ๋ฒˆ ๋ฐ˜๋ณตํ•˜๋Š” ๋น„์šฉ๋ณด๋‹ค
๊ฐ€์žฅ ๊นŠ์€ Level์„ ํƒ์ƒ‰ํ•˜๋Š” ๋น„์šฉ์ด ํ›จ์”ฌ ํฌ๋‹ค.

๊ทธ๋ž˜์„œ ์ƒ๊ฐ๋ณด๋‹ค ๋ฐ˜๋ณต ํƒ์ƒ‰์˜ ์†ํ•ด๊ฐ€ ํฌ์ง€ ์•Š๋‹ค.


IDS๋Š” BFS์™€ DFS์˜ ์žฅ์ ์„ ์„ž๋Š”๋‹ค

Iterative Deepening์˜ ๋ชฉ์ ์€ ๊ฝค ๋ช…ํ™•ํ•˜๋‹ค.

DFS์˜ ๋‚ฎ์€ Memory ์‚ฌ์šฉ๋Ÿ‰

+

BFS์˜ ์–•์€ Solution ํƒ์ƒ‰ ๋Šฅ๋ ฅ

์„ ํ•จ๊ป˜ ์–ป๋Š” ๊ฒƒ์ด๋‹ค.

๊ฐ•์˜์—์„œ๋„

DFS์˜ Space Advantage์™€ BFS์˜ Shallow-Solution Advantage๋ฅผ ํ•จ๊ป˜ ์–ป๋Š” ๋ฐฉ์‹

์œผ๋กœ ์„ค๋ช…ํ–ˆ๋‹ค.

Step Cost๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ
IDS ์—ญ์‹œ ์–•์€ Goal๋ถ€ํ„ฐ ๋ฐœ๊ฒฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— Optimal Solution์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.


๊ฒฐ๊ตญ Search Strategy์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ผ๊นŒ?

์—ฌ๊ธฐ๊นŒ์ง€ ๋ณด๊ณ  ๋‚˜๋‹ˆ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์ด
์‚ฌ์‹ค ์™„์ „ํžˆ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ฒ˜๋Ÿผ ๋А๊ปด์ง€์ง€ ์•Š์•˜๋‹ค.

๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๊ฑฐ์˜ ๋™์ผํ•˜๋‹ค.

Frontier์—์„œ Node๋ฅผ ํ•˜๋‚˜ ๊บผ๋‚ธ๋‹ค.
โ†“
Goal์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
โ†“
Neighbor๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
โ†“
๋ฐ˜๋ณตํ•œ๋‹ค.

๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์€ ๋”ฑ ํ•˜๋‚˜๋‹ค.

Frontier์—์„œ ์–ด๋–ค Node๋ฅผ ๋จผ์ € ๊บผ๋‚ผ ๊ฒƒ์ธ๊ฐ€?

์ด๋‹ค.

BFS๋Š”

๊ฐ€์žฅ ์–•์€ Node

DFS๋Š”

๊ฐ€์žฅ ๊นŠ์€ Node

Uniform Cost Search๋Š”

ํ˜„์žฌ๊นŒ์ง€ ๋น„์šฉ์ด ๊ฐ€์žฅ ์ž‘์€ Node

๋ฅผ ์„ ํƒํ•œ๋‹ค.

์ด ์„ ํƒ ๊ธฐ์ค€์ด ๋‹ฌ๋ผ์ง€๋ฉด์„œ
์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ์งˆ๋„ ์™„์ „ํžˆ ๋‹ฌ๋ผ์ง„๋‹ค.


Search Algorithm ๋น„๊ต

๊ฐ•์˜ ๋งˆ์ง€๋ง‰์—๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๋‹ค๋ฃฌ Search Algorithm์„
Completeness, Time, Space, Optimality ๊ด€์ ์—์„œ ๋น„๊ตํ–ˆ๋‹ค.

ํฐ ํŠน์ง•๋งŒ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

AlgorithmCompleteOptimalํ•ต์‹ฌ ํŠน์ง•
BFSOStep Cost๊ฐ€ ๋™์ผํ•˜๋ฉด O์–•์€ Node๋ถ€ํ„ฐ ํƒ์ƒ‰
Uniform CostOOPath Cost๊ฐ€ ์ž‘์€ ์ˆœ์„œ๋กœ ํƒ์ƒ‰
DFS์ผ๋ฐ˜์ ์œผ๋กœ XX๊นŠ๊ฒŒ ํƒ์ƒ‰, Memory ํšจ์œจ์ 
Depth-LimitedLimit์— ๋”ฐ๋ผ ๊ฒฐ์ •XDFS์— ์ตœ๋Œ€ ๊นŠ์ด ์„ค์ •
Iterative DeepeningOStep Cost๊ฐ€ ๋™์ผํ•˜๋ฉด ODFS์˜ Memory + BFS์˜ ์žฅ์ 

๊ฒฐ๊ตญ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ• ์ง€๋Š”
๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์„ ์š”๊ตฌํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.


์ˆ˜์—…์„ ๋“ฃ๊ณ  ๋‚˜์„œ

์ด๋ฒˆ Lesson์€ ๊ฐœ์ธ์ ์œผ๋กœ ๋‹ค๋ฅธ ๋‹จ์›๋ณด๋‹ค ํ›จ์”ฌ ์ต์ˆ™ํ–ˆ๋‹ค.

ํ•™๊ต์—์„œ ์ปดํ“จํŒ… ๋ฌธ์ œ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณผ๋ชฉ์„ ๋“ค์œผ๋ฉฐ
Graph, Tree, BFS, DFS ๊ฐ™์€ ๋‚ด์šฉ์„ ์ด๋ฏธ ๊ณต๋ถ€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋•Œ๋Š” ์ฃผ๋กœ

DFS ๊ตฌํ˜„ํ•˜๊ธฐ
BFS ๊ตฌํ˜„ํ•˜๊ธฐ
์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐ
๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ํ•˜๊ธฐ

๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด์— ์ง‘์ค‘ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋ฒˆ ๊ฐ•์˜์—์„œ๋Š” ์กฐ๊ธˆ ๋” ์ƒ์œ„ ๊ฐœ๋…์—์„œ ์ ‘๊ทผํ–ˆ๋‹ค.

ํ˜„์‹ค์˜ ๋ฌธ์ œ
โ†“
State์™€ Action์œผ๋กœ ์ถ”์ƒํ™”
โ†“
State Space ๊ตฌ์„ฑ
โ†“
Graph๋กœ ํ‘œํ˜„
โ†“
Search Strategy ์„ ํƒ
โ†“
Solution ํƒ์ƒ‰

์ด๋ผ๋Š” ์ „์ฒด ํ๋ฆ„์œผ๋กœ ๋ฐ”๋ผ๋ณธ๋‹ค.

๊ทธ๋ž˜์„œ ์˜ˆ์ „์—๋Š”

"๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์กŒ์œผ๋‹ˆ๊นŒ BFS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค."

์ •๋„๋กœ ์ƒ๊ฐํ–ˆ๋‹ค๋ฉด,

์ด๋ฒˆ์—๋Š”

"ํ˜„์‹ค์˜ ๋ฌธ์ œ ์ž์ฒด๋ฅผ State Space๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๊ฒฐ๊ตญ Graph Search Problem์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ตฌ๋‚˜."

๋ผ๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์ด ์ฐจ์ด๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ์ปธ๋‹ค.


ํŠนํžˆ BFS์™€ DFS๋ฅผ ๋‹ค์‹œ ์ƒ๊ฐํ•˜๊ฒŒ ๋๋‹ค

์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ํ’€๋‹ค ๋ณด๋ฉด
DFS์™€ BFS ๋ฌธ์ œ๋ฅผ ์ •๋ง ๋งŽ์ด ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋ง‰์ƒ ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด ๋‚˜๋„ ๊ฐ€๋”

๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ๋„ค?
โ†’ ์ผ๋‹จ DFS?

์ฒ˜๋Ÿผ ์Šต๊ด€์ ์œผ๋กœ ์ ‘๊ทผํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค.

์ตœ๊ทผ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋ฌธ์ œ์—์„œ๋„
์ฒ˜์Œ์—๋Š” ๋ณ„ ์ƒ๊ฐ ์—†์ด DFS ์žฌ๊ท€๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

์ •๋‹ต ์ž์ฒด๋Š” ๋‚˜์™”์ง€๋งŒ
๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ๊ณ„์† ํƒ์ƒ‰ํ•˜๋‹ค ๋ณด๋‹ˆ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•œ ๊ฒƒ์€

๋„์ฐฉ ๊ฐ€๋Šฅํ•œ๊ฐ€?

๊ฐ€ ์•„๋‹ˆ๋ผ

์ตœ์†Œ ๋ช‡ ์นธ์„ ์ง€๋‚˜์•ผ ํ•˜๋Š”๊ฐ€?

์˜€๋‹ค.

์ฆ‰ ๋™์ผํ•œ ๋น„์šฉ์˜ Graph์—์„œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์˜€๊ณ 
์ด ๊ฒฝ์šฐ์—๋Š” Level ์ˆœ์„œ๋Œ€๋กœ ํƒ์ƒ‰ํ•˜๋Š” BFS๊ฐ€ ํ›จ์”ฌ ์ž์—ฐ์Šค๋Ÿฌ์šด ์„ ํƒ์ด์—ˆ๋‹ค.

์ด๋ฒˆ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ ๋‹ค์‹œ ๋А๊ผˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ค„ ์•„๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ,
๋ฌธ์ œ์˜ ํŠน์„ฑ์„ ๋ณด๊ณ  ์–ด๋–ค Search Strategy๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์ค‘์š”ํ•˜๋‹ค.


๋งˆ๋ฌด๋ฆฌ

์ด๋ฒˆ Lesson 3์˜ ํ•ต์‹ฌ์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Problem Solving์€ ๊ฒฐ๊ตญ ๊ฐ€๋Šฅํ•œ State๋“ค์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ Initial State์—์„œ Goal State๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งŽ์€ ๋ฌธ์ œ๋ฅผ

State
Action
Goal
Cost

๋กœ ์ถ”์ƒํ™”ํ•˜๋ฉด
Graph Search Problem์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ Graph๋ฅผ ์–ด๋–ค ์ˆœ์„œ๋กœ ํƒ์ƒ‰ํ•˜๋А๋ƒ์— ๋”ฐ๋ผ

BFS
DFS
Uniform Cost Search
Depth-Limited Search
Iterative Deepening Search

์™€ ๊ฐ™์€ ์„œ๋กœ ๋‹ค๋ฅธ Search Strategy๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

์˜ˆ์ „์— ๋ฐฐ์› ๋˜ DFS์™€ BFS๋ฅผ ๋‹ค์‹œ ๋ณต์Šตํ•œ ๋‹จ์›์ด๊ธฐ๋„ ํ–ˆ์ง€๋งŒ,
์ด๋ฒˆ์—๋Š” ๋‹จ์ˆœํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„์„ ๋„˜์–ด

์™œ Search๊ฐ€ ๋ฌธ์ œ ํ•ด๊ฒฐ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๊ฐ€ ๋˜๋Š”๊ฐ€

๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๋‹จ์›์ด์—ˆ๋‹ค.

profile
๋„์ „์„ ๋ฉˆ์ถ”์ง€ ์•Š๋Š” ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€