1. Local Search algorithm
: Local Search algoritms์ single current node์ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ ๋ ธ๋์ neighbors node๋ก ์์ง์ด๋ operation์ ์ฌ์ฉํ๋ค. ์ ํ์ ์ผ๋ก search์ ์ํด ๋ฐ๋ผ์ค๋ path๋ ์ ์ง๋์ง ์๋๋ค.
-> ๊ทธ๋์ little memory๋ง ์ฌ์ฉ (๋ณดํต constant amount)
-> ์์ฃผ ํฌ๊ฑฐ๋ infinite(continuous)ํ state space์์ ๋ฉ๋ํ ๋งํ solution์ ์ฐพ์ ์ ์๋ค. (systematic algorithms์ ์ ํฉํ์ง ์๊ฑธ๋)
-> ๋ํ local search algorithm์ optimization problem(objective funtion์ ๋ฐ๋ผ ๊ฐ์ฅ best state๋ฅผ ์ฐพ๋ ๊ฒ์ด ๋ชฉํ์ธ ๋ฌธ์ )์ ํธ๋๋ฐ ์ ์ฉํ๋ค.
1) Hill-climbing search
: objective function์ ์ํด ํ์ฌ state๊ฐ ์ผ๋ง๋ ์ข์์ง ํ๋จํด์, ๋ ๊ฐ์ด ํฐ ๊ณณ์ผ๋ก ์ด๋ํด maximum์ ์ฐพ๋๋ค.
HillClimbing search๋ก 8-queens๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๊ณ ํด๋ณด์.
8-queens ๋ฌธ์ ๋ ๊ฐ์ ํ/ ์ด/ ๋๊ฐ์ ๋ผ๋ฆฌ ๊ณต๊ฒฉ์ด ๊ฐ๋ฅํ๋ค๊ณ ํ ๋, ์๋ก ๊ณต๊ฒฉํ์ง ์๊ฒ ๋ฐฐ์นํ๋ ๋ฌธ์ ์ด๋ค.
ํ ๊ฐ์ ํธ์ ์ด๋ํ๋ ๊ฒ์ด action์ด๊ณ ๊ณต๊ฒฉ ๊ฐ๋ฅํ set์ ๊ฐ์๋ฅผ object function value๋ผ๊ณ ํ์ ๋, ์ฐ๋ฆฌ์ ๋ชฉํ๋ ์ด ๊ฐ์ descent, ์ฆ ๋ด๋ ค์์ผ ํ๋ ๊ฒ์ด๋ค. ์ฆ ์์ ์ค๋ช ๊ณผ ๋ฌ๋ฆฌ minimum ๊ฐ์ ์ฐพ์์ผ ํ๋ค.
- hill-climbing search ์๊ณ ๋ฆฌ์ฆ์ value๊ฐ ์ฆ๊ฐํ๋ ๋ฐฉํฅ์ผ๋ก ๊ณ์ ์์ง์ด๋ ์์ฃผ ๋จ์ํ ๋ฐ๋ณต๋ฌธ์ด๋ค.
- ์๋ฌด๋ฐ neighbor๋ ๋ higher value๋ฅผ ๊ฐ์ง ์๋ "peak"์ ๋๋ฌํ์ ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋์ด ๋๋ค.
- search tree๋ฅผ ํฌํจํ๊ณ ์์ง ์์, current node์ data structure์๋ ์ค์ง state์ objective function์ value ๊ฐ๋ง ํ์ํ๋ค.
- hill-climbing์ ๋๋ก greedy local search๋ผ๊ณ ๋ถ๋ฆฐ๋ค. ์ด๋๋ก ๊ฐ์ผํ ์ง ๋ฏธ๋ฆฌ ์๊ฐํ์ง ์๊ณ ๊ทธ์ good neighbor state๋ง ์ฐพ์๋ค๋๊ฑฐ๋ . ์ฆ ํ์ฌ์ํ๋ง์ด ์ค์ํ์ง, ๊ณผ๊ฑฐ์ ๋ฏธ๋๋ ์ ๊ฒฝ์ฐ์ง ์์.
-๊ทธ๋ฌ๋ ๋ถํํ๋, hill climbing์ "Local maxima, Plateaux, Rridges" ์ ๊ฐ์ ์ด์ ๋ก ๋ฌธ์ ๊ฐ ์๊ธฐ๊ณค ํ๋ค.
- Local maxima์ ๊ฒฝ์ฐ, ์ ์ฒด์ ์ผ๋ก ๋ดค์ ๋ max๊ฐ์ด ์๋๋ฐ, ๊ทธ ๊ตญ์ ์ง์ญ์์์ max๊ฐ์ ๊ฐํ local๋ฐ์ ๋ณด์ง ๋ชปํ๋ ๊ฒ
- plateaux๋ ๊ณ ์์ด๋ผ๋ ๋ป์ผ๋ก, ํํํ ์ง์ ์์ ์กฐ๊ธ๋ง ๋ ๊ฐ๋ฉด ๋ ๋์ ๊ฐ์ ์ฐพ์ ์ ์๋๋ฐ ๊ทธ ํํํ ๊ตฌ๊ฐ์ ๊ฐํ๋ฒ๋ฆฌ๋ ๊ฒ
- ridges๋ ์ด๋ค state์์ ์ทจํ ์ ์๋ ๋ชจ๋ action์ ๋ค ์ทจํด๋ ๋ ๋์ ๊ณณ์ผ๋ก ๊ฐ์ง ๋ชปํ๋ ๊ฒฝ์ฐ. ์ฆ local maxima๊ฐ ์๋ก ์ง์ ์ฐ๊ฒฐ๋์ด์์ง ์์ ๊ฒฝ์ฐ. ๋ฎ์ ๊ณณ์ ๋ค๋ ๋ค๊ฐ ๊ฐ๋ฉด ๊ฐ ์ ์๋๋ฐ ๋ฎ์ ๊ณณ์ ์ ์ด์ ์ ๊ฐ.
1-2 ) Various Hill-Climbing Search Strategies
i. Stochastic hill climbing : ๊ฐ์ฅ ๊ฐํ๋ฅธ ๊ณณ๋ง ์ ํํ๋ ๊ฒ์ด ์๋๋ผ ํ๋ฅ ์ ์ผ๋ก ์ ํํ๋ค. ๊ฐํ๋ฅธ ๊ณณ์ ๊ฐ ํ๋ฅ ์ด ๋ ๋๊ณ , ์๋งํ ๊ณณ ํ๋ฅ ์ด ๋ ๋ฎ๋ค. ๊ทธ๋ฅ steepest ascent๋ณด๋ค๋ ๋๋ฆฌ๊ฒ ์ง๋ง, ๋ ๋์ solution์ ๋ฐ๊ฒฌํ ์๋ ์๋ค.
ii. First-choice hill climbing : ํ์ฌ state์์ ๊ฐ๋ฅํ ๋ชจ๋ ๋ค์ state๋ฅผ ๋ง๋ค๊ณ ์ ๊ทธ์ค์์ ์ด๋ ๊ฐ์ง ๊ณ ๋ฅด๋๊ฒ ์๋๋ผ, ๋ค์ state๋ฅผ ๋๋ค์ผ๋ก ํ๋ํ๋์ฉ ๋ง๋ค์ด ๋๊ฐ๋ค. ๊ทธ๋์ ํ์ฌ state๋ณด๋ค value๊ฐ ์ข์ ๋ค์ state๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ๊ทธ๊ณณ์ผ๋ก ๋ฐ๋ก ์ด๋ํ๋ค. ๋ง์ฝ state๊ฐ ๋งค์ฐ ๋ง์ successor๋ฅผ ๊ฐ์ง๊ณ ์์ ๊ฒฝ์ฐ ์ข์ ์ ๋ต์ด ๋๋ค.
iii. Random-restart hill climbing : goal์ ์ฐพ์ ๋๊น์ง ๋๋คํ๊ฒ ์์ฑ๋๋ initial state์์ hill climbing search๋ฅผ ์ํํ๋ค. ์๊ฐ์ด ๋ฌดํํ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด goal์ ์ฐพ์ ์ ๋ฐ์ ์์ด์ completeํ๋ค. (initial state์ฒ๋ผ goal state๋ ์ฌ์ค ์์ฑํด๋ด๋๊ฑฐ๋ ๋ง์ฐฌ๊ฐ์ง)
- hill-climing algorithm์ ์ ๋ ๋ด๋ ค๊ฐ๋ ๋ฐฉํฅ์ผ๋ก๋ ์์ง์ด์ง ์์์ incompleteํ๋ค. ๋ง์ฝ local maximum์ ๊ฐํ๋ฒ๋ฆฌ๋ฉด global solution์ ์ฐพ์ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
2) Simulated Annealing
: hill climbing๊ณผ random walk๋ฅผ ํฉ์น ํํ๋ก, efficiency์ completeness๋ฅผ ๋๋ค ์ก์ ์๊ณ ๋ฆฌ์ฆ. ํญ์ ์ฌ๋ผ๊ฐ๋ ๊ฒ๋ง ์๋๋ผ, ๊ฐ๋ ๋ด๋ ค๊ฐ๊ธฐ๋ ํ๋๋ฐ, ํ์ ์ด๊ธฐ์๋ ๊ทธ ํ๋์ ์์ฃผ shakingํ๋ค๊ฐ ์ ์ฐจ ๊ทธ intensity๋ฅผ ์ค์ฌ๋๊ฐ๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด local maxima์์ ๋ฒ์ด๋ ์ ์๋ค.
์๋ฅผ ๋ค์ด ๊ฐ์ฅ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ ์ํด ๊ณต์ ๊ตด๋ฆฐ๋ค๊ณ ์๊ฐํ์. ๊ทธ๋ฌ๋ฉด local minima์ ๋น ์ง ์ ๋ฐ์ ์๋๋ฐ, ์ด ๋ ์ด ํต์ ํ๋ค์ด์ค ๊ทธ local minima์์ ๋ฒ์ด๋ global minima ๊ฐ์ ์ฐพ์ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ์ด๋ค.
๋จผ์ initial state๋ฅผ current node์ ๋ฃ์ด์ฃผ๊ณ ์์ํ๋ค. schedule(t)๋ ํฐ์์์ ์์์๊น์ง ์ญ์์ผ๋ก ์ ๋ ฌํ๊ฒ ํด์ฃผ๋ ์ฝ๋์ด๋ค. ์ฆ T์๋ ๋ฌดํ๋๋ถํฐ 1์ ๊ฐ์ด ์์๋๋ก ๋ค์ด๊ฐ๋ค. ๋ง์ฝ T๊ฐ 0์ด๋ผ๋ฉด for๋ฌธ์ ํ์ถํ๋ค.
current์ successor์ค์์ ๋๋คํ๊ฒ ํ๋๋ฅผ ์ ํํ์ฌ next์ ๋ฃ๊ณ , โณE์ ๊ฐ์ next value ์ current value์ ์ฐจ๋ฅผ ๋ฃ์ด์ค๋ค. โณE๊ฐ ์์๋ผ๋ฉด next value๊ฐ ๋ ์ข์๊ฒ์ด๋ฏ๋ก current์ next๋ฅผ ๋ฃ์ด์ค๋ค. ๋ง์ฝ ์์๋ผ๋ฉด e^โณE/T ์ ํ๋ฅ ๋ก current์ next๋ฅผ ๋ฃ์ด์ค๋ค. ์ฆ ๊ฐ์ด ๋ ์์ข๋๋ผ๋ ์ผ์ ํ๋ฅ ์ ๋ฐ๋ผ ๋ด๋ ค๊ฐ๊ธฐ๋ ํ๋ ๊ฒ์ด๋ค.
์ฐธ๊ณ ๋ก ๋ด๋ ค๊ฐ ๋์ ํ๋ฅ ์์ โณE๋ ๋น์ฐํ ์์์ด๊ณ (์์์ด๋๊น else๋ฌธ์ ๋ค์ด์๊ฒ ์ฃ ), e์ โณE/T์ ๊ณฑ์ด๋ฏ๋ก T๊ฐ์ด ์์์ง์๋ก ํ๋ฅ ์ ๊ฐ๋ ์์์ง๋ค.
3) Local Beam Search
: Local Beam Search algorithm์ ๋ ธ๋๋ฅผ ํ๋๊ฐ ์๋๋ผ k๊ฐ์ states๋ฅผ ๊ฐ์ง๊ณ ์๋๋ค.
- K๊ฐ์ ๋๋คํ๊ฒ ์์ฑ๋ states์์ ์์ํด์, ๊ฐ step๋ง๋ค ๋ชจ๋ k states์ successor๋ค์ด ์์ฑ๋๋ค. ๊ทธ ์ค ํ๋๊ฐ goal์ด๋ผ๋ฉด ์๊ณ ๋ฆฌ์ฆ์ด ์ ์งํ๋ค. ๋ง์ฝ ์๋๋ผ๋ฉด, k x n ๊ฐ์ ๋ ธ๋ ์ค์์ best successor k๊ฐ๋ฅผ ์ ํํ์ฌ ์ ์์ ์ ๋ฐ๋ณตํ๋ค.
-๋๋คํ๊ฒ ๋ค์ ์์ํ ๋, ๊ฐ search process๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ค. ๋ํ ์ ์ฉํ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋ณ๋ ฌ์ ์ผ๋ก ๊ฒ์ thread๊ฐ์ ์ ๋ฌ์ด ๋๋ค. ์? best k๊ฐ์์ ๋ค์ ์์, ๋ ๋ค์ ์์ ํ๋ค๋ณด๋ฉด bestํ ์์น๋ฅผ ์ค์ฌ์ผ๋ก ๊ฒ์์ด ์ด๋ค์ง๊ฑฐ๋๊น!
- ํ์ง๋ง ์ด๋ ๋ฏ local beam search๋ ์ข์ ์ชฝ์ผ๋ก๋ง ๊ฐ๊ธฐ ๋๋ฌธ์ ํ์ ๊ณต๊ฐ์ lack of diversity์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค. ๊ตญ์์ง์ญ์ ์ง์คํ๊ฒ ๋์ด๋ฒ๋ ค ์คํ๋ ค hill climbing๋ณด๋ค๋ ๋ ๋ง์ ํ์์ ํ๊ฒ ๋์ด๋ฒ๋ฆด ์๋ ์๋ค.
- stochastic beam search๋ k successor์ ๋๋ค์ผ๋ก ๋ฝ๋๋ค. (์์ ๋๋ค์ ์๋๊ณ , value๊ฐ ์ข์์ง ์๋ก ๋ฝ์ ํ๋ฅ ๋ ๋์์ง๋) ์ด๊ฑธ ํตํด์ ์์ ๋งํ lack of diversity ๋ฌธ์ ๋ฅผ ์ด๋์ ๋ ํด๊ฒฐํ ์ ์๋ค.
4) Genetic Algorithm(์ ์ ์๊ณ ๋ฆฌ์ฆ)
: genetic algorithm(=GA)๋ successor state๊ฐ ๋ ๊ฐ์ parent states๋ฅผ ํฉ์ณ์ ๋ง๋ค์ด์ง๋ stochastic beam search์ ๋ณํํ์ด๋ผ๊ณ ํ ์ ์๋ค.
- ๊ฐ state(=individual)์ ์ ํํ ์ํ๋ฒณ์ผ๋ก ์ด๋ฃจ์ด์ง string์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ฐ, ๋ณดํต์ 0๋๋ 1์ด๋ค.
- ๊ฐ state๋ objective function (=fitness function, ์ ํฉ๋) ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๊ฐ๋๋ค.
- beam search์ฒ๋ผ GA๋ ์ฒ์์ k๊ฐ์ ๋๋ค ์์ฑ๋ state๋ก ์์ํ๋ค. ์ด initial state๋ฅผ poopulation์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- reproduction์ ์ํด์ ๋๋ค์ผ๋ก 2๊ฐ๋ฅผ ๊ณ ๋ฅธ๋ค. (ํ๋ฅ ์ ๋ฐ์ํ๋ค)
- ์ด ๋๊ฐ๋ฅผ ์์ด์ ์๋ก์ด state๋ฅผ ๋ง๋ค์ด๋ธ๋ค. ์ด๋ป๊ฒ crossoverํ๋? ๋ ๊ฐ์ string์์ crossover point๋ฅผ ๋๋คํ๊ฒ ๊ณ ๋ฅธ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ point๋ฅผ ๊ธฐ์ค์ผ๋ก string์ ์๋ผ์ ๋์ด ํฉ์น๋ค.
- ๋ฎ์ ํ๋ฅ ๋ก ํ ์๋ฆฌ ๊ณจ๋ผ์ ๊ฐ์ ๋ฐ๊ฟ๋ฒ๋ฆฌ๋ mutation, ์ฆ ๋์ฐ๋ณ์ด๋ฅผ ์ผ์ผํจ๋ค.
new_population์ ๋น set์ ์ง์ด ๋ฃ๊ณ ์๊ณ ๋ฆฌ์ฆ์ด ์์๋๋ค.
๋ฐ๋ณต์ ์ด population์ ํฌ๊ธฐ๋งํผ ๋๋ฆด ๊ฑฐ๋ค.
population ์ค์์ fitness ํจ์ ๊ฐ์ ๋ฐ์ํ์ฌ ๊ฐ์ ๊ณจ๋ผ x์ y์ ๊ฐ๊ฐ ๋์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ x์ y๋ฅผ reproduceํ์ฌ child node๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฎ์ ํ๋ฅ ๋ก child์ mutate, ๋์ฐ๋ณ์ด๋ฅผ ์์ผ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ์ต์ข ์ ์ผ๋ก ๋ง๋ค์ด์ง child๋ฅผ new_population์ ๋ฃ์ด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ณผ์ ์ population์ ํฌ๊ธฐ๋งํผ ๋ฐ๋ณตํ์ฌ new_population์ population์ ํฌ๊ธฐ๋งํผ ๋ง๋ค์ด์ค ๋ค์์ ๋ฐ๋ณต์ด ๋๋๋ฉด new_population set๋ค์ population์ ๋์ ํด์ค๋ค. ๊ทธ๋ฌ๋ฉด ์ด์ population์ด ์์ ๋ ธ๋๋ค๋ก ๋ค ๋ฐ๋์๊ณ , new_population์ empty set์ผ๋ก ์ด๊ธฐํ ํ ํ ๋ ๋ฐ๋ณตํ๋ค.
์ด ๊ณผ์ ์ ์ถฉ๋ถํ fitํ individual์ด ๋์ค๊ฑฐ๋ ์๊ฐ์ด ์ด๋ฏธ ๋๋ฌด ๋ง์ด ์ง๋๋ฒ๋ฆด ๋๊น์ง ๋ฐ๋ณตํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต์ด ๋๋๋ฉด, population ์์ ์๋ individual์ค ๊ฐ์ฅ fitํ ๊ฒ์ returnํด์ค๋ค.
๊ทธ๋ ๋ค๋ฉด reproduce๋ ์ด๋ป๊ฒ ํ ๊น?
x์ y๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์๋ค. n์๋ x์ ๊ธธ์ด๋ฅผ, c์๋ 1๋ถํฐ n๊น์ง์ ๋๋คํ ์ซ์๋ฅผ ๋ฃ์ด์ค๋ค.
๊ทธ๋์ x์์๋ 1๋ถํฐ c๊น์ง์ ๊ฐ์, y์์๋ c+1๋ถํฐ n๊น์ง์ ๊ฐ์ ๊ฐ์ ธ์ ํฉ์ณ์ returnํด์ค๋ค.
์ฆ crosspoint๊ฐ c์ธ ๊ฒ!
์ฌ๊ธฐ์๋ ๊ณต๊ฒฉํ ์ ์๋ pair ์ ๊ฐ์๋ fitness function์ผ๋ก ๋์๋ค. ์ฆ ๋๋ฒ์งธ 32752411์ 1์ด์๋ 3ํ, 2์ด์๋ 2ํ.... ๋ง์ง๋ง ์ด์๋ 1ํ์ ๋ง์ด ์กด์ฌํ๋ ๊ฒ์ด๊ณ , ์ด ๋ fitness function์ ์ ์ฒด ๊ฒฝ์ฐ์ ์์ธ 8C2์์ ๊ณต๊ฒฉํ ์ ์๋ ๊ฒฝ์ฐ์ ์์ธ 5๋ฅผ ๋นผ์ค์ผ ํ๋ค. ๊ทธ๋์ fitness function ๊ฐ์ด 23์ด ๋๋ค.
์ด๋ฐ ์์ผ๋ก 4๊ฐ์ง ๊ฒฝ์ฐ์ ๋ํด fitness function์ ๊ณ์ฐํ๋ฉด ์ ํํ ํ๋ฅ ๋ ๋์ถ์ด ๋๋ค. (๊ฐ์ด ๋์ ์๋ก ํ๋ฅ ๋ ๋์์ง) ๊ทธ ํ๋ฅ ์ ๊ธฐ๋ฐ์ผ๋ก 2๊ฐ์ individual์ ์ ํํ๊ณ , c์ ๊ฐ์ ๋๋ค์ผ๋ก ๊ณจ๋ผ string์ ํฉ์ณ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณด๋ฉด ๋ณ์ด๋ ์ค๊ฐ์ค๊ฐ ์ผ์ด๋ฌ์์ ๋ณผ ์ ์๋ค.
- ์ด ๋ฐฉ๋ฒ์ stochastic beam search์ฒ๋ผ ์ข์ ๋ ธ๋๊ฐ ์ ํ๋ ํ๋ฅ ์ด ๋์ง๋ง, ๋์ ๋ ธ๋๋ ์ ํ๋ ์ ์๋ค. (uphill tendency with random exploration)
- ๊ทธ๋ฆฌ๊ณ ๊ฐ parallel search thread๊ฐ์ ์ ๋ณด ๊ตํ์ด ์ผ์ด๋๋ ๊ฒ๋ ๋์ผํ๋ค.
- ํ๋์ ๋ ธ๋๊ฐ ํ๋์ ๋ค์ ๋ ธ๋๋ฅผ ์์ฑํ๋ stochastic beam search์๋ ๋ฌ๋ฆฌ, ๋ ๊ฐ์ ๋ ธ๋๋ฅผ ์กฐํฉํ์ฌ ๋ค์ ๋ ธ๋๋ฅผ ๋ง๋ค์ด๋ธ๋ค. ์ด๊ฒ ๊ฐ์ฅ ํฐ!!! ์ด๋๋ฒคํฐ์ง๋ค!!!
'๐ก๐ธ๐ธ๐ถ5: ๐ฆ๐๐๐๐ถ ๐ฐ๐๐พ๐ > Artificial Intelligence(COSE361)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธ๊ณต์ง๋ฅ] 5. Adversarial Search(์ ๋์ ํ์) (0) | 2021.04.24 |
---|---|
[์ธ๊ณต์ง๋ฅ] 4. Beyond Classical Search - 2 (0) | 2021.04.24 |
[์ธ๊ณต์ง๋ฅ] 3. Solving problems by searching - 3 (0) | 2021.04.24 |
[์ธ๊ณต์ง๋ฅ] 3. Solving problems by searching - 2 (0) | 2021.04.23 |
[์ธ๊ณต์ง๋ฅ] 3. Solving problems by searching - 1 (0) | 2021.04.23 |