KR20200115151A - 도보 투어 생성 시스템 및 방법 - Google Patents

도보 투어 생성 시스템 및 방법 Download PDF

Info

Publication number
KR20200115151A
KR20200115151A KR1020200031034A KR20200031034A KR20200115151A KR 20200115151 A KR20200115151 A KR 20200115151A KR 1020200031034 A KR1020200031034 A KR 1020200031034A KR 20200031034 A KR20200031034 A KR 20200031034A KR 20200115151 A KR20200115151 A KR 20200115151A
Authority
KR
South Korea
Prior art keywords
arcs
tour
processors
scores
computer
Prior art date
Application number
KR1020200031034A
Other languages
English (en)
Inventor
미쉘 소피아
클랭샹 스테판
르그라 크리스토프
윌라모스키 주타
Original Assignee
네이버 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 네이버 주식회사 filed Critical 네이버 주식회사
Publication of KR20200115151A publication Critical patent/KR20200115151A/ko

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3407Route searching; Route guidance specially adapted for specific applications
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3446Details of route searching algorithms, e.g. Dijkstra, A*, arc-flags, using precalculated routes
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3407Route searching; Route guidance specially adapted for specific applications
    • G01C21/343Calculating itineraries, i.e. routes leading from a starting point to a series of categorical destinations using a global route restraint, round trips, touristic trips
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3407Route searching; Route guidance specially adapted for specific applications
    • G01C21/3415Dynamic re-routing, e.g. recalculating the route when the user deviates from calculated route or after detecting real-time traffic data or accidents
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3453Special cost functions, i.e. other than distance or default speed limit of road segments
    • G01C21/3461Preferred or disfavoured areas, e.g. dangerous zones, toll or emission zones, intersections, manoeuvre types, segments such as motorways, toll roads, ferries
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3453Special cost functions, i.e. other than distance or default speed limit of road segments
    • G01C21/3476Special cost functions, i.e. other than distance or default speed limit of road segments using point of interest [POI] information, e.g. a route passing visible POIs
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3453Special cost functions, i.e. other than distance or default speed limit of road segments
    • G01C21/3484Personalized, e.g. from learned user behaviour or user-defined profiles
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3667Display of a road map
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • G06Q10/047Optimisation of routes or paths, e.g. travelling salesman problem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/14Travel agencies
    • GPHYSICS
    • G08SIGNALLING
    • G08GTRAFFIC CONTROL SYSTEMS
    • G08G1/00Traffic control systems for road vehicles
    • G08G1/005Traffic control systems for road vehicles including pedestrian guidance indicator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/024Guidance services

Landscapes

  • Engineering & Computer Science (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Game Theory and Decision Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Development Economics (AREA)
  • Primary Health Care (AREA)
  • Social Psychology (AREA)
  • Navigation (AREA)
  • Instructional Devices (AREA)

Abstract

도보 투어를 생성하는 방법은: 네트워크를 통해 사용자 디바이스로부터 질의(query)를 수신하는 단계 - 질의는 도보 투어에 대한 요청을 나타내고, 위치 및 도보 투어에 대한 목표 길이를 포함하는 선호도들을 포함함 -; 사용자 디바이스의 위치 주변의 지리적 영역의 그래프를 획득하는 단계 - 그래프는 경로 교차점들을 나타내는 노드들 및 노드들의 쌍들을 연결하는 경로들을 나타내는 아크들을 포함함 -; 아크들 각각의 특성들 및 선호도들에 기초하여 아크들에 대한 스코어들을 결정하는 단계; 아크들 중 연결 아크들을 선택하는 단계 - 아크들 중 연결 아크들을 선택하는 것은 아크들 중 연결 아크들의 스코어들, 아크들 중 선택된 연결 아크들의 길이들 및 목표 길이에 기초함 -; 도보 투어의 초기 설정을 위해 아크들 중 선택된 연결 아크들을 도보 투어에 추가하는 단계; 및 디스플레이를 위해 도보 투어를 네트워크를 통해 사용자 디바이스로 송신하는 단계를 포함한다.

Description

도보 투어 생성 시스템 및 방법{SYSTEM AND METHOD FOR GENERATING PEDESTRIAN TOURS}
관련 출원에 대한 상호 참조
본 출원은 2019년 3월 29일자로 출원된 유럽 출원 번호 EP19305425.1의 우선권을 주장한다. 참조된 출원의 전체 개시 내용은 참조로서 본원에 포함된다.
기술 분야
본 개시 내용은 도보 투어를 위한 루트들을 결정하고 제공하기 위한 시스템들 및 방법들에 관한 것으로서, 보다 구체적으로는, 동일한 위치에서 시작하고 종료되며, 고도를 고려할 수 있고, 길이를 동적으로 조절 가능하고, 사용자가 투어를 따라가는 방식에 유연성을 허용할 수 있는 쾌적한 순환형 투어(closed tour)를 결정하고 제공하기 위한 시스템들 및 방법들에 관한 것이다.
본 명세서에 제공되는 발명의 배경이 되는 기술의 설명은 본 개시 내용의 맥락을 일반적으로 제시하기 위한 것이다. 본 발명의 배경이 되는 기술 항목에 기술된 범위 내에서, 본 발명가들의 연구뿐만 아니라, 출원 당시 달리 종래기술로서 한정되지 않을 수 있는 발명을 실시하기 위한 구체적인 내용의 양태들은 본 개시 내용에 대한 선행 기술로서 명시적으로도 또는 암시적으로도 인정되지 않는다.
순환형 투어 생성은 수익과 관련된 루트 설정 문제로 볼 수 있다. 루트 설정 문제의 한 예시는 차량이 다수의 고객들에게 서비스를 제공해야 하는 경우이다. 수익과 연관된 루트 설정 문제들의 분류에서, 서비스를 제공할 고객들은 각각 수익과 연관된 잠재 고객들의 세트로부터 선택되어야 한다. 고객들을 그래프의 노드들로 볼 수 있는 경우, 문제는 노드 루트 설정 문제로 요약될 수 있으며, 고객들이 아크(arc)들 상에 있으면, 그것은 아크 루트 설정 문제가 된다.
주어진 위치로부터 가장 쾌적한 순환형 투어를 결정하는 것은 각각의 도로 세그먼트의 매력을 나타내는 스코어들을 정의하고, 최대 스코어의 순환형 투어를 계산하기 위해 최적화 알고리즘을 적용하는 것에 기초할 수 있다. 스코어들은 오픈 스트리트 맵(Open Street Map, OSM) 데이터에 기초하여 계산될 수 있고, 환경을 평가하기 위해 다각형의 교차 지점들의 계산과 같은 복잡한 계산 방법들에 의존할 수 있다. 스코어는 외부 제약식 프로그래밍 솔버(OscaR)를 사용하여 최적화될 수 있다. 그러나, 이는 상당한 계산 리소스들이 필요할 수 있으며 비효율적일 수 있다.
순환형 투어를 생성하는 다른 방법은 특정 기하학적 형태에 대응하는 순환형 투어를 생성하기 위해 중간 웨이포인트(waypoint)들을 선택함으로써 주어진 목표 거리를 준수하는(respect) 것을 수반한다. 그러나, 목표 거리를 충족하는 것은, 순환형 투어를 생성하는데 사용된 스코어들에 투어 품질 기준들을 포함시키는 것을 수반하지 않는다.
투어에 대한 사용자 경험은 그 프로파일이 무엇이든지 투어의 고도 프로파일에 따라 크게 변동될 수 있다. 예를 들어, 전형적인 여행자 프로파일은 투어의 난이도를 최소화하는 것, 즉, 기울기(또는 경사도(steepness)) 및/또는 전체 고도 이득을 최소화하는 것을 선호할 수 있다. 그러나, 달리기 주자들은 그들의 능력을 향상시키기 위해 훈련하기를 원할 수 있으며, 도전적인 레벨의 고도 이득을 갖는 투어를 선호할 수 있으며, 최소 기울기(또는 경사도)를 오르거나 전반적인 고도 이득을 갖는 투어를 선호할 수 있다.
일 특징에서, 방법은, 예를 들어, 공원, 강 및/또는 풍경이 있는 영역들을 통해 여행하고, 밀집된 교통 및 그에 수반되는 오염이 있는 영역들은 회피하는, 쾌적하고, 전망이 좋고/좋거나 흥미로운 도로들 및/또는 경로들을 갖는 투어(즉, 여행 또는 여정)를 결정한다. 방법은 주요 도로들 및 고속도로들에 패널티를 부여함으로써 투어를 결정하는 단계를 포함한다.
추가의 특징들에서, 방법은 상당한 계산 리소스들에 대한 필요성을 최소화하기 위해 효율적으로 동작한다.
추가의 특징들에서, 방법은, 투어의 길이, 투어를 따라 보게 될 관심 지역들 또는 풍경들, 경로의 선호되는 유형(예를 들어, 도보(pedestrian) 또는 주거(residential)), 공원들과의 근접성 및 투어의 고도 프로파일(기울기(또는 경사도) 및/또는 전체 고도 이득)과 같은 투어에 대한 사용자의 선호도(즉, 사용자 선호도들)을 고려한다.
추가의 특징들에서, 방법은, 프로세서에 의해, 동일한 장소에서 시작하여 그 장소로 복귀하는 투어를 생성하는 단계를 포함하며, 투어는 사용자 선호도들에 따라 개인화되고, 이는 특정된 길이를 포함하고, 교차점들 및 교차점들 사이의 도로들의 세트가 포함된 지리적 맵이 그래프로 배열되게 포함하고, 교차점들은 노드들로 표현되고, 교차점들 사이의 도로들은 아크들로 표현되며, 데이터 프로세서는 하기와 같이 그래프를 사용하여 투어를 계산한다: 사용자 선호도들에 따라 그래프의 아크들을 스코어링(scoring)하고; 하나 이상의 경로 세그먼트들을 추가함으로써 투어를 초기화(initializing)하고; 투어의 경로 세그먼트들의 일부를, 사용자의 선호도들을 증진시키는 경로 세그먼트를 나타내는 경로 세그먼트 스코어를 갖는 경로 세그먼트들로 대체함으로써(예를 들어, 주어진 마진 내에서 특정된 길이에 도달함으로써), 투어를 최적화하고; 투어를 사용자 인터페이스 상의 디스플레이를 위해 출력함.
추가의 특징들에서, 방법은 직관적이며, 더 나은 투어들의 생성을 허용하고, 제1 순환형 투어들에 대한 개선점들을 제공한다.
추가의 특징들에서, 방법은 아크들의 근방에 대해 다각형과 같은 복잡한 표현의 사용을 피한다.
추가의 특징들에서, 방법은 상당한 컴퓨팅 리소스들을 필요로 하지 않고 사용자에게 의미 있는 순환형 투어를 제공한다.
추가의 특징들에서, 방법은 시작점을 떠나는 제1 아크 및 최단 경로 세그먼트를 갖는 시작점에 들어가는 제2 아크의 링크들을 초기화하는 단계, 및 현재 노드를 투어의 시작점으로 초기화 및 설정하는 단계를 포함한다. 최적화하는 것은 투어의 총 길이가 특정된 길이 및 허용가능한 마진에 의해 결정된 주어진 임계값보다 낮은 동안, 하기의 단계들을 반복적으로 수행하는 것을 더 포함한다: 주어진 파라미터들의 세트를 갖는 연속 확률 분포로부터 투어에 추가할 다음 아크상에서 이동할 랜덤 거리(d)를 도출하는 단계; 현재 노드로부터 주어진 거리 내의 그래프 내의 노드들의 세트를 계산하는 단계; 이전 단계에서 계산된 노드들의 세트가 비어 있는 경우, 단계 a)로 돌아가 궁극적으로 파라미터들의 세트를 수정하거나, 달리 하기의 단계들을 계속해서 수행하는 단계; 노드들의 세트의 각각의 노드(p)에 대해, 하기의 단계들을 반복적으로 수행하는 단계: 최단 경로 세그먼트와 같은, 현재 노드로부터 노드(p)까지 계산된 경로 세그먼트의 스코어를 계산하는 단계; 투어의 총 길이가 경로 세그먼트의 특정된 길이를 초과하지 않도록 노드(p)로부터 투어의 시작점까지 되돌아가는 경로 세그먼트가 존재하는 것을 검증하는 단계; 계산된 경로 세그먼트의 스코어를 계산하는 단계; 후보 노드들의 연관된 계산된 경로의 스코어에 따라 그들의 리스트를 정렬하는 단계; 및 최고 스코어를 갖는 경로 세그먼트와 연관된 노드를 선택하거나, 최적의 k개의 경로들 중 하나를 임의로 선택하는 단계를 포함하며, k는 본 방법의 파라미터이다.
추가의 특징들에서, 방법은, 투어 내의 우회(detour)들을 피하는 것을 목표로 하는 후처리 단계; 주어진 인수(factor)에 의해, 경로 세그먼트의 시작 노드로부터 경로 세그먼트의 종료 노드까지의 최단 경로 세그먼트보다 더 긴 투어의 경로 세그먼트들을 발견함으로써 비-적합 우회들의 리스트를 생성하는 단계; 비-적합 우회들의 리스트를 주어진 임계값보다 낮은 스코어를 갖는 투어의 경로 세그먼트들로 제한하는 단계; 및/또는 비-적합 우회들의 리스트 내의 경로 세그먼트들을 연관된 최단 경로 세그먼트들로 대체하는 단계를 더 포함한다.
추가의 특징들에서, 방법은 초기 루트를 투어의 아크들의 서브셋으로 정의하는 단계 및 주어진 반복 횟수에 대해, 하기의 단계들을 수행하는 단계를 포함한다: 루트 내의 연속적인 아크들(AB와 EF)의 각각의 쌍에 대해 - A, B, E 및 F는 그래프의 노드들임 -, 하기의 단계들을 반복적으로 수행하는 단계: 모든 실현가능한 투어를 열거하는 단계 - B에서 E로의 이전에 선택된 경로 세그먼트가 다음을 포함하는 시퀀스로 대체됨: 새로운 아크(CD); B에서 C까지의 최단 경로 세그먼트; D에서 E까지의 최단 경로 세그먼트 -; B에서 E까지의 새로운 경로 세그먼트 각각에 대해 하기의 단계들을 반복적으로 수행하는 단계: 각각의 새로운 투어의 스코어를 평가하는 단계; 새로운 투어들의 리스트를 그들의 스코어에 의해 정렬하는 단계; 최고 스코어를 갖는 새로운 투어를 선택하거나, 최적의 k개의 투어들 중 하나를 임의로 선택하는 단계 - k는 주어진 정수임 -; 및 현재 투어의 여러 아크들을 선택하여 루트를 업데이트하는 단계를 포함한다.
추가의 특징들에서, 방법은 순환형 투어 내의 우회들을 피하는 것을 목표로 하는 후처리 단계, 주어진 인수에 의해, 경로 세그먼트의 시작 노드로부터 경로 세그먼트의 종료 노드까지의 최단 경로 세그먼트보다 더 긴 투어의 경로 세그먼트들을 발견함으로써 비-적합 우회들의 리스트를 생성하는 단계, 비-적합 우회들의 리스트를 주어진 임계값보다 낮은 스코어를 갖는 투어의 경로 세그먼트들로 제한하는 단계, 및/또는 비-적합 우회들의 리스트의 경로 세그먼트들을 연관된 최단 경로 세그먼트들로 대체하는 단계를 포함할 수 있다.
추가의 특징들에서, 사용자의 선호도들의 세트는 고도 선호도들을 포함한다.
추가의 특징들에서, 고도 선호도들은 희망 고도 이득 인터벌 - 고도 이득은 투어의 아크들 사이의 모든 양(positive)의 고도의 합계임 -; 및/또는 희망 최대 경사도를 포함한다.
추가의 특징들에서, 그래프의 아크들의 길이는: 아크의 길이; 사용자의 희망 최대 경사도보다 더 높은 경사도를 갖는 아크에 페널티를 부여하기 위한 페널티 항목을 포함하는 가중치 항목으로 대체될 수 있다.
추가의 특징들에서, 방법은 제1 목표는 희망 고도 이득을 달성하는 것이고, 제2 목표는 고도 이득을 제약 조건으로 유지하면서 스코어를 최대화하는 계층적 최적화 방법을 포함할 수 있다.
추가의 특징들에서, 제1 투어를 구성하기 전에, 방법은 시작점으로부터의 고도 이득이 주어진 마진 내에서 희망 고도 이득인 중간점을 선택하는 단계를 포함할 수 있다.
추가의 특징들에서, 컴퓨터 프로그램 제품은 방법을 실행하기 위한 코드 명령어들, 및 방법을 실행하기 위한 코드 명령어들을 포함하는 컴퓨터 프로그램 제품이 저장된 컴퓨터 판독가능 매체를 포함한다.
일 특징에서, 컴퓨터 프로그램 도보 투어를 생성하는 컴퓨터 실행가능 방법은: 하나 이상의 프로세서들에 의해, 네트워크를 통해 사용자 디바이스로부터 질의(query)를 수신하는 단계 - 질의는 도보 투어에 대한 요청을 나타내고, (a) 위치 및 (b) 도보 투어에 대한 목표 길이를 포함하는 선호도들을 포함함 -; 하나 이상의 프로세서들에 의해, 사용자 디바이스의 위치 주변의 지리적 영역의 그래프를 획득하는 단계 - 그래프는 경로 교차점들을 나타내는 노드들 및 노드들의 쌍들을 연결하는 경로들을 나타내는 아크(arc)들을 포함함 -; 하나 이상의 프로세서들에 의해, 아크들 각각의 특성들(예를 들어, 길이, 경사도, 고도 등) 및 선호도들에 기초하여 아크들에 대한 스코어들을 결정하는 단계; 하나 이상의 프로세서들에 의해, 아크들 중 연결 아크들을 선택하는 단계 - 아크들 중 연결 아크들을 선택하는 것은 아크들 중 연결 아크들의 스코어들, 아크들 중 선택된 연결 아크들의 길이들 및 목표 길이에 기초함 -; 하나 이상의 프로세서들에 의해, 도보 투어의 초기 설정(initialize)을 위해 아크들 중 선택된 연결 아크들을 도보 투어에 추가하는 단계; 및 하나 이상의 프로세서들에 의해, 사용자 인터페이스 상의 디스플레이를 위해 도보 투어를 네트워크를 통해 사용자 디바이스로 송신하는 단계를 포함하는, 컴퓨터 실행가능 방법.
추가의 특징들에서, 아크들 중 연결 아크들을 선택하는 단계는, 하나 이상의 프로세서들에 의해, 도보 투어가 어느 한 위치에서 시작하고 어느 한 위치에서 끝나도록 아크들 중 연결 아크들을 선택하는 단계를 포함한다.
추가의 특징들에서, 아크들에 대한 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 아크들 중, 오픈 스트리트 맵(Open Street Map, OSM) 데이터베이스에서 식별된 보행 경로(foot path)들, 주거 경로(residential path)들 및 도보 경로(pedestrian path)들 중 적어도 하나에 대응하는 아크들의 스코어들을 증가시키는 단계를 포함한다.
추가의 특징들에서, 아크들에 대한 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 아크들 중, 선호도들에 포함된 사용자 정의 경로 유형과 동일한 경로 유형을 갖는 아크들의 스코어들을 증가시키는 단계를 포함한다.
추가의 특징들에서, 아크들에 대한 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 아크들 중, 선호도들에 포함된 사용자 정의 경로 유형과 상이한 경로 유형들을 갖는 아크들의 스코어들을 감소시키는 단계를 포함한다.
아크들에 대한 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 아크들 중, 오픈 스트리트 맵(OSM) 데이터베이스에서 식별된 공원들, 개방 공간들(open spaces), 경관이 좋은 관심 지역들(scenic points of interest) 및 지리적 형태들 중 적어도 하나와 미리 결정된 거리 내에 위치하는 아크들의 스코어들을 증가시키는 단계를 포함한다.
추가의 특징들에서, 아크들에 대한 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 아크들 중, 오픈 스트리트 맵(OSM) 데이터베이스에서 식별된 강들, 산들 및 하이킹 등산로들 중 적어도 하나와 미리 결정된 거리 내에 위치하는 아크들의 스코어들을 증가시키는 단계를 포함한다.
추가의 특징들에서, 아크들에 대한 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 아크들 중, 오픈 스트리트 맵(OSM) 데이터베이스에서 식별된 차량 도로들과 미리 결정된 거리 내에 위치하는 아크들의 스코어들을 감소시키는 단계를 포함한다.
추가의 특징들에서, 아크들에 대한 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 아크들 중, 오픈 스트리트 맵(OSM) 데이터베이스에서 식별된 관심 지점을 통과하는 아크들의 스코어들을 증가시키는 단계를 포함한다.
추가의 특징들에서, 아크들에 대한 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 아크들 중 두 개의 아크들 사이의 교차각에 기초하여 두 개의 아크들의 스코어들을 선택적으로 감소시키는 단계를 포함한다.
추가의 특징들에서, 아크들에 대한 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 투어가 아크들 중 하나의 아크를 2회 이상 포함하는 것에 기초하여 하나의 아크의 스코어를 감소시키는 단계를 포함한다.
추가의 특징들에서, 아크들에 대한 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 투어가 두 개의 노드들 중 하나를 2회 이상 통과하는 것에 기초하여 두 개의 노드들 사이의 아크들 중 하나의 아크의 스코어를 감소시키는 단계를 포함한다.
추가의 특징들에서, 아크들 중 연결 아크들을 선택하는 단계는, 하나 이상의 프로세서들에 의해: (a) 제1 위치에서 시작하여 제1 위치와 상이한 제N 위치에서 종료되는 제1 아크를 선택하는 단계; (b) 제N 위치와 거리 d 내에 있는 노드들을 식별하는 단계; (c) 제N 위치에서 시작하여 노드들에서 종료되는 아크들을 각각 식별하는 단계; (d) 식별된 아크들의 스코어들에 기초하여 식별된 아크들 중 하나의 아크를 선택하는 단계 - 아크들 중의 선택된 연결 아크들을 추가하는 단계는, 식별된 아크들 중 하나의 선택된 아크를 도보 투어에 추가하는 단계를 포함함 -; 및 (e) 도보 투어의 길이가 선호도들에 포함된 목표 길이의 미리 결정된 범위 내에 들어갈 때까지 (b) 내지 (d)를 반복하는 단계를 포함한다.
추가의 특징들에서, 하나 이상의 프로세서들에 의해, 거리 d를 임의로 선택하는 단계를 포함한다.
추가의 특징들에서, 하나 이상의 프로세서들에 의해, 제N 위치와 거리 d 내에 0개의 노드들이 위치할 때, 거리 d를 증가시키는 단계를 포함한다.
추가의 특징들에서, (d) 식별된 아크들 중 하나의 아크를 선택하는 단계는, 하나 이상의 프로세서들에 의해: 식별된 아크들 중, k 개의 가장 높은 스코어들을 갖는 k개의 아크들을 식별하는 단계 - 여기서 k는 1보다 큰 정수임 -; 및 식별된 아크들 중 k개의 아크들로부터 식별된 아크들 중 하나의 아크를 임의로 선택하는 단계를 포함한다.
추가의 특징들에서, (d) 식별된 아크들 중 하나의 아크를 선택하는 단계는, 하나 이상의 프로세서들에 의해, 식별된 아크들 중, 가장 높은 스코어를 갖는 하나의 아크를 선택하는 단계를 포함한다.
추가의 특징들에서, 도보 투어를 네트워크를 통해 사용자 디바이스로 송신하는 단계 이전에, 하나 이상의 프로세서들에 의해: 아크들 중 선택된 연결 아크들 중 하나의 아크를 선택하는 단계; 아크들 중 선택된 연결 아크들 중 하나의 아크를 대체하기 위한 하나 이상의 대체 아크들을 식별하는 단계; 및 도보 투어 내에서 아크들 중 선택된 연결 아크들 중 하나의 아크를 하나 이상의 대체 아크들로 대체하는 단계를 포함한다.
추가의 특징들에서, 하나 이상의 대체 아크들을 식별하는 단계는, 하나 이상의 대체 아크들의 스코어들에 기초하여 하나 이상의 대체 아크들을 식별하는 단계를 포함한다.
추가의 특징들에서, 도보 투어를 네트워크를 통해 사용자 디바이스로 송신하는 단계 이전에, 하나 이상의 프로세서들에 의해: 제1 노드와 제2 노드 사이의 경로 세그먼트를 선택하는 단계 - 경로 세그먼트는 아크들 중 선택된 연결 아크들 중 하나 이상의 아크들을 포함함 -; 및 (a)와 (b)의 비교에 기초하여, 경로 세그먼트를 제1 노드와 제2 노드 사이의 최단 경로 세그먼트로 선택적으로 대체하는 단계를 포함하며, (a)는 최단 경로 세그먼트의 제1 스코어를 최단 경로 세그먼트의 제1 길이로 나눈 값이고, (b)는 경로 세그먼트의 제2 스코어를 경로 세그먼트의 제2 길이로 나눈 값인, 컴퓨터 실행가능 방법.
추가의 특징들에서, 경로 세그먼트를 제1 노드와 제2 노드 사이의 최단 경로 세그먼트로 선택적으로 대체하는 단계는, 경로 세그먼트의 제2 길이가 최단 경로 세그먼트의 제1 길이의 2배보다 길고, 경로 세그먼트의 제2 스코어가 제1 미리 결정된 값 * (경로 세그먼트의 아크들 중 선택된 연결 아크들 중 하나 이상의 아크들의 스코어들의 제1 합) * (경로 세그먼트의 아크들 중 선택된 연결 아크들 중 하나 이상의 아크들의 수)보다 적고, (a)가 제2 미리 결정된 값과 (b)를 곱한 것 보다 더 큰 경우, 경로 세그먼트를 제1 노드와 제2 노드 사이의 최단 경로 세그먼트로 대체하는 단계를 포함한다.
추가의 특징들에서, 선호도들은 목표 고도 이득을 더 포함하고; 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 아크들의 고도 이득들 및 목표 고도 이득에 기초하여 아크들에 대한 스코어들을 결정하는 단계를 포함한다.
추가의 특징들에서, 선호도들은 최대 경사도(steepness)를 더 포함하고, 스코어들을 결정하는 단계는, 하나 이상의 프로세서들에 의해, 아크들의 경사도들 및 최대 경사도에 기초하여 아크들에 대한 스코어들을 결정하는 단계를 포함한다.
추가의 특징들에서, 도보 투어를 네트워크를 통해 사용자 디바이스로 송신한 후: 하나 이상의 프로세서들에 의해, 네트워크를 통해 도보 투어의 목표 길이를 조정하기 위한 요청을 사용자 디바이스로부터 수신하는 단계; 요청의 수신에 응답하여, 조정된 목표 길이에 기초하여: 아크들 중 선택된 연결 아크들 중 적어도 하나의 아크를 선택하는 단계; 아크들 중 선택된 연결 아크들 중 적어도 하나의 아크를 대체하기 위한 하나 이상의 대체 아크들을 식별하는 단계; 아크들 중 선택된 연결 아크들 중 적어도 하나의 아크를 하나 이상의 대체 아크들로 대체하여, 업데이트된 도보 투어를 생성하는 단계; 및 사용자 인터페이스 상의 디스플레이를 위해 업데이트된 도보 투어를 네트워크를 통해 사용자 디바이스로 송신하는 단계를 더 포함한다.
추가의 특징들에서, 요청을 수신하는 단계는, 사용자 디바이스가 도보 투어의 적어도 일부를 따라간 후에 요청을 수신하는 단계를 포함한다.
추가의 특징들에서, 요청은 목표 길이의 증가 및 감소 중 하나에 대한 요청을 포함한다.
추가의 특징들에서, 아크들 중 연결 아크들을 선택하는 단계는, 이전에 따라간 도보 투어들에 관한 사용자 데이터 없이 아크들 중 연결 아크들을 선택하는 단계를 포함한다.
추가의 특징들에서, 하나 이상의 프로세서들에 의해, 아크들 중 선택된 연결 아크들 중 하나를 대체하기 위한 적어도 하나의 대안적인 아크를 결정하는 단계; 및 사용자 인터페이스 상의 도보 투어의 디스플레이를 위해 적어도 하나의 대안적인 아크를 사용자 디바이스에 송신하는 단계를 더 포함한다.
추가의 특징들에서, 적어도 하나의 대안적인 아크를 결정하는 단계는, 도보 투어의 시작 전에 적어도 하나의 대안적인 아크를 결정하는 단계를 포함한다.
추가의 특징들에서, 적어도 하나의 대안적인 아크를 결정하는 단계는, 도보 투어의 횡단 동안, 수신된 도보 투어의 목표 길이를 조정하라는 요청을 나타내는 사용자 입력의 수신에 응답하여 적어도 하나의 대안적인 아크를 결정하는 단계를 포함한다.
추가의 특징들에서, 사용자 디바이스가 적어도 하나의 대안적인 아크에 진입하는 것; 및 사용자 디바이스가 적어도 하나의 대안적인 아크를 빠져나가는 것 중 적어도 하나에 응답하여, 사용자 디바이스에 의해, 시각, 청각 또는 햅틱 출력 중 하나의 부재 또는 존재를 이용하여 시그널링하는 단계를 더 포함한다.
추가의 특징들에서, 하나 이상의 프로세서들에 의해, 도보 투어를 따라 사용자 디바이스의 사용자를 안내하기 위해 감각 식별가능(sensory discernable) 출력 디바이스를 사용하여 내비게이션 관련 감각 식별가능 피드백을 제공하는 단계를 더 포함한다.
일 특징에서, 도보 투어를 생성하기 위한 시스템은 하나 이상의 프로세서들; 및 코드를 포함하는 메모리를 포함하며, 코드는, 하나 이상의 프로세서들에 의해 실행될 때: 네트워크를 통해 사용자 디바이스로부터 질의를 수신하는 것 - 질의는 도보 투어에 대한 요청을 나타내고, (a) 위치 및 (b) 도보 투어에 대한 목표 길이를 포함하는 선호도들을 포함함 -; 사용자 디바이스의 위치 주변의 지리적 영역의 그래프를 획득하는 것 - 그래프는 경로 교차점들을 나타내는 노드들 및 노드들의 쌍들을 연결하는 경로들을 나타내는 아크들을 포함함 -; 아크들 각각의 특성들 및 선호도들에 기초하여 아크들에 대한 스코어들을 결정하는 것; 아크들 중 연결 아크들을 선택하는 것 - 아크들 중 연결 아크들을 선택하는 것은 아크들 중 연결 아크들의 스코어들, 아크들 중 선택된 연결 아크들의 길이들 및 목표 길이에 기초함 -; 도보 투어의 초기 설정을 위해 아크들 중 선택된 연결 아크들을 도보 투어에 추가하는 것; 및 사용자 인터페이스 상의 디스플레이를 위해 도보 투어를 네트워크를 통해 사용자 디바이스로 송신하는 것을 포함하는 기능들을 수행한다.
일 특징에서, 도보 투어를 생성하기 위한 시스템은 네트워크를 통해 사용자 디바이스로부터 질의를 수신하기 위한 수단(예를 들어, 수신기) - 질의는 도보 투어에 대한 요청을 나타내고, (a) 위치 및 (b) 도보 투어에 대한 목표 길이를 포함하는 선호도들을 포함함 -; 사용자 디바이스의 위치 주변의 지리적 영역의 그래프를 획득하고 - 그래프는 경로 교차점들을 나타내는 노드들 및 노드들의 쌍들을 연결하는 경로들을 나타내는 아크들을 포함함 -; 아크들 각각의 특성들 및 선호도들에 기초하여 아크들에 대한 스코어들을 결정하고; 아크들 중 연결 아크들을 선택하고 - 아크들 중 연결 아크들을 선택하는 것은 아크들 중 연결 아크들의 스코어들, 아크들 중 선택된 연결 아크들의 길이들 및 목표 길이에 기초함 -; 도보 투어의 초기 설정을 위해 아크들 중 선택된 연결 아크들을 도보 투어에 추가하기 위한 수단(예를 들어, 하나 이상의 프로세서들 및 코드); 및 사용자 인터페이스 상의 디스플레이를 위해 도보 투어를 네트워크를 통해 사용자 디바이스로 송신하기 위한 수단(예를 들어, 전송기)을 포함한다.
본 개시의 추가의 적용 분야들은 발명을 실시하기 위한 구체적인 내용, 청구 범위 및 도면으로부터 명백해질 것이다. 발명을 실시하기 위한 구체적인 내용 및 특정 예들은 단지 예시를 위한 것이며, 본 개시의 범위를 제한하려는 것이 아니다.
본 개시는 발명을 실시하기 위한 구체적인 내용 및 하기의 첨부 도면들로부터 보다 완전히 이해될 것이다.
도 1a는 예시적인 도보 투어 시스템의 기능 블록도이다.
도 1b는 도보 투어들을 생성하는 방법이 수행되는 시스템 아키텍처의 예시이다.
도 2는 도보 투어를 생성하는 예시적인 방법을 도시한 흐름도이다.
도 3은 도 2의 예시에 기초하여 생성된 10 km 순환형 도보 투어의 예이다.
도 4는 도보 투어를 생성하는 예시적인 방법을 도시한 흐름도이다.
도 5은 도 4의 예시에 기초하여 생성된 7 km 순환형 도보 투어의 예시이다.
도 6은 예시적인 후처리 방법을 도시한 흐름도이다.
도 7은 아크의 경사도에 기초하여 페널티를 결정하는 예시적인 방법을 도시한 흐름도이다.
도 8은 동일한 선호도들에 기초하되, 상이한 투어 생성 기준들로 생성된 두 개의 순환형 도보 투어의 예시이다.
도 9는 중간점을 사용하여 생성된 순환형 도보 투어의 예시이다.
도 10은 스코어에 따라 세그먼트화된 도보 투어의 예시이다.
도 11 내지 도 14는 도시(도심 지역) 내의 최초 투어의 세그먼트들 내로 대안 경로들이 삽입되어 생성된 도보 투어들의 예시적인 그래프들을 포함한다.
도 15 내지 도 18은 주거 지역 내의 최초 투어의 세그먼트들 내로 대안 경로들이 삽입되어 생성된 투어들의 예시적인 그래프들을 포함한다.
도 19는 예시적인 최초 투어 및 대안 경로들을 포함하는 그래프를 포함한다.
도 20은 이미 완성된 섹션 및 아직 완성되지 않은 섹션을 포함하는 예시적인 초기 투어의 예시이다.
도 21은 사용자 입력의 수신에 응답하여 도 20의 예시의 초기 투어의 아직 완성되지 않은 섹션의 나머지에 대해 생성된 새로운 경로이다.
도 22는 이미 완성된 섹션 및 아직 완성되지 않은 섹션을 갖는 초기 투어의 예시이다.
도 23은 사용자 입력의 수신에 응답하여 도 22의 예시의 초기 투어의 아직 완성되지 않은 섹션의 나머지에 대해 생성된 새로운 경로이다.
도 24는 이미 완성된 섹션 및 아직 완성되지 않은 섹션을 갖는 초기 투어의 예시이다.
도 25는 도 24의 예시적인 투어의 길이를 감소시키기 위한 사용자 입력의 수신에 응답하여 생성된 새로운 경로이다.
도 26은 이미 완성된 섹션 및 아직 완성되지 않은 섹션을 갖는 초기 투어의 예시이다.
도 27은 도 26의 예시적인 투어의 길이를 감소시키기 위한 사용자 입력의 수신에 응답하여 생성된 새로운 경로이다.
도 28은 투어를 업데이트하는 예시적인 방법을 도시한 흐름도이다.
도면들에서, 유사하고/하거나 동일한 요소들을 식별하기 위해 참조 번호들이 재사용될 수 있다.
시스템 아키텍처
도 1a는 도보 투어들에 대한 루트들에 관한 질의들에 응답하도록 구성된 투어 생성 시스템(10)을 포함하는 기능 블록도를 포함한다. 투어 생성 시스템(10)은 네트워크(16)를 통해 하나 이상의 사용자 컴퓨팅 디바이스(들)(14)로부터 도보 투어들에 대한 질의들을 수신하도록 구성된다.
투어 생성 시스템(10)은 질의들에 기초하여 도보 투어들을 위한 루트들을 각각 결정한다. 투어 생성 시스템(10)은 도보 투어들에 대한 루트들에 관한 응답들을, 질의들을 송신한 사용자 디바이스들(14)로 각각 다시 송신한다.
사용자 디바이스들(14)은 도보 투어들에 대한 루트들을 사용자 디바이스들(14)의 디스플레이들 상에 각각 디스플레이한다. 사용자 디바이스들(14)은 사용자들이 사용자 디바이스들(14)을 가지고 루트들을 횡단하는 동안 루트들을 따라가기 위한 명령어들도 (청각적으로 및/또는 가시적으로) 출력할 수 있다. 예를 들어, 사용자 디바이스들(14)은, 사용자가 사용자 디바이스들(14)을 가지고 루트들을 횡단하는 동안, 예를 들어, 그 전체 개시 내용이 본 명세서에 참조로 포함되는 제목 “System and Method for Communicating Possible Travel paths Through Head Scanning and Sound Modulation”의 미국 특허 출원 번호 제16/592,943호에 개시된 장치 및 방법들을 사용하여 언제/어디서 방향을 바꿔야 하는지, 어느 쪽으로 방향을 바꿔야 하는지 등에 관한 명령어들을 출력할 수 있다. 사용자 디바이스들(14)은 다른 정보를 사용자들에게 디스플레이할 수도 있다. 예를 들어, 사용자 디바이스들(14)은 루트들을 따른 관심 지역(point of interest, POI)들 각각에 관한 추가 정보 및 루트들과 관련된 정보 등을 각각 디스플레이할 수 있다. 투어 생성 시스템(10) 및 사용자 디바이스들(14)은 네트워크(16)를 통해 통신한다.
복수의 상이한 유형들의 사용자 디바이스들(14)이 도 1a에 도시되어 있다. 개별 사용자 컴퓨팅 디바이스는 본 명세서에서 사용자 디바이스(14)로 지칭될 수도 있다. 사용자 디바이스들(14)은 도보 투어들에 대한 질의들을 생성하고 네트워크(16)를 통해 투어 생성 시스템(10)에 송신하도록 구성된 임의의 유형의 컴퓨팅 디바이스들을 포함한다. 사용자 디바이스들(14)의 예들은 도 1a에 도시된 바와 같이, 스마트(셀룰러) 폰들, 개인용 미디어 디바이스들(예를 들어, 아이팟들), 태블릿 컴퓨터들 및 랩톱 컴퓨터들을 포함하지만, 이에 한정되지는 않는다. 사용자 디바이스들(14)은 모바일 게임 디바이스들, 모바일 텔레비전들, 콘솔들, 내비게이션 디바이스들, 웨어러블 디바이스들(예를 들어, 스마트 워치들, 증강 현실 안경, 가상 현실 안경) 등과 같은 다른 폼 팩터들을 갖는 다른 컴퓨팅 디바이스들도 포함할 수 있다.
사용자 디바이스들(14)은 다양한 상이한 운영 체제들을 사용할 수 있다. 사용자 디바이스(14)가 모바일 디바이스인 예시에서, 사용자 디바이스(14)는 안드로이드, 애플 인크.(Apple Inc.)에 의해 개발된 iOS, 또는 마이크로소프트 코포레이션(Microsoft Corporation)에 의해 개발된 윈도우 폰을 포함하는 운영 체제를 실행할 수 있으며, 이에 한정되지 않는다. 사용자 디바이스(14)가 랩톱 또는 데스크톱 디바이스인 예시에서, 사용자 디바이스(14)는 마이크로소프트 윈도우, Mac OS 또는 리눅스를 포함하는 운영 체제를 실행할 수 있으며, 이에 한정되지 않는다. 사용자 디바이스들(14)은 현재 이용가능한 것이거나 미래에 개발될 것에 관계없이, 전술한 운영 체제들 이외의 운영 체제들을 실행하면서 투어 생성 시스템(10)에 액세스할 수도 있다.
일부 예시들에서, 사용자 디바이스(14)는 사용자 디바이스(14) 상에 설치된 애플리케이션을 사용하여 투어 생성 시스템(10)과 통신할 수 있다. 일반적으로, 사용자 디바이스(14)는 투어 생성 시스템(10)으로부터 응답을 받을 수 있도록 질의들을 투어 생성 시스템(10)에 송신할 수 있는 임의의 애플리케이션을 사용하여 투어 생성 시스템(10)과 통신할 수 있다. 일부 예시들에서, 사용자 디바이스(14)는 도보 투어 생성 전용 애플리케이션과 같은, 투어 생성 시스템(10)과 인터페이싱하는데 전용인 애플리케이션을 실행할 수 있다. 일부 예시들에서, 사용자 디바이스(14)는 웹 브라우저 애플리케이션과 같은 보다 일반적인 애플리케이션을 사용하여 투어 생성 시스템(10)과 통신할 수 있다. 투어 생성 시스템(10)과 통신하기 위해 사용자 디바이스(14)에 의해 실행되는 애플리케이션은 그래픽 사용자 인터페이스(GUI) 상에 사용자가 질문들을 입력할 수 있는 검색 필드를 디스플레이할 수 있다. 사용자는 터치 스크린 또는 물리적 키보드, 음성-텍스트 프로그램 또는 다른 형태의 사용자 입력을 사용하여 질문을 입력할 수 있다.
사용자 디바이스(14) 상의 GUI에 입력된 질의는 단어들, 숫자들, 문자들, 문장 부호들 및/또는 기호들을 포함할 수 있다. 일반적으로, 질의는 투어 생성 시스템(10)으로부터 도보 투어에 대한 루트에 대한 요청일 수 있으며, 여기서 도보 투어의 시작점과 종료점은 동일하다. 도보 투어의 시작점 및 종료점은, 예를 들어, 사용자 디바이스(14)의 (예를 들어, 사용자 디바이스(14)의 글로벌 포지셔닝 시스템으로부터의) 현재 위치일 수 있다. 사용자 디바이스(14)의 현재 위치는 사용자 선호도들, 투어 길이, 고도 변화 및 다른 정보와 같은 다른 정보와 함께 질의에 포함될 수 있다.
사용자 디바이스(14)는 투어 생성 시스템(10)으로 송신된 질의에 응답하는 투어 생성 시스템(10)으로부터의 응답을 수신할 수 있다. 다양한 구현들에서, 투어 생성 시스템(10)은 하나 초과의 상이한 가능한 루트를 송신할 수 있고, 사용자 디바이스(14)는 그것들을 수신할 수 있다. 다수의 루트들을 제공하는 투어 생성 시스템(10)의 예시에서, 사용자는 사용자 디바이스(14)를 통해 루트들 중 하나를 따라갈 루트로 선택할 수 있다.
사용자 디바이스(14)는 투어 생성 시스템(10)으로부터의 루트를 디스플레이하는 GUI를 포함하는 애플리케이션을 실행하고 있을 수 있다. 전술된 바와 같이, 도보 투어를 위한 루트를 사용자에게 제시하는 애플리케이션은 일부 예시들에서 투어 생성 시스템(10)과 인터페이싱하기 위한 전용 애플리케이션일 수 있다. 다른 예시들에서, 애플리케이션은 웹 브라우저 애플리케이션과 같은 보다 일반적인 애플리케이션일 수 있다.
일부 예시들에서, 투어 생성 시스템(10) 또는 다른 컴퓨팅 시스템은, 제한하는 것은 아니나, 도보 투어의 루트를 따른 관심 지역들 및/또는 도보 투어의 루트와 연관된 다른 정보와 같은 추가 정보를 사용자 디바이스(14)에 송신할 수 있다. 일부 예시들에서, 이 추가 정보는 데이터 저장소에 저장될 수 있고, 투어 생성 시스템(10)에 의해 사용자 디바이스(14)로 송신될 수 있다. 사용자 디바이스(14)가 추가 정보를 수신하는 예시들에서, GUI는 루트와 함께 추가 정보를 디스플레이할 수 있다.
일부 예시들에서, 사용자 디바이스들(14)은 파트너 컴퓨팅 시스템을 통해 투어 생성 시스템(10)과 통신할 수 있다. 파트너 컴퓨팅 시스템은 투어 생성 시스템(10)의 기능을 레버리지(leverage)할 수 있는 제3자 컴퓨팅 시스템을 포함할 수 있다. 파트너 컴퓨팅 시스템은 투어 생성 시스템(10)을 동작시키는 회사 또는 그 외의 조직에 속할 수 있다. 투어 생성 시스템(10)의 기능을 레버리지할 수 있는 예시적인 제3자들은 인터넷 검색 제공자들 및 무선 통신 서비스 제공자들을 포함할 수 있지만, 이에 제한되지는 않는다. 사용자 디바이스들(14)은 파트너 컴퓨팅 시스템을 통해 투어 생성 시스템(10)에 질의들을 전송할 수 있다. 사용자 디바이스들(14)은 또한 파트너 컴퓨팅 시스템을 통해 투어 생성 시스템(10)으로부터 응답들을 수신할 수 있다. 파트너 컴퓨팅 시스템은, 일부 예시들에서, 사용자 디바이스들(14)에 사용자 인터페이스를 제공하고/하거나 사용자 디바이스들(14)에 상에 제공된 사용자 경험을 수정할 수 있다.
투어 생성 시스템(10)은 데이터 소스(20)로부터 도보 투어들에 대한 루트를 생성하기 위한 매핑 정보를 획득할 수 있다. 데이터 소스(20)들은 하나 이상의 맵핑 정보 제공자들을 포함할 수 있다.
사용자 디바이스들(14), 투어 생성 시스템(10) 및 데이터 소스(20)들은 네트워크(16)를 통해 서로 통신할 수 있다. 네트워크(16)는 광역 네트워크(WAN) 및/또는 인터넷과 같은 다양한 유형들의 네트워크들을 포함할 수 있다. 네트워크(16)는 장거리 네트워크(예를 들어, 인터넷 또는 WAN)를 나타낼 수 있지만, 일부 구현들에서, 네트워크(16)는 근거리 통신망(LAN)과 같은 근거리 네트워크를 포함할 수 있다. 일 실시예에서, 네트워크(16)는 표준 통신 기술들 및/또는 프로토콜들을 사용한다. 따라서, 네트워크(16)는 이더넷, WiFi(Wireless Fidelity)(예를 들어, 802.11), WIMAX(Worldwide Interoperability for Microwave Access), 3G, 4G, 5G, LTE(Long Term Evolution), DSL(Digital Subscriber Line), ATM(Asynchronous Transfer Mode), InfiniBand, PCI Express Advanced Switching 등과 같은 기술들을 사용하는 링크들을 포함할 수 있다. 유사하게, 네트워크(16) 상에서 사용되는 네트워킹 프로토콜들은 MPLS(MultiProtocol Label Switching), TCP/IP(Transmission Control Protocol/Internet Protocol), UDP(User Datagram Protocol), HTTP(HyperText Transport Protocol), SMTP(Simple Mail Transfer Protocol), FTP(File Transfer Protocol) 등을 포함할 수 있다. 네트워크(16)를 통해 교환되는 데이터는 HTML(HyperText Markup Language), XML(eXtensible Markup Language) 등을 포함하는 기술들 및/또는 포맷들을 사용하여 표현될 수 있다. 또한, 모든 링크들 또는 일부 링크들이 SSL(Secure Sockets Layer), TLS(Transport Layer Security), VPN(Virtual Private Networks), IPsec(Internet Protocol Security) 등과 같은 종래의 암호화 기술들을 사용하여 암호화될 수 있다. 다른 예시들에서, 네트워크(16)는 전술한 것들 대신에, 또는 그에 부가하여 맞춤형 및/또는 전용 데이터 통신 기술들을 사용할 수 있다.
본 명세서에 제시된 투어 생성 방법은 도 1b에 도시 것과 같은 시스템 아키텍처 내에서 구현될 수 있으며, 시스템은 네트워크(16)를 통해 통신하는 두 개의 서버들(55, 60) 및 사용자 디바이스(14)를 포함한다. 두 개의 서버들(55, 60)은 투어 생성 시스템(10)의 일부일 수 있다. 각각의 서버들(55, 60) 및 사용자 디바이스(14)는 데이터 프로세서(각각, 61a, 61c, 61b) 및 하드 디스크와 같은 메모리(각각, 72a, 72c, 72b)를 포함한다.
서버(55)는 맵 서버일 수 있으며, 예를 들어, 오픈 스트리트 맵(OSM)과 같은 API(Application Programming Interface)에 의해 액세스가능한 외부 서비스일 수 있다.
서버(60)는 고도 데이터 서버일 수 있으며, 예를 들어, 프랑스 국립 지리 및 임업 정보 연구소(IGN; French National Institute of Geographic and Forestry Information)로부터의 BD ALTI®와 같은 API에 의해 액세스가능한 외부 서비스일 수 있다.
사용자 디바이스(14)는 그 사용자 인터페이스(예를 들어, 디스플레이 및/또는 스피커) 상에, 사용자(80)에게 순환형 도보 투어를 제시하는데 사용된다. 순환형 도보 투어들은 동일한 위치에서 시작하고 종료하는 도보 투어들을 지칭할 수 있다.
일 실시예에서, 본 명세서에 제시된 투어 생성 방법은 서버(55), 서버(60) 및/또는 사용자 디바이스(14) 상에서 동작한다. 대안적으로, 투어 생성 방법은 서버(55), 서버(60) 및/또는 사용자 디바이스(14)와 통신하는 독립 서버 상에서 동작할 수 있다.
다른 실시예에서, 서버들(55, 60)은 병합될 수 있다. 또 다른 실시예에서, 두 개의 서버들(55, 60) 중 하나 또는 둘 모두의 기능은 독립형(standalone) 사용자 디바이스(14)에 병합될 수 있다.
맵 표현 및 용어
맵은 투어 생성 방법에 의해, 도보 경로(도로, 등산로(trail), 보도, 경로 등) 교차점들(즉, 교차 지점들)이 노드들로 표현되는 그래프(예를 들어, 방향성 그래프(directed graph))로서 표현된다. 두 개의 교차점들 사이의 모든 경로는 에지 또는 연관된 방향을 갖는 아크(지향된 에지)에 의해 표현된다. 지향된 에지들은 두 개의 노드들 사이에 연관된 방향을 갖는 에지들이다. 에지는, 각각의 방향마다 하나씩, 두 개의 지향된 아크들로 대체될 수 있고, 또한, 각각의 아크의 방향에 대한 지식이 요구되지 않는 한, 두 개의 아크들은 에지로 대체될 수 있다.
경로들은 양방향으로 간주될 수 있다. 따라서, 에지는 경로상의 보행자의 방향을 고려하기 위해 반대 방향의 두 개의 아크들로 대체될 수 있다.
경로 세그먼트는 연속적인 에지들 또는 아크들의 리스트이다. 경로 세그먼트는 하나 이상의 에지들 또는 아크들을 포함할 수 있다. 루트는 원점 노드에서 시작하여 종점 노드에서 끝나는 에지들 또는 아크들(반드시 인접할 필요는 없음)의 순서화된 리스트이다. 연결 경로(linking path)는 루트의 두 개의 아크들을 연결하는 경로 세그먼트이다. 주어진 루트와 연관된 투어는 루트로부터 취해진 아크들 및 그 사이의 연결 경로들을 포함하는 (예를 들어, 순환) 경로이다.
맵의 표현을 그래프(예를 들어, 방향성 그래프)로 사용하여, 투어 생성 방법은 두 가지 NP-하드 조합 문제(NP-hard combinatorial problem)들을 해결함으로써 쾌적한 순환형 도보 투어들을 생성한다: (1) 예산 제약 내에서 (사용자 선호도들에 따라) 가장 높은 가치를 사용자에게 가져다 주는 경로 세그먼트들을 맵 상에서 선택하는 것이 목표인 제1(배낭채우기(knapsack)) 문제; 및 (2) 그러한 경로 세그먼트들을 방문하는 최단 루트를 찾는 것이 목표인 제2(여행하는 외판원(traveling salesman)) 문제.
투어 생성
주어진 경로에 대한 스코어 함수
투어 생성 방법은 하기의 정보를 수신한다: 도보 투어가 시작되고 종료될 위치; 및 지역 - 지역의 맵 형태 내에 도보 투어가 위치됨 -. 다양한 구현들에서, 위치는 투어 요청이 수신된 사용자 디바이스(14)의 위치일 수 있다.
투어 생성 방법에 의해 선택된 주어진 경로 세그먼트들에 대해, 투어 생성 방법은 표준 OSM 데이터를 사용하여 경로 세그먼트 스코어들을 결정하는 단계, 및 스코어들을 경로 세그먼트들에 각각 할당하는 단계를 포함한다. 경로 세그먼트들에 할당된 경로 세그먼트 스코어들은, 예를 들어, 서버(55)의 데이터 프로세서(61a, 61b) 및/또는 사용자 디바이스(14)에 의해 결정될 수 있다. 경로 세그먼트들에 할당된 경로 세그먼트 스코어들은 경로 세그먼트들이 각각 투어에 가져다주는 가치를 나타낸다. 경로 세그먼트의 스코어는 투어에 대한 경로 세그먼트의 가치가 증가함에 따라 증가할 수 있으며 그 반대도 마찬가지이다. 주어진 경로 세그먼트에 대해, 투어 생성 방법은 보상 및 페널티 항목들을 통해 경로 세그먼트 스코어들을 결정하는 단계를 포함한다.
예를 들어, 스코어링 가중치(weight(e))는 주어진 경로 세그먼트의 각각의 지향된 에지 e(즉, 아크 e)에 대해, 그 지향된 에지에 대해 결정된 보상들 및 페널티들을 합산함으로써 결정될 수 있다. 예를 들어, 주어진 지향된 에지 e에 대한 투어 생성 방법 결정은 하기와 같을 수 있다:
1. OSM 유형의 경로를 사용한다.
투어 생성 방법은 OSM 데이터 내의 각각의 지향된 에지를 하기의 카테고리들, 즉 "도보(pedestrian)", "도보_트랙(foot_track)" 또는 "주거(residential)" 중의 하나와 같은 경로 정보의 유형과 연관시킨다.
투어 생성 방법은 사용자의 선호되는 유형의 경로에 대응하는 OSM 데이터로부터 추출된 지향된 에지들에 보상을 할당한다. 투어 생성 방법은 지향된 에지들이 희망하지 않는(사용자가 선호하지 않는) 유형의 경로에 속한 경우 보상(그리고 페널티)을 할당하지 않는다. 예를 들어, 투어 생성 방법은 주요(차량) 도로보다 보행자 도로에 더 높은 스코어를 할당할 수 있다.
2. 공원들 및 토지 용도 정보를 사용한다.
투어 생성 방법은 공원들, 개방 공간들, 과거의 경관이 좋은 풍경들(past scenic vistas) 및 기타 지리적 형태들(예를 들어, 강들, 산들 등) 내에 또는 근처에 위치한 OSM 데이터로부터 추출된 지향된 에지들에 보상을 할당한다. 예를 들어, 투어 생성 방법은 강을 따른 지향된 에지들 및 하이킹 등산로에 속하는 지향된 에지들에 보상을 할당할 수 있다.
3. 주요 도로 정보를 사용한다.
투어 생성 방법은 차량 도로들에 대응하는 OSM 데이터로부터 추출된 지향된 에지들에 페널티를 할당한다. 투어 생성 방법은 또한 차량 도로들 옆의 지향된 에지들에 페널티를 할당할 수 있다. 가능한 차량 혼잡, 소음 및/또는 오염으로 인해 차량 도로들 옆으로 지향된 에지들에 페널티들이 할당될 수 있으며, 이는 전체 도보 투어에 대한 상기 지향된 에지의 가치를 감소시킬 것이다.
4. 관광 관심 지역들을 사용한다.
투어 생성 방법은 관광 관심 지역들을 따라 또는 그 근처에 위치된 OSM 데이터로부터 추출된 지향된 에지들에 보상을 할당한다. 관광 관심 지역들의 예들로는 예술 작품들(OSM 데이터에서: “Tourism=artwork”), 종교적 건축물들(OSM 데이터에서: “amenity = place of_worship”) 및 아키텍처 명소들(OSM 데이터에서: “historic=*”), 및 도시들 내의 집결 장소들(예를 들어, 광장들)을 포함한다.
연속적인 지향된 에지들의 각각의 쌍에 대해, 투어 생성 방법은 또한 추가 페널티 항목을 계산하고 경로 세그먼트 스코어에 추가한다. 추가 페널티 항목은 turn(eiei+1)으로 표시될 수 있고, 급커브를 갖는 투어들에 페널티를 부여하도록, 두 개의 연속하는 지향된 에지들에 대응하는 맵 상의 두 개의 경로들 사이의 실제 각도의 함수로서 계산될 수 있다. 따라서 추가 페널티 항목은 도보 투어가 복잡한 기하학적 형상들을 갖는 것을 방지할 수 있다. 예를 들어, 미리 결정된 각도(예를 들어, 90도)보다 더 큰 교차각을 갖는 두 개의 경로들에 페널티가 부여될 수 있다. 미리 결정된 각도보다 작은 교차각을 갖는 두 개의 경로들에는 페널티가 부여되지 않을 수 있다.
또한, 투어 생성 방법은 경로 세그먼트에 대한 두 개의 페널티 항목들을 계산할 수 있다. 이들 두 개의 페널티 항목들은 지향된 에지들에 대해 evpenalty(e) 로 표시될 수 있고, 노드들에 대해 nvpenalty(n)로 표시될 수 있다. 투어 생성 방법은 도보 투어를 걷는 보행자에 의해 주어진 지향된 에지 또는 주어진 노드가 횡단되는 횟수의 함수로서 두 개의 페널티 항목을 결정할 수 있다. 따라서, 이들 두 가지 페널티 항목들은 도보 투어 중에 도보 투어가 동일한 경로 세그먼트 및/또는 노드를 두 번 이상 횡단하는 것을 방지하도록 돕는다.
투어 생성 방법은 하기의 식을 사용하여 지향된 에지들 ei로 구성된 주어진 경로 세그먼트 p(예를 들어, 루트)의 경로 세그먼트 스코어를 결정할 수 있다:
Figure pat00001
여기서, 스코어는 경로 세그먼트 p의 스코어이며, μ 및 γ는 도보 투어에 대한 사용자 선호도들에 맞게 적응된 곱셈 인수들이다. 다양한 구현들에서, 위에서 제시된 예들 대신에 또는 그에 부가하여 다른 보상들 및 페널티들이 추가로 고려될 수 있다. 예를 들어, 투어 생성 방법은 사용자 선호도들에 대한 루트(또는 루프)의 형상 및/또는 투어의 기하학적 단순성에 기초하여 보상 또는 페널티를 결정하고 추가할 수 있다. 추가적으로 또는 대안적으로, 투어 생성 방법은 복수의 연속적인 양호한 지향된 에지들을 포함하는 시퀀스들을 갖는 루트에 기초하여 보상을 결정하고 추가할 수 있다. 이 예시에서, 양호한 지향된 에지들은 미리 결정된 값(임계값)보다 큰 가중치들을 갖는 지향된 에지들을 포함할 수 있다.
제1 방법(그리디 접근법(Greedy approach))
예시로서 전술한 경로 세그먼트 스코어의 계산을 사용하여, 제1 루프 경로가 하기와 같이 생성될 수 있다.
도 2는 순환형 도보 투어들을 생성하는 (제1) 예시적인 방법을 도시한 흐름도를 포함한다. 도 2에 예시된 알고리즘은 쾌적한 순환형 도보 투어를 생성하는 방법이다. 방법은 하나 이상의 프로세서들(61a 내지 61c)과 같은 하나 이상의 프로세서들에 의해 수행될 수 있다. 방법은 목표 시작 위치에서 시작하여 목표 거리(사용자 선호도들에 의해 정의됨)가 도달될 때까지 투어에 새로운 지향된 에지들을 반복적으로 추가한다.
101에서, 사용자 디바이스(14)의 데이터 프로세서(61b)는 서버(55)와 통신하여 도보 투어가 시작되고 종료될 목표 시작 위치 주변 영역의 주어진 맵에 대한 OSM 맵 데이터를 획득한다. 데이터 프로세서(61b)는 또한, 입력으로서, 사용자의 선호도들(즉, 사용자 선호도들)을 나타내는 변수들의 세트를 검색한다.
사용자 선호도들은, 예를 들어, 순환형 투어의 목표 거리(distMax), 및 다른 파라미터들, 예컨대, 사용자의 선호 유형의 경로들, 순환형 투어를 따라 볼 수 있는 희망 관심 지역들 또는 위치들(예를 들어, 풍경들), 공원들 및 풍경들에 대한 희망 근접성을 나타내는 희망 경로 유형(예를 들어, 도보형 또는 거주형)을 포함한다. 사용자 선호도들은 또한 순환형 도보 투어의 목표 고도 프로파일을 포함할 수 있다. 목표 고도 프로파일은 예를 들어, 순환형 도보 투어에 대한 기울기(또는 경사도) 및/또는 전체 고도 이득을 포함할 수 있다.
사용자 선호도들은 사용자(80)가 사용자 선호도들을 입력하기 위해 상호작용하는 사용자 디바이스(14)의 사용자 인터페이스를 통해 실시간으로 획득될 수 있다. 추가적으로 또는 대안적으로, 사용자 선호도들은 사용자 디바이스(14)의 메모리(72b)로부터 데이터 프로세서(61b)에 의해 검색될 수 있다.
102에서, 순환형 투어에 대한 현재 노드는 목표 시작 위치(pstart)에 대응하는 값으로 초기화되고, 투어는 싱글톤(singleton) {pstart}으로 초기화되고, 투어의 길이 current_cost는 0으로 초기화된다.
103에서, 투어의 길이(current_cost)가 목표 길이보다 작은지 여부를 판정한다. 투어의 길이가 미리 결정된 양만큼 목표 길이보다 더 작거나 더 크게 되도록 미리 결정된 값이 목표 길이에 또한 적용될 수도 있다. 다양한 구현들에서, 미리 결정된 값은 투어의 길이가 목표 길이의 +/- 10%가 되게 하도록 1.1일 수 있다. 103이 거짓이면, 투어는 완성되고 제어는 105로 이동한다. 103이 참이면, 하기의 단계들이 반복된다:
- 104에서, 거리(d)(예를 들어, 임의의 거리)는 파라미터들(θ)의 세트를 갖는 확률 분포(P(d|θ))로부터 도출된다.
- 106에서, 현재 노드로부터 대략적으로 거리(d) 내에 있는(예를 들어, d±200m) 모든 노드를 포함하는 교차점들의 세트(C)가 생성된다.
- 107에서, 교차점들의 세트(C)가 비어 있는지 여부를 판정한다. 107이 참이면, 108에서, 방법은 분포의 파라미터들(θ)을 변경하는 단계 및 새로운 거리(d)를 도출하도록 104로 되돌아가는 단계를 포함한다. 107이 거짓이면, 방법은 109로 계속된다.
- 109에서, 방법은 세트(C)의 각각의 교차점(pi로 표기됨)에 대해 반복하는 단계 및 하기의 테스트를 수행하는 단계를 포함한다:
110에서, 경로 세그먼트의 마지막 노드로부터 교차점(pi)까지의 최단 경로 세그먼트가 현재 투어에 추가되면, 투어의 총 길이와 pi에서 pstart까지의 최단 경로 세그먼트의 길이의 합이 투어의 목표 길이(distMax) 이하인지 검증한다. 그렇지 않은 경우, 교차점들의 세트(C)로부터 pi를 제거한다.
- 111에서, 방법은 pstart로부터 세트(C)의 각각의 pi까지의 연관된 경로 세그먼트의 스코어에 따라 교차점들의 세트(C)를 정렬하는 단계를 포함한다.
- 112에서, 방법은 세트(C)의 최적 교차점 또는 이전 정렬에 따른 세트(C)의 k개의 최적 도로 교차점들로부터 (예를 들어, 임의로) 선택되고 루트에 추가된 교차점을 선택하는 단계를 포함하며, 현재 노드로부터 선택된 노드로의 최단 경로 세그먼트는 현재 투어에 추가되고, 이 경로 세그먼트의 길이는 투어의 길이(current_cost)에 추가되고, 현재 노드는 이 선택된 노드로 업데이트된다. 이어서, 제어는 103으로 되돌아가서 반복한다.
- 105에서, 방법은 완성된 순환형 도보 투어를 출력하는 단계를 포함한다. 예를 들어, 완성된 투어는 사용자 디바이스(14)의 사용자 인터페이스 상에 디스플레이될 수 있다. 순환형 투어가 원격으로 생성되는 경우, 순환형 투어는 또한 사용자 디바이스(14)로 통신된다.
도 3은 도 2의 방법에 의해 생성된 예시적인 10 킬로미터(km) 순환형 투어의 예시적인 맵을 포함한다. 이러한 맵은 사용자 디바이스(14)의 디스플레이 상에 디스플레이될 수 있다. 사용자 디바이스(14)의 현재 위치는 또한 사용자 디바이스(14) 상에 동시에 디스플레이될 수 있다. 사용자 디바이스(14)는 또한 사용자 디바이스(14)가 투어를 횡단함에 따라 투어를 따라갈 방향들을 제공할 수 있다. 도 2의 방법(100)은 하기의 의사코드(pseudocode)를 사용하여 설명될 수 있다.
GreedySP (100):
사용자의 선호도들과 맵을 나타내는 그래프 G = (V, A)를 입력으로 취함
(101)
current_node <- starting_point (102)
while current_cost < 1.1*distMax: (103)
1) P(d|θ) (예를 들어, 감마 분포로부터)로부터 d를 도출 (104)
2) distance(current_node,p) = d ±200m가 되도록 노드들(p)의 세트에 대한 가중된 최단 경로 세그먼트들을 계산 (106)
3) 노드들의 세트가 비어 있으면, θ를 업데이트하여 평균 거리를 줄이고 거리(d)를 재도출한다 (107, 108)
4) 노드들(p)의 각각에 대해: (109)
i) 최단 경로 세그먼트의 스코어를 계산: score(path(p))
ii) p로 갈 경우, total distanceMax를 초과하지 않고 시작점으로 돌아갈 수 있는지 확인 (110)
iii) 거리 및/또는 각도들에 기초하여, p로 가는 경로 세그먼트와 이미 완성된 경로 세그먼트 사이의 소정 페널티 또는 거리를 계산 (111)
5) Criteria(p) <- score(path(p)) + α penalty(path(p))
6) 정렬하고, 가능하게는 리스트의 최상위를 무작위화하고, 하나의 노드(p')를 선택
7) current_node <- p' (112)
8) current_cost += cost(path(p)) (112)
final score(path(p))를 계산,
결과 경로 세그먼트들을 후처리하여 쓸모 없는 지향된 에지들을 제거하고 더 최적화함. (105)
제2 방법(동적 아크 오리엔티어링(orienteering))
이하에서, SP(A, B)는 그래프 내에서 노드(A)로부터 노드(B)까지의 최단 경로 세그먼트를 나타낸다. 도 4는 순환형 도보 투어들을 생성하는 예시적인(제2) 방법을 도시한 흐름도를 포함한다. 방법은 하나 이상의 프로세서들(61a 내지 61c)과 같은 하나 이상의 프로세서들에 의해 수행될 수 있다.
방법(200)은, 예를 들어, 전술된 도 2의 예시에 따라 초기 순환형 투어가 획득되는 201에서 시작한다.
하나 이상의 프로세서들은 투어를 최적화하기 위해 이용가능한 프로세싱 시간(202)에 따라 주어진 반복 횟수(현재 반복이 i로 표시됨)에 대해 반복되는 하기의 단계들을 수행한다:
- 203에서 투어 내의 연속 아크들(지향된 에지들)(AB, EF)의 각각의 쌍에 대해 반복한다:
204에서, B로부터 E로의 연결 경로를 {SP(B, C), CD, SP(D, E)}로 대체하기 위해, 투어에 대한 새로운 아크(지향된 에지)(CD)의 가능한 모든 삽입을 열거함으로써 실현가능한 새로운 투어들의 리스트를 생성(단계 204);
- 205에서, 열거된 실현가능한 새로운 투어들 중에서, 그들의 스코어들에 따라 최적 투어를 선택하거나 최적의 개의 k 투어들 중의 하나를 (예를 들어, 임의로) 선택하고;
- 206에서, 현재 반복에 따라, 투어로부터 아크들(지향된 에지들)의 주어진 수(N(i))의 서브셋을 선택함으로써 새로운 루트(사용자 선호도들을 증진시키는 스코어를 가짐)를 정의하고, 이는 알고리즘의 다음 반복에 대해 고정될 것이다.
- 방법은 207에서, 완성된 순환형 도보 투어를 출력하는 단계를 포함한다. 예를 들어, 완성된 투어는 사용자 디바이스(14)의 사용자 인터페이스 상에 디스플레이될 수 있다. 순환형 투어가 원격으로 생성되는 경우, 순환형 투어는 또한 사용자 디바이스(14)로 통신된다.
도 5는 도 4의 방법에 의해 생성된 예시적인 7 km 순환형 투어의 예시적인 맵을 포함한다. 이러한 맵은 사용자 디바이스(14)의 디스플레이 상에 디스플레이될 수 있다. 사용자 디바이스(14)의 현재 위치는 또한 사용자 디바이스(14) 상에 동시에 디스플레이될 수 있다. 사용자 디바이스(14)는 또한 사용자 디바이스(14)가 투어를 횡단함에 따라 투어를 따라갈 방향들을 제공할 수 있다. 도 4의 방법(200)은 하기의 의사코드를 사용하여 설명될 수 있다.
동적 아크 오리엔티어링(200):
초기 실현가능한 경로 세그먼트를 입력으로 취함 (201)
각각의 반복 i에 대해: (202)
- 루트 내의 연속적인(그러나, 반드시 인접할 필요는 없는) 아크들(AB 및 EF)의 각각의 쌍에 대해: (203)
B로부터 E로의 연결 경로를 시퀀스 SP(B, C), CD, SP(D, E)에 의해 정의된 경로 세그먼트로 대체하여 새로운 아크(CD)를 루트에 삽입할 수 있는 가능성을 탐색 (204)
- 실현가능한 새로운 투어들(즉, 어떤 노드도 두 번 이상 방문되지 않고 총 거리가 Dmax보다 작은 투어들) 중에서, 최고 스코어를 갖는 k개 투어들 중의 하나를 임의로 선택 (205)
- 최고 스코어를 갖거나, 현재 투어로부터 임의로 샘플링된 N(i) 개의 아크들을 선택하여 루트를 업데이트 (206)
- 최대 반복 횟수에 도달하거나 더 이상 삽입이 가능하지 않은 경우 중지하고 현재 투어를 반환 (207)
반복(I)에서 고정된 투어의 아크들 또는 에지들의 수를 나타내는 함수 N(i) 및/또는 아크들을 선택하는 방식을 정의하기 위해 다른 전략들이 사용될 수 있다. 투어가 매우 양호했지만 최단 경로 세그먼트들의 일부인 아크들을 포함한 경우, 이들은 향후 삽입들에 의해 폐기될 수 있다. 방법은 이전에 방문한 아크들 중 가장 좋은 아크들을 유지한 상태에서 확장들이 완성되도록 루트 아크들을 동적으로 고정할 수 있다. 그러나, 최적의 아크들을 선택하는 것은 지역 최소값(local minimum)으로 이어질 수 있다. 이것이 발생하는 것을 방지하기 위해, 방법은 각각의 반복마다 아크들을 임의로 선택하여, 생성된 투어를 향상시킬 수 있다.
후처리
도 6은 도 2의 예시 또는 도 4의 예시로부터 생성되는 투어와 같은 완성된 투어에 대해 수행될 수 있는 후처리의 예시적인 방법(300)을 도시하는 흐름도를 포함한다. 방법(300)은 하나 이상의 프로세서들(61a 내지 61c)과 같은 하나 이상의 프로세서들에 의해 수행될 수 있다.
301에서, 방법은 전술된 바와 같이 생성된 순환형 투어를 입력 데이터로서 수신한다. 투어의 형상을 개선하기 위해, 하기의 단계들이 투어에서 수행된다:
- 302에서, 방법은 하기의 절차를 적용하여 투어의 노드(A)로부터 노드(B)까지의 각각의 경로 세그먼트에 대해 반복한다.
303에서, 투어에서 A로부터 B까지의 경로 세그먼트들과 A로부터 B까지의 최단 경로 세그먼트를 비교한다. 경로 세그먼트가 최단 경로 세그먼트보다 훨씬 긴 경우, 그 경로 세그먼트를 우회로 고려하고, 경로 세그먼트에 대한 스코어가 좋은 경우에만, 그 경로 세그먼트를 관심대상으로 고려한다. 이 경우, 경로 세그먼트의 스코어/길이 비율은 도 6에 도시된 바와 같이, 최단 경로 세그먼트 및 그것의 최대 스코어와 비교된다;
이전의 비교들에 따라, 경로 세그먼트가 우회로 보이는 경우, 304에서, A로부터 B까지의 경로 세그먼트를 A와 B 사이의 최단 경로 세그먼트로 대체한다. 예를 들어, 304는, 경로 세그먼트의 길이가 최단 경로 세그먼트의 길이의 2배보다 더 길고, 경로 세그먼트의 스코어가 미리 결정된 값(예를 들어, 0.5) * 경로 세그먼트의 모든 아크들의 (누적) 스코어 * 경로 세그먼트의 아크들 수보다 작고, 최단 경로 세그먼트의 스코어를 최단 경로 세그먼트의 길이(비용)로 나눈 값이 제2 미리 결정된 값(예를 들어, 0.3) * 경로 세그먼트의 (누적) 스코어를 경로 세그먼트의 길이(비용)로 나눈 값보다 더 큰 경우, A로부터 B까지의 경로 세그먼트를 A와 B 사이의 최단 경로 세그먼트로 대체할 수 있다.
- 각각의 경로 세그먼트가 평가되면, 투어는 완성되고, 이 절차의 끝에서 획득된 완성된 투어는 305에서 사용자에게 출력된다. 예를 들어, 완성된 투어는 사용자 디바이스(14)의 사용자 인터페이스 상에 디스플레이될 수 있다. 순환형 투어가 원격으로 생성되는 경우, 순환형 투어는 또한 사용자 디바이스(14)로 통신된다.
303 및 304는 하기의 논리 테스트로 공식화할 수 있다.
만약 (length(SEG) > 2 * length(SP))이고
(score(SEG) < 0.5 * (max_score(SEG) * nb_arcs(SEG)))이고
(sp_score/sp_cost >= 0.3 * seg_score/seg_cost)인 경우,
SEG를 SP로 대체함
후처리는 오직 목표 거리를 달성하기 위해 일부 아티팩트들과 우회들과 같은 인공 우회들을 제거할 수 있다. 이는 투어의 다른 부분에 재투자될 수 있는 비용(거리)을 절약하여 투어의 전체 가치를 높이게 된다. 한 가지 옵션은 좋은 스코어들을 갖는 투어(예를 들어, 세그먼트들)를 그리디하게(greedily) 확장하는 것이다. 예를 들어, 전술된 그리디 접근법을 적용함으로써, 한 가지 옵션은 단축 루트에 대해 동적 아크 오리엔티어링 접근법을 재실행하여 루트를 확장하고 스코어를 최대화하는 것이다.
다양한 구현들에서, 하나 이상의 프로세서들은 복수의 해결들(투어들)을 병렬로 생성할 수 있다. 다수의 투어들 중에서 하나 이상의 투어들이 사용자 디바이스(14)를 통해 사용자에게 제시될 수 있다. 그러나, 제안된 경로 세그먼트들의 세트의 다양성을 증진시키기 위해 대안적인 후처리가 수행될 수 있다. 예를 들어, 최대 한계 관련성(Maximum Marginal Relevance) 기술들이 사용될 수 있다. 다양한 구현들에서, 하나 이상의 프로세서들은 최고 스코어들을 갖는 순환형 투어들 중에서 최적의 기하학적 형태 또는 형상을 갖는 투어를 선택할 수 있다. 예를 들어, 하나 이상의 프로세서들은 순환형 투어들에 의해 한정된 표면들을 비교함으로써 가장 큰 다각형들을 형성하는 순환형 투어들을 선택하거나, 교차 지점들의 수를 비교함으로써 가장 간단한 다각형들을 선택할 수 있다.
고도
하나 이상의 프로세서들은, 예컨대 사용자 선호도들에 포함된 고도 목표들을 달성하기 위해, 고도 데이터에 더 기초하여 투어들을 생성할 수 있다. 이와 관련하여, 하나 이상의 프로세서들은 그래프 내의 모든 아크들에 대한 고도 데이터를 획득할 수 있다. 하나 이상의 프로세서들은 OSM 및/또는 고도 데이터베이스와 같은 다른 적합한 데이터베이스로부터 고도 데이터를 얻을 수 있다.
라우팅 그래프(routing graph)의 모든 교차점들 또는 노드들의 고도와 같은 누락된 고도 데이터를 얻기 위해, 토폴로지 데이터베이스가 사용될 수 있다. 예를 들어, 고도 데이터는 API(application programming interface)를 사용하여 서버(60)로부터 획득될 수 있다. 서버(60)는, 예를 들어, 미리 결정된 영역(예를 들어, 25 미터 x 25 미터)의 사각형들로 구성된, DEM(digital elevation model) 표준을 준수하는 디지털 고도 모델(DEM)에 따라 고도 데이터를 제공하는 토폴로지 데이터베이스를 포함할 수 있다.
투어들을 생성할 때, 이러한 정밀도의 레벨은 너무 낮을 수 있다. 각각의 노드에 대해 해당 위치에 있는 사각형의 평균 고도를 사용하면, 짧은 길이(예를 들어, 몇 미터)의 다양한 노드들을 연결하는 아크들로 투어들이 생성될 수 있다. 선택된 경로 세그먼트들 각각은 사각형들 중 하나의 사각형 내에 위치할 수 있으므로, 완전히 평평한 것으로 또는 두 사각형들의 경계에 위치하는 것으로 잘못 추정될 수 있고, 두 사각형들이 상이한 평균 고도 값들을 갖는 경우, 너무 가파른 것으로 잘못 추정될 수 있다.
하나 이상의 프로세서들(예를 들어, 사용자 디바이스(14)의 프로세서(61b))은 예컨대, 4개의 최근접 사각형의 고도 데이터로부터 역 거리 가중을 사용하여, 노드들 각각의 고도를 추정한다. 그리드의 각각의 사각형은 그 중앙 위치에 표현될 수 있다. 하나 이상의 프로세서들은 각각의 노드의 고도를 4개의 최근접 주변 중심 위치들의 고도들의 가중 합계로 결정한다. 이 합계에서, 노드가 중심 위치에 가까울수록 합계의 계산에 미치는 영향 또는 가중치가 높아진다.
합계의 가중치들은 노드들과 중심 위치들 사이의 거리의 역수에 비례한다:
Figure pat00002
여기서,
Figure pat00003
는 고도가 결정되어야 하는 위치이고,
Figure pat00004
는 알려진 고도를 갖는 위치,
Figure pat00005
는 위치
Figure pat00006
에서의 고도이고, ,
Figure pat00007
는 p-norm을 나타내고,
Figure pat00008
은 고려된 최근접 주변 중심 위치들의 수이다. 특히, 본 방법은
Figure pat00009
Figure pat00010
일 때, 합리적인 결과들을 제공한다.
고도 프로파일 선호도들
고도는 고도 이득 및 경사도(또는 기울기)의 두 가지 양태들을 포함한다. 고도 이득과 경사도 둘 모두 투어의 난이도에 영향을 미친다. 고도 이득은 전체 투어의 총 누적 고도 이득, 즉 연속 세그먼트들의 고도 이득들의 합계이다. 투어의 고도 이득은 투어의 난이도의 척도일 수 있다. 경사도는 투어의 가장 가파른 부분들과 관련하여 표현될 수 있다.
걷기(또는 하이킹)에서, 네이스미스의 규칙(Naismith's rule)은 걷기(오르막)에서 고도가 미치는 영향을 정의할 수 있다. 고도 이득으로 인해 야기되는 추가의 노력은 루트에/루트로부터 거리를 더하거나 빼는 것으로 변환될 수 있다. 시간과 노력의 관점에서, 100 미터(m)의 높이 차이(D+)는 수평으로 1 km를 달리는 것과 같다. 예를 들어, 300 m의 D+를 가지고 10 km를 달리는 것은 13 km를 수평으로 달리는 것과 같다.
고도 이득은 속력에도 영향을 준다. 예를 들어, 상향 경사(오르막길)의 기울기 퍼센트마다 보행자의 속도를 킬로미터 당 7 내지 9초씩 늦출 수 있다. 하향 경사(내리막길)의 기울기 퍼센트마다 보행자의 속도를 킬로미터 당 5초씩 높일 수 있다.
사용자 선호도들은, 예를 들어, 3개의 연속 분류들 또는 난이도 레벨들인 평지, 언덕 및 고산(alphine) 중 하나와 같은, 고도 프로파일들의 세트 중 하나를 포함할 수 있다. 고도 프로파일들의 각각은 투어들에 대한 서로 상이한 허용가능한 범위들의 누적 고도 이득 및 경사도에 대응한다. 예를 들어, 고도 프로파일은: (1) 예를 들어, 누적 고도 이득이 거리의 1% 미만(예를 들어, 10 km에 대해 100 m 미만)이고, 최대 경사도는 5%인, 제1 (예를 들어, 평지) 프로파일; (2) 예를 들어, 누적 고도 이득이 거리의 1%과 3% 사이(예를 들어, 10 km에 대해 100 내지 300 m)이고, 최대 경사도는 10%인 제2 (예를 들어, 언덕) 프로파일; 및 (3) 예를 들어, 누적 고도 이득이 거리의 3% 초과(예를 들어, 10 km에 대해 300 m 초과)이고, 최대 경사도는 15%인 제3 (예를 들어, 고산) 프로파일일 수 있다. 제2 프로파일의 누적 고도 이득 및 최대 경사도는 제1 프로파일의 누적 고도 이득 및 최대 경사도보다 크다. 제3 프로파일의 누적 고도 이득 및 최대 경사도는 제2 프로파일의 누적 고도 이득 및 최대 경사도보다 크다.
3개 고도 프로파일들의 예시가 제공되지만, 가능한 고도 프로파일들의 수는 3이거나, 3보다 크거나, 3보다 작을 수 있다. 고도 프로파일들은 미리 결정될 수 있거나, 고도 프로파일들의 하나 이상의 특성들(예를 들어, 누적 고도 이득 및/또는 최대 경사도)는 사용자 디바이스(14)에 대한 사용자 입력에 기초하여 조정될 수 있다.
다양한 구현들에서, 고도 데이터는 또한 목표 인터벌(기간)을 포함할 수 있다. 고도 이득을 경험할 목표 인터벌은 사용자 입력이거나, 미리 결정된 목표 인터벌들이 고도 프로파일들과 연관될 수 있다.
경사도의 경우, 일치시켜야 할 전체 목표 경사도는 정의되지 않을 수 있다. 대신, 피해야 할 경사도 값들을 포함하는 것이 유리할 수 있다. 하나 이상의 프로세서들이 항상 동일한 수용가능한 경사도를 갖는 투어들을 생성하는 것은 아닐 수 있다. 대신에, 하나 이상의 프로세서들은 프로파일과 연관된 최대 경사도로 제한되는 경사도를 갖거나 갖지 않을 수 있는 평평하고 가파른 세그먼트들을 포함하는 투어들을 생성하도록 구성될 수 있다. 고도 이득 목표는 전체 투어에 적용되는 한편(이것이 각각의 세그먼트의 고도 이득들의 합으로 구성되므로), 경사도 제한 조건은 투어의 대부분의 세그먼트들에 적용될 수 있지만, 반드시 투어의 모든 세그먼트들에 적용될 필요는 없다. 예를 들어, 세그먼트가 보행자로 하여금 투어 내에서 매우 쾌적한 지역 또는 경로에 도달할 수 있게 해준다면, 일부 사용자들은 투어 내의 매우 짧은 가파른 세그먼트를 포함하는 투어를 선호하고 수락할 수 있다.
투어 생성 방법은 고도 프로파일과 연관된 최대 경사도보다 큰 경사도를 갖는 세그먼트들을 배제하지 않을 수 있다. 대신, 투어 생성 방법은 단순히 너무 가파른 세그먼트들에 페널티를 부여할 수 있다. 다른 예시에서, 투어 생성 방법은 투어에 지나치게 많은 어려운 세그먼트들을 포함하는 것을 피하기 위해, 최대 경사도 초과의 후속 세그먼트들의 누적 길이를 제한할 수 있다.
주어진 총 거리에 대한 평지 프로파일을 이용하여 전체 고도 이득이 이미 제한되어 있다는 점에서, 고도 이득은 이미 경사도에 대한 자연적인 한계를 제공한다. 따라서, 생성되는 투어는 높은 경사도를 적은 비율 또는 누적 거리로만 포함하거나, 더 낮은 경사도를 더 높은 비율 또는 누적 거리로만 포함할 수 있다.
고도 프로파일에 기초한 투어 생성
하나 이상의 프로세서들은, 예를 들어, 고도 이득 및/또는 최대 경사도 제한 조건들을 구현함으로써 선택된 고도 프로파일 및 사용자 선호도들을 만족하는 투어들을 생성할 수 있다.
예를 들어, 경사도 제한 조건을 시행하기 위해, 하나 이상의 프로세서들은 페널티를 결정하고 사용자 선호도들의 고도 프로파일과 연관된 미리 결정된 최대 경사도보다 큰 경사도를 갖는 경로 세그먼트들의 경로 세그먼트 스코어들에 페널티를 추가할 수 있다. 하나 이상의 프로세서들은 미리 결정된 최대 경사도보다 작은 경사도들을 갖는 경로 세그먼트들의 경로 세그먼트 스코어들에 페널티를 추가하지 않을 수 있다.
목표 고도 이득을 달성하기 위해, 하나 이상의 프로세서들은 하기와 같이 (1) 및 (2) 중 하나 또는 둘 모두를 수행할 수 있다:
- (1)(A) 현재 솔루션이 목표 고도 이득을 달성할 때까지, 고도 이득을 제1 목표로 고려하고, 쾌적도 스코어(전술됨)를 제2 목표로 고려하는 계층적 최적화(hierarchical optimization)를 적용한다. (B) 고도 이득이 목표 범위에 있을 때, 고도 범위를 제한 조건으로 유지하면서 쾌적도를 최대화한다.
- (2) 중간점을 찾는다. 적절한 고도에 위치된 중간점을 선택한다(예를 들어, 전체 그래프의 평균 고도 +/- 미리 결정된 양). 이 중간점에서, 시작점으로부터 중간점까지의 경로 세그먼트를 포함하는 투어 생성을 시작한다.
가파른 경로 세그먼트들에 대해 추가된 페널티는 최대 경사도를 제한하는 데 사용된다. 그러나, 최대 경사도보다 큰 경사도를 갖는 세그먼트들이 항상 투어들로부터 제외되도록 페널티가 설정될 수 있다. 주어진 목적지에 도달하기 위해 가파른 직접 경로를 택하는 것을 피하기 위해, 사용자는 더 많은 거리를 커버하지만, 가파른 세그먼트들은 피하는 우회들을 하는 것을 수락할 수 있다. 추가된 페널티를 포함하는 가중된 최단 경로 세그먼트들은 이 선호도를 구현할 수 있다.
따라서, 투어 생성 방법은 가파른 경로 세그먼트들에 페널티를 부여할 수 있다. 페널티는, 경로 세그먼트의 경사도가 고도 프로파일의 최대 경사도와 같을 때 추가되기 시작할 수 있고, 경사도가 최대 경사도를 초과하여 증가함에 따라 증가할 수 있다.
도 7은 페널티 계산의 예시적인 방법(400)을 도시한 흐름도를 포함한다.
401에서, 하나 이상의 프로세서들은 사용자 선호도들, 그리고 보다 상세하게는, 고도 프로파일을 검색한다. 하나 이상의 프로세서들은 고도 프로파일이 제1(평지) 프로파일, 제2(언덕) 프로파일 또는 제3(고산) 프로파일인지 결정한다. 고도 프로파일이 제1(평지) 프로파일로 설정되는 경우, 방법은 402f로 계속된다. 고도 프로파일이 제2(언덕) 프로파일로 설정되는 경우, 방법은 402h로 계속된다. 고도 프로파일이 제3(고산) 프로파일로 설정되는 경우, 방법은 402a로 계속된다.
고도 프로파일이 제1 프로파일로 설정되는 경우, 402f에서, 하나 이상의 프로세서들은 경로 세그먼트의 경사도(예를 들어, 경사도의 절대값(abs))가 제1 프로파일과 연관된 미리 결정된 최대 경사도(예를 들어, 5%)보다 작은지 여부를 결정한다. 402f가 거짓이면, 하나 이상의 프로세서들은 403f에서, 경로 세그먼트에 대한 페널티를
Figure pat00011
에 기초하여 또는 그와 동일하게 설정할 수 있다. 402f가 참이면, 하나 이상의 프로세서들은 404에서, 세그먼트에 대한 페널티를 0에 기초하여 또는 그와 동일하게 설정할 수 있다.
고도 프로파일이 제2(언덕) 프로파일로 설정되는 경우, 402h에서, 하나 이상의 프로세서들은 경로 세그먼트의 경사도(예를 들어, 경사도의 절대값(abs))가 제2 프로파일과 연관된 미리 결정된 최대 경사도(예를 들어, 10%)보다 작은지 여부를 결정한다. 402h가 거짓이면, 하나 이상의 프로세서들은 403h에서, 경로 세그먼트에 대한 페널티를
Figure pat00012
에 기초하여 또는 그와 동일하게 설정할 수 있다. 402h가 참이면, 하나 이상의 프로세서들은 404에서, 세그먼트에 대한 페널티를 0에 기초하여 또는 그와 동일하게 설정할 수 있다.
고도 프로파일이 제3(고산) 프로파일로 설정되는 경우, 402a에서, 하나 이상의 프로세서들은 경로 세그먼트의 경사도(예를 들어, 경사도의 절대값(abs))가 제3 프로파일과 연관된 미리 결정된 최대 경사도(예를 들어, 20%)보다 작은지 여부를 결정한다. 402a가 거짓이면, 하나 이상의 프로세서들은 403a에서, 경로 세그먼트에 대한 페널티를
Figure pat00013
에 기초하여 또는 그와 동일하게 설정할 수 있다. 402a가 참이면, 하나 이상의 프로세서들은 404에서, 세그먼트에 대한 페널티를 0에 기초하여 또는 그와 동일하게 설정할 수 있다.
최단 경로 세그먼트의 계산을 위해, 각각의 아크의 가중치는 하기에 기초하여 또는 하기와 같이 수정된다:
Figure pat00014
상기 식의 예시에서, 1의 인수만큼 페널티를 증가시키는 것은 가파른 세그먼트를 피하기 위해 허용되는 거리를 그 세그먼트의 길이만큼 증가시키는 것과 동일할 것이다. 예를 들어, 제1 프로파일이 선택되는 경우, 15%의 경사도 및 길이(d)를 갖는 경로 세그먼트에 페널티가 부여되어, 알고리즘은 15%의 경사도를 갖는 경로 세그먼트보다 최대 3배 더 긴 (평지) 경로를 택하는 것을 선호할 것이다.
가중치들이 계산되면, 하나 이상의 프로세서들은 계층적 최적화를 수행할 수 있고, 이는 경로 세그먼트 스코어들을 최대화하기 전에 달성할 제1 목표가 고도 이득이 되게 한다. 이는 각각의 반복에서, 선택된 삽입(경로 세그먼트)이 누적 고도 이득을 유지하거나 누적 고도 이득을 목표 고도 이득에 더 가깝게 이동시키는 것임을 의미할 수 있다. 삽입(투어로의 추가)을 위한 여러 개의 가능한 경로 세그먼트들이 누적 고도 이득에 동일한 영향을 미치는 경우, 하나 이상의 프로세서들은 여러 가능한 경로 세그먼트들 중 경로 세그먼트 스코어를 최대화하는 하나를 선택한다. 일단 투어의 고도 이득이 목표 고도 이득의 미리 결정된 범위 내에 있으면, 하나 이상의 프로세서들은 누적 고도 이득을 미리 정해진 목표 고도 이득의 범위로 여전히 유지하면서 경로 세그먼트 스코어를 최대화하기 위한 삽입할 이후 경로 세그먼트들을 선택한다.
그러나, 적절한 고도의 지역들이 충분히 가까이 있지 않으면 계층적 최적화는 목표 고도 프로파일을 달성하지 못할 수 있다. 보다 정확하게는, 위에서 논의된 바와 같이, 서로 컷오프 거리(cutoff distance) 내에 있는 지점들을 연결하는 전처리된 가중된 최단 경로 세그먼트들이 사용된다. 각각의 반복에서 새로운 삽입을 고려할 때, 가능성들의 수는 투어에 최단 경로 세그먼트들로 연결된 아크들의 수에 의존한다. 따라서 컷오프 거리가 클수록, 더 많은 대안들이 가능하며, 누적 고도 이득을 목표 고도 이득으로 조정하는 경로 세그먼트를 찾을 가능성이 높아진다.
도 8은 동일한 사용자 선호도들을 사용하되, 최단 경로 세그먼트 전처리에서 상이한 컷오프 거리들을 사용하여 생성된 두 개의 투어들의 예시를 도시한다. 파란색 선으로 도시된 투어는 빨간색 선으로 표시된 경로보다 더 큰 컷오프 거리를 사용하여 생성되었다. 더 큰 컷오프 거리(파란색 선으로 표시됨)로 생성된 투어는 목표 고도 이득의 미리 결정된 범위 내에 있는 고도 이득을 제공하며, 투어는 상대적으로 좋은 스코어를 갖는다. 그러나, 더 작은 컷오프 거리(빨간색 선으로 표시됨)로 생성된 투어는 목표 고도 이득의 미리 결정된 범위 내에 있는 고도 이득을 제공하지 않는다. 대신 더 작은 컷오프 거리를 갖는 투어는 여러 개의 보다 작은 아크들을 포함하여 고도 이득이 거의 없다. 이러한 투어는 사용자 선호도들의 고도 이득 부분을 충족하지 않으며, 비교적 부실한(poor) 기하학적 형상을 갖는다. 따라서, 이러한 투어는 더 큰 컷오프 거리를 사용하여 생성된 투어보다 더 낮은 스코어를 가질 것이다.
그러나, 컷오프 거리가 클수록 수행되는 전처리가 더 커진다. 적절한 최소 고도에 있는 중간점의 선택과 시작점으로터 해당 지점에 도달하기 위해 최단 경로 세그먼트를 포함하도록 투어를 생성하는 것은 더 나은 투어를 제공할 수 있고 이는 또한 목표 고도 이득을 달성한다. 도 9는 전술된 바와 같이, 중간점을 선택함으로써 생성된 투어를 포함하는 예시적인 그래프를 포함한다. 이 경우 투어는 시작점과 중간점 사이의 동일한 액세스 경로로 시작하고 끝날 것이다.
유연한 경로들
하나 이상의 프로세서들은 사용자가 사용자 디바이스(14)를 가지고 생성된 투어를 횡단하는 동안 하나 이상의 변경들이 이루어지도록 허용할 수 있다. 예를 들어, 하나 이상의 프로세서들은 투어 동안 투어의 길이를 증가시키거나 투어의 길이를 감소시키기 위한 사용자 디바이스(14)에 대한 사용자 입력에 응답하여, 투어의 길이를 증가 시키거나 투어의 길이를 감소시키기 위해 투어(예를 들어, 지속 시간 및/또는 거리)를 조정할 수 있다. 추가로 또는 대안적으로, 하나 이상의 프로세서들은 사용자가 투어로부터 일탈하여 대안적인 투어를 따라가는 경우 대안적인 투어의 경로를 따라가도록 투어를 조정할 수 있다. 부가적으로 또는 대안적으로, 하나 이상의 프로세서들은 투어 동안 사용자 디바이스(14)에 대한 사용자 입력, 예를 들어, 비상 사태의 표시자에 응답하여 사용자에게 시작 위치로 되돌아가는 가능한 최단 루트를 제공하도록 투어를 조정할 수 있다.
하나 이상의 프로세서들은 사용자가 사용자 디바이스(14)를 가지고 생성된 투어를 횡단하는 동안 하나 이상의 변경들을 제안할 때 지리적 유연성 및 시간 유연성을 허용한다. 지리적 유연성은, 하나 이상의 프로세서들이 사용자 선호도들과 일치하고 원래 투어의 경로들과 (스코어적으로) 대략 동일한 품질인 초기 투어 주변의 영역들 및/또는 대안 경로들을 식별하는 것을 수반할 수 있다. 영역들 및/또는 대안 경로들은 사용자들이 원래 투어를 엄격하게 따라가지 않고 주변을 탐색하도록 허용할 수 있다. 시간 유연성은 투어 동안 투어의 길이 및/또는 전체 기간(시간)의 변화에 관한 사용자 입력에 응답하여 투어를 조정하는 것을 수반할 수 있다. 하나 이상의 프로세서들은 투어 동안에 요청된 그러한 변경에 응답하여 투어의 길이를 증가시키거나 투어의 길이를 감소시키기 위해 투어를 업데이트한다. 이는, 예를 들어, 날씨 변화에 기초하여, 또는 투어 동안 사용자 기분(예를 들어, 피로 또는 에너지)에 기초한 유연성을 허용한다.
생성된 (최초) 투어를 보다 유연하게 만들기 위해, 하나 이상의 프로세서들은 투어로부터 분기되고 최초 투어의 경로 세그먼트들을 대체하기 위해 사용될 수 있는 하나 이상의 대안 경로들(아크들)을 결정한다. 가능한 모든 대안 경로들 중에서, 하나 이상의 프로세서들은 최초 투어로부터 제거된 경로 세그먼트들의 스코어들과 유사한 스코어들을 갖는 대안 경로들을 선택한다.
위에서 논의된 바와 같이, 하나 이상의 프로세서들은 그의 평균 스코어, 즉 그의 거리에 대한 그의 스코어에 기초하여 경로의 스코어를 결정한다. 하나 이상의 프로세서들은 경로의 총 스코어를 그의 총 거리로 나눔으로써 각각의 경로의 평균 스코어를 개별화(discretize)한다. 하나 이상의 프로세서들은 스코어에 기초하여 각각의 경로에 품질 카테고리를 할당한다. 예를 들어, 하나 이상의 프로세서들은 미리 결정된 제1 스코어 범위 내에 있는 스코어들을 갖는 경로들에 제1 품질 카테고리를 할당하고, 미리 결정된 제2 스코어 범위 내에 있는 스코어들을 갖는 경로들에 제2 품질 카테고리를 할당하고, 미리 결정된 제3 스코어 범위 내에 있는 스코어들을 갖는 경로들에 제3 품질 카테고리를 할당하고, 및 미리 결정된 제4 스코어 범위 내에 있는 스코어들을 갖는 경로들에 제4 품질 카테고리를 할당할 수 있다. 4개의 품질 카테고리들의 예시가 제공되지만, 더 많거나 적은 수의 품질 카테고리들이 사용될 수 있다. 제1 품질 카테고리는 최소 품질을 갖는 경로들(예를 들어, 차량 통행이 있는 도로들)에 대응할 수 있다. 제2 품질 카테고리는 합리적인 품질, 제1 품질 카테고리의 경로들보다 더 좋은 품질을 갖는 경로들(예를 들어, 도보 경로들)에 대응할 수 있다. 제3 품질 카테고리는 좋은 품질, 제2 품질 카테고리의 경로들보다 더 좋은 품질을 갖는 경로들(예를 들어, 공원들의 경계들과 같은 자연에 가까운 도보 경로들)에 대응할 수 있다. 제4 품질 카테고리는 탁월한 품질, 제3 품질 카테고리의 경로들보다 더 좋은 품질을 갖는 경로들(예를 들어, 공원들 내의 도보 경로들 또는 자연을 통과하는 도보 경로들)에 대응할 수 있다. 도 10은 스코어에 따라 세그먼트화된 예시적인 도보 투어를 포함한다. 품질 카테고리들의 예시가 제공되지만, 본 출원은 또한 유연한 경로들을 식별하는 다른 방법들에도 적용 가능하다.
하나 이상의 프로세서들은 (1) 대안 경로들로 대체될 수 있는 최초 투어의 일부를 선택하고 (2) 최초 투어의 일부를 대체할 허용가능한 대체들을 찾음으로써 경로의 스코어를 결정한다.
하나 이상의 프로세서들은 (1) 슬라이딩 윈도우 접근법 또는 세그먼트화 접근법을 사용하여 최초 투어의 대체될 일부를 선택할 수 있다. 슬라이딩 윈도우 접근법의 경우, 하나 이상의 프로세서들은 고정된 미리 결정된 거리(D)를 갖는 슬라이딩 윈도우를 정의한다. 하나 이상의 프로세서들은 최초 투어의 제1 노드(시작 위치)로부터 시작하여 원래 투어의 후속 노드들을 통해 윈도우를 노드로부터 노드로 이동시킨다. 각각의 단계에서, 하나 이상의 프로세서들은 거리(D) 내에 놓여 있고 투어의 종료 노드(종료 위치) 전에 있는 투어의 모든 후속 노드들을 커버하기 위해, 다음 노드를 시작 노드로 하여 슬라이딩 윈도우를 이동시킨다. 각각의 단계에서, 하나 이상의 프로세서들은 슬라이딩 윈도우의 제1 노드(N0)와 슬라이딩 윈도우 내의 각각의 후속 노드들(Ni) 사이의 주변 영역 내의 가능한 삽입들을 결정한다.
세그먼트화 접근법의 경우, 하나 이상의 프로세서들은 최초 투어를 그 구성 아크들의 스코어에 따라 세그먼트화한다. 다시 말해서, 하나 이상의 프로세서들은 스코어의 관점에서 유사한 최초 투어의 분리된(disjointed) 서브 시퀀스들을 식별한다. 하나 이상의 프로세서들은, 예컨대 rupture 1 python library로부터의 알고리즘과 같은, 세그먼트들을 검출하기 위한 변경점(change point) 알고리즘을 사용하여 위에서 논의된 4개의 품질 카테고리들에 따라 스코어들을 개별화할 수 있다. 도 10은 예시적인 세그먼트들로 세그먼트화된 투어를 포함하는 예시적인 그래프를 포함한다. 마커들은 각각의 세그먼트의 시작과 끝을 나타내는 한편, 색상들은 세그먼트의 품질(예를 들어, 카테고리)을 나타낸다. 최적(예를 들어, 제4) 카테고리에 속하는 세그먼트들은 녹색으로 도시되고, 최악(예를 들어, 제1) 카테고리에 속하는 세그먼트들은 적색으로 도시된다. 중간 카테고리(예를 들어, 제2 또는 제3)에 속하는 세그먼트들은 노란색과 같은 다른 색상으로 도시될 수 있다. 각각의 세그먼트 내에서, 하나 이상의 프로세서들은 세그먼트 내의 노드들의 (예를 들어, 각각의) 쌍들 사이의 가능한 삽입들을 결정한다.
하나 이상의 프로세서들은 (2) 하기와 같이 최초 투어의 대체될 부분에 대한 허용가능한 대체들을 식별할 수 있다. 각각의 서브섹션(세그먼트)은 대체될 노드들의 쌍을 연결하는 원래 투어의 일부분을 나타내는 노드들(Nstart, Nend)의 쌍에 의해 정의된다. 하나 이상의 프로세서들은 가능한 삽입들이 허용가능한 대안들인지 여부를 결정하기 위해 가능한 삽입들의 특성들을 검증한다. 각각의 가능한 삽입에 대해, 하나 이상의 프로세서들은 가능한 삽입을 갖는 대안적인 투어가 투어 내에 임의의 중복 노드들을 포함하지 않도록 검증한다. 이는 투어의 품질을 향상시키고, 두 개의 노드들 사이에서 투어가 앞뒤로 진행되는 것을 방지한다. 하나 이상의 프로세서들은 가능한 삽입의 품질 카테고리를 결정하고, 그 카테고리에 기초하여, 하나 이상의 프로세서들은 최초 투어에 대한 가능한 삽입에 의해 도입된 평균 스코어 및 거리 변화들에 대한 추가적인 제한 조건들을 검증할 수 있다. 가능한 삽입이 모든 추가적인 제한 조건을 충족하는 경우, 하나 이상의 프로세서들은 가능한 삽입을 가능한 대안 경로로서 유지한다. 대안 경로들의 결정은 하기의 의사코드에 의해 설명될 수 있다.
alternative_paths = []
각각의 노드 쌍(Nstart, Nend)에 대해:
주변 그래프 네의 각각의 아크(a1, a2)에 대해:
- 최단 경로들(Nstart, a1) 및 (a2, Nend)을 연결 경로들로 사용하여 Nstart와 Nend 사이에 아크(a1, a2)의 삽입을 결정한다. 결과적으로 삽입되는 경로 (Nstart, a1) (a1, a2) (a2, Nend)는 아래에서 inserted_path로 지칭되고, 아래에서 replaced_path로 지칭되는 최초 투어 경로에서 (Nstart, Nend)을 연결하는 경로에 대한 가능한 대체이다.
- replaced_path를 inserted_path로 대체하는 대안적인 투어는 임의의 중복 노드들을 포함하지 않도록 검증한다. 임의의 중복 노드들이 있으면, 삽입을 거부한다.
- inserted_path의 품질 카테고리를 결정한다. 예를 들어, 전술된 바와 같이, inserted_path에 품질 카테고리들 1, 2, 3 또는 4 중의 하나를 할당한다.
- inserted_path의 카테고리에 따라, 대응하는 cost_threshold 및 score_threshold(아래에 설명됨)를 결정하고, replaced_path와 비교하여 inserted_path가 하기의 제한 조건들을 준수하는지 검증한다:
Cost( inserted_path ) ≤ cost_threshold * Cost( replaced_path ), 및
Score( inserted_path ) / Cost( inserted_path ) ≥ score_threshold * Score( replaced_path ) / Cost( replaced_ path )
inserted_path가 제한 조건들을 충족하지 않으면, inserted_path를 거부한다. inserted_path가 모든 제한 조건들을 충족하는 경우, 최초 투어 내의 replaced_path와 비교하여 그것이 비용 및 스코어의 관점에서 도입하는 변경 사항에 대한 정보와 함께 inserted_path를 alternative_paths에 추가한다.
경로의 비용은 경로가 커버하는 거리 및 경로의 쾌적도(품질)에 대한 스코어에 대응한다. 전술된 바와 같이 경로의 비용 및 경로의 스코어는 경로 아크들로부터 계산된다. score_threshold 및 cost_thesholds과 관련된 예시들은 하기와 같다:
카테고리들에 대한 cost_threshold
[1, 2, 3, 4]
카테고리들에 대한 score_threshold
[1, 2, 3, 4]
완화된 설정 [1.0, 1.1, 1.5, 2] 없음
엄격한 설정 [1.0, 1.0, 1.25, 1.5] [1.0, 1.0, 0.95, 0.9]
비용 및 스코어 임계값들의 예들이 제공되지만, 다른 임계값들이 사용될 수 있다.
도 11 내지 도 14는 도시(도심 지역) 내의 최초 투어(도 11)의 세그먼트들 내로 대안 경로들(파란색)이 삽입되어 생성된 투어들(도 12 내지 도 14)의 예시적인 그래프들을 포함한다. 도 15 내지 도 18은 주거 지역 내의 최초 투어(도 15)의 세그먼트들 내로 대안 경로들(파란색)이 삽입되어 생성된 투어들(도 16 내지 도 18)의 예시적인 그래프들을 포함한다. 도 11 내지 도 18의 예들은 500 내지 1000 m의 윈도우 크기와 1000 내지 3000 m의 컷오프 값에 기초하여 생성되었다.
하나 이상의 프로세서들은 쾌적한 대안 경로들을 삽입한다. 삽입의 스코어가 높을수록, 허용가능한 비용 증가 및 허용가능한 스코어 감소 둘 모두에 대한 제한 조건들의 준수를 결정할 때의 임계값들이 더 완화될 수 있다. 임계값들은 각각의 품질 카테고리와 연관된, 고정된 미리 결정된 개별 값들일 수 있다. 다양한 구현들에서, 하나 이상의 프로세서들은, 예를 들어, 평균 스코어들을 비용 및 스코어 임계값들과 관련시키는 함수 및 룩업 테이블 중의 하나를 사용하여, 임계값들을 경로의 평균 스코어의 함수로서 결정할 수 있다. 다양한 구현들에서, 하나 이상의 프로세서들은 또한 고도 이득 및/또는 경사도와 같은 하나 이상의 다른 특성들을 고려할 수 있다.
사용된 윈도우 크기 또는 발견된 세그먼트들의 길이는 대안 경로들과의 대체를 위해 고려되는 노드 쌍들의 수에 영향을 준다. 전술한 윈도우 크기와 컷오프 파라미터(고려된 최단 경로들을 결정하는 데 사용됨)는 고려된 가능한 삽입들의 총수에 영향을 준다. 비용 임계값에 부가하여 이들 파라미터들은 대안 경로가 커버할 수 있는 거리를 제한할 수 있고, 따라서, 대안 경로가 최초 투어로부터 얼마나 많이 일탈할 수 있는지를 제한할 수 있다. 500 내지 1000 m의 예시적인 윈도우 크기 및 1000 내지 3000 m의 예시적인 컷오프 값의 예시가 도시되어 있지만, 다른 윈도우 크기들 및/또는 컷오프 값들이 사용될 수 있다. 다양한 구현들에서, 하나 이상의 프로세서들은 투어의 주변에 기초하여 윈도우 크기 및 컷오프 값을 설정할 수 있다. 예를 들어, 하나 이상의 프로세서들은 도시(도심 지역) 근처 또는 내부 투어들에 대해 윈도우 크기 및 컷오프 값을 제1 미리 결정된 값들(예를 들어, 각각 500 m 및 1000 m)로 설정하고, 전원(rural) 지역들 근처 또는 내부 투어들의 경우 제2 미리 결정된 값들(예를 들어, 각각 1000 m 및 3000 m)로 설정할 수 있다. 제2 미리 결정된 값들은 각각 제1 미리 결정된 값들보다 크다.
다양한 구현들에서, 하나 이상의 프로세서들은 세그먼트 내에서 고려할 노드들의 쌍들 사이의 최대 거리를 제한할 수 있다. 이는 최초 투어로부터의 너무 긴 일탈들을 피하는 것을 도울 수 있다.
도 19는 전술된 바와 같이 생성된 예시적인 최초 투어 및 대안 경로들(파란색)을 포함하는 그래프를 포함한다. 다양한 구현들에서, 하나 이상의 프로세서들은, 디스플레이 상에, 가장 쾌적한 대안 경로들 및/또는 가장 흥미로운 대안 경로들만을, 예컨대, 미리 결정된 값보다 더 큰 스코어들을 갖는 대안 경로들 또는 최고 스코어들을 갖는 X개의 대안 경로들만을 시각적으로 나타낼 수 있으며, 여기서 X는 0보다 큰 정수이다. 도 19의 예시에 도시된 바와 같이, 하나 이상의 프로세서들은, 디스플레이 상에, 사용자가 투어를 시작하기 전에 그리고/또는 사용자가 투어의 루트를 횡단하는 동안 유연한/대안 경로들을 따라갈 수 있는 투어의 대안 경로들 및/또는 섹션들을 디스플레이할 수 있다. 하나 이상의 프로세서들은 사용자가 투어로부터 대안 경로에 들어오거나 떠날 때 출력(가청, 시각 및/또는 햅틱)을 생성하거나 생성하지 않을 수 있다. 다양한 구현들에서, (예를 들어, 도 21, 도 23, 도 25 및 도 27의 예시들에서와 같이), 하나 이상의 프로세서들은 투어의 목표 길이를 조정하기 위한 사용자 입력에 응답하여, 디스플레이 상에, 하나 이상의 프로세서들에 의해 제공되는 새로운 투어와 함께 유연한/대안 경로들을 따라갈 수 있는 투어의 대안 경로들 및/또는 섹션들을 디스플레이할 수 있다.
각각의 허용되는 대안 경로에 대해, 하나 이상의 프로세서들은 최초 투어 내로 도입된 스코어 및 거리의 변경들에 대한 데이터를 저장한다. 각각의 대안 경로는 대체된 세그먼트와 대략 동일하거나 초기 투어의 비용 및/또는 거리를 증가시키거나 감소시킬 수 있다. 저장된 데이터에 기초하여, 하나 이상의 프로세서들은 투어의 횡단 동안 사용자 디바이스(14)를 통해 (예를 들어, 청각적으로 및/또는 시각적으로) 사용자에게 통지할 수 있다. 이는 사용자로 하여금 가능한 대안들 중에서 동적으로 선택하도록 허용할 수 있다.
다양한 구현들에서, 하나 이상의 프로세서들은 사용자 입력에 응답하여 임계값들을 설정할 수 있다. 예를 들어, 사용자는, 사용자가 투어가 목표 거리를 갖기를 원하는지(대안 경로들을 희생함), 또는 사용자가 더 많은 경로들(예를 들어, 쾌적한 경로들)을 탐색하도록 허용하면서, 투어가 더 유연한 목표 거리를 갖기를 원하는지에 대한 선호도를 사용자 디바이스(14)에 입력할 수 있다. 사용자 입력에 기초하여, 하나 이상의 프로세서들은 사용자 선호도들을 가장 잘 달성하도록 스코어 임계값 및 비용 임계값을 설정할 수 있다. 예를 들어, 도 13 및 도 17은 목표 거리에 대한 엄수(adherence) 및 보다 적은 탐색 유연성을 도시한다. 도 12, 도 14, 도 16 및 도 18은 목표 거리에 대한 보다 덜한 엄수 및 보다 많은 탐색 유연성을 도시한다.
동적 경로 업데이트
전술된 바와 같이, 하나 이상의 프로세서들은 사용자가 생성된 투어를 사용자 디바이스(14)를 가지고 횡단하는 동안 하나 이상의 변경들이 이루어지게 허용할 수 있다. 초기 투어를 고려해 볼 때, 그리고 초기 투어의 일부가 완성되었다고 고려해 볼 때, 하나 이상의 프로세서들은 사용자 디바이스(14)에 대한 사용자 입력에 응답하여, 투어의 목표 거리 및/또는 목표 기간(시간)을 변경하기 위해 투어를 업데이트할 수 있다. 예를 들어, 목표 거리 및 목표 기간 중 적어도 하나를 증가시키기 위한 사용자 입력에 응답하여, 하나 이상의 프로세서들은 투어의 길이를 증가시키고, 업데이트된 (길이가 증가된) 투어를 사용자 디바이스(14) 상에 표시하기 위해 사용자 디바이스(14)에 송신할 수 있다. 목표 거리 및 목표 기간 중 적어도 하나를 감소시키기 위한 사용자 입력에 응답하여, 하나 이상의 프로세서들은 투어의 길이를 감소시키고, 업데이트된 (길이가 감소된) 투어를 사용자 디바이스(14) 상에 표시하기 위해 사용자 디바이스(14)에 송신할 수 있다.
하나 이상의 프로세서들은 또한 사용자 디바이스(14)로부터의 사용자 입력을 통해 제공된 업데이트된 종료 위치에 기초하여 투어를 업데이트할 수 있다.
예를 들어, 하나 이상의 프로세서들은 (a) 목표 거리가 초기 목표 거리보다 긴 경우라면 초기의 잔여 경로를, 또는 (b) 목표 거리가 초기 목표 거리보다 짧은 경우라면 현재 위치와 종점 사이의 최단 경로를 이용하여 current_path를 초기화할 수 있다. 하나 이상의 프로세서들은 하기를 반복할 수 있다:
a. 변경할 R(current_path) 아크들의 세트를 (예를 들어, 임의로) 선택함으로써 루트를 정의하고;
b. 루트의 연속적인(그리고 반드시 인접할 필요는 없는) 아크들(AB 및 EF)의 각각의 쌍 사이에서:
i. B로부터 E까지의 현재 세그먼트를 시퀀스 SP(B,C), CD, SP(D,E) - SP는 최단 경로(SP)임 -로 대체하여 current_path 내로 새로운 아크(CD)의 가능한 삽입들을 결정하고,
ii. 거리 및 고도 제한 조건들을 충족하고 이미 방문된 노드들을 포함하지 않는 가능한 삽입들만 유지하고,
c. 최고 스코어들을 갖는 K개의 가능한 삽입들로부터 하나의 가능한 삽입을 (예를 들어, 임의로) 삽입함으로써 current_path를 업데이트한다.
위에서, R은 현재 경로의 길이와 사전 계산된 최단 경로들의 최대 길이의 함수이다. 삽입을 위해 고려할 아크들의 수는 계산된 최단 경로들의 최대 길이에 의해 제한된다. K(1 이상의 정수)는 근본적인(underlying) 로컬 검색 알고리즘의 전략을 정의한다. K가 작을수록 알고리즘이 더 그리디하다. 예를 들어, K가 1일때, 최적의 가능한 삽입이 (최고 스코어를 가지는) 최적의 가능한 삽입이 된다. K가 클수록 (가능한 삽입들의 풀(pool)이 커지므로) 검색은 보다 더 탐색적일 수 있다.
current_path의 거리(또는 기간)가 목표 거리(또는 기간)의 미리 결정된 범위 내에 있을 때, 하나 이상의 프로세서들은 중지하고, current_path(현재 투어)를 사용자 디바이스(14)에 반환할 수 있다. 대안적으로, 반복 또는 계산 시간 제한이 달성되면, 하나 이상의 프로세서들은 중지하고, current_path(현재 투어)를 사용자 디바이스(14)에 반환할 수 있다.
도 20은 이미 완성된 섹션이 파란색으로 도시되고, 아직 완성되지 않은 섹션이 빨간색으로 도시된 예시적인 초기 투어를 포함한다. 도 21은 사용자 입력의 수신에 응답하여, 도 20의 초기 투어의 아직 완성되지 않은 섹션의 나머지에 대해 생성된 검정색의 새로운 경로를 포함한다.
도 22는 이미 완성된 섹션이 파란색으로 도시되고, 아직 완성되지 않은 섹션이 빨간색으로 도시된 예시적인 초기 투어를 포함한다. 도 23은 사용자 입력의 수신에 응답하여, 도 22의 초기 투어의 아직 완성되지 않은 섹션의 나머지에 대해 생성된 검정색의 새로운 경로를 포함한다.
사용자 입력이 투어의 길이(목표 거리 또는 기간)의 감소를 나타내는 경우, 하나 이상의 프로세서들은, 사용자 입력(목표 거리 또는 기간)을 달성하기 위해, 투어로부터 최소로 쾌적한 세그먼트들(하나 이상의 최저 스코어들을 가짐) 중 하나 이상을 식별하고 투어로부터 제거할 수 있다.
도 24는 이미 완성된 섹션이 파란색(4 km)으로 도시되고, 아직 완성되지 않은 섹션이 빨간색(6 km)으로 도시된 예시적인 초기 투어(10 km)를 포함한다. 도 25는 투어의 길이를 감소시키기 위한 사용자 입력의 수신에 응답하여 생성된 검정색의 새로운 경로(3 km)를 포함한다.
도 26은 이미 완성된 섹션이 파란색(4 km)으로 도시되고, 아직 완성되지 않은 섹션이 빨간색(6 km)으로 도시된 예시적인 초기 투어(10 km)를 포함한다. 도 27은 투어의 길이를 감소시키기 위한 사용자 입력의 수신에 응답하여 생성된 검정색의 새로운 경로(3 km)를 포함한다.
다양한 구현들에서, 사용자 입력은 목표 거리를 이미 완성된 투어의 거리보다 작게 감소시키거나, 가능한 빨리 시작 위치로 복귀하는 표시자를 포함할 수 있다. 이 예시에서, 하나 이상의 프로세서들은 시작 위치로 복귀하는 가능한 최단 경로를 결정하고 그 경로를 사용자 디바이스(14)에 송신한다. 다수의 경로들이 최단 거리를 갖는 경우, 하나 이상의 프로세서들은 최고 스코어를 갖는 최단 경로를 사용자 디바이스(14)에 반환할 수 있다.
도 28은 투어를 업데이트하는 예시적인 방법을 도시한 흐름도를 포함한다. 2804에서, 하나 이상의 프로세서들(예를 들어, 61a 및 61c 중의 적어도 하나)은 사용자 디바이스(14)에 제공된 현재 투어를 획득한다. 2808에서, 하나 이상의 프로세서들은 사용자 디바이스(14)에 제공된 현재 투어가 시작되었는지 여부를 판정한다. 다시 말해, 하나 이상의 프로세서들은 사용자 디바이스(14)가 사용자 디바이스(14)에 제공된 현재 투어를 따라가기 시작했는지 여부를 판정한다.
2812에서, 하나 이상의 프로세서들은 목표 거리의 변화 또는 목표 기간의 변화와 같은 현재 투어의 길이를 변경하라는 요청을 나타내는 사용자 입력이 수신되었는지 여부를 판정한다. 2812가 거짓이면, 하나 이상의 프로세서들은 2816에서 현재 투어를 유지하고, 제어는 2812로 되돌아간다. 2812가 참이면, 제어는 2820으로 계속된다.
2820에서, 하나 이상의 프로세서들은 전술된 바와 같이 대체를 위한 현재 투어의 일부를 선택한다. 2824에서, 하나 이상의 프로세서들은 전술된 바와 같이 현재 투어의 일부 대신에 가능한 삽입들을 식별한다. 2828에서, 하나 이상의 프로세서들은 식별된 가능한 삽입들로부터 선택하는데, 예컨대, 최고 스코어들을 가지고, (변경된) 목표 거리 및/또는 목표 기간을 달성하도록 투어의 길이를 가장 근접하게 조정하는 가능한 삽입들을 선택한다.
2832에서, 하나 이상의 프로세서들은 선택된 삽입(들)을 포함하는 업데이트된 투어를 생성한다. 2836에서, 하나 이상의 프로세서들은 선택된 삽입(들)을 포함하는 업데이트된 투어를 사용자 디바이스(14)에 송신한다. 사용자 디바이스(14)는 예를 들어, 디스플레이를 통해, 업데이트된 투어를 사용자에게 출력한다. 도 28의 예시는 종료로 도시되어 있지만, 제어는 2804로 되돌아갈 수 있다.
상기를 고려하여, 하나 이상의 프로세서들은 사용자들에 의해 이전에 수행된 다른 도보 투어들에 관한 이전에 수집된 사용자 데이터(예를 들어, 요청하는 사용자 또는 다른 사용자들에 의해 수행된 이전의 달리기 또는 걷기의 흔적들)를 사용하지 않고 도보 투어들을 생성한다. 이는 사용자 개인 정보를 보호하고, 동일하거나 유사한 도보 투어들이 수 차례 생성되는 것을 방지한다. 또한, 이전에 수집된 사용자 데이터는 사용자 데이터의 수집 및/또는 사용을 제한하는 지리적 영역들과 같은 일부 위치들에서 이용 가능하지 않을 수 있다.
본 명세서에서 사용되는 용어, "도보(pedestrian)”는 걷거나 달리거나 하여 발로(on foot) 여행하는 사람들, 인간 동력 차량(예를 들어, 자전거, 스케이트 보드 등)을 사용하여 여행하는 사람들 및 비-인간 동력 차량(예를 들어, 전기-구동 스쿠터 또는 가스-구동 스쿠터, 오토바이, 카트, 자동차 등)을 사용하여 여행하는 사람들을 포함한다. 보행자들은 그들이 여행하는 방식에 따라, 도로들, 경로들 또는 오프로드(예를 들어, 등산로들, 경로들 등) 또는 이들의 조합(모두 함께 일반적으로 경로 유형으로 지칭됨)을 따라 이동할 수 있다.
전술한 설명은 본질적으로 단지 예시적인 것이며, 본 개시 내용, 그의 응용, 또는 사용들을 제한하려는 것이 아니다. 본 개시 내용의 광범위한 교시들은 다양한 형태들로 구현될 수 있다. 따라서, 본 개시 내용은 특정 예들을 포함하지만, 본 개시 내용의 진정한 범위는 그들에 제한되지 않아야 하는데, 이는 도면들, 명세서 및 하기 청구 범위의 연구에 따라 다른 변형들이 명백해질 것이기 때문이다. 방법 내의 하나 이상의 단계들은 본 개시 내용의 원리들을 변경하지 않고 상이한 순서로(또는 동시에) 실행될 수 있음을 이해해야 한다. 또한, 각각의 실시예들은 소정의 특징들을 갖는 것으로 전술되었지만, 본 개시 내용의 임의의 실시예와 관련하여 설명된 이들 특징들 중 임의의 하나 이상은, 비록 그 조합이 명시적으로 설명되지는 않았으나, 임의의 다른 실시예들의 특징들로 구현되고/되거나 그들과 조합될 수 있다. 다시 말해서, 설명된 실시예들은 상호 배타적이지 않으며, 하나 이상의 실시예들의 서로의 치환은 본 개시 내용의 범위 내에 있다.
요소들(예를 들어, 모듈들, 회로 소자들, 반도체 층들 등) 사이의 공간 및 기능적 관계들은 "연결된", "연계된", "결합된", "인접한", "근접한", “상부에”, “위에”, “아래에” 및 “배치된”을 포함하는 다양한 용어들을 사용하여 설명된다. 제1 및 제2 요소들 사이의 관계가 상기 개시 내용에서 설명될 때, "직접적인"것으로 명시적으로 언급되지 않는 한, 그 관계는 다른 중간 요소들이 제1 및 제2 요소들 사이에 존재하지 않는 직접적인 관계일 수 있지만, 또한 하나 이상의 개재 요소들이 제1 요소와 제2 요소 사이에 (공간적으로 또는 기능적으로) 존재하는 간접적인 관계일 수도 있다. 본원에 사용된 바와 같이, 어구 A, B 및 C 중 적어도 하나는 비-배타적 논리 OR을 사용하여 논리 (A OR B OR C)를 의미하는 것으로 해석되어야 하며, "A중 적어도 하나, B중 적어도 하나 및 C중 적어도 하나"를 의미하는 것으로 해석되어서는 안된다.
도면들에서, 화살표로 나타낸 화살표의 방향은 일반적으로 예시에서 관련성이 있는(of interest) 정보(예컨대, 데이터 또는 명령어들)의 흐름을 나타낸다. 예를 들어, 요소 A와 요소 B가 다양한 정보를 교환하지만, 요소 A로부터 요소 B로 송신되는 정보가 예시와 관련이 있는 경우, 화살표는 요소 A에서 요소 B를 향해 가리킬 수 있다. 이러한 단방향 화살표는 어떤 다른 정보도 요소 B로부터 요소 A로 송신되지 않는다고 암시하는 것이 아니다. 또한, 요소 A로부터 요소 B로 전송된 정보에 대해, 요소 B는 정보의 요청들 또는 수신 응답 확인들을 요소 A에게 전송할 수 있다.
아래의 정의들을 포함하여 본 출원에서 용어 "모듈" 또는 용어 "제어기"는 용어, "회로"로 대체될 수 있다. 용어 "모듈"은 ASIC(Application Specific Integrated Circuit); 디지털, 아날로그 또는 혼합 아날로그/디지털 이산 회로; 디지털, 아날로그 또는 혼합 아날로그/디지털 집적 회로; 조합 논리 회로; FPGA(Field Programmable Gate Array); 코드를 실행하는 프로세서 회로(공유, 전용 또는 그룹); 프로세서 회로에 의해 실행되는 코드를 저장하는 메모리 회로(공유, 전용 또는 그룹); 설명된 기능을 제공하는 다른 적합한 하드웨어 컴포넌트들; 또는 시스템-온-칩과 같이 상기의 일부 또는 전부의 조합을 지칭하거나, 그 일부이거나, 또는 그를 포함할 수 있다.
모듈은 하나 이상의 인터페이스 회로들을 포함할 수 있다. 일부 예시들에서, 인터페이스 회로들은 근거리 통신망(LAN), 인터넷, 광역 통신망(WAN) 또는 이들의 조합에 연결된 유선 또는 무선 인터페이스들을 포함할 수 있다. 본 개시 내용의 임의의 주어진 모듈의 기능은 인터페이스 회로들을 통해 연결된 다수의 모듈들에 분산될 수 있다. 예를 들어, 다수의 모듈들이 부하 분산(load balancing)을 허용할 수 있다. 다른 예시에서, 서버(원격 또는 클라우드라고도 또한 알려짐) 모듈은 클라이언트 모듈 대신 일부 기능을 달성할 수 있다.
상기 사용된 용어, 코드는 소프트웨어, 펌웨어 및/또는 마이크로 코드를 포함할 수 있으며, 프로그램들, 루틴들, 기능들, 클래스들, 데이터 구조들 및/또는 객체들을 지칭할 수 있다. 용어, 공유 프로세서 회로는 다수의 모듈들로부터 일부 또는 모든 코드를 실행하는 단일 프로세서 회로를 포함한다. 용어, 그룹 프로세서 회로는 추가 프로세서 회로들과 결합하여 하나 이상의 모듈로부터 일부 또는 모든 코드를 실행하는 프로세서 회로를 포함한다. 다중 프로세서 회로에 대한 언급은 개별 다이들 상의 다중 프로세서 회로, 단일 다이 상의 다중 프로세서 회로, 단일 프로세서 회로의 다중 코어들, 단일 프로세서 회로의 다중 스레드들 또는 이들의 조합을 포함한다. 용어, 공유 메모리 회로는 다수의 모듈들의 일부 또는 모든 코드를 저장하는 단일 메모리 회로를 포함한다. 용어 그룹 메모리 회로는 추가 메모리들과 결합하여, 하나 이상의 모듈로부터의 일부 또는 모든 코드를 저장하는 메모리 회로를 포함한다.
용어, 메모리 회로는 용어, 컴퓨터 판독가능 매체의 서브셋이다. 본 명세서에서 사용되는 용어, 컴퓨터 판독가능 매체는 (예를 들어, 반송파 상에서) 매체를 통해 전파되는 일시적인 전기 또는 전자기 신호들을 포함하지 않으며; 따라서 용어, 컴퓨터 판독가능 매체는 유형(tangible)이고 비일시적인 것으로 간주될 수 있다. 비-일시적, 유형의 컴퓨터 판독가능 매체의 비-제한적 예들은 비 휘발성 메모리 회로들(예를 들어, 플래시 메모리 회로, 소거 가능 프로그램 가능 판독 전용 메모리 회로 또는 마스크 판독 전용 메모리 회로), 휘발성 메모리 회로들(예컨대, 정적 랜덤 액세스 메모리 회로 또는 동적 랜덤 액세스 메모리 회로), 자기 저장 매체(예컨대, 아날로그 또는 디지털 자기 테이프 또는 하드 디스크 드라이브) 및 광학 저장 매체(예컨대, CD, DVD 또는 Blu-ray 디스크)이다.
본 출원에서 설명된 장치들 및 방법들은 컴퓨터 프로그램들로 구현된 하나 이상의 특정 기능들을 실행하도록 범용 컴퓨터를 구성함으로써 생성된 특수 목적 컴퓨터에 의해 부분적으로 또는 완전히 구현될 수 있다. 전술한 기능 블록들, 흐름도 컴포넌트들 및 기타 요소들은 숙련된 기술자 또는 프로그래머의 일상적인 작업에 의해 컴퓨터 프로그램들로 변환될 수 있는 소프트웨어 사양들로서의 역할을 갖는다.
컴퓨터 프로그램들은 적어도 하나의 비일시적, 유형의 컴퓨터 판독가능 매체에 저장된 프로세서 실행가능 명령어들을 포함한다. 컴퓨터 프로그램들은 또한 저장된 데이터를 포함하거나 그에 의존할 수 있다. 컴퓨터 프로그램은 특수 목적 컴퓨터의 하드웨어와 상호작용하는 기본 입/출력 시스템(BIOS), 특수 목적 컴퓨터의 특정 디바이스들과 상호작용하는 디바이스 드라이버들, 하나 이상의 운영 체제들, 사용자 애플리케이션들, 배경 서비스들, 배경 애플리케이션들 등을 포함할 수 있다.
컴퓨터 프로그램들은 다음을 포함할 수 있다: (i) 하이퍼 텍스트 마크업 언어(HTML), 확장성 생성 언어(XML) 또는 자바 스크립트 객체 표기법(JSON)과 같은 파싱될(parsed) 설명 텍스트, (ii) 어셈블리 코드, (iii) 컴파일러에 의해 소스 코드로부터 생성된 객체 코드, (iv) 인터프리터에 의한 실행을 위한 소스 코드, (v) JIT(just-in-time) 컴파일러에 의한 컴파일링 및 실행을 위한 소스 코드 등. 예를 들어, 소스 코드는 C, C++, C#, Objective-C, Swift, Haskell, Go, SQL, R, Lisp, Java®, Fortran, Perl, Pascal, Curl, OCaml, Javascript®, HTML5(하이퍼 텍스트 마크업 언어 5차 개정), Ada, ASP(Active Server Pages), PHP(PHP: Hypertext Preprocessor), Scala, Eiffel, Smalltalk, Erlang, Ruby, Flash®, Visual Basic®, Lua, MATLAB, SIMULINK 및 Python®을 포함한 언어들의 구문을 사용하여 작성될 수 있다.
10: 투어 생성 시스템 14: 사용자 디바이스들
16: 네트워크 20: 데이터 소스(들)

Claims (34)

  1. 도보 투어를 생성하는 컴퓨터 실행가능 방법으로서,
    하나 이상의 프로세서들에 의해, 네트워크를 통해 사용자 디바이스로부터 질의(query)를 수신하는 단계 - 상기 질의는 도보 투어에 대한 요청을 나타내고, (a) 위치 및 (b) 상기 도보 투어에 대한 목표 길이를 포함하는 선호도들을 포함함 -;
    상기 하나 이상의 프로세서들에 의해, 상기 사용자 디바이스의 위치 주변의 지리적 영역의 그래프를 획득하는 단계 - 상기 그래프는 경로 교차점들을 나타내는 노드들 및 상기 노드들의 쌍들을 연결하는 경로들을 나타내는 아크(arc)들을 포함함 -;
    상기 하나 이상의 프로세서들에 의해, 상기 아크들 각각의 특성들 및 상기 선호도들에 기초하여 상기 아크들에 대한 스코어들을 결정하는 단계;
    상기 하나 이상의 프로세서들에 의해, 상기 아크들 중 연결 아크들을 선택하는 단계 - 상기 아크들 중 연결 아크들을 선택하는 것은 상기 아크들 중 상기 연결 아크들의 스코어들, 상기 아크들 중 선택된 연결 아크들의 길이들 및 상기 목표 길이에 기초함 -;
    상기 하나 이상의 프로세서들에 의해, 상기 도보 투어의 초기 설정(initialize)을 위해 상기 아크들 중 상기 선택된 연결 아크들을 상기 도보 투어에 추가하는 단계; 및
    상기 하나 이상의 프로세서들에 의해, 사용자 인터페이스 상의 디스플레이를 위해 상기 도보 투어를 상기 네트워크를 통해 상기 사용자 디바이스로 송신하는 단계를 포함하는, 컴퓨터 실행가능 방법.
  2. 제1항에 있어서,
    상기 아크들 중 연결 아크들을 선택하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 도보 투어가 어느 한 위치에서 시작하고 상기 어느 한 위치에서 끝나도록 상기 아크들 중 상기 연결 아크들을 선택하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  3. 제1항에 있어서,
    상기 아크들에 대한 스코어들을 결정하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 아크들 중, 오픈 스트리트 맵(Open Street Map, OSM) 데이터베이스에서 식별된 보행 경로(foot path)들, 주거 경로(residential path)들 및 도보 경로(pedestrian path)들 중 적어도 하나에 대응하는 아크들의 스코어들을 증가시키는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  4. 제1항에 있어서,
    상기 아크들에 대한 스코어들을 결정하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 아크들 중, 상기 선호도들에 포함된 사용자 정의 경로 유형과 동일한 경로 유형을 갖는 아크들의 스코어들을 증가시키는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  5. 제4항에 있어서,
    상기 아크들에 대한 스코어들을 결정하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 아크들 중, 상기 선호도들에 포함된 상기 사용자 정의 경로 유형과 상이한 경로 유형들을 갖는 아크들의 스코어들을 감소시키는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  6. 제1항에 있어서,
    상기 아크들에 대한 상기 스코어들을 결정하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 아크들 중, 오픈 스트리트 맵(OSM) 데이터베이스에서 식별된 공원들, 개방 공간들(open spaces), 경관이 좋은 관심 지역들(scenic points of interest) 및 지리적 형태들 중 적어도 하나와 미리 결정된 거리 내에 위치하는 아크들의 스코어들을 증가시키는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  7. 제1항에 있어서,
    상기 아크들에 대한 스코어들을 결정하는 단계는, 상기 하나 이상의 프로세서들에 의해, 상기 아크들 중, 오픈 스트리트 맵(OSM) 데이터베이스에서 식별된 강들, 산들 및 하이킹 등산로들 중 적어도 하나와 미리 결정된 거리 내에 위치하는 아크들의 스코어들을 증가시키는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  8. 제1항에 있어서,
    상기 아크들에 대한 스코어들을 결정하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 아크들 중, 오픈 스트리트 맵(OSM) 데이터베이스에서 식별된 차량 도로들과 미리 결정된 거리 내에 위치하는 아크들의 스코어들을 감소시키는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  9. 제1항에 있어서,
    상기 아크들에 대한 스코어들을 결정하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 아크들 중, 오픈 스트리트 맵(OSM) 데이터베이스에서 식별된 관심 지점을 통과하는 아크들의 스코어들을 증가시키는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  10. 제1항에 있어서,
    상기 아크들에 대한 스코어들을 결정하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 아크들 중 두 개의 아크들 사이의 교차각에 기초하여 상기 두 개의 아크들의 스코어들을 선택적으로 감소시키는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  11. 제1항에 있어서,
    상기 아크들에 대한 스코어들을 결정하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 투어가 상기 아크들 중 하나의 아크를 2회 이상 포함하는 것에 기초하여 상기 하나의 아크의 스코어를 감소시키는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  12. 제1항에 있어서,
    상기 아크들에 대한 스코어들을 결정하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 투어가 두 개의 노드들 중 하나를 2회 이상 통과하는 것에 기초하여 상기 두 개의 노드들 사이의 상기 아크들 중 하나의 아크의 스코어를 감소시키는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  13. 제1항에 있어서,
    상기 아크들 중 연결 아크들을 선택하는 단계는, 상기 하나 이상의 프로세서들에 의해:
    (a) 제1 위치에서 시작하여 상기 제1 위치와 상이한 제N 위치에서 종료되는 제1 아크를 선택하는 단계;
    (b) 상기 제N 위치와 거리 d 내에 있는 노드들을 식별하는 단계;
    (c) 상기 제N 위치에서 시작하여 상기 노드들에서 종료되는 아크들을 각각 식별하는 단계;
    (d) 상기 식별된 아크들의 스코어들에 기초하여 상기 식별된 아크들 중 하나의 아크를 선택하는 단계 - 상기 아크들 중의 상기 선택된 연결 아크들을 추가하는 단계는, 상기 식별된 아크들 중 상기 하나의 선택된 아크를 상기 도보 투어에 추가하는 단계를 포함함 -; 및
    (e) 상기 도보 투어의 길이가 상기 선호도들에 포함된 상기 목표 길이의 미리 결정된 범위 내에 들어갈 때까지 (b) 내지 (d)를 반복하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  14. 제13항에 있어서,
    상기 하나 이상의 프로세서들에 의해, 상기 거리 d를 임의로 선택하는 단계
    를 더 포함하는, 컴퓨터 실행가능 방법.
  15. 제13항에 있어서,
    상기 하나 이상의 프로세서들에 의해, 상기 제N 위치와 상기 거리 d 내에 0개의 노드들이 위치할 때, 상기 거리 d를 증가시키는 단계
    를 더 포함하는, 컴퓨터 실행가능 방법.
  16. 제13항에 있어서,
    (d) 상기 식별된 아크들 중 하나의 아크를 선택하는 단계는,
    상기 하나 이상의 프로세서들에 의해:
    상기 식별된 아크들 중, k 개의 가장 높은 스코어들을 갖는 k개의 아크들을 식별하는 단계 - 여기서 k는 1보다 큰 정수임 -; 및
    상기 식별된 아크들 중 상기 k개의 아크들로부터 상기 식별된 아크들 중 상기 하나의 아크를 임의로 선택하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  17. 제13항에 있어서,
    (d) 상기 식별된 아크들 중 하나의 아크를 선택하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 식별된 아크들 중, 가장 높은 스코어를 갖는 상기 하나의 아크를 선택하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  18. 제1항에 있어서,
    상기 도보 투어를 상기 네트워크를 통해 상기 사용자 디바이스로 송신하는 단계 이전에, 상기 하나 이상의 프로세서들에 의해:
    상기 아크들 중 상기 선택된 연결 아크들 중 하나의 아크를 선택하는 단계;
    상기 아크들 중 상기 선택된 연결 아크들 중 상기 하나의 아크를 대체하기 위한 하나 이상의 대체 아크들을 식별하는 단계; 및
    상기 도보 투어 내에서 상기 아크들 중 상기 선택된 연결 아크들 중 상기 하나의 아크를 상기 하나 이상의 대체 아크들로 대체하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  19. 제18항에 있어서,
    상기 하나 이상의 대체 아크들을 식별하는 단계는,
    상기 하나 이상의 대체 아크들의 스코어들에 기초하여 상기 하나 이상의 대체 아크들을 식별하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  20. 제1항에 있어서,
    상기 도보 투어를 상기 네트워크를 통해 상기 사용자 디바이스로 송신하는 단계 이전에, 상기 하나 이상의 프로세서들에 의해:
    제1 노드와 제2 노드 사이의 경로 세그먼트를 선택하는 단계 - 상기 경로 세그먼트는 상기 아크들 중 상기 선택된 연결 아크들 중 하나 이상의 아크들을 포함함 -; 및
    (a)와 (b)의 비교에 기초하여, 상기 경로 세그먼트를 상기 제1 노드와 상기 제2 노드 사이의 최단 경로 세그먼트로 선택적으로 대체하는 단계
    를 포함하며,
    (a)는 상기 최단 경로 세그먼트의 제1 스코어를 상기 최단 경로 세그먼트의 제1 길이로 나눈 값이고,
    (b)는 상기 경로 세그먼트의 제2 스코어를 상기 경로 세그먼트의 제2 길이로 나눈 값인, 컴퓨터 실행가능 방법.
  21. 제20항에 있어서,
    상기 경로 세그먼트를 상기 제1 노드와 상기 제2 노드 사이의 최단 경로 세그먼트로 선택적으로 대체하는 단계는,
    상기 경로 세그먼트의 상기 제2 길이가 상기 최단 경로 세그먼트의 상기 제1 길이의 2배보다 길고,
    상기 경로 세그먼트의 상기 제2 스코어가 제1 미리 결정된 값 * (상기 경로 세그먼트의 상기 아크들 중 상기 선택된 연결 아크들 중 상기 하나 이상의 아크들의 스코어들의 제1 합) * (상기 경로 세그먼트의 상기 아크들 중 상기 선택된 연결 아크들 중 상기 하나 이상의 아크들의 수)보다 적고,
    (a)가 제2 미리 결정된 값과 (b)를 곱한 것 보다 더 큰 경우,
    상기 경로 세그먼트를 상기 제1 노드와 상기 제2 노드 사이의 상기 최단 경로 세그먼트로 대체하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  22. 제1항에 있어서,
    상기 선호도들은 목표 고도 이득을 더 포함하고;
    상기 스코어들을 결정하는 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 아크들의 고도 이득들 및 상기 목표 고도 이득에 기초하여 상기 아크들에 대한 스코어들을 결정하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  23. 제1항에 있어서,
    상기 선호도들은 최대 경사도(steepness)를 더 포함하고,
    상기 스코어들을 결정하는 상기 단계는,
    상기 하나 이상의 프로세서들에 의해, 상기 아크들의 경사도들 및 상기 최대 경사도에 기초하여 상기 아크들에 대한 상기 스코어들을 결정하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  24. 제1항에 있어서,
    상기 도보 투어를 상기 네트워크를 통해 상기 사용자 디바이스로 송신한 후:
    상기 하나 이상의 프로세서들에 의해, 네트워크를 통해 상기 도보 투어의 상기 목표 길이를 조정하기 위한 요청을 상기 사용자 디바이스로부터 수신하는 단계;
    상기 요청의 수신에 응답하여, 상기 조정된 목표 길이에 기초하여:
    상기 아크들 중 상기 선택된 연결 아크들 중 적어도 하나의 아크를 선택하는 단계;
    상기 아크들 중 상기 선택된 연결 아크들 중 상기 적어도 하나의 아크를 대체하기 위한 하나 이상의 대체 아크들을 식별하는 단계;
    상기 아크들 중 상기 선택된 연결 아크들 중 상기 적어도 하나의 아크를 상기 하나 이상의 대체 아크들로 대체하여, 업데이트된 도보 투어를 생성하는 단계; 및
    상기 사용자 인터페이스 상의 디스플레이를 위해 상기 업데이트된 도보 투어를 상기 네트워크를 통해 상기 사용자 디바이스로 송신하는 단계
    를 더 포함하는, 컴퓨터 실행가능 방법.
  25. 제24항에 있어서,
    상기 요청을 수신하는 단계는,
    상기 사용자 디바이스가 상기 도보 투어의 적어도 일부를 따라간 후에 상기 요청을 수신하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  26. 제24항에 있어서, 상기 요청은 상기 목표 길이의 증가 및 감소 중 하나에 대한 요청을 포함하는, 컴퓨터 실행가능 방법.
  27. 제24항에 있어서,
    상기 아크들 중 연결 아크들을 선택하는 단계는,
    이전에 따라간 도보 투어들에 관한 사용자 데이터 없이 상기 아크들 중 연결 아크들을 선택하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  28. 제1항에 있어서,
    상기 하나 이상의 프로세서들에 의해, 상기 아크들 중 상기 선택된 연결 아크들 중 하나를 대체하기 위한 적어도 하나의 대안적인 아크를 결정하는 단계; 및
    상기 사용자 인터페이스 상의 상기 도보 투어의 디스플레이를 위해 상기 적어도 하나의 대안적인 아크를 상기 사용자 디바이스에 송신하는 단계
    를 더 포함하는, 컴퓨터 실행가능 방법.
  29. 제28항에 있어서,
    상기 적어도 하나의 대안적인 아크를 결정하는 단계는,
    상기 도보 투어의 시작 전에 상기 적어도 하나의 대안적인 아크를 결정하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  30. 제28항에 있어서,
    상기 적어도 하나의 대안적인 아크를 결정하는 단계는,
    상기 도보 투어의 횡단 동안, 수신된 상기 도보 투어의 목표 길이를 조정하라는 요청을 나타내는 사용자 입력의 수신에 응답하여 상기 적어도 하나의 대안적인 아크를 결정하는 단계
    를 포함하는, 컴퓨터 실행가능 방법.
  31. 제28항에 있어서,
    상기 사용자 디바이스가 상기 적어도 하나의 대안적인 아크에 진입하는 것; 및
    상기 사용자 디바이스가 상기 적어도 하나의 대안적인 아크를 빠져나가는 것
    중 적어도 하나에 응답하여, 상기 사용자 디바이스에 의해, 시각, 청각 또는 햅틱 출력 중 하나의 부재 또는 존재를 이용하여 시그널링하는 단계
    를 더 포함하는, 컴퓨터 실행가능 방법.
  32. 제1항에 있어서,
    상기 하나 이상의 프로세서들에 의해, 상기 도보 투어를 따라 상기 사용자 디바이스의 사용자를 안내하기 위해 감각 식별가능(sensory discernable) 출력 디바이스를 사용하여 내비게이션 관련 감각 식별가능 피드백을 제공하는 단계
    를 더 포함하는, 컴퓨터 실행가능 방법.
  33. 도보 투어를 생성하기 위한 시스템으로서,
    하나 이상의 프로세서들; 및
    코드를 포함하는 메모리
    를 포함하며,
    상기 코드는, 상기 하나 이상의 프로세서들에 의해 실행될 때:
    네트워크를 통해 사용자 디바이스로부터 질의를 수신하는 것 - 상기 질의는 도보 투어에 대한 요청을 나타내고, (a) 위치 및 (b) 상기 도보 투어에 대한 목표 길이를 포함하는 선호도들을 포함함 -;
    상기 사용자 디바이스의 위치 주변의 지리적 영역의 그래프를 획득하는 것 - 상기 그래프는 경로 교차점들을 나타내는 노드들 및 상기 노드들의 쌍들을 연결하는 경로들을 나타내는 아크들을 포함함 -;
    상기 아크들 각각의 특성들 및 상기 선호도들에 기초하여 상기 아크들에 대한 스코어들을 결정하는 것;
    상기 아크들 중 연결 아크들을 선택하는 것 - 상기 아크들 중 연결 아크들을 선택하는 것은 상기 아크들 중 상기 연결 아크들의 스코어들, 상기 아크들 중 선택된 연결 아크들의 길이들 및 상기 목표 길이에 기초함 -;
    상기 도보 투어의 초기 설정을 위해 상기 아크들 중 상기 선택된 연결 아크들을 상기 도보 투어에 추가하는 것; 및
    사용자 인터페이스 상의 디스플레이를 위해 상기 도보 투어를 상기 네트워크를 통해 상기 사용자 디바이스로 송신하는 것
    을 포함하는 기능들을 수행하는, 시스템.
  34. 도보 투어를 생성하기 위한 시스템으로서,
    네트워크를 통해 사용자 디바이스로부터 질의를 수신하기 위한 수단 - 상기 질의는 도보 투어에 대한 요청을 나타내고, (a) 위치 및 (b) 상기 도보 투어에 대한 목표 길이를 포함하는 선호도들을 포함함 -;
    상기 사용자 디바이스의 위치 주변의 지리적 영역의 그래프를 획득하고 - 상기 그래프는 경로 교차점들을 나타내는 노드들 및 상기 노드들의 쌍들을 연결하는 경로들을 나타내는 아크들을 포함함 -;
    상기 아크들 각각의 특성들 및 상기 선호도들에 기초하여 상기 아크들에 대한 스코어들을 결정하고;
    상기 아크들 중 연결 아크들을 선택하고 - 상기 아크들 중 연결 아크들을 선택하는 것은 상기 아크들 중 상기 연결 아크들의 스코어들, 상기 아크들 중 선택된 연결 아크들의 길이들 및 상기 목표 길이에 기초함 -;
    상기 도보 투어의 초기 설정을 위해 상기 아크들 중 상기 선택된 연결 아크들을 상기 도보 투어에 추가하기 위한 수단; 및
    사용자 인터페이스 상의 디스플레이를 위해 상기 도보 투어를 상기 네트워크를 통해 상기 사용자 디바이스로 송신하기 위한 수단
    을 포함하는, 시스템.
KR1020200031034A 2019-03-29 2020-03-12 도보 투어 생성 시스템 및 방법 KR20200115151A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
EP19305425.1 2019-03-29
EP19305425.1A EP3715790A1 (en) 2019-03-29 2019-03-29 System and method for generating tours
US16/690,608 US11099016B2 (en) 2019-03-29 2019-11-21 System and method for generating pedestrian tours
US16/690,608 2019-11-21

Publications (1)

Publication Number Publication Date
KR20200115151A true KR20200115151A (ko) 2020-10-07

Family

ID=66223641

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200031034A KR20200115151A (ko) 2019-03-29 2020-03-12 도보 투어 생성 시스템 및 방법

Country Status (4)

Country Link
US (1) US11099016B2 (ko)
EP (1) EP3715790A1 (ko)
JP (1) JP7133580B2 (ko)
KR (1) KR20200115151A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220096232A (ko) * 2020-12-30 2022-07-07 권재연 녹지 환경 기반의 보행경로 안내를 위한 장치 및 이를 위한 방법
KR20230036438A (ko) * 2021-09-07 2023-03-14 경상국립대학교산학협력단 무인 비행체의 비행 경로 미션파일 자동 생성장치 및 방법
KR20240080555A (ko) 2022-11-30 2024-06-07 주식회사 쓰리에스테크 운반용 팔레트
KR20240080558A (ko) 2022-11-30 2024-06-07 주식회사 쓰리에스테크 운반용 팔레트에 설치된 결박장치

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11204251B2 (en) * 2018-05-25 2021-12-21 The University Of Chicago Routing in navigation applications based on restorative score
US11631122B2 (en) * 2020-09-23 2023-04-18 Shopify Inc. Computer-implemented systems and methods for in-store route recommendations
US11940282B2 (en) * 2020-10-12 2024-03-26 Naver Corporation Apparatus and method for hybrid navigation of a pedestrian tour
USD953371S1 (en) 2021-10-22 2022-05-31 BioReference Health, LLC Display screen or portion thereof with animated graphical user interface
CN114046798B (zh) * 2021-11-16 2023-07-25 中国联合网络通信集团有限公司 一种辅助探索城市的路径规划方法、装置及存储介质
CN114509793A (zh) * 2022-01-28 2022-05-17 镇江市高等专科学校 一种基于北斗定位的景区全方位自助旅游控制系统
US11983396B1 (en) * 2022-05-11 2024-05-14 Artglass Usa Llc Generating augmented reality tours

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020128773A1 (en) 2001-03-09 2002-09-12 Chowanic Andrea Bowes Multiple navigation routes based on user preferences and real time parameters
US6691026B2 (en) * 2001-03-29 2004-02-10 Intellisist, Llc Vehicle navigation system and method
US7925540B1 (en) 2004-10-15 2011-04-12 Rearden Commerce, Inc. Method and system for an automated trip planner
US7627423B2 (en) 2005-03-10 2009-12-01 Wright Ventures, Llc Route based on distance
US8825370B2 (en) 2005-05-27 2014-09-02 Yahoo! Inc. Interactive map-based travel guide
US7702456B2 (en) 2006-04-14 2010-04-20 Scenera Technologies, Llc System and method for presenting a computed route
JP2008128779A (ja) 2006-11-20 2008-06-05 Denso Corp ルート探索装置
US20080319773A1 (en) 2007-06-21 2008-12-25 Microsoft Corporation Personalized travel guide
CN102177413A (zh) * 2008-10-09 2011-09-07 通腾科技股份有限公司 数据充实设备及确定时间访问信息的方法
DE102010006702A1 (de) 2009-02-26 2010-09-02 Navigon Ag Verfahren und Vorrichtung zur Berechnung alternativer Routen in einem Navigationssystem
US8942918B2 (en) 2009-06-19 2015-01-27 GM Global Technology Operations LLC Multiple route pre-calculation and presentation for a vehicle navigation system
JP2011120740A (ja) 2009-12-10 2011-06-23 Nec Corp ジョギング支援装置、ジョギング支援方法およびプログラム
JP5648447B2 (ja) 2010-11-29 2015-01-07 ソニー株式会社 周遊ルート生成装置、周遊ルート生成方法、及びプログラム
KR20140014262A (ko) 2011-06-03 2014-02-05 애플 인크. 대안 내비게이션 경로들을 비교 및 선택하기 위한 장치들 및 방법들
JP5912344B2 (ja) 2011-08-31 2016-04-27 株式会社 ミックウェア ナビゲーション装置、ナビゲーション方法、およびプログラム
JP5789482B2 (ja) 2011-11-08 2015-10-07 株式会社 ミックウェア 運転支援システム、第一情報処理装置、およびプログラム
CN104081158B (zh) 2011-11-18 2018-02-02 通腾北美有限公司 用于创建供在产生跨越电子地图的路线中使用的成本数据的方法及设备
US8712684B2 (en) 2012-05-02 2014-04-29 Mitac International Corp. Method of creating exercise routes for a user and related personal navigation device
US8655591B2 (en) 2012-05-09 2014-02-18 Mitac International Corp. Method of creating varied exercise routes for a user
US8996312B1 (en) 2012-06-27 2015-03-31 Google Inc. Systems, methods, and computer-readable media for providing alternative trips for a computer-implemented trip search
US20140236768A1 (en) * 2012-10-05 2014-08-21 Redfin Corporation Physical references for providing supplemental real estate information
EP2720001A1 (en) * 2012-10-15 2014-04-16 GN Store Nord A/S A navigation system with a hearing device
US9918199B2 (en) * 2013-03-01 2018-03-13 Harley E. ROUDA, JR. Subject matter based tour guide
US9255807B2 (en) 2013-03-15 2016-02-09 Garmin Switzerland Gmbh System, apparatus, and procedure for providing route suggestions
US20140317511A1 (en) * 2013-04-18 2014-10-23 Google Inc. Systems and Methods for Generating Photographic Tours of Geographic Locations
US20140347973A1 (en) * 2013-05-24 2014-11-27 WorldStrides System for Maintaining the Integrity of a Tour Group
GB201316013D0 (en) 2013-09-09 2013-10-23 Tomtom Dev Germany Gmbh Methods and systems for generating alternative routes
US9297651B2 (en) 2013-12-11 2016-03-29 Strava, Inc. Generating user preference activity maps
US10625469B2 (en) * 2014-01-16 2020-04-21 Hewlett-Packard Development Company, L.P. Generating three-dimensional objects
US9494440B2 (en) 2014-06-30 2016-11-15 Strol, LLC Generating travel routes for increased visual interest
CN106682755A (zh) * 2015-11-10 2017-05-17 深圳富泰宏精密工业有限公司 电子设备及实现旅游路线规划的方法
CN106203677A (zh) 2016-06-28 2016-12-07 上海斐讯数据通信技术有限公司 一种行程生成系统和方法
JP6694356B2 (ja) 2016-09-08 2020-05-13 株式会社ゼンリンデータコム 指定ルート作成装置、指定ルート作成方法及び指定ルート作成プログラム
US10880931B2 (en) * 2018-10-12 2020-12-29 Realtek Semiconductor Corp. User pairing method, wireless station and wireless system
US20200193335A1 (en) * 2018-12-13 2020-06-18 Accenture Global Solutions Limited Seamless management of connected environments

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220096232A (ko) * 2020-12-30 2022-07-07 권재연 녹지 환경 기반의 보행경로 안내를 위한 장치 및 이를 위한 방법
KR20230036438A (ko) * 2021-09-07 2023-03-14 경상국립대학교산학협력단 무인 비행체의 비행 경로 미션파일 자동 생성장치 및 방법
KR20240080555A (ko) 2022-11-30 2024-06-07 주식회사 쓰리에스테크 운반용 팔레트
KR20240080558A (ko) 2022-11-30 2024-06-07 주식회사 쓰리에스테크 운반용 팔레트에 설치된 결박장치

Also Published As

Publication number Publication date
JP2020165974A (ja) 2020-10-08
EP3715790A1 (en) 2020-09-30
US20200309545A1 (en) 2020-10-01
US11099016B2 (en) 2021-08-24
JP7133580B2 (ja) 2022-09-08

Similar Documents

Publication Publication Date Title
KR20200115151A (ko) 도보 투어 생성 시스템 및 방법
US10317219B1 (en) System and method for the calculation and use of travel times in search and other applications
Upchurch et al. Using GIS to generate mutually exclusive service areas linking travel on and off a network
US9672735B2 (en) Traffic classification based on spatial neighbor model
US9536146B2 (en) Determine spatiotemporal causal interactions in data
Gavalas et al. Web application for recommending personalised mobile tourist routes
US10837791B2 (en) Generating and recommending customized traversal routes
US20060200303A1 (en) The static or dynamic roadway travel time system to determine the path with least travel time between two places
Bucher et al. A heuristic for multi-modal route planning
CN112801399B (zh) 一种路径生成方法、装置、终端设备及存储介质
Filomena et al. Modelling the effect of landmarks on pedestrian dynamics in urban environments
CN107659596B (zh) 一种动态导航的方法及装置、终端
Cosido et al. Automatic calculation of bicycle routes by combining meta-heuristics and GIS techniques within the framework of smart cities
Mota et al. A method using GIS integrated Voronoi diagrams for commuter rail station identification: a case study from Brasilia (Brazil)
Pérez‐delHoyo et al. Addressing new challenges in smart urban planning using Information and Communication Technologies
Zhang et al. An improved method for urban Walk Score calculation considering perception of the street environment
Ismail et al. Integration of geospatial multi-mode transportation Systems in Kuala Lumpur
Cooper et al. Testing the ability of Multivariate Hybrid Spatial Network Analysis to predict the effect of a major urban redevelopment on pedestrian flows
Cohen et al. Pedestrian Traffic flow prediction based on ANN model and OSM data
US11482099B2 (en) Method and apparatus for preventing traffic over-reporting via identifying misleading probe data
US11473928B2 (en) System and method for generating origin-independent access maps
Shin et al. The impact of built environment on bike commuting: Utilising strava bike data and geographically weighted models
Cohen et al. Leveraging OpenStreetMap to investigate urban accessibility and safety of visually impaired pedestrians
Artemenko et al. Using Mobile Location-based Recommender Systems for Providing Real Time Recommendations for Social Distancing Urban Route Planning
Wang et al. The Impacts of Multiscale Urban Road Network Centrality on Taxi Travel: A Case Study in Shenzhen

Legal Events

Date Code Title Description
A201 Request for examination