Graph partitioning for memory restricted routing
By partitioning large road network graphs into smaller regions and using high-level paths for route computation, the method addresses the challenge of efficient route planning on mobile devices with limited resources, achieving reduced computational time and memory usage.
Patent Information
- Application Number
- PCT/EP2023/079015
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-10-18
- Publication Date
- 2025-04-24
AI Technical Summary
Existing route planning software struggles with efficient computation of optimal routes in large road networks, particularly on mobile devices with limited memory and processing power.
The method involves partitioning a large graph representing a road network into smaller regions, generating a set of partitioned graphs and a secondary graph that defines connectivity among these partitions, and then transmitting this data to a mobile device for efficient route computation using high-level paths and shortcuts.
This approach reduces computational time and memory requirements, enabling efficient route computation on mobile devices for large and complex road networks while maintaining low processing latency.
Smart Images

Figure EP2023079015_24042025_PF_FP_ABST
Abstract
Description
[0001] GRAPH PARTITIONING FOR MEMORY RESTRICTED ROUTING
[0002] TECHNICAL FIELD
[0003] The present disclosure relates, in general, to determining the best route between two given locations. Aspects of the disclosure relate to determining a shortest path between two locations.
[0004] BACKGROUND
[0005] A key ingredient of modern map applications is a routing engine that can find the best routes between two given locations of a road network. This task can be translated into finding point- to-point shortest paths in a graph representing the road network. Route planning is a popular application for mobile devices and low-end hardware.
[0006] In particular, mobile devices are often capable of providing a user with detailed road networks of a city or a country. Existing route planning software includes the ability to calculate the best route between two locations. The user can select two locations and the mobile device will output the directions to reach the destination from the source. The most optimal directions are typically selected based on distance, travel time, traffic data, and / or similar. However, retrieving the map and computing the most optimal (considering, for example, metrics such as distance and / or travel time) route between the locations may require significant computational time and resources. For example, a mobile device may struggle to process road networks of continental size.
[0007] Common road-mapping programs compute the optimal route using an algorithm based on (or corresponding to) Dijkstra’s algorithm. The algorithm runs in almost linear time with very little overhead. However, the computational time becomes significant when continental-sized graphs / maps are processed. Various techniques to decrease the computational time may be utilised. For example, customisable route planning (CRP) computes shortest paths on large road networks using arbitrary metrics (cost functions). Such approach enables real-time queries, but has a very large memory footprint, as the entire road network has to be held in the main memory of a device supporting the algorithm. Consequently, such a solution may not be suitable for mobile devices and low-end hardware. SUMMARY
[0008] An objective of the present disclosure is to enable efficient route computation under limited memory and processing power, while supporting graphs of arbitrary size and complexity.
[0009] The foregoing and other objectives are achieved by the features of the independent claims.
[0010] Further implementation forms are apparent from the dependent claims, the description and the Figures.
[0011] A first aspect of the present disclosure provides a method of determining a shortest path between two locations, the method comprising receiving, by a first device, a first graph representing a graph network comprising multiple regions, wherein each region comprises multiple vertices and multiple edges, identifying each of the multiple regions, and transmitting the first graph to a mobile device, partitioning, by the first device, the first graph based on the identified multiple regions to thereby generate a set of partitioned graphs, wherein each of the identified multiple regions corresponds to a respective partitioned graph from the set of partitioned graphs, generating, by the first device, a second graph, wherein the second graph defines comprises the set of partitioned graphs and information defining connectivity among the set of partitioned graphs, and transmitting the second graph to a mobile device, traversing, by the mobile device, the second graph to determine a high-level path comprising multiple shortcuts representing the edges of the multiple edges of the first graph that connect a first vertex and a second vertex, determining, by the mobile device, a shortest path between the first vertex and the second vertex, wherein the shortest path is determined based on the high-level path, wherein the shortest path comprises the edges of the multiple edges of the first graph that connect the first vertex and the second vertex, and outputting, by the mobile device, the shortest path.
[0012] Accordingly, by utilising a split scheme for both the graph network and the partition data, flexibility of memory handling can be enhanced while keeping the processing latency at a low level. Furthermore, processing of the more complex graph network data can be minimised, therefore increasing the processing’s efficiency.
[0013] In an implementation of the first aspect, the graph network may represent a transport network or a communications network.
[0014] Partitioning the first graph may comprise applying multilevel partitioning to thereby generate a set of multilevel partitioned graphs. The information defining connectivity may comprise associations among the set of partitioned graphs based on border links, and the border links may comprise edges that traverse at least two of the multiple regions of the first graph.
[0015] The method may further comprise, in response to determining the high-level path, releasing, from a memory of the mobile device, the partitioned graphs of the set of partitioned graphs that the high-level path does not traverse.
[0016] Each of the shortcuts of the multiple shortcuts may correspond to a plurality of edges of the first graph, and the high-level path may comprise a shortest path comprised of the multiple shortcuts.
[0017] Retrieving the shortest path between the first vertex and the second vertex may comprise retrieving the edges of the multiple edges that are represented by the high-level path.
[0018] A second aspect of the present disclosure provides a system comprising a first device configured to receive a first graph representing a graph network comprising multiple regions, wherein each region comprises multiple vertices and multiple edges, identify each of the multiple regions, partition the first graph based on the identified multiple regions to thereby generate a set of partitioned graphs, wherein each of the identified multiple regions corresponds to a respective partitioned graph from the set of partitioned graphs, and generate a second graph, wherein the second graph defines comprises the set of partitioned graphs and information defining connectivity among the set of partitioned graphs, and transmit the second graph to a mobile device, wherein the mobile device is configured to traverse the second graph to determine a high-level path multiple shortcuts representing the edges of the multiple edges of the first graph that connect a first vertex and a second vertex, retrieve a shortest path between the first vertex and the second vertex, wherein the shortest path is determined based on the high-level path, wherein the shortest path comprises the edges of the multiple edges of the first graph that connect the first vertex and the second vertex, and output the shortest path.
[0019] In an implementation of the second aspect, the first device may comprise a cloud server, and / or wherein the graph network may represent a transport network or a communications network.
[0020] The first device may be configured to partition the first graph based on the identified multilevel regions by applying multilevel partitioning to thereby generate a set of multilevel partitioned graphs. The information defining connectivity among the set of partitioned graphs may comprise associations among the set of partitioned graphs based on border links, wherein the border links may comprise edges that traverse at least two of the multiple regions of the first graph.
[0021] The mobile device may be configured to, in response to determining the high-level path, release, from a memory, the partitioned graphs of the set of partitioned graphs that the high-level path does not traverse.
[0022] Each of the shortcuts of the multiple shortcuts may correspond to a plurality of edges of the first graph.
[0023] The mobile device may be configured to retrieve the shortest path between the first vertex the second vertex by retrieving the edges of the multiple edges that are represented by the high- level path.
[0024] A third aspect of the present disclosure provides a computer readable storage medium comprising computer program code, accessible by an apparatus comprising a processor, to provide instructions and / or data to the apparatus, the computer program code configured to, with the processor, cause the apparatus to perform the steps of the method described herein.
[0025] These and other aspects of the invention will be apparent from the embodiment s) described below.
[0026] BRIEF DESCRIPTION OF THE DRAWINGS
[0027] In order that the present invention may be more readily understood, embodiments of the invention will now be described, by way of example, with reference to the accompanying drawings, in which:
[0028] Figure 1 is a flow chart of a method for determining a shortest path between two locations according to an example;
[0029] Figure 2 is a schematic representation of a first graph according to an example;
[0030] Figure 3 is a schematic representation of partitioning the first graph according to an example;
[0031] Figure 4 is a schematic representation of a shortcut according to an example; and
[0032] Figure 5 is a schematic representation of a system according to an example. DETAILED DESCRIPTION
[0033] Example embodiments are described below in sufficient detail to enable those of ordinary skill in the art to embody and implement the systems and processes herein described. It is important to understand that embodiments can be provided in many alternate forms and should not be construed as limited to the examples set forth herein.
[0034] Accordingly, while embodiments can be modified in various ways and take on various alternative forms, specific embodiments thereof are shown in the drawings and described in detail below as examples. There is no intent to limit to the particular forms disclosed. On the contrary, all modifications, equivalents, and alternatives falling within the scope of the appended claims should be included. Elements of the example embodiments are consistently denoted by the same reference numerals throughout the drawings and detailed description where appropriate.
[0035] The terminology used herein to describe embodiments is not intended to limit the scope. The articles “a,” “an,” and “the” are singular in that they have a single referent, however the use of the singular form in the present document should not preclude the presence of more than one referent. In other words, elements referred to in the singular can number one or more, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises,” “comprising,” “includes,” and / or “including,” when used herein, specify the presence of stated features, items, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, items, steps, operations, elements, components, and / or groups thereof.
[0036] Unless otherwise defined, all terms (including technical and scientific terms) used herein are to be interpreted as is customary in the art. It will be further understood that terms in common usage should also be interpreted as is customary in the relevant art and not in an idealized or overly formal sense unless expressly so defined herein.
[0037] Examples in the present disclosure can be provided as methods, systems or machine-readable instructions, such as any combination of software, hardware, firmware or the like. Such machine-readable instructions may be included on a computer readable storage medium (including but not limited to disc storage, CD-ROM, optical storage, etc.) having computer readable program codes therein or thereon. The present disclosure is described with reference to flow charts and / or block diagrams of the method, devices and systems according to examples of the present disclosure. Although the flow diagrams described above show a specific order of execution, the order of execution may differ from that which is depicted. Blocks described in relation to one flow chart may be combined with those of another flow chart. In some examples, some blocks of the flow diagrams may not be necessary and / or additional blocks may be added. It shall be understood that each flow and / or block in the flow charts and / or block diagrams, as well as combinations of the flows and / or diagrams in the flow charts and / or block diagrams can be realized by machine readable instructions.
[0038] The machine-readable instructions may, for example, be executed by a machine such as a general-purpose computer, user equipment such as a smart device, e.g., a smart phone, a special purpose computer, an embedded processor or processors of other programmable data processing devices to realize the functions described in the description and diagrams. In particular, a processor or processing apparatus may execute the machine-readable instructions. Thus, modules of apparatus (for example, a module implementing a comparator unit, or a firewall structure and so on) may be implemented by a processor executing machine readable instructions stored in a memory, or a processor operating in accordance with instructions embedded in logic circuitry. The term 'processor' is to be interpreted broadly to include a CPU, processing unit, ASIC, logic unit, or programmable gate set etc. The methods and modules may all be performed by a single processor or divided amongst several processors.
[0039] Such machine-readable instructions may also be stored in a computer readable storage that can guide the computer or other programmable data processing devices to operate in a specific mode. For example, the instructions may be provided on a non-transitory computer readable storage medium encoded with instructions, executable by a processor.
[0040] Figure 1 is a flow chart of a method for determining a shortest path between two locations according to an example. The method can be considered to consist of two main stages - a preprocessing stage (for example, partitioning) and a query stage (for example, traversing).
[0041] The method 100 comprises, in block 101, receiving, by a first device, a first graph representing a graph network comprising multiple regions, wherein each region comprises multiple vertices and multiple edges. In addition to the multiple vertices and multiple edges, each region may comprise additional graph properties. These properties may comprise (but are not limited to) link direction (e.g., whether a link / road is uni-directional or bi-directional), link speed limits (e.g., road speed limit), link connections (i.e., how the edges / roads are connected to each other), information relating to the version of the graph network data (e.g. version of the map data), road name information, and similar. The first device may comprise, for example, a cloud server.
[0042] The first graph may comprise, for example, a road graph network, and / or a map. In such case, the vertices may represent particular locations (such as buildings and other locations of interest), and the edges may represent paths / roads traversing a given area, connecting different locations. The regions may correspond to administrative regions or similar.
[0043] In block 102, the method comprises identifying each of the multiple regions, and transmitting the first graph to a mobile device. Figure 2 is a schematic representation of a first graph 200 according to an example. As depicted in Figure 2, the first graph 200 is split into multiple regions 201-204. While four regions are shown in the figure, the invention is not limited thereto.
[0044] In block 103, the method comprises partitioning, by the first device, the first graph based on the identified multiple regions to thereby generate a set of partitioned graphs, wherein each of the identified multiple regions corresponds to a respective partitioned graph from the set of partitioned graphs. For example, the first device may partition each one of the multiple regions 201-204 forming the first graph 200. An example of that is shown in Figure 3, which depicts partitioning of the region 202 of Figure 2 into a partitioned graph comprising multiple partitions 302-1, 302-2, ..., 302-n. Advantageously, in contrast to the regions of the first graph, where actual paths / edges are present, the set of partitioned graphs may comprise shortcuts - in other words, artificial paths that summarise multiple existing paths.
[0045] In a particular example, partitioning the first graph may comprise applying multilevel partitioning to thereby generate a set of multilevel partitioned graphs. This accelerates the queries by employing multiple levels of overlay graphs. Each overlay graph may comprise shortcuts of descending shortcut granularity, starting from 0-level.
[0046] The second graph may be generated by creating associations among the multiple regions based on border links. The border links may comprise paths (i.e., edges) that traverse at least two of the multiple regions of the first graph.
[0047] In block 104, the method comprises generating, by the first device, a second graph, wherein the second graph defines comprises the set of partitioned graphs and information defining connectivity among the set of partitioned graphs, and transmitting the second graph to a mobile device. The mobile device may comprise, for example, a smartphone or low-end hardware. The second graph may comprise a super-graph. The second graph may take advantage of how the regions of the first graph are connected and create associations among the set of partitioned graphs based on border links.
[0048] Once the input data (i.e., the multiple regions and the set of partitioned graphs) has been generated and transmitted to the mobile device, the mobile device may then perform the subsequent query stage.
[0049] In block 105, the method comprises traversing, by the mobile device, the second graph to determine a high-level path comprising multiple shortcuts representing the edges of the multiple edges of the first graph that connect a first vertex and a second vertex. The first vertex may comprise a source location and the second vertex may comprise a destination. The high-level path may be considered to be a simplification of the actual path between the source and the destination. The high-level path may represent the actual path between the source and the destination using shortcuts. In order to determine the high-level path, multiple partitioned graphs of the set of partitioned graphs might be loaded into the memory. This is because the graph search has to expand to (i.e., consider) multiple partitioned graphs in order to determine the high-level path.
[0050] Figure 4 is a schematic representation of a shortcut according to an example. In the example shown, the shortcut 401 is a straight line from the source 402 to the destination 403. Both the destination 403 and the source 402 are here shown on the first graph 200 of Figure 2. The shortcut 401 may summarise multiple paths 404 (shown in a dashed line for ease of identification) that connect the source 402 to the destination 403. That is, as discussed in more detail below, the shortcut 401 may comprise a simplified representation of actual paths 404 (for example, roads) that connect the source 402 and the destination 403.
[0051] The high-level path may comprise a shortest path comprised of the multiple shortcuts. In other words, the high-level path may comprise those shortcuts of the multiple shortcuts that enable the path from the origin to the destination to be achieved the fastest, due to the low distance required to travel, or some other considerations (for example, time taken to traverse the path when considering traffic).
[0052] The shortcuts may comprise artificial paths that summarise multiple ‘real’ paths, as depicted in Figure 4. Each of the shortcuts may correspond to a plurality of edges of the first graph. The high-level path may comprise multiple shortcuts of different granularities. That is, one shortcut may represent three paths from one point to another - i.e., three edges connecting two vertices - whereas another one may represent eighty-five roads. This is because shortcuts are stored in a nested manner in the partitioned graphs (a shortcut may represent other, more granular, shortcuts).
[0053] The multiple shortcuts may be calculated during the pre-processing stage. The multiple shortcuts may be stored in the partition data of the set of partitioned graphs. Advantageously, this means that determining the high-level path requires only the set of partitioned graphs (and not the first - i.e., unprocessed - graph), which have a simpler structure compared to the first graph. This offers a significant performance and memory usage advantage, as the multiple regions 201-204 do not need to be loaded into the memory of the mobile device.
[0054] In response to determining the high-level path in block 105, the partitioned graphs of the set of partitioned graphs that the high-level path does not traverse may be released from memory. In particular, determination of the high-level path may require loading a number of partitioned graphs into the memory of the mobile device in order to find the destination (i.e., the second vortex). After the high-level path has been determined, in order to benefit memory-restricted environments by helping to reduce peaks in memory usage, partitioned graphs not relating to the shortest path - that is, those partitioned graphs corresponding to regions of the first graph that the shortest path does not traverse - can be released from the memory of the mobile device.
[0055] In block 106, the method comprises determining, by the mobile device, a shortest path between the first vertex and the second vertex, wherein the shortest path is determined based on the high- level path, wherein the shortest path comprises the edges of the multiple edges of the first graph that connect the first vertex and the second vertex. Retrieving the shortest path between the first vortex and the second vortex may comprise selecting those edges of the multiple edges of the first graph that are represented by the high-level path. Referring to Figure 3, this means that the actual path 304 between the source location 302 and the destination 303 can be determined by revealing the path represented by the shortcut 301, i.e., ‘translating’ the more abstract high- level path into the actual path. Translating the high-level path into the actual path may comprise determining which edges of the multiple edges of the first graph are represented by the high- level path. At this point, the more complex (compared to the partitioned graphs) data may be required for processing, since the multiple regions of the first graphs are required in order to obtain the shortest path.
[0056] In block 107, the method comprises outputting, by the mobile device, the shortest path. For example, the shortest path may be output on a display of the mobile device. Advantageously, the method described herein can be used not only for determining a route in a road graph network, but also can be used to partition a computer network into smaller network clusters (i.e., smaller groups of interconnected machines). In such case, the high-level path may comprise a path that is to be used by the clusters to communicate with each other. Thus, the connections among the machines can be minimised. Messages in the network can find their way through shortcuts without involving every machine in the computer network. In addition, the method described herein can also be used to assign tasks to groups of machines (clusters). The clusters can communicate with each other using the high-level path.
[0057] Figure 5 is a schematic representation of a system according to an example. The system 500 comprises a first device 510. The first device 510 may comprise the first device used to perform the method steps described above. The system 500 also comprises a mobile device 520. The mobile device 520 may comprise the mobile device used to perform the method steps described above.
[0058] According to an example, machine-readable instructions can be loaded onto a computer or other programmable data processing devices, so that the computer or other programmable data processing devices perform a series of operations to produce computer-implemented processing, thus the instructions executed on the computer or other programmable devices provide an operation for realizing functions specified by flow(s) in the flow charts and / or block(s) in the block diagrams.
[0059] Further, the teachings herein may be implemented in the form of a computer or software product, such as a non-transitory machine-readable storage medium, the computer software or product being stored in a storage medium and comprising a plurality of instructions, e.g., machine readable instructions, for making a computer device implement the methods recited in the examples of the present disclosure.
[0060] In some examples, some methods can be performed in a cloud-computing or network-based environment. Cloud-computing environments may provide various services and applications via the Internet. These cloud-based services (e.g., software as a service, platform as a service, infrastructure as a service, etc.) may be accessible through a web browser or other remote interface of the user equipment for example. Various functions described herein may be provided through a remote desktop environment or any other cloud-based computing environment. While various embodiments have been described and / or illustrated herein in the context of fully functional computing systems, one or more of these exemplary embodiments may be distributed as a program product in a variety of forms, regardless of the particular type of computer- readable-storage media used to actually carry out the distribution. The embodiments disclosed herein may also be implemented using software modules that perform certain tasks. These software modules may include script, batch, or other executable files that may be stored on a computer-readable storage medium or in a computing system. In some embodiments, these software modules may configure a computing system to perform one or more of the exemplary embodiments disclosed herein. In addition, one or more of the modules described herein may transform data, physical devices, and / or representations of physical devices from one form to another.
[0061] The preceding description has been provided to enable others skilled in the art to best utilize various aspects of the exemplary embodiments disclosed herein. This exemplary description is not intended to be exhaustive or to be limited to any precise form disclosed. Many modifications and variations are possible without departing from the spirit and scope of the instant disclosure.
[0062] The embodiments disclosed herein should be considered in all respects illustrative and not restrictive. Reference should be made to the appended claims and their equivalents in determining the scope of the instant disclosure.
Claims
CLAIMS1. A method (100) of determining a shortest path between two locations, the method comprising: receiving, by a first device, a first graph representing a graph network comprising multiple regions, wherein each region comprises multiple vertices and multiple edges (101); identifying each of the multiple regions, and transmitting the first graph to a mobile device (102); partitioning, by the first device, the first graph based on the identified multiple regions to thereby generate a set of partitioned graphs, wherein each of the identified multiple regions corresponds to a respective partitioned graph from the set of partitioned graphs (103); generating, by the first device, a second graph, wherein the second graph defines comprises the set of partitioned graphs and information defining connectivity among the set of partitioned graphs, and transmitting the second graph to a mobile device (104); traversing, by the mobile device, the second graph to determine a high- level path comprising multiple shortcuts representing the edges of the multiple edges of the first graph that connect a first vertex and a second vertex (105); determining, by the mobile device, a shortest path between the first vertex and the second vertex, wherein the shortest path is determined based on the high-level path, wherein the shortest path comprises the edges of the multiple edges of the first graph that connect the first vertex and the second vertex (106); and outputting, by the mobile device, the shortest path (107).
2. The method of claim 1, wherein the graph network represents a transport network or a communications network.
3. The method of claim 1 or 2, wherein partitioning the first graph (103) comprises applying multilevel partitioning to thereby generate a set of multilevel partitioned graphs.
4. The method of claim 1, 2, or 3 wherein the information defining connectivity comprises associations among the set of partitioned graphs based on border links, wherein the border links comprise edges that traverse at least two of the multiple regions of the first graph.
5. The method of any preceding claim, further comprising: in response to determining the high-level path, releasing, from a memory of the mobile device, the partitioned graphs of the set of partitioned graphs that the high-level path does not traverse.
6. The method of any preceding claim, wherein each of the shortcuts of the multiple shortcuts corresponds to a plurality of edges of the first graph, and wherein the high-level path comprises a shortest path comprised of the multiple shortcuts.
7. The method of claim 5 or 6, wherein retrieving the shortest path between the first vertex and the second vertex comprises retrieving the edges of the multiple edges that are represented by the high-level path.
8. A system (500) comprising: a first device (510) configured to: receive a first graph representing a graph network comprising multiple regions, wherein each region comprises multiple vertices and multiple edges; identify each of the multiple regions;partition the first graph based on the identified multiple regions to thereby generate a set of partitioned graphs, wherein each of the identified multiple regions corresponds to a respective partitioned graph from the set of partitioned graphs; and generate a second graph, wherein the second graph defines comprises the set of partitioned graphs and information defining connectivity among the set of partitioned graphs, and transmit the second graph to a mobile device (520), wherein the mobile device (520) is configured to: traverse the second graph to determine a high-level path multiple shortcuts representing the edges of the multiple edges of the first graph that connect a first vertex and a second vertex; retrieve a shortest path between the first vertex and the second vertex, wherein the shortest path is determined based on the high-level path, wherein the shortest path comprises the edges of the multiple edges of the first graph that connect the first vertex and the second vertex; and output the shortest path.
9. The system of claim 8, wherein the first device (510) comprises a cloud server, and / or wherein the graph network represents a transport network or a communications network.
10. The system of claim 8 or 9, wherein the first device (510) is configured to partition the first graph based on the identified multilevel regions by applying multilevel partitioning to thereby generate a set of multilevel partitioned graphs.
11. The system of claim 8, 9 or 10, wherein the information defining connectivity among the set of partitioned graphs comprises associations among the set of partitioned graphs based on border links, wherein the border links comprise edges that traverse at least two of the multiple regions of the first graph.
12. The system of any one of claims 8 to 11, wherein the mobile device (520) is configured to, in response to determining the high-level path, release, from a memory, the partitioned graphs of the set of partitioned graphs that the high-level path does not traverse.
13. The system of any one of claims 8 to 12, wherein each of the shortcuts of the multiple shortcuts corresponds to a plurality of edges of the first graph.
14. The system of claim 13, wherein the mobile device (520) is configured to retrieve the shortest path between the first vertex the second vertex by retrieving the edges of the multiple edges that are represented by the high-level path.
15. A computer readable storage medium comprising computer program code, accessible by an apparatus comprising a processor, to provide instructions and / or data to the apparatus, the computer program code configured to, with the processor, cause the apparatus to perform the steps of the method of any one of claims 1 to 7.
Citation Information
Patent Citations
Hierarchical and Exact Fastest Path Computation in Time-dependent Spatial Networks
US20120283948A1
Query scenarios for customizable route planning
US20140107921A1
Region Guided and Change Tolerant Fast Shortest Path Algorithm and Graph Preprocessing Framework
US20160377442A1