길찾기 어플 개발자님께 드리는 문의

안녕하세요 현재 서울시립대학교 토목공학과에 재학중인 대학생입니다.
다름이 아니라 저희가 시립대 캠퍼스에 해당되는 빠른 길찾기를 만들고자 하는 데요.

캠퍼스 내에 이동할 수 있는 경우의 수가 많아서 네이버 앱에서 말해주는 길이 실제로 그런 지 확인해 보고 싶었습니다.
구상 중에,
출발지에서 도착지 까지 가는 루트가 여러가지가 있을 수 있겠는데, 이 루트를 걸어볼 때 등속으로 걸어야 하는데요, 사람이 그 모든 길을 등속으로 걸었다는 것을 어떻게 설명할 수 있을까요 ?
그리고 개발자님께서 길찾기 앱을 만드실 때 이 문제에 대해서 어떤 해결책을 가지고 만드셨는지 알고싶어서 문의드리는 바입니다.

그리고 길찾기 앱을 만들 때에 개발자님께서 직접 걸어본거는 아니실 텐데 그럼 어떠한 원리(실험방법)로 길찾기를 만드셨는지도 궁금합니다!
불쌍한 대학생 한번 만 도와주시면 감사하겠습니다 ㅎㅎㅎ ㅠ

네이버 앱…을 쓰시고 카카오에 질문을… ㅠ_ㅠ
네, 뭐 그럴 수 있죠. 이해합니다.

토목공학과에서 길찾기 어플을 만드신다니…
이 사실만으로도 놀랍네요.

일단 저는 길찾기 담당 개발자는 아닙니다.
그냥 개발하시는데 인사이트를 드릴 수 있을 것 같아서
미천한 지식이나마 공유해 드리려고 몇자 끄적여 봅니다.

같은 길이라도 그걸 통과하기 위해 걸린 소요시간은
그 길의 환경 및 길을 걷는 보행자의 신체적인 차이에 따라 다를 것이며
다양한 변수가 존재하기 마련입니다.

길찾기에서는
위에 말씀하신 것처럼

사람이 등속으로 걸었다는 것을 검증하고자 하면 답이 나오지 않습니다.
사람은 등속으로 걷는다고 가정을 하고 넘어가야 합니다.
이렇게 가정을 하고 나서야 비로소
일반적이고 예측 가능한 세계가 만들어집니다.

실제 세계는 언덕이 있을 수 있고 계단이 있을 수도 있으며
통행에 영향을 주는 다양한 지형 지물이 존재합니다.
이런 것들을 모두 직접 이동해보면서 측정하여 구하기에는 어려움이 있죠.

그래서 실제 세계를 분류, 추상화시킵니다. 그리고 도로망을 구성하게 됩니다.
보통 도로망을 구성할 경우 기본적으로 노드(Node)와 엣지(Edge)로 구분합니다.
각 노드를 지점이라고 생각하고 엣지를 그 사이의 도로라고 생각하면 이해가 빠릅니다.

노드는 도로의 특성이 달라지는 지점으로 정합니다.
세부적으로 나누면 나눌수록 소요시간 측정치는 정확해 지겠지만 그 만큼 구현은 복잡해지겠죠.
그래서 계단, 에스컬레이터, 언덕 등등 극적으로 소요시간이 변할만한 지점을 몇 군데만 노드로 지정합니다.
엣지는 몇개의 타입으로 카테고리화 시킵니다.
그리고 각 타입별로 통과하는데 걸리는 시간에 대한 가중치를 부여합니다.
이것은 세부구현에 따라 달라지긴 하지만 예를 들면
평지면 1,
언덕이면 2,
계단이면 3 과 같이 시간 가중치를 주는것이죠.
그리고 그 엣지의 길이와 가중치를 고려해 그 길의 최종 가중치를 얻습니다.
이 최종 가중치가 등속으로 걷는 사람이 빠른 길을 찾으려 할때의 판별 요소가 될 겁니다.

이렇게 구성된 노드 와 엣지를
컴퓨터 알고리즘에서는 그래프라고 하는데
이 그래프로 최단거리 길찾기를 할 수 있습니다.
유명한 알고리즘들이 있습니다. 다익스트라, 밸만포드 등등
알고리즘을 적용시켜주면 최단 거리를 찾아주게 됩니다.

이 후에는 이런 노드와 엣지 정보들만을 얻어서
실제 가보지 않은 길도 대략적으로 추산이 가능합니다…

쓰고나니 도움이 될 내용인지 모르겠네요. -_-;

6개의 좋아요