다익스트라 알고리즘지하철 길찾기를 소개하기 전, 간단하게 내가 공부한 내용을 바탕으로 서론처럼 조금 끄적이자면... 다익스트라 알고리즘이란!! 한 꼭짓점으로부터 그래프의 다른 모든 꼭짓점까지의 최단경로를 찾는 알고리즘 출발 노드를 하나 정해놓고 그 노드로부터 다른 모든 노드들까지 최단경로를 찾는 알고리즘으로 최단 경로 트리를 만드는 것이다. 🚅 지하철 길찾기!!암튼 이 다익스트라 알고리즘을 응용한 지하철에서 최단 경로를 나타내주는 프로그램을 간단하게 제작해보았다.
변수 선언
1호선부터 서해선까지 dict형으로 정리해놓는다
너무 많아서 우선 3개만 예시로...ㅎ
이렇게 준비를 끝내놓고 search 알고리즘을 보자!! 함수 선언
정리해보면
def search ( 현재까지 지나온 경로 list, 현재 경유하고있는 역, 도착지, 현재 경유중인 노선 번호, 지금까지 걸린 시간 ): 이어서...
if 현재 들어온 시간이 해당 station의 소요 시간보다 작은 경우
종료 조건 : if 현재 경유하는 역(stops)이 도착 station(end)과 같은 경우!!
trans(환승시간) = 0 if Line == i[1] (같은 노선일 경우) else 5(다른 노선일 경우 환승시간은 5분으로 통일) 이후 재귀를 통해 다음 경로를 탐색한다. search(중복 방지를 위한 dir.copy(), 경유지('부평'or'온수'or'계양'),도착지, i[2](이동시간) + trans(환승시간) + time(기존시간) 알고리즘의 로직은 이런식으로 돌아가고 실행
✅결과!!
이렇게 나온다.
+나중에 추가 할 부분!!
유튜버 "파이썬클래스"님의 지하철 길찾기를 보면서 진행하였다. |