2017-11-16 1 views
0

경로와 방향의 관계를 만들어야합니다. 어떤 데이터 구조가 적절하고 어떻게 처리해야하는지 잘 모르겠습니다. 현재 두 개의 목록/배열이 있습니다. 하나의 배열은 경로를 포함하고 다른 배열은 방향을 포함합니다. 예를 들어 routes = [11,12,13,14,15,16,17,18,19,20] directions = [ "north", "south", "west", "east", "inbound" 배 밖으로"]. 이 노선 중 일부는 (버스 서비스와 같이) 2 방향, 1 방향 등으로 만 진행됩니다. 예를 들어, 11,12,19는 북쪽과 남쪽으로갑니다. 18,20은 인바운드 및 아웃 바운드로 이동합니다. 17은 인바운드로만 이동합니다. 14, 15 모든 방향으로갑니다.경로와 방향을 자바 스크립트 또는 파이썬 그래프 또는 트리를 사용하여 매핑 하시겠습니까?

그래서 JavaScript 또는 Python에서 이것을 구현하는 것이 더 나은 방법 일 것입니다. 나는 이것을 그래프 DS 문제로 볼 수있다. 아무도 나를 도울 수 없거나 더 나은 접근법을 알 수 있습니까

+0

경로가 서로 상관 될 필요가 없다면, 파이썬에서'dict'처럼 간단 할 것입니다. {11 : [ '북쪽', '남쪽'], 17 : [ '인바운드'], ...} 또는 '북쪽'의 역수 : [11, 12, 14, 15, 19 ], '인바운드': [17,18, ...], ...} '데이터 접근 방법에 따라 –

+0

은 접근 방식을 생각하지 않았습니다. 하지만 문제가 해결 될 거라고 생각하지만, 더 큰 규모에서는이 접근법이 느릴 수도 있습니다. –

+0

dict에서 값을 얻는 것은 이론적으로 단지'hashmap '이기 때문에'O (1)'이다. 당신이 천천히 정의한 것에 달려 있습니다. –

답변

0

dict과 같은 데이터를 파이썬으로 구조화 할 수 있습니다 (본질적으로 해시 맵). 키와 값의 쌍을 쉽게 접근 할 수 있다는 아이디어가 있습니다.

당신이 데이터에 액세스해야하는 방법에 따라 다음과 같이 그것을 구조화 수 : 키 경로 및 값입니다

{ 
    11 : ['north', 'south'], 
    17 : ['inbound'], 
    ... 
} 

방향의 목록입니다.

또는

당신은 다음과 같은 구조 할 수는 : 키가 방향과 값입니다

{ 
    'north' : [11, 12, 14, 15, 19], 
    'inbound' : [17, 18, ...], 
    ... 
} 

는 그 방향으로 이동 경로의 목록입니다.

dict에서 값을 가져 오는 것은 O (1)이고 목록에서 찾는 값은 O (n)입니다. 더 나은 속도를 얻으려면 대신 조회 속도가 O (1) 인 값으로 set을 사용할 수 있습니다.