์คํฐ๋์์ A* ์๊ณ ๋ฆฌ์ฆ์ ํ ๋ฒ ์์ฑํด๋ณด๊ณ ๊ฐ๋จํ๊ฒ ์ฝ์๋ก ๋์ด๋ณด๊ณ .. ์ ๋ํฐ๋ก ์ ์ฉํด๋ณด๊ธฐ๋ก ํ์๋ค. ์ ๋ํฐ๋ก ์ฎ๊ธฐ๋ ์์ ๋ฒ์จ๋ถํฐ ๊ฑฑ์ ์ด ๋๋ค. ์ผ๋จ A*์๊ณ ๋ฆฌ์ฆ์ด ๋ญ์ง ์ ๋ฆฌ๋ฅผ ํด๋ณด์ ..
A* ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฅํ์ฌ ๋ง๋ค์ด์ง ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ฃผ์ด์ง ์ถ๋ฐ ๊ผญ์ง์ ์์๋ถํฐ ๋ชฉํ ๊ผญ์ง์ ๊น์ง ๊ฐ๋ ์ต๋จ๊ฒฝ๋ก๋ฅผ ์ฐพ์๋ด๋ ๊ทธ๋ํ ํ์ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ด๋ค.
์ฃผ๋ก ๊ฒ์์์ ๋ชฌ์คํฐ๊ฐ ํ๋ ์ด์ด๋ฅผ ๋ชฉํ์ง์ ์ผ๋ก ์ด๋ํ๊ฑฐ๋ ์๋ ์ฌ๋ฅ ๊ฒ์์์ ํ๋ ์ด์ด๊ฐ ํ๊ฒ(๋ชฌ์คํฐ๋ ๋ค๋ฅธ PC)์ ํฅํด ์ด๋์ํฌ ๋ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
์๊ณ ๋ฆฌ์ฆ | ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ | A* ์๊ณ ๋ฆฌ์ฆ |
๋ชฉํ์ | ์์์ -> ๋๋จธ์ง ๋ชจ๋ ์ ์ ๋ค๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ | ์์์ -> ๋ชฉํ์ ๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ |
์ฐจํ ๊ฒฝ๋ก ๋์ถ์ ์ํ ํจ์ f(n) |
ํ์ฌ ๋
ธ๋์์ ๊ฐ๊น์ด ๋
ธ๋๋ถํฐ ์์ฐจ์ ์ผ๋ก ๋ฐฉ๋ฌธ f(n) = g(n) |
ํ์ฌ ๋
ธ๋์ ํด๋ฆฌ์คํฑ ํจ์๋ฅผ ํตํด ์ ์๋ฅผ ๋งค๊ธฐ๊ณ ๊ฐ์ฅ ์ข์(๊ฐ์ฅ ๊ฐ๊น์ด) ์ ์ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธ f(n) = g(n) + h(n) (* h(n)=0 ์ด๋ฉด, ๋ค์ต์คํธ๋ผ) |
์๋ | ๋ค์ต์คํธ๋ผ < A* |
A* ์๊ณ ๋ฆฌ์ฆ ๋ฐฉ๋ฌธ ๋ ธ๋ ํ์ ๊ธฐ์ค ๊ณต์
$ f\big(n\big) = g\big(n\big)+h\big(n\big) $
- g(x): ์์ ๋ ธ๋๋ถํฐ ํ์ฌ ๋ ธ๋๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ(๋น์ฉ)
- h(x)/heuristic : ํ์ฌ ๋ ธ๋์์ ๋์ฐฉ ๋ ธ๋๊น์ง์ ์ถ์ ๋ ๋จ์ ๊ฑฐ๋ฆฌ(๋น์ฉ)
heuristic ํด๋ฆฌ์คํฑ ์ค ๋ํ์ ์ธ ํจ์
(1). ๋งจํดํผ ๊ฑฐ๋ฆฌ(Manhattan Distance) ํจ์ : L1 Distance๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ณต์
2์ฐจ์ : |x1 - x2| + |y1 - y2|
3์ฐจ์: |x1 - x2| + |y1 - y2| + |z1 - z2|
(2). ์ ํด๋ฆฌ๋์ ๊ฑฐ๋ฆฌ ํจ์(Euclidean Distance) : L2 Distance๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ณต์ (์๋ ์ฝ๋๋ ์ ํด๋ฆฌ๋์ ์ฌ์ฉ.)
2์ฐจ์: $$\sqrt{ \big(x2 - x1\big) ^{2}+ \big(y2-y1\big) ^{2}}$$
3์ฐจ์: $$\sqrt{ \big(x2 - x1\big) ^{2}+ \big(y2-y1\big) ^{2} + \big(z2-z1\big) ^{2}}$$
๊ทธ๋ฆผ์ผ๋ก A*์๊ณ ๋ฆฌ์ฆ ํ๋ฆ๋ณด๊ธฐ
1. P = ์์์
2. P์ f, g, h ํ ๋น
3. Open ๋ฆฌ์คํธ์ P ๋ฃ๊ธฐ
4. B = Open ๋ฆฌ์คํธ์์ ๊ฐ์ฅ ๋ฎ์ f ๊ฐ์ ๊ฐ์ง ๋ ธ๋
a. B๊ฐ ๋ชฉํ์ ์ด๋ฉด, ๊ฒฝ๋ก ์์ฑ
b. Open ๋ฆฌ์คํธ๊ฐ ๋น์์ผ๋ฉด, ๋ชฉํ์ ๊น์ง ๊ฒฝ๋ก๊ฐ ์กด์ฌํ์ง ์์
5. C = B์ ์ฐ๊ฒฐ๋ ๋ ธ๋
a. C์ f, g, h ๊ฐ ํ ๋น
b. Open/Close ๋ฆฌ์คํธ์์ C๊ฐ ์๋์ง ์ฒดํฌ
1. ์์ผ๋ฉด, ๋ ๋ฎ์ f ๊ฐ์ผ๋ก ๊ฒฝ๋ก ์ ๋ฐ์ดํธ
2. ์์ผ๋ฉด, C๋ฅผ Open ๋ฆฌ์คํธ์ ๋ฃ๊ธฐ
c. 5๋ฒ์ผ๋ก ๋์๊ฐ์ B์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋์์ผ๋ก ์งํ
6. 4๋ฒ์ผ๋ก ๋์๊ฐ
[pseudo ์ฝ๋ ์ถ์ฒ]
A* ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํ – ๊ฒ์ ๊ฐ๋ฐ ๋ธ๋ก๊ทธ/์ ๋ํฐ/์ธ๋ฆฌ์ผ/์คํ ๋ฆฌ/ํ/ํ๋ก๊ทธ๋๋ฐ (lunchballer.com)
- ์์ ๋
ธ๋ 7๋ฒ์ close์ ๋ด๋๋ค.
- 7๋ฒ๊ณผ ์ฐ๊ฒฐ๋ 6๋ฒ 5๋ฒ์ open์ ๋ด๋๋ค.
- ์ถ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ 6๋ฒ ๋
ธ๋๋ฅผ close์ ๋ด๋๋ค.
- 6๋ฒ๊ณผ ์ฐ๊ฒฐ๋ 2๋ฒ 1๋ฒ์ open์ ๋ด๋๋ค.
- ์ถ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ 2๋ฒ ๋
ธ๋๋ฅผ close์ ๋ด๋๋ค.
- 6๋ฒ๊ณผ ์ฐ๊ฒฐ๋ 2๋ฒ 1๋ฒ์ open์ ๋ด๋๋ค.
- ์ถ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ 2๋ฒ ๋
ธ๋๋ฅผ close์ ๋ด๋๋ค.
๊ตฌํ (C++)
'๐จ๐ปโ๐ป programming > โฝ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/ ๋นํธ๋ง์คํฌ] (4) | 2023.02.17 |
---|---|
[Algorithm/ Sparse Table (ํฌ์ํ ์ด๋ธ)] ๋ฐฑ์ค 17435๋ฒ๊ณผ ํจ๊ป (0) | 2023.02.01 |
[Algorithm/MST] ํ๋ฆผ(Prim) ์๊ณ ๋ฆฌ์ฆ (0) | 2022.03.07 |
[Algorithm/MST] ํฌ๋ฃจ์ค์นผ(Kruscal) ์๊ณ ๋ฆฌ์ฆ (0) | 2022.03.03 |
[Algorithm] ์ต์ ๋น์ฉ ์ ์ฅ ํธ๋ฆฌ (MST, Minimum SpanningTree) (0) | 2022.02.17 |
์ ํ๋ ๊ฒ ๋ณด๋ค ๋ซ๊ฒ ์ง
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!