A*๋ fย cost(์์์ ๋ถํฐ ํ์ฌ ๋ ธ๋๊น์ง์ ๋น์ฉ + ํ์ฌ ๋ ธ๋๋ถํฐ ๋ชฉ์ ์ง๊น์ง ์์๋น์ฉ)๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋ ธ๋๋ค์ ์ด๊ณ ๋ซ์ผ๋ฉด์ ์ต์ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์. ์ด๋ฅผ ์ํด์ ํ์ฌ๋ ธ๋, open set, close set์ด ํ์ํจ. ํ์ฌ ๋ ธ๋๋ ์ฒ์์๋ start node์ด๊ณ ์ดํ ๋ฃจํ๋ฅผ ๋๋ฉด์ open set ์ค์์ ๊ฐ์ฅ fย cost๊ฐ ๋ฎ์ ๋ ธ๋๋ก ๊ฒฐ์ ๋์ผ ํจ.
(์ฐธ๊ณ ๋ก ํ์ฌ ๋ ธ๋๊ฐ ๋๋ ์๊ฐ open set์์ close set์ผ๋ก ๋ฃ์ด์ผ ํจ) ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ํ์ฌ ๋ ธ๋์ ์ธ์ ๋ ธ๋์ ๋ํด(์ด๋ํ ์ ์๋ ๋ ธ๋.. ์ด ์คํฌ๋ฆฝํธ์์๋ ์ํ ์ข์ฐ๋ก ์์ง์ด๋ ๋ฏ ํ๋ ์ํ ์ข์ฐ์ ํด๋นํ๋ ๋ ธ๋๋ค) ํด๋น ์ธ์ ๋ ธ๋์ fย cost๋ฅผ ๊ณ์ฐํ๋๋ฐ fย cost๋ ํ์ฌ๋ ธ๋์ ์ถ๋ฐ์ ์ผ๋ก๋ถํฐ์ ๋น์ฉ + ์ธ์ ๋ ธ๋์ ๋ชฉ์ ๊น์ง์ ๋น์ฉ์ผ๋ก ๊ณ์ฐํจย
๊ทธ๋ฆฌ๊ณ ์ธ์ ๋ ธ๋๋ค์ open set์ ์ถ๊ฐํจ. ๊ทธ๋ฆฌ๊ณ open set ์ค์์ ๊ฐ์ฅ fย cost๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋ ธ๋๋ฅผ ๋ค์ ํ์ฌ ๋ ธ๋๋ก ์ค์ ํ๋ฉด์ ๊ฒฝ๋ก ์ ์ฅ์ ์ํด ์์ ์ด์ ์ ํ์ฌ๋ ธ๋๋ฅผ ์ ์ฅํจ(๊ธธ์ฐพ๊ธฐ๋ฅผ ํ๊ธฐ ์ํจ) ์ด ๊ณผ์ ์ ๊ณ์ ๋ฐ๋ณตํ๋ฉด ์ต๋จ๊ฒฝ๋ก๋ฅผ ๊ณ์ฐํ ์ ์๋ค๋ ์ด๋ก ์..
open set์ ๊ณ์ ์ด๋ฆฌ๊ณ ๊ทธ ์ค์์ ๊ฐ์ฅ f cost๊ฐ ๋ฎ์๊ฑธ ๋ค์์ผ๋ก ์ค์ ํ๋ฉด์ open set์ ๋ ์ด๊ณ .. ํ๋ค๋ณด๋ฉด ๊ธฐ์กด์ open set์ ์ํ ์ ๋ค ์ค์์๋ f cost๋ฅผ ์ฌ๊ณ์ฐ ํ๋ฉด์ f cost๊ฐ ๋ฎ์์ง๋ ๋ ธ๋๋ค๋ ์์ย
์ฌ๋ ค๋์ ๋ฌธ์ ์ ์ฝ๋์์ย ๋ญ๊ฐ ๋ฌธ์ ์ธ์ง๋ ์ง์ ๊ตด๋ ค๋ณด๋ฉด์ ํด๋ณด์ง ์์ผ๋ฉด ์๋ฒฝํ ์ ์๋ ์๊ฒ ์ง๋ง ์ผ๋จ goal๊น์ง์ ๋น์ฉ์ ์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ๋ ค๊ณ ํ๋ ๊ฑฐ๋ฉด ์ ๊ณฑ๊ทผ์ ์ทจํด์ผํ๊ณ , ์ํ์ข์ฐ๋ก๋ฐ์ ๋ชป์์ง์ด๋๊น ์๋ง Math.pow๋ฅผ ์ฐ๋ฉด ์๋๊ณ abs๋ก ์ ๋๊ฐ์ ๊ตฌํด์ x y๋ฅผ ๋ํ๋๊ฒย ๋ง์๋ฏ.ย
(๊ธ๊ณ ์ฒ์ ๋ ธ๋๋ฅผ ์คํ์ ์ ๋ฃ์ด๋จ๊ธฐ๋์ calc() ํธ์ถ ์ ์AddProximityNode(startNode)๋ ํ์์์.. )
์ฐ์ ์์ ํ๋ง๊ณ ๋ฆฌ์คํธ๋ก open set์ ๊ด๋ฆฌํ๊ณ ๊ทธ ์ค์์ f cost๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋ ธ๋๋ฅผ ๋ค์ ํ์ฌ ๋ ธ๋๋ก ์ค์ ํ๋ ๋ถ๋ถ์ด ์คํฌ๋ฆฝํธ์ ์๋ค..
๊ธ๊ณ ์ธ์ ๋ ธ๋๋ค์ fย cost๋ฅผ ๊ฒฐ์ ํ๊ณ open set์ ์ถ๊ฐํ ๋, ์ด๋ฏธ ๋ซํ close set์ ์ํ๋ ๋ ธ๋๋ฅผ ์ ์ธํ๋ ๋ถ๋ถ์ด ์คํฌ๋ฆฝํธ์ ์๋ค. ์ด๋ฌ๋ฉด ๋ซ์ ๋์ ๋ ธ๋์ ๋ํด์๋ ์ฌ์ฐ์ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋ฌดํ๋ฃจํ์ ๋น ์ ธ๋ฒ๋ฆฐ๊ฑด ์ด ๋ถ๋ถ์ด ๋ฌธ์ ์ผ๊ฑฐ์..
์์ฝํ๋ฉดย
1.๋ชฉ์ ์ง๊น์ง์ ๊ฑฐ๋ฆฌ ๋น์ฉ์ด x์ฐจ์ด์ ์ ๊ณฑ + y์ฐจ์ด์ ์ ๊ณฑ์ผ๋ก ์กํ์์ด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ. ย ย ย ย ย ย
2. queue๋ฅผ ์ด์ฉํด ๋ค์ด๊ฐ ์์๋๋ก popํ์ฌ a*์ ์ต๋จ๊ฒฝ๋ก ๊ณ์ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ค์ํ ๊ฐ๋ ์ด ์ ์ค๋จ. queue๋ฅผ ์ด์ฉํ๋ฉด a*๊ฐ ์๋๋ผ ํด๋ฌ์คํฑ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๊น์ด ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๊ฒ์.. a*๋ฅผ ์ํ๋ค๋ฉด queue ๋ง๊ณ list๋ก open set์ ๊ด๋ฆฌํ๊ณ ๋ค์ ํ์ฌ๋ ธ๋๋ฅผ ๊ฒฐ์ ํ ๋ open set์ ์ํ ๋ ธ๋ ์คย f cost(์์์ ์ผ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ+๋์ฐฉ์ ๊น์ง์ ๊ฑฐ๋ฆฌ)๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋ ธ๋๋ฅผย ๋ค์ ํ์ฌ ๋ ธ๋๋ก ๊ฒฐ์ ํด์ผ ํจ.. foreach๋ฅผ ์ด์ฉํด์ openset์ ์ํย ๋ชจ๋ ๋ ธ๋์ค ๊ฐ์ฅ fcost๊ฐ ๋ฎ์ ๋ ธ๋๋ฅผ ์ฝ๊ฒ ์ป์ ์ ์์..
3. open set์์ ๋ฝ์๋ธ(๊ทธ๋ฆฌ๊ณ close set์ ์ถ๊ฐํ) ํ์ฌ ๋ ธ๋์ ์ธ์ ๋ ธ๋์ ๋ํด fย cost๋ฅผ ์ค์ ํด์ค ๋ค ๊ทธ ์ธ์ ๋ ธ๋๋ค์ด ์ด๋๊ฐ๋ฅํ ๋ ธ๋์ธ์ง ํ์ธํ๊ณ open set์ ์ถ๊ฐํ๋๋ฐ,ย ย ์ดํ์ ๋ค์ ํ์ฌ ๋ ธ๋์ ์ธ์ ๋ ธ๋๋ค์ ๋ํด์ ์ฐ์ฐํ ๋ close set์ ์ํ ์ธ์ ๋ ธ๋๋ค์ ๋ค์ ํ๋ฒ ๊ณ์ฐ ๋์์ ๋ฃ๊ณ ์์. ์ด๋ฅผ ์ ์ธํ์ง ์์ผ๋ฉด ์ด๋ฏธ closeํ ๋ ธ๋์ ๋ํด์๋ ์ฐ์ฐ์ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ ๊ณ์ ๊ฐ์ ์๋ฆฌ๋ฅผ ๋งด๋๊ฒ ๋๋ฉฐ ๋ฌดํ๋ฃจํ๋ ์ฌ๊ธฐ์ ๋ฐ์ํ๋ ๋ฏ..
์ผ๋จ ๋งํ ๋ถ๋ถ ์์ ํด๋ณด๊ณ ๊ณ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ค์ ๋งํด์ฃผ์ ..ย
์ง๊ธ์ ๊ตฌ์กฐ ์น๊ฐ์์๊ณ ๊ตฌํ ์ฑ๊ณตํ์ด์ฌ ใ ใ ๋ค์ ํ๋ฒ ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ๋ค์์ก๊ณ ๋ณด๋ ๋ง์ํด์ฃผ์ ๋๋ก ์ค๋ณต์ฒ๋ฆฌ๋๋ ๋ ธ๋๊ฐ ์ ค ํฐ๋ฌธ์ ์๊ณ ๊ทธํ์๋ ์ ์ฒด์ ์ผ๋ก ๊ฐ์์๊ณ ๋๋ ์ข ๋๋๋ผ๊ตฌ์ฌ
๊ตฟ ์ํ๋ ธ๋ค๋ฉด ๋คํ์ ์ฆ๊ฒ์ ์ํ์ธ์ผ