왜 카카오맵은 더 느린 길을 최적 경로라 판단할까?
안녕하세요!
NewCodes입니다!
평소에 카카오맵을 사용하면서 불편했던 점
딱 한 가지에 대해서 깊게 파보는
시간을 가지려고 합니다.
해당 글을 쓰게 된 동기
저는 평소에 카카오택시를 자주 이용하는 편입니다. 집으로 향할 때는 항상 즐거운 마음으로 택시를 타곤 하죠. 그런데 !! 집으로 가는 경로가 항상 뭔가 이상했습니다. 더 빠른 길이 있음에도 불구하고 항상 돌아가는 것이었죠.
제 집의 위치가 노출될 수도 있어 지도를 그림으로 대체하여 설명해보겠습니다.

1번 경로가 빠른 길이며 2번 경로가 느린 길입니다. 카카오맵에서는 항상 2번 경로로 추천됩니다. 반면에 네이버맵에서는 1번 경로로 추천됩니다. 1번 경로가 정상적인 길이 아니라고 생각하실 수 있는데, 그건 아닙니다. 도보가 있고 자동차 도로가 있는 정상적인 길입니다.
몇몇 택시 기사님께서는 카카오맵 네비게이션 안내에 따라 가시지 않고 더 빠른 길(1번 경로)로 안내해 주시곤 했습니다. 카카오맵대로 2번 경로로 운행해주시는 택시를 타면 항상 시간이 더 걸리고 요금도 더 나오기 마련이었습니다.
하지만 카카오맵이 1번 경로를 모르는 건 아닙니다. 카카오맵에서 기본 값으로 설정되는 '최적 경로'는 2번 경로이지만, 최단 경로로 선택하게 되면 1번 경로로 추천해줍니다. 반면 네이버맵에서는 2번 경로를 전혀 추천하지 않고 1번 경로에 대해서만 추천합니다.
카카오맵은 어떤 근거로
1번 경로보다 2번 경로를 최적 경로라고 판단할까?
더불어 길찾기 서비스가 전반적으로 어떠한 원리로 작동하는지 궁금해졌습니다. 그 디테일한 원리를 파헤쳐 보고 싶었습니다. 이 포스팅을 기점으로 카카오맵의 알고리즘에 대해 분석하고자 합니다. 이를 위해서는 총 5단계를 거쳐야 합니다.
1단계: 가설 설정
2단계: 다양한 길찾기 알고리즘 학습
3단계: 카카오맵에 사용되는 CCH 알고리즘 파헤치기
4단계: 네이버맵, 티맵 등에서 사용되는 알고리즘 조사하기
5단계: 결론 도출
우선 해당 포스팅에서는 1단계를 다뤄보겠습니다.
1단계: 가설 설정
1단계를 해결하기 위해 우선 여러 가설을 설정해봤습니다.
1. 공사 정보가 업데이트되지 않아서 우회했을 것이다.

: 1번 경로를 진입하는 구간에 예전부터 공사가 많이 진행되었습니다. 이상하게도 도로, 인도를 다시 까는 경우가 많았습니다. 이 때, 공사 정보가 카카오맵에 입력되었다면 이에 따라 최적 경로를 2번 경로라 판단할 수 있습니다. 하지만 지금까지도 입력된 공사 정보가 업데이트되지 않아 여전히 2번 경로를 최적 경로라고 판단할 수 있겠다고 추측했습니다.
2. 어린이 보호구역에 대한 회피도가 강해서 우회했을 것이다.

: 1번 경로에는 어린이 보호구역이 포함되어 있습니다. 카카오맵에서는 이에 대한 가중치를 높게 둬서 돌아가는 2번 경로를 추천했다고 판단할 수 있겠습니다.
어린이 보호구역은 오전 8시부터 오후 8시까지 적용됩니다. 이 시간대가 아니라면 최단 경로인 1번 경로를 최적 경로라고 판단하는 게 적합합니다. 하지만, 어린이 보호구역 시간대가 아니더라도 여전히 2번 경로를 추천합니다. 해당 가설이 부합할 확률은 적어보이지만, 지켜봐야 할 것 같습니다.
3. 골목을 회피하는 경향이 있어 2번 경로를 추천했을 것이다.

: 1번 경로는 모두 골목이지만, 2번 경로는 왕복 2차로와 왕복 1차로가 포함되어 있습니다. 도로의 종류에 따라 골목에 대한 점수를 낮게 줘 2번 경로를 추천했다고 추측할 수 있습니다.
향후 업로드 계획
학습한 알고리즘에 대해 자세하게 설명하는 글을 올리려고 합니다.
- 다익스트라 알고리즘
- 플로이드 워셜 알고리즘
- A* 알고리즘
- CH 알고리즘(Contraction Hierarchies)
- CCH 알고리즘(Customizable Contraction Hierarchies)
그 후, 카카오맵 알고리즘에 관해 본격적으로 분석하는 글을 올리겠습니다.
여기서 마치겠습니다. 읽어주셔서 감사합니다!!
의견 주실 부분이나 느낀 점 있으시면 댓글 달아주시면 정말 감사하겠습니다~!
다음 글이 궁금하다면?
2024.01.20 - [코딩] - A* 알고리즘이 도대체 뭔데?? (with java)
A* 알고리즘이 도대체 뭔데?? (with java)
🖥️ A* 알고리즘의 동작 과정과 특징 with java A* 알고리즘은 주로 게임에서 길을 찾는 데 활용됩니다!! A* 알고리즘이란 '출발 노드에서 목표 노드까지의 최단 거리를 구하는 알고리즘'을 의미합
newcodes.tistory.com
'Computer Science > Algorithm' 카테고리의 다른 글
| 백준 3190번 뱀 - 자세한 풀이 (Java) (6) | 2024.05.23 |
|---|---|
| 카카오맵이 최적 경로를 결정하는 데까지 (2) | 2024.02.07 |
| 카카오맵과 티맵이 사용하는 알고리즘 - Customizable Contraction Hierarchies (2) | 2024.02.06 |
| Contraction Hierarchies - 현실에서 쓰이는 길찾기 알고리즘 (0) | 2024.02.06 |
| A* 알고리즘이 도대체 뭔데?? (with java) (2) | 2024.01.20 |