Skip to content

qwice/theseus_minotaur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 

Repository files navigation

ํ…Œ์„ธ์šฐ์Šค์™€ ๋ฏธ๋…ธํƒ€์šฐ๋กœ์Šค ๋ฏธ๋กœ ํƒˆ์ถœ ํ”„๋กœ๊ทธ๋žจ

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ทธ๋ฆฌ์Šค ์‹ ํ™”์—์„œ ์œ ๋ž˜๋œ ํ…Œ์„ธ์šฐ์Šค์™€ ๋ฏธ๋…ธํƒ€์šฐ๋กœ์Šค ๋ฏธ๋กœ ๊ฒŒ์ž„์„ C ์–ธ์–ด๋กœ ๊ตฌํ˜„ํ•œ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ํ…Œ์„ธ์šฐ์Šค๊ฐ€ ๋ฏธ๋…ธํƒ€์šฐ๋กœ์Šค๋กœ๋ถ€ํ„ฐ ๋„๋ง์ณ ๋ฏธ๋กœ์—์„œ ํƒˆ์ถœํ•˜๋Š” ์ตœ์  ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ๊ทœ์น™

  • ํ…Œ์„ธ์šฐ์Šค(T): ํ”Œ๋ ˆ์ด์–ด ์บ๋ฆญํ„ฐ๋กœ, ๋ฏธ๋กœ์—์„œ ํƒˆ์ถœ๊ตฌ(E)๋กœ ๋„๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฏธ๋…ธํƒ€์šฐ๋กœ์Šค(M): ํ…Œ์„ธ์šฐ์Šค๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ชฌ์Šคํ„ฐ๋กœ, ๋งค ํ„ด๋งˆ๋‹ค ํ…Œ์„ธ์šฐ์Šค์—๊ฒŒ ๊ฐ€๊นŒ์›Œ์ง€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ํƒˆ์ถœ๊ตฌ(E): ํ…Œ์„ธ์šฐ์Šค๊ฐ€ ๋„๋‹ฌํ•ด์•ผ ํ•˜๋Š” ๋ชฉํ‘œ ์ง€์ ์ž…๋‹ˆ๋‹ค.
  • ๋ฒฝ(#): ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ์žฅ์• ๋ฌผ์ž…๋‹ˆ๋‹ค.
  • ๊ณต๊ฐ„( ): ์ด๋™ ๊ฐ€๋Šฅํ•œ ์˜์—ญ์ž…๋‹ˆ๋‹ค.

์ด๋™ ๊ทœ์น™

  • ํ…Œ์„ธ์šฐ์Šค๋Š” ์ƒํ•˜์ขŒ์šฐ๋กœ 2์นธ์”ฉ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์ œ์ž๋ฆฌ์— ๋จธ๋ฌผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (R, L, U, D, S).
  • ๋ฏธ๋…ธํƒ€์šฐ๋กœ์Šค๋Š” ํ…Œ์„ธ์šฐ์Šค๋ฅผ ํ–ฅํ•ด ๋งค ํ„ด๋งˆ๋‹ค ์ตœ๋Œ€ 2์นธ์”ฉ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์„ธ์šฐ์Šค์™€ ๋ฏธ๋…ธํƒ€์šฐ๋กœ์Šค๊ฐ€ ๊ฐ™์€ ์œ„์น˜์— ์žˆ์œผ๋ฉด ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค (ํ…Œ์„ธ์šฐ์Šค ํŒจ๋ฐฐ).

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

theseus_minotaur/
โ”œโ”€โ”€ theseus/
โ”‚   โ””โ”€โ”€ HW3_2019707048.c    # ๋ฉ”์ธ ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค ์ฝ”๋“œ
โ””โ”€โ”€ README.md               # ํ”„๋กœ์ ํŠธ ์„ค๋ช…์„œ

์ฃผ์š” ๊ธฐ๋Šฅ

1. ๋ฏธ๋กœ ์ •์˜

  • 10๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฏธ๋กœ๊ฐ€ ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ๋ฏธ๋กœ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํฌ๊ธฐ์™€ ๋‚œ์ด๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • ๋ฏธ๋กœ ํฌ๊ธฐ: 9ร—10๋ถ€ํ„ฐ 21ร—31๊นŒ์ง€ ๋‹ค์–‘

2. ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • BFS (๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์  ๊ฒฝ๋กœ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
  • ์ƒํƒœ ๊ณต๊ฐ„ ํƒ์ƒ‰: (ํ…Œ์„ธ์šฐ์Šค ์œ„์น˜, ๋ฏธ๋…ธํƒ€์šฐ๋กœ์Šค ์œ„์น˜)์˜ ์กฐํ•ฉ์„ ์ƒํƒœ๋กœ ์ •์˜
  • ์ค‘๋ณต ์ƒํƒœ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ํšจ์œจ์„ฑ์„ ๊ฐœ์„ 

3. ์ฃผ์š” ํ•จ์ˆ˜๋“ค

solve_maze(int maze_index)

  • ํŠน์ • ๋ฏธ๋กœ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฉ”์ธ ํ•จ์ˆ˜
  • ํ…Œ์„ธ์šฐ์Šค, ๋ฏธ๋…ธํƒ€์šฐ๋กœ์Šค, ํƒˆ์ถœ๊ตฌ์˜ ์ดˆ๊ธฐ ์œ„์น˜๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

bfs(State start, int (*stop_condition)(Position), int maze_index)

  • BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ต์‹ฌ ๊ตฌํ˜„
  • ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ƒํƒœ๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

next_minotaur_position(Position theseus, Position minotaur, int maze_index)

  • ๋ฏธ๋…ธํƒ€์šฐ๋กœ์Šค์˜ ๋‹ค์Œ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐ
  • ํ…Œ์„ธ์šฐ์Šค์—๊ฒŒ ๊ฐ€์žฅ ๊ฐ€๊นŒ์›Œ์ง€๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™

next_theseus_states(Position pos, Position next_states[5], char moves[5], int maze_index)

  • ํ…Œ์„ธ์šฐ์Šค๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐ
  • 5๊ฐ€์ง€ ํ–‰๋™: ์šฐ(R), ํ•˜(D), ์ขŒ(L), ์ƒ(U), ์ •์ง€(S)

์ปดํŒŒ์ผ ๋ฐ ์‹คํ–‰

์ปดํŒŒ์ผ

cd theseus
gcc -o maze_solver HW3_2019707048.c

์‹คํ–‰

./maze_solver

์ถœ๋ ฅ ํ˜•์‹

ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐ ๋ฏธ๋กœ์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค:

test 1:
solution found
R R D D L L 

test 2:
solution found
R S R R 

Maze 1:
solution found
U U L L L L L L U U U U L L 
  • test 1-3: ์ฒซ 3๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค
  • Maze 1-7: ๋‚˜๋จธ์ง€ 7๊ฐœ์˜ ๋ฏธ๋กœ
  • ํ•ด๊ฒฐ์ฑ…์ด ์žˆ๋Š” ๊ฒฝ์šฐ: ์ด๋™ ๋ช…๋ น์–ด ์‹œํ€€์Šค ์ถœ๋ ฅ
  • ํ•ด๊ฒฐ์ฑ…์ด ์—†๋Š” ๊ฒฝ์šฐ: "No solution" ์ถœ๋ ฅ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณต์žก๋„

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: O(W ร— H ร— W ร— H) = O(WยฒHยฒ)

    • W: ๋ฏธ๋กœ์˜ ๋„ˆ๋น„, H: ๋ฏธ๋กœ์˜ ๋†’์ด
    • ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  (ํ…Œ์„ธ์šฐ์Šค, ๋ฏธ๋…ธํƒ€์šฐ๋กœ์Šค) ์œ„์น˜ ์กฐํ•ฉ์„ ํƒ์ƒ‰
  • ๊ณต๊ฐ„ ๋ณต์žก๋„: O(WยฒHยฒ)

    • BFS ํ์™€ ๋ฐฉ๋ฌธ ์ƒํƒœ ์ €์žฅ์„ ์œ„ํ•œ ๊ณต๊ฐ„

๊ฐœ๋ฐœ ์ •๋ณด

  • ๊ฐœ๋ฐœ์ž: ์ •์ƒ๊ธฐ (ํ•™๋ฒˆ: 2019707048)
  • ๊ณผ๋ชฉ: ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์–ธ์–ด: C
  • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ: ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

ํŠน์ง•

  1. ์™„์ „ํ•œ ์ƒํƒœ ๊ณต๊ฐ„ ํƒ์ƒ‰: BFS๋ฅผ ํ†ตํ•ด ์ตœ์ ํ•ด ๋ณด์žฅ
  2. ๋‹ค์–‘ํ•œ ๋ฏธ๋กœ ์ง€์›: 10๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋‚œ์ด๋„์˜ ๋ฏธ๋กœ
  3. ํšจ์œจ์ ์ธ ์ค‘๋ณต ๊ฒ€์‚ฌ: ๋™์ผํ•œ ์ƒํƒœ์˜ ์žฌ๋ฐฉ๋ฌธ์„ ๋ฐฉ์ง€
  4. ์ง๊ด€์ ์ธ ์ถœ๋ ฅ: ์ด๋™ ๋ช…๋ น์–ด๋ฅผ ๋ฌธ์ž๋กœ ํ‘œํ˜„ (R, L, U, D, S)

ํ•œ๊ณ„ ๋ฐ ๊ฐœ์„ ์ 

  • ๋ฏธ๋กœ๊ฐ€ ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ์–ด ๋™์ ์œผ๋กœ ๋ฏธ๋กœ๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜ ์—†์Œ
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ํฐ ๋ฏธ๋กœ์—์„œ๋Š” ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Œ
  • GUI ์—†์ด ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์ถœ๋ ฅ๋งŒ ์ œ๊ณต

์ด ํ”„๋กœ๊ทธ๋žจ์€ ๊ฒŒ์ž„ ์ด๋ก ๊ณผ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹ค์ œ ์ ์šฉ ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ต์œก์  ๊ฐ€์น˜๊ฐ€ ๋†’์€ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages