Compy's Blog
991 words
5 minutes
[Algorithm] Heuristic
2025-01-10

보통 우리가 알고리즘을 짤 때, 하나를 당연하게 생각한다. 바로 “언제나 정확히 최적화된 해를 반환한다”라고 생각합니다.

그러나 그렇지 않은 알고리즘들도 있는데, 그중 대표적인 것이 A*이다. 이 알고리즘은 휴리스틱을 기반으로 작동합니다.

휴리스틱은 도대체 뭐고… 알고리즘과의 차이는 뭘까? 이 포스팅에서 다뤄볼 것에요! (약간 말투가 이 포스팅만 다를 수 있어요)

휴리스틱이란?#

휴리스틱(Heuristic)은 최적의 해는 아니더라도, 어느정도 도움이 되는 값을 주는 친구라고 생각하면 됩니당

?? 알고리즘이랑 똑같은거 아님?#

엄연한 차이가 있어요. 위에서도 강조하면서 왔듯이… 휴리스틱은 최적해를 보장하지 않는다.. 하지만 알고리즘은 최적해를 보장하는 방법론입니다.


한가지 예시를 들어보자.
한번 축구로 예시를 들어볼게요
이 영상을 보다가 문득 오… 휴리스틱이랑 알고리즘이랑 차이점을 다뤄봐도 재밌겠다. 라고 생각을하고 바로 포스팅하러 달려왔습니다. 또 제가 축구를 좋아하니.. 예시도 축구로 들어보도록 하죠.

일단 제가 수비라인에 있다고 생각을 해볼게요. 그러면 상대팀이 압박을 해옵니다. 이제 어디론가 패스를 해야겠죠?

먼저 알고리즘적으로 생각을 해볼게요. 모든 팀원의 위치와 속도 벡터를 다 고려합니다. 여기서 속도 벡터는 방향까지 본다는 얘기구요.
그리고 상태팀의 위치와 이동 경로도 알아야겠죠?
그리고 어느 발로 때렸을 때 성공 확률을 좀 계산을 해야겠구요.
이후에 최적의 패스 경로와 강도를 계산해서 패스를 합니다!

이처럼 완벽한 최적해를 만들어내고 패스를 하죠!

그럼 다음으로는 휴리스틱적으로 생각을 해볼게요?

휴리스틱으로 한번 “공간이 많이 보이는 곳을 패스한다” 해보구요 안되면 “압박이 적은 선수에게 패스한다” 또 안되면 “수비수 시선이 다른 곳으로 볼 때 패스한다” 이런 느낌으로 진행이 되겠죠?

이 예시가 적절하다고 생각은 들지는 않는데 한번 더 강조하지만

최적해는 아니지만 이게 어느정도 도움이 된다. 최적해에 근접할 수 있도록 해준다 라고 생각하면 좋을 것 같아요.

이제 영상을 보시면 나중에 인공지능으로 만들어진 클론들은 축구 경기에서 지게됩니다. 이처럼 좀 헤비한 연산이 많은 알고리즘 같은 경우에 real-time이 필요한 경우 알고리즘을 휴리스틱으로 대체하는 경우도 많다고 알고있는데요.

선수들은 사실 많은 경험을 토대로 구축된 효율적인 휴리스틱을 뇌에 탑제하고 있다고 생각하시면 되는거죠.

뭐 디게 단순하게 휴리스틱 써서 A* 구현한 포스팅이 있으니 이걸 한번 보고 오시면 코드로 구현하는데 어렵지 않으실 겁니다!

A* 알고리즘 - COMPY07


여러분들도 뭔가 유튜브나 어떤 영상을 보고서 느껴본 차이점이나 흥미로운 것들이 있으셨나요?
저는 또 재미있는걸 봐버렸습니다.

다음 포스팅에 뵙도록 하죠!

[Algorithm] Heuristic
https://compy07.github.io/Blog/posts/algorithms/heuristic/
Author
뒹굴뒹굴 이정훈 공부방
Published at
2025-01-10