System and method for generating alternative routes
The computing system generates alternative routes using path graphs and algorithms to address route disruptions, providing efficient and dynamic logistics solutions.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- AIRSPACE TECHNOLOGIES INC
- Filing Date
- 2022-08-11
- Publication Date
- 2026-05-07
AI Technical Summary
Current transportation and logistics systems lack the capability to efficiently implement modifications in routes due to unforeseen events such as weather disruptions, delays, and order cancellations, necessitating improved techniques to dynamically generate alternative routes.
A computing system and method that utilize a customized data structure and algorithms like Dijkstra's or A* to identify optimal and alternative routes by generating path graphs, detour edges, and detour costs, enabling the generation of alternative route sequences and displaying them through a bidirectional GUI.
Enables efficient and dynamic modification of transportation routes in response to disruptions, ensuring smooth delivery of goods and personnel by identifying and presenting multiple viable alternatives.
Smart Images

Figure 0007855057000001 
Figure 0007855057000002 
Figure 0007855057000003
Abstract
Description
[Technical Field]
[0001] Aspects of this disclosure generally relate to computing systems for generating alternative routes for use in transportation and logistics. [Background technology]
[0002] Transportation and logistics are crucial to commercial activity. For example, it is essential to be able to efficiently schedule and transport goods and / or personnel from one place to another. This often involves complex scheduling between carriers (e.g., airlines, ships, trucks, etc.) and other entities (e.g., warehouses, ports, storage facilities, factories, collection points, etc.). However, unforeseen events often occur during the transportation process, including disruptions to transportation routes as a result of weather or other natural disasters, delays in the shipment / dispatch of goods and personnel due to damaged or broken aircraft, vessels, and / or vehicles, and order cancellations. Therefore, when these unforeseen events occur, systems and methods are needed to quickly and dynamically modify transportation and logistics needs. Modifications may include providing alternative routes to ensure the smooth transport of goods and personnel from one place to another, or to change the routes of resources, goods, or personnel. Despite technological advancements, current technology still lacks the capability to efficiently implement such modifications. Thus, the need for improved techniques to solve the aforementioned problems remains. [Overview of the Initiative] [Means for solving the problem]
[0003] Detailed explanation A computing system and method for generating alternative routes are disclosed. In part, the computing system can be used in transportation and logistics applications to locate and / or generate alternative routes to and from a destination. The method can use a customized data structure that may represent a destination. In part, the method can generate alternative routes by performing at least the following steps. In part, the optimal route to the destination can be identified. The identification of the optimal route may also include the steps of locating one or more optimal route nodes and locating one or more tree edges that represent connections between one or more optimal route nodes.
[0004] In some aspects, path graphs can also be generated to facilitate the step of generating alternative paths / routes. In some aspects, path graphs can be generated by generating dummy nodes connected to destination nodes as entry points to the graph, representing various connections between destination nodes. In other aspects, spurious edges can be generated, indicating connections from destination nodes to dummy nodes. In other aspects, dummy nodes can be assigned as root nodes in the path graph. In other aspects, alternative path nodes on the graph can be located. Alternative path nodes can be directly connected to destination nodes or one of the optimal path nodes, or one or more. In other aspects, detour edges can be located. Detour edges can represent connections from alternative path nodes to destination nodes or one of the optimal path nodes, or one or more. Identified detour edges can be designated as child nodes of the root node in the path graph. In other aspects, detour costs associated with traversing detour edges to reach destination nodes can be identified. Detour costs can be inserted as variables in the path graph. On the other hand, further alternative path nodes on the graph can be located. Further alternative path nodes can be directly connected to alternative path nodes. On the other hand, further detour edges representing further connections from further alternative path nodes to alternative path nodes can be located. Identified further detour edges can be designated as further child nodes of child nodes. On the other hand, further detour costs associated with traversing further detour edges to reach alternative path nodes can be identified. Further detour costs can be inserted as further variables in the path graph. On the other hand, the computing system can repeat the process sequentially until all alternative path nodes, further alternative path nodes, detour edges, further detour edges, detour costs, and further detour costs have been determined with respect to the graph.
[0005] On one hand, a computing system can generate an alternative route sequence based on a path graph. An alternative route sequence can represent an ordered list of alternative routes identified based on the path graph. On the other hand, an alternative route sequence can be generated by traversing the path graph from the root node to the child nodes. Based on the traverse, detour edges associated with the child nodes can be located. On the other hand, the computing system can use the information about the detour edges to further traverse the graph from the destination node to the located detour edges associated with the child nodes. On the other hand, based on the step of locating the detour edges, the computing system can determine that an alternative route is found. On the other hand, the computing system can further traverse the graph from child node to further child nodes. On the other hand, further detour edges associated with further child nodes can be located. On the other hand, the computing system can traverse the graph from the destination node until further located detour edges associated with further child nodes are located on the graph. Based on the step of locating further detour edges, the computing system can determine that further alternative routes are found. Furthermore, the computing system can continuously repeat the process until it is determined that all alternative routes and further alternative routes have been found. Additionally, the computing system can generate a bidirectional graphical user interface (GUI) for displaying the alternative route sequence. Finally, the computing system can transmit the bidirectional GUI to a display unit for display. The present invention provides, for example, the following items: (Item 1) A computer implementation method for generating alternative routes, wherein the method is (a) Identifying the optimal path to a destination node on a first graph using one or more computing devices, wherein the determination is: Identifying one or more optimal path nodes, Identifying one or more tree edges that represent connections between the aforementioned one or more optimal path nodes and This includes, (b) Generating a path graph by one or more computing devices, the generation of which (i) Generate a dummy node connected to the destination node as an entry point to the first graph, (ii) generating a false edge indicating a connection from the destination node to the dummy node, (iii) Assigning the dummy node as the root node of the path graph, (iv) Identifying alternative route nodes on the first graph, wherein the alternative route nodes are directly connected to the destination node or one of the one or more optimal route nodes, (v) Identifying detour edges that represent connections from the alternative route node to the destination node or one of the one or more optimal route nodes, (vi) Specifying the identified detour edge as a child node of the root node of the path graph, (vii) Identifying the detour cost associated with traversing the detour edge in order to reach the destination node, (viii) Inserting the detour cost as a variable in the path graph, (ix) Identifying further alternative path nodes on the first graph, wherein the further alternative path nodes are directly connected to the alternative path nodes, (x) Identifying further detour edges that represent further connections from the aforementioned alternative path nodes to the aforementioned alternative path nodes, (xi) Specifying the identified further detour edge as a further child node of the child node, (xii) Identifying the further detour costs associated with traversing the further detour edges to reach the alternative path node, (xiii) Inserting the further detour cost as a further variable in the path graph, (xiv) Repeat steps (iv)-(xiii) until all alternative path nodes, further alternative path nodes, detour edges, further detour edges, detour costs, and further detour costs are determined with respect to the first graph. This includes, (c) Generating alternative route sequences based on the route graph using one or more computing devices, (xv) Traversing the path graph from the root node to the child node, (xvi) Identifying the detour edge associated with the child node, (xvii) Traversing the first graph from the destination node to the localized detour edge associated with the child node, (xviii) Based on the location of the detour edge, determine that an alternative route can be found, (xix) Traversing from the aforementioned child node to the further child node, (xx) Identifying the further detour edges associated with the further child nodes, (xxi) Traversing the first graph from the destination node until the located further detour edge associated with the further child node is located on the first graph, (xxii) Based on the locating of the further detour edges, it is determined that further alternative routes can be found, (xxiii) Repeat steps (xv)-(xxii) until it is determined that all alternative routes and further alternative routes have been found. This includes, (d) one or more computing devices generate a bidirectional graphical user interface (GUI) for displaying the alternative route sequence, (e) Transmitting the bidirectional GUI to a display unit for display by one or more computing devices Methods that include... (Item 2) Identifying the optimal path to the destination node in (a) is done using Dijkstra's algorithm or A * The method described in item 1, which is based on applying one of the algorithms. (Item 3) Dijkstra's algorithm or A up to a certain distance * The method according to item 2, further comprising applying one of the algorithms, wherein the predetermined distance represents the maximum number of weights that can be summed up to one or more of the tree edges, the detour edges, and the further detour edges. (Item 4) The method according to item 1, further comprising storing the path graph as an ordered heap data structure. (Item 5) Identifying the detour cost associated with traversing the detour edge to reach the destination node is: Aggregating a first set of weights associated with the one or more tree edges representing the connection between the one or more optimal path nodes and the destination node, Aggregating a second set of weights associated with taking the detour edge to reach the destination node, In order to determine the aforementioned detour cost, the second set of aggregated weights is subtracted from the first set of aggregated weights. The method described in item 1, as determined by [the relevant method]. (Item 6) Identifying the further detour cost associated with traversing the further detour edge to reach the alternative path node is, Aggregating a third set of weights associated with the one or more tree edges representing the connection between the one or more optimal path nodes and the alternative path nodes, Aggregating a fourth set of weights associated with taking the further detour edge to reach the alternative path node, To determine the aforementioned further detour cost, subtract the third set of aggregated weights from the fourth set of aggregated weights. The method described in item 1, as determined by [the relevant method]. (Item 7) The system receives a user selection to choose a route from the alternative route sequence via the aforementioned bidirectional GUI, One or more of the aforementioned computing devices generate a transport route based on the selected path for transporting a person or goods. The method described in item 1, further including the method described in item 1. (Item 8) A non-transient computer-readable medium, wherein the non-transient computer-readable medium includes instructions, which cause a processor to perform an operation for generating an alternative path, (a) Identifying the optimal path to a destination node on a first graph using one or more computing devices, wherein the determination is: Identifying one or more optimal path nodes, Identifying one or more tree edges that represent connections between the aforementioned one or more optimal path nodes and This includes, (b) Generating a path graph by one or more computing devices, the generation of which (i) Generate a dummy node connected to the destination node as an entry point to the first graph, (ii) generating a false edge indicating a connection from the destination node to the dummy node, (iii) Assigning the dummy node as the root node of the path graph, (iv) Identifying alternative route nodes on the first graph, wherein the alternative route nodes are directly connected to the destination node or one of the one or more optimal route nodes, (v) Identifying detour edges that represent connections from the alternative route node to the destination node or one of the one or more optimal route nodes, (vi) Specifying the identified detour edge as a child node of the root node of the path graph, (vii) Identifying the detour cost associated with traversing the detour edge in order to reach the destination node, (viii) Inserting the detour cost as a variable in the path graph, (ix) Identifying further alternative path nodes on the first graph, wherein the further alternative path nodes are directly connected to the alternative path nodes, (x) Identifying further detour edges that represent further connections from the aforementioned alternative path nodes to the aforementioned alternative path nodes, (xi) Specifying the identified further detour edge as a further child node of the child node, (xii) Identifying the further detour costs associated with traversing the further detour edges to reach the alternative path node, (xiii) Inserting the further detour cost as a further variable in the path graph, (xiv) Repeat steps (iv)-(xiii) until all alternative path nodes, further alternative path nodes, detour edges, further detour edges, detour costs, and further detour costs are determined with respect to the first graph. This includes, (c) Generating alternative route sequences based on the route graph using one or more computing devices, (xv) Traversing the path graph from the root node to the child node, (xvi) Identifying the detour edge associated with the child node, (xvii) Traversing the first graph from the destination node to the localized detour edge associated with the child node, (xviii) Based on the location of the detour edge, determine that an alternative route can be found, (xix) Traversing from the aforementioned child node to the further child node, (xx) Identifying the further detour edges associated with the further child nodes, (xxi) Traversing the first graph from the destination node until the located further detour edge associated with the further child node is located on the first graph, (xxii) Based on the locating of the further detour edges, it is determined that further alternative routes can be found, (xxiii) Repeat steps (xv)-(xxii) until it is determined that all alternative routes and further alternative routes have been found. This includes, (d) one or more computing devices generate a bidirectional graphical user interface (GUI) for displaying the alternative route sequence, (e) Transmitting the bidirectional GUI to a display unit for display by one or more computing devices Non-transient computer-readable media, including [specific examples of such media]. (Item 9) The aforementioned operation can further be performed using Dijkstra's algorithm or A * A non-transient computer-readable medium according to item 8, comprising identifying the optimal route to the destination node in (a) based on the application of one of the algorithms. (Item 10) The aforementioned operation further extends Dijkstra's algorithm or A to a maximum distance of a predetermined distance. * A non-transient computer-readable medium as described in item 9, comprising applying one of the algorithms, wherein the predetermined distance represents the maximum number of values that can be summed up to or exceed the weight of one or more of the tree edges, the detour edges, and the further detour edges. (Item 11) The operation further includes storing the path graph as an ordered heap data structure in a non-transient, computer-readable medium as described in item 8. (Item 12) The operation further identifies the detour cost associated with traversing the detour edge to reach the destination node. Aggregating a first set of weights associated with the one or more tree edges representing the connection between the one or more optimal path nodes and the destination node, Aggregating a second set of weights associated with taking the detour edge to reach the destination node, In order to determine the aforementioned detour cost, the second set of aggregated weights is subtracted from the first set of aggregated weights. Non-transient computer-readable media as described in item 8, including those determined by [the relevant authority]. (Item 13) The operation further identifies the additional detour cost associated with traversing the additional detour edge to reach the alternative path node. Aggregating a third set of weights associated with the one or more tree edges representing the connection between the one or more optimal path nodes and the alternative path nodes, Aggregating a fourth set of weights associated with taking the further detour edge to reach the alternative path node, To determine the aforementioned further detour cost, subtract the third set of aggregated weights from the fourth set of aggregated weights. Non-transient computer-readable media as described in item 8, including those determined by [the relevant authority]. (Item 14) The aforementioned operation further, The system receives a user selection to choose a route from the alternative route sequence via the aforementioned bidirectional GUI, One or more of the aforementioned computing devices generate a transport route based on the selected path for transporting a person or goods. Non-transient computer-readable media as described in item 8, including those listed above. (Item 15) A computing system for generating alternative routes, A memory unit for storing instructions, A control unit coupled to the storage unit, wherein the control unit processes the stored instructions, (a) Identifying the optimal path to the destination node on the first graph, wherein determining the path is: Identifying one or more optimal path nodes, Identifying one or more tree edges that represent connections between the aforementioned one or more optimal path nodes and This includes, (b) Generating a path graph, the means of generating the graph is (i) Generate a dummy node connected to the destination node as an entry point to the first graph, (ii) generating a false edge indicating a connection from the destination node to the dummy node, (iii) Assigning the dummy node as the root node of the path graph, (iv) Identifying alternative route nodes on the first graph, wherein the alternative route nodes are directly connected to the destination node or one of the one or more optimal route nodes, (v) Identifying detour edges that represent connections from the alternative route node to the destination node or one of the one or more optimal route nodes, (vi) Specifying the identified detour edge as a child node of the root node of the path graph, (vii) Identifying the detour cost associated with traversing the detour edge in order to reach the destination node, (viii) Inserting the detour cost as a variable in the path graph, (ix) Identifying further alternative path nodes on the first graph, wherein the further alternative path nodes are directly connected to the alternative path nodes, (x) Identifying further detour edges that represent further connections from the aforementioned alternative path nodes to the aforementioned alternative path nodes, (xi) Specifying the identified further detour edge as a further child node of the child node, (xii) Identifying the further detour costs associated with traversing the further detour edges to reach the alternative path node, (xiii) Inserting the further detour cost as a further variable in the path graph, (xiv) Repeat steps (iv)-(xiii) until all alternative path nodes, further alternative path nodes, detour edges, further detour edges, detour costs, and further detour costs are determined with respect to the first graph. This includes, (c) Generating an alternative route sequence based on the route graph, wherein the generation is (xv) Traversing the path graph from the root node to the child node, (xvi) Identifying the detour edge associated with the child node, (xvii) Traversing the first graph from the destination node to the localized detour edge associated with the child node, (xviii) Based on the location of the detour edge, determine that an alternative route can be found, (xix) Traversing from the aforementioned child node to the further child node, (xx) Identifying the further detour edges associated with the further child nodes, (xxi) Traversing the first graph from the destination node until the located further detour edge associated with the further child node is located on the first graph, (xxii) Based on the locating of the further detour edges, it is determined that further alternative routes can be found, (xxiii) Repeat steps (xv)-(xxii) until it is determined that all alternative routes and further alternative routes have been found. This includes, (d) Generating a bidirectional graphical user interface (GUI) for displaying the alternative route sequence A control unit configured to perform the following: A communication unit coupled to the storage unit, wherein the communication unit processes the stored instructions, (e) Transmitting the bidirectional GUI to a display unit for display, (f) Receiving a user selection to select a route from the alternative route sequence via the bidirectional GUI. A communication unit configured to perform the following: Equipped with, The control unit is further configured to generate a transportation route based on the selected route for transporting a person or goods, a computing system. (Item 16) The control unit further uses Dijkstra's algorithm or A * The computing system according to item 15, configured to identify the optimal path to the destination node in (a) based on the application of one of the algorithms. (Item 17) The control unit further uses Dijkstra's algorithm or A to a maximum distance of a predetermined distance. * The computing system according to item 16, configured to apply any of the algorithms, wherein the predetermined distance represents the maximum number of weights that can be summed up to one or more of the tree edges, the detour edges, and the further detour edges. (Item 18) The control unit is further configured to generate the path graph as an ordered heap data structure, The storage unit is further configured to store the path graph as the ordered heap data structure. The computing system described in item 15. (Item 19) The control unit further identifies the detour cost associated with traversing the detour edge to reach the destination node. Aggregating a first set of weights associated with the one or more tree edges that represent the connection between the one or more optimal path nodes and the destination node, Aggregating a second set of weights associated with taking the detour edge to reach the destination node, In order to determine the aforementioned detour cost, the second set of aggregated weights is subtracted from the first set of aggregated weights. A computing system as described in item 15, configured to be determined by... (Item 20) The control unit further identifies the additional detour cost associated with traversing the additional detour edge to reach the alternative path node. Aggregating a third set of weights associated with the one or more tree edges, representing the connection between the one or more optimal path nodes and the alternative path nodes, Aggregating a fourth set of weights associated with taking the further detour edge to reach the alternative path node, In order to determine the further detour cost, the third set of aggregated weights is subtracted from the fourth set of aggregated weights, A computing system as described in item 15, configured to be determined by... [Brief explanation of the drawing]
[0006] The accompanying drawings incorporated herein and forming part thereof illustrate and describe aspects of this disclosure, and further explain the principles of this disclosure, enabling those skilled in the art to construct and use this disclosure.
[0007] [Figure 1] Figure 1 shows a computing system for generating alternative routes according to the aspects of this disclosure.
[0008] [Figure 2] Figure 2 illustrates how a computing system for generating alternative routes operates according to an aspect of this disclosure.
[0009] [Figure 3A] Figure 3A illustrates how a computing system is operated to identify the optimal route to a destination node in order to facilitate the step of generating alternative routes, according to an aspect of this disclosure.
[0010] [Figure 3B] Figure 3B shows a graphical illustration of how the method of Figure 3A is carried out, according to the aspects of this disclosure.
[0011] [Figure 4A] Figures 4A and 4B illustrate how to operate a computing system to generate a path graph in order to facilitate the step of generating alternative paths, according to aspects of this disclosure. [Figure 4B] Figures 4A and 4B illustrate how to operate a computing system to generate a path graph in order to facilitate the step of generating alternative paths, according to aspects of this disclosure.
[0012] [Figure 4C] Figures 4C-4G show a graphical illustration of how the methods of Figures 4A and 4B are carried out, from an aspect of this disclosure. [Figure 4D] Figures 4C-4G show a graphical illustration of how the methods of Figures 4A and 4B are carried out, from an aspect of this disclosure. [Figure 4E] Figures 4C-4G show a graphical illustration of how the methods of Figures 4A and 4B are carried out, from an aspect of this disclosure. [Figure 4F] Figures 4C-4G show a graphical illustration of how the methods of Figures 4A and 4B are carried out, from an aspect of this disclosure. [Figure 4G] Figures 4C-4G show a graphical illustration of how the methods of Figures 4A and 4B are carried out, from an aspect of this disclosure.
[0013] [Figure 5A] Figure 5A illustrates a method for operating a computing system to generate an alternative path sequence, according to an aspect of this disclosure.
[0014] [Figure 5B] Figures 5B-5E show a graphical illustration of how the method of Figure 5A is carried out, according to aspects of this disclosure. [Figure 5C] Figures 5B-5E show a graphical illustration of how the method of Figure 5A is carried out, according to aspects of this disclosure. [Figure 5D] Figures 5B-5E show a graphical illustration of how the method of Figure 5A is carried out, according to aspects of this disclosure. [Figure 5E] Figures 5B-5E show a graphical illustration of how the method of Figure 5A is carried out, according to aspects of this disclosure.
[0015] [Figure 6] Figure 6 shows an exemplary architecture of components that implement a computing system, according to the aspects of this disclosure.
[0016] [Figure 7] Figure 7-9 shows a graphical user interface (GUI) for displaying alternative route sequences and enabling a user to interface with the computing system, according to aspects of this disclosure. [Figure 8] Figure 7-9 shows a graphical user interface (GUI) for displaying alternative route sequences and enabling a user to interface with the computing system, according to aspects of this disclosure. [Figure 9] Figure 7-9 shows a graphical user interface (GUI) for displaying alternative route sequences and enabling a user to interface with the computing system, according to aspects of this disclosure. [Modes for carrying out the invention]
[0017] The following aspects are described in sufficient detail to enable those skilled in the art to create and use this disclosure. Other aspects are evident from this disclosure, and it should be understood that system, process, or mechanical modifications may be made without departing from the scope of the aspects of this disclosure.
[0018] Numerous specific details are provided in the following description to provide a thorough understanding of this disclosure. However, it will become clear that this disclosure can be put into practice without these specific details. To avoid obscuring aspects of this disclosure, some well-known circuits, system configurations, architectures, and process steps are not disclosed in detail.
[0019] The drawings illustrating aspects of this system are semi-skeletal and not to scale. Some of the dimensions are exaggerated in the drawings for clarity of presentation. Similarly, the figures in the drawings are for ease of explanation and generally show similar orientations, but the depictions in the drawings are largely arbitrary. In general, this disclosure may operate in any orientation.
[0020] The terms “module” or “unit” as used herein may include software, hardware, or a combination thereof in aspects of this disclosure, depending on the context in which the terms are used. For example, software may be machine code, firmware, embedded code, or application software. Hardware may be a network, processor, special-purpose computer, integrated circuit, integrated circuit core, or a combination thereof. Furthermore, if a module or unit is described in the following sections of the system or apparatus claims, the module or unit shall be deemed to include a hardware network with respect to the purpose and scope of the system or apparatus claim.
[0021] The modules or units in the following description of the side may be coupled to one another as described or shown. The coupling may be direct or indirect, with or without intervening items between the coupled modules or units. The coupling may be by physical contact or by communication between the modules or units.
[0022] System Overview and Functions Figure 1 shows a computing system 100 for generating alternative routes, according to an aspect of this disclosure. The step of generating alternative routes (or alternative route generation), as used throughout this disclosure, refers to how the computing system 100 determines various routes to and from real-world destinations. In this aspect, real-world destinations may be places, buildings, geographical areas, ports (e.g., airports, seaports, bus terminals), etc. In this aspect, to determine various routes to and from these real-world destinations, the computing system 100 may represent real-world destinations using custom computer implementation data types and / or data structures. For example, real-world destinations (e.g., cities, factories, ports, etc.) may be represented using a data structure. In a preferred aspect, the data structure may be a graph data structure, where each real-world destination may be represented using vertices (also referred to as nodes or points) in the graph data structure. For example, in a scenario where computing system 100 is used in transportation and logistics applications, if it is used to determine transportation routes available for transporting goods and / or personnel to various real-world destinations, each real-world destination may be represented as a vertex (or node) of a graph data structure. Furthermore, each route may be represented as a link (also referred to as an edge), and each link can represent a connection (or route) between a pair of nodes. Using this type of custom data structure and the various methods described herein, computing system 100 can perform alternative route generation and determine various available routes between nodes. The methods by which alternative route generation is performed will be described in detail below.
[0023] On the other hand, the computing system 100 may include a first device 102, such as a client device, which is connected to a second device 106, such as a server. On the other hand, the first device 102 and the second device 106 can communicate with each other through a network 104, such as a wireless or wired network.
[0024] Network 104 can encompass and represent a variety of telecommunications networks and network topologies. For example, Network 104 can include wireless communication, wired communication, optical communication, ultrasonic communication, or a combination thereof. Examples of wireless communication that may be included within Network 104 include satellite communication, cellular communication, Bluetooth®, Infrared Data Association Standards (IrDA), Wireless Fidelity (WiFi), and Global Interoperability Microwave Access (WiMAX). Examples of wired communication that may be included within Network 104 include cable, Ethernet®, digital subscriber lines (DSL), fiber optic lines, fiber to the home (FTTH), and basic telephone services (POTS). Furthermore, Network 104 can traverse several network topologies and distances. For example, Network 104 can include direct connection, personal area networks (PANs), local area networks (LANs), metropolitan area networks (MANs), wide area networks (WANs), or a combination thereof.
[0025] On the other hand, the first device 102 may be any variety of devices such as a smartphone, cellular phone, personal digital assistant, tablet computer, notebook computer, laptop computer, or desktop computer. On the other hand, the first device 102 may be a standalone device that can connect to the network 104 directly or indirectly in order to communicate with the second device 106.
[0026] On the other hand, the second device 106 may be any kind of centralized or distributed computing device. For example, the second device 106 may be a laptop computer, a desktop computer, a grid computing resource, a virtualized computing resource, a cloud computing resource, a router, a switch, a peer-to-peer distributed computing device, a server, a server farm, or a combination thereof. On the other hand, the second device 106 may be centralized within a single room, distributed across different rooms, distributed across different geographical locations, or embedded within the network 104. On the other hand, the second device 106 may be coupled to the network 104 to communicate with the first device 102, or it may be a standalone device.
[0027] For illustrative purposes, computing system 100 is shown with a first device 102 and a second device 106 as endpoints of network 104, but it should be understood that computing system 100 may have different partitions between the first device 102, the second device 106, and network 104. For example, the first device 102 and the second device 106 may also function as part of network 104.
[0028] Figure 2 illustrates a method 200 for operating a computing system 100 to generate an alternative path, according to an aspect of this disclosure. In this aspect, method 200 may be performed on either a first device 102 or a second device 106. In this aspect, a portion of method 200 may be performed on both the first device 102 and / or the second device 106. For the purposes of discussion relating to Figure 2, throughout the entirety of this disclosure, it is assumed that the steps of method 200 are performed on the second device 106. In this aspect, method 200 may be performed using a software module. In this aspect, instructions (e.g., source code) stored on a non-transient computer-readable medium on the second device 106 may be executed to cause any hardware unit of the second device 106, such as a processor, to process the stored instructions, and a software module to perform the functionality of method 200.
[0029] In a side view, method 200 may be carried out based on the following steps. In step 202, an optimal route 306 (shown in Figure 3B) may be identified. The optimal route 306 may represent the fastest and / or lowest cost route to destination node 308 (shown in Figure 3B). In a side view, “cost” may refer to time cost, monetary cost, distance, or a combination thereof, and thus “lowest cost” may refer to the lowest monetary cost required to take a route to destination node 308, and / or “lowest cost” may refer to the fastest route to destination node 308 (in terms of time), and / or “lowest cost” may refer to the shortest distance traversed to destination node 308, or a combination thereof. In a side view, destination node 308 may represent a real-world destination that can serve as the endpoint for a route from starting node 310 (shown in Figure 3B).
[0030] In addition, a route graph 440 (as shown in Figures 4C-4G) may be generated based on the step of determining the optimal route 306 to the destination node 308, as shown in step 204. The method by which the route graph 440 is generated will be described below with reference to Figures 4A-4G. In addition, the route graph 440 may be implemented and stored as a heap data structure. A person skilled in the art (POSA) will recognize that a heap data structure refers to a specialized computer implementation tree-based data structure. In addition, the heap data structure may be implemented as an array, where each element in the array represents a node in the heap data structure, and the parent / child relationships between each element are implicitly defined by the index of the element in the array. In addition, the route graph 440 may be an intermediate data structure that can be used to facilitate the determination of alternative routes to the destination node 308. In addition, the route graph 440 may also store information about the cost of taking alternative routes. The route graph 440 will be described in more detail below.
[0031] On the other hand, as shown in step 206, an alternative route sequence 518 (as shown in Figures 5C-5E) may be generated based on the route graph 440. On the other hand, the alternative route sequence 518 can represent an ordered sequence of alternative routes in the route graph 440. For example, on the other hand, the alternative route sequence 518 can represent alternative routes in the route graph 440 in a particular order. On the other hand, the particular order may be, for example, a sequence showing the shortest to longest time associated with taking the alternative route. On the other hand, the particular order may show the monetary cost associated with taking the alternative route (e.g., the lowest cost to the highest cost alternative route).
[0032] On the other hand, as shown in step 208, the computing system 100 may further generate a bidirectional graphical user interface (GUI) (as shown in Figure 7-9) for displaying the alternative route sequence 518. On the other hand, as shown in step 210, the computing system 100 may transmit the bidirectional GUI for display on a further device. For example, on the other hand, the transmission may be to the first device 102 for display on the screen, monitor, or other display unit of the first device 102.
[0033] Figure 3A shows a method 300 in which computing system 100 is operated to identify the optimal route 306 (shown in Figure 3B) to destination node 308 (shown in Figure 3B) in order to facilitate the step of generating an alternative route, according to an aspect of the present disclosure. Figure 3B shows a graphical illustration of how method 300 is carried out, according to an aspect of the present disclosure. Figures 3A and 3B provide further details of how step 202 of Figure 2 is carried out.
[0034] On the side, computing system 100 can first determine the optimal path 306 to destination node 308 by identifying destination node 308. An illustrative graph with edges representing the connections between various nodes and pairs of nodes is shown in Figure 3B. On the side, destination node 308 may be any of the nodes on the graph. For the purposes of Figure 3B, destination node 308 is shown as node 6. However, this is illustrative, and any other node may be identified as destination node 308. For the purposes of the discussion throughout this disclosure, it will be assumed that node 6 is destination node 308.
[0035] On the other hand, the selection of destination node 308 may be based on user input. For example, a user of computing system 100 may select a real-world destination to which the user wishes to know all the paths / routes. On the other hand, a real-world destination, such as one represented by a node on a graph, may be selected as destination node 308.
[0036] On the side, the optimal route 306 can represent the fastest (in terms of time), shortest distance, and / or cheapest route to the destination node 308. For example, on the side, the optimal route 306 can represent the route that takes the least amount of time to reach the destination node 308 and / or the route with the least associated monetary cost to reach the destination node 308. On the side, the time and / or cost associated with a route may be represented as a weight 312 along each edge of the graph or as an aggregated sum of each weight 312. In Figure 3B, each weight 312 associated with an edge connecting two nodes is shown as a number along each edge of the graph. For example, the weight 312 associated with traversing from node 0 to node 1 is shown as "3". Also, the weight 312 associated with traversing from node 0 to node 2 is shown as "5". Furthermore, the weight 312 associated with traversing nodes 0→2→4→6 is "7," which is the aggregated sum of each weight 312 along each edge connecting nodes 0, 2, 4, and 6. Each weight 312 in Figure 3B is shown as a positive integer, which is illustrative. In the side, other values may also be used to represent each weight 312. For example, real numbers may be used to represent each weight 312. The method by which each weight 312 is determined is beyond the scope of this disclosure. For the purposes of this discussion, it is assumed that a weight 312 exists for each edge connecting pairs of nodes.
[0037] On the side, in order to identify the optimal path 306, the computing system 100 must locate one or more optimal path nodes 314 (shown in Figure 3B) and one or more tree edges 316 (shown in Figure 3B) that represent the connections between one or more optimal path nodes 314. These steps are shown as steps 302 and 304 in Figure 3A. On the side, one or more optimal path nodes 314 refer to each node along the optimal path 306 to the destination node 308. In an embodiment, if the destination node 308 is node 6, then based on each weight 312 shown in Figure 3B, the optimal path 306 from the starting node 310, for example node 0 to node 6, is via a traverse of the path / route consisting of nodes 0 → 2 → 4 → 6. On the side, this may be determined by aggregating each weight 312 along each edge from node 0 to node 6 and determining the aggregated weight sum to the lowest number. For example, the path / route consisting of nodes 0→2→4→6 has an aggregated sum of each weight 312 along each edge, resulting in an aggregated sum of "7". However, if the path / route consisting of nodes 0→2→3→5→6 is used, the aggregated sum of the total weights 312 along that path / route is "28". Alternatively, if the path / route consisting of nodes 0→2→3→5→6 is taken, the aggregated sum of the total weights 312 along that path / route is "9". Therefore, based on traversing all paths / routes from node 0 to node 6 and comparing all aggregated sums of the edge weights along each path / route, it can be determined that the path / route consisting of nodes 0→2→4→6 has the lowest total weight 312 and is therefore the optimal path 306 to node 6. In the side, the process described above may be used to determine the optimal path 306 to any node shown in Figure 3B.
[0038] On the other hand, once the optimal path 306 is determined and / or located, one or more tree edges 316 can also be determined as representing connections or links between one or more optimal path nodes 314. For example, in the example of path / route 0→2→4→6 representing the optimal path 306 to node 6, one or more optimal path nodes 314 would be nodes 0, 2, 4, and 6. Consequently, one or more tree edges 316 can also be determined to be the edges connecting nodes 0→2, 2→4, and 4→6.
[0039] On the other hand, the optimal path 306 may be identified using one of various optimal path algorithms. For example, on the other hand, Dijkstra's algorithm or A * Any of the algorithms may be used to determine the optimal path 306. POSA will know how to implement such an algorithm to determine the optimal path 306.
[0040] On the other hand, once the optimal path 306, one or more optimal path nodes 314, and one or more tree edges 316 are identified and / or located, the computing system 100 can pass control and information to further modules, which, based on the information, can generate a path graph 440 (shown in Figures 4C-4G). On the other hand, the path graph 440 may be used to facilitate the step of generating alternative paths.
[0041] Figures 4A and 4B illustrate methods 400 and 401 for causing the computing system 100 to generate a route graph 440 in order to facilitate the step of generating alternative routes, according to aspects of the present disclosure. Figures 4C-4G illustrate graphical representations of how methods 400 and 401 are carried out, according to aspects of the present disclosure. Figures 4A-4G provide further details of how step 204 of Figure 2 is carried out.
[0042] On the other hand, computing system 100 can generate a path graph 440 by using the exemplary graph shown in Figure 3B (also shown in Figures 4C-4G) and determine the alternative paths / routes available to reach destination node 308. Again, for the purposes of the discussion relating to Figures 4A-4G, it is assumed that destination node 308 is node 6. On the other hand, computing system 100 can further determine the cost associated with traversing each of the alternative paths / routes to destination node 308. The method by which the cost is determined will be further described below.
[0043] On the other hand, as shown in step 402 of Figure 4A, the computing system 100 may first initiate the step of generating a route graph 440 by generating a dummy node 428 (shown in Figure 4C), which may be connected to the destination node 308 as an entry point to the graph. On the other hand, the dummy node 428 refers to a node that represents a fake or false representation of a real-world destination. The purpose of generating the dummy node 428 is to set up a starting / entry point for the computing system 100 in order to initiate the step of determining an alternative route to the destination node 308.
[0044] On the side, a false edge 430 (shown in Figure 4C) may be generated, representing a connection or link from destination node 308 to dummy node 428, as shown in step 404 of Figure 4. Thus, the false edge 430 can represent a false or false representation of the connection between destination node 308 and dummy node 428. Again, the purpose of generating the false edge 430 is the same as generating the dummy node 428, which is to set up a starting / entry point for computing system 100 to initiate the step of determining an alternative path / route to destination node 308.
[0045] On the other hand, as shown in step 406 of Figure 4A, the computing system 100 may assign a dummy node 428 as the root node 432 (shown in Figure 4C) of the route graph 440. On the other hand, the root node 432 refers to a spare or starting node of the route graph 440. On the other hand, the root node 432 may store associated information that may indicate that the connection between the dummy node 428 and the destination node 308 (e.g., edge 6 → R) is a spare or starting node of the route graph 440.
[0046] On the other hand, as shown in step 408 of Figure 4A, once a route node 432 is assigned, the computing system 100 can locate an alternative route node 434 (as shown in Figure 4C). The alternative route node 434 may be a node on the graph that connects directly to either the destination node 308 or one of the optimal route nodes 314 (shown in Figure 3B) that are one or more than that. In the embodiment given with respect to Figures 4C-4G, the alternative route node 434 that is located is shown as node 1. This is because node 1 meets the criterion of connecting directly to node 6, which is the destination node 308. The purpose of locate the alternative route node 434 is to generate a route graph 440 for the computing system 100 by determining all possible alternative routes / routes and nodes on the graph that could be used to return in the reverse direction from the destination node 308 and arrive at the destination node 308.
[0047] On the side, once the alternative path node 434 is located, as shown in step 410 of Figure 4A, the detour edge 436 (shown in Figure 4C) may also be located. On the side, the detour edge 436 can represent a connection from the alternative path node 434 to the destination node 308 or a connection from the alternative path node 434 to one or more of the optimal path nodes 314. With respect to Figures 4C-4G, the located detour edge 436 may also be an edge from node 1 to node 6, since this connects the alternative path node 434 (node 1) to the destination node 308 (node 6). Located the detour edge 436 provides a method for the computing system 100 to determine the alternative paths / routes that can be taken to the destination node 308. This also enables the computing system 100 to determine the cost associated with taking that detour edge 436 to reach the destination node 308. On the other hand, the cost associated with taking the detour edge 436 to reach the destination node 308 can be referred to as the detour cost. The method by which the detour cost is identified will be discussed further below.
[0048] On the other hand, as shown in step 412 of Figure 4A, once the detour edge 436 is located, the computing system 100 can further generate the route graph 440 by designating the detour edge 436 as a child node 438 of the root node 432 of the route graph 440 (as shown in Figure 4D). The purpose of designating the detour edge 436 as a child node 438 is to further generate the route graph 440, identify alternative routes / route connections to the destination node 308, and represent identical data structures that can be operated by the computing system 100.
[0049] On the side, as shown in step 414 of Figure 4A, the computing system 100 can further identify the detour cost associated with traversing the detour edge 436 to reach the destination node 308. On the side, the detour cost may be identified based on taking the difference between (i) the aggregate of each weight 312 along the route from the starting node 310 to the destination node 308 by taking the detour edge 436 and (ii) the aggregate of each weight 312 along the route from the starting node 310 to the destination node 308 by taking the optimal route 306. In an embodiment, if the starting node 310 is node 0, and the detour edge 436 connecting nodes 1 and 6 is taken to reach node 6, then the aggregate of each weight 312 along the route from node 0 → 1 → 6 is "10". As determined above, the aggregate of each weight 312 with respect to the optimal route 306 is "7". Therefore, in an embodiment where a detour edge 436 from node 1 to node 6 is taken, the detour cost may be determined to be the difference between "10" and "7", which is "3". In other words, the extra cost of taking the detour edge 436 from node 1 to node 6 instead of the optimal path 306 is "3".
[0050] On the other hand, computing system 100 can determine the detour costs for any other alternative path nodes 434 and detour edges 436 identified in the same manner, and can designate a detour edge 436 identified as a child node 438 of the root node 432 in the path graph 440. For example, in the exemplary graph shown in Figure 4D-4G, another detour edge 436 that can be located to reach node 6 from node 0 is the edge from node 1 to node 2 (in other words, an alternative path / route consisting of nodes 0→1→2→4→6 may be taken). On the other hand, as shown in Figure 4D-4G, the detour edge 436 from node 1 to node 2 can also be designated as a child node 438 of the root node 432 in the path graph 440. On the other hand, the detour cost associated with taking the detour edge 436 from node 1 to node 2 can also be determined based on the aforementioned method for determining the detour cost. For example, based on each weight 312 shown in Figure 4D-4G, the detour cost to take the detour edge 436 from node 1 to node 2 to reach destination node 308 (i.e., node 6) may be determined to be "2". This is because the aggregated sum of each weight 312 along each edge when taking the path / route consisting of nodes 0→1→2→4→6 (i.e., the route in which the detour edge 436 from node 1 to node 2 is taken to reach node 6) is "9". Therefore, the difference between "9" and "7" (i.e., the optimal path 306) is "2".
[0051] On the other hand, as shown in step 416 of Figure 4A, once the detour cost is identified and / or determined, it may be inserted as a variable in the route graph 440 (as shown in Figure 4D). The purpose of inserting the detour cost as a variable in the route graph 440 is to store and show the extra cost taken by each detour edge 436. On the other hand, this information may be used to identify the relative difference in terms of cost between each identified alternative route.
[0052] On the side, as shown in step 417 of Figure 4B, once the alternative path node 434, the detour edge 436, and the detour cost are located and / or identified, the computing system 100 can locate a further alternative path node 442 (shown in Figure 4E). On the side, the further alternative path node 442 represents a node in the graph that is directly connected to or can be taken up to the alternative path node 434. For example, in the exemplary graph shown in Figures 4E-4G, the further alternative path node 442 may be identified as node 4, which is directly connected to node 1. Another embodiment of the further alternative path node 442 may be node 2, which is directly connected to node 1. The purpose of locating the further alternative path node 442 is to determine all nodes on the graph that are connected to the alternative path node 434 so that further paths / routes leading to the alternative path node 434 can be determined. In this way, further paths / routes may be discovered and / or located by the computing system 100. It should be noted that computing system 100 has no prior conception or knowledge of where these alternative routes / paths exist, and therefore the method described herein enables computing system 100 to identify and / or discover these alternative routes / paths by working backward from destination node 308.
[0053] Continuing the embodiment, in a side view, once an additional alternative route node 442 is located, as shown in step 418 of Figure 4B, an additional detour edge 444 (shown in Figure 4E) may be located. In a side view, the additional detour edge 444 may represent a connection from the additional alternative route node 442 to the alternative route node 434. The purpose of locating the additional detour edge 444 is, as with the purpose of locating the detour edge 436, to identify and / or locate the additional route to the alternative route node 434 that may ultimately be taken to the destination node 308, and to determine the cost associated with taking that additional detour edge 444 to reach the alternative route node 434. The cost associated with taking the additional detour edge 444 to reach the alternative route node 434 would be referred to as the additional detour cost. The method by which the additional detour cost is identified and / or determined will be discussed further below.
[0054] On the side, as shown in step 420 of Figure 4B, once an additional detour edge 444 is located, the computing system 100 can further generate a route graph 440 by specifying an additional detour edge 444 identified as a further child node 446 of child node 438 (shown in Figure 4E). The purpose of specifying an additional detour edge 444 identified as a further child node 446 is to further generate a route graph 440, identify alternative route connections to the alternative route node 434, and represent identical data structures that can be operated by the computing system 100.
[0055] On the other hand, as shown in step 422 of Figure 4B, the computing system 100 can further identify the additional detour cost associated with traversing an additional detour edge 444 to reach the alternative path node 434. On the other hand, the additional detour cost may be identified based on taking the difference between (i) the aggregation of each weight 312 along the path / route from the starting node 310 to the alternative path node 434 by taking the additional detour edge 444, and (ii) the aggregation of each weight 312 along the path / route from the starting node 310 to the alternative path node 434 by taking the optimal path 306 to the alternative path node 434. As an example, consider the illustrative graph shown in Figure 4E-4G. If the starting node 310 is node 0, and a further detour edge 444 connecting node 4 to node 1 is taken to reach node 1 from node 0 (node 1 is the alternative path node 434), then the aggregated sum of each weight 312 along the path / route (which would be node 0 → 2 → 4 → 1) is equal to "7". From the illustrative graph shown in Figure 4E-4G, it can be further determined that the aggregated sum of each weight 312 from the same starting point 310 (node 0) to node 1 along the optimal path is "3" (since the path would be node 0 → 1). Therefore, by taking the difference between "7" and "3", the further detour cost may be determined to be "4". In other words, the extra cost of taking the further detour edge 444 from node 4 to node 1 instead of the optimal path 306 to node 1 is "4".
[0056] In a lateral aspect, the computing system 100 can determine the further detour costs for any other further alternative path nodes 442 and further detour edges 444 identified in the same manner as described, and can designate a further detour edge 444 identified as a further child node 446 of child node 438 of the path graph 440. For example, in the exemplary graph shown in Figure 4E-4G, another further detour edge 444 that can be located to reach node 1 from node 0 is the edge from node 2 to node 1 (i.e., an alternative path / route of node 0 → 2 → 1 may be taken). In a lateral aspect, as shown in Figure 4E-4G, that further detour edge 444 can also be designated as a further child node 446 of child node 438 of the path graph 440. In a lateral aspect, the further detour costs associated with taking that further detour edge 444 can also be determined based on the aforementioned method for determining further detour costs. For example, based on each weight 312 shown in Figure 4E-4G, the further detour cost to take the further detour edge 444 from node 2 to node 1 may be determined to be "6". This is because the sum of each weight 312 along each edge when taking the path / route from node 0→2→1 is "6", and the difference between "6" and "3" (the sum of the weights related to the optimal path 306 to node 1) is "3".
[0057] On the other hand, as shown in step 424 of Figure 4B, once the further detour cost is identified and / or determined, it may be inserted as a variable in the route graph 440 (as shown in Figure 4E). The purpose of inserting the further detour cost as a variable in the route graph 440 is to store and show the cost of taking each further detour edge 444 to the alternative route node 434. On the other hand, this information may be used to identify the relative difference in terms of cost between each identified alternative route / route to the alternative route node 434.
[0058] On the side, as shown in step 426 of Figure 4B, the computing system 100 can repeat steps 408, 410, 412, 414, 416, 417, 418, 420, 422, and 424 in succession until all alternative path nodes, further alternative path nodes, detour edges, further detour edges, detour costs, and further detour costs are determined. In this way, a path graph 440 showing all alternative paths / routes to and from destination node 308 may be generated. On the side, once step 426 is completed, the path graph 440 is complete. An exemplary complete path graph 440 based on the graph shown in Figures 4C-4G is shown in Figure 4G.
[0059] On the other hand, once a complete route graph 440 is generated, the computing system 100 can utilize the route graph 440 to generate an alternative route sequence 518 (as shown in Figures 5C-5E). As shown, on the other hand, the alternative route sequence 518 can represent an ordered sequence of alternative routes / paths in the route graph 440. On the other hand, the alternative route sequence 518 may be generated and represented as an ordered list showing the alternative routes / paths available for the destination node 308 (e.g., node 6).
[0060] Figure 5A shows a method 500 for causing the computing system 100 to generate an alternative path sequence 518, according to an aspect of the present disclosure. Figures 5B-5E show a graphical illustration of how method 500 is carried out, according to an aspect of the present disclosure. Figures 5A-5E provide further details of how step 206 of Figure 2 is carried out.
[0061] On the other hand, computing system 100 can generate an alternative route sequence 518 based on the following steps. On the other hand, computing system 100 may initiate the step of generating an alternative route sequence 518 by traversing the route graph 440 from the root node 432 (shown in Figure 5B) to the child node 438 (shown in Figure 5B), as shown in step 502 of Figure 5A. On the other hand, in order to continue to consider the nodes of the route graph 440 being traversed, computing system 100 can generate a heap data structure 520 and store information within the heap data structure 520 that is associated with the child nodes it traverses.
[0062] On the other hand, the heap data structure 520 can store information related to its child nodes. For example, the heap data structure 520 can store information about each child node 438 in its array index. On the other hand, the information stored may include information related to the edge represented by the node (e.g., the detour edge 436 represented by child node 438), the cost associated with taking that edge (e.g., the detour cost), and the node that is the parent node of the node (e.g., a node on the path graph 440 that is a preceding node traversed from there to arrive at child node 438). This information would be readily available for storage in the heap data structure 520 because it was determined as part of the steps that generated the path graph 440. The purpose of storing information in the heap data structure 520 is to preserve the ordering of child nodes relative to their parent nodes. On the other hand, the ordering may be such that the child nodes are stored in the heap data structure 520 from minimum cost to maximum cost (in terms of their detour costs). Thus, the computing system 100 can generate alternative route sequences 518 and order them from the lowest cost alternative route to the highest cost alternative route. In addition, other orderings, such as from highest cost to lowest cost, may also be performed. This is useful when ranking and / or categorizing alternative routes for later display.
[0063] As an example, consider the path graph 440 shown in Figure 5B, where the heap data structure 520 may initially arise with two array indices 520a and 520b. Index 520a represents a traverse from the root node 432 to a child node 438 representing a detour edge 436 from node 1 to node 2. In this example, index 520a is shown to store detour cost information associated with the detour edge 436 from node 1 to node 2. For example, as discussed above with respect to Figures 4A-4G, the detour cost of traversing the detour edge 436 from node 1 to node 2 to arrive at destination node 308 (node 6) was identified as "2". Index 520a is also shown to store information about the parent node of the child node 438. In the example shown in Figure 5B, the parent node is the root node 432.
[0064] Similarly, index 520b represents a traverse from the root node 432 to child node 438, which represents the detour edge 436 from node 1 to node 6. Index 520b is shown as storing the detour cost associated with taking the detour edge 436 from node 1 to node 6, which was identified as "3" in the discussion related to Figures 4A-4G. Index 520b is also shown storing and storing information about the parent node of child node 438 regarding the detour edge 436 from node 1 to node 6, which is also the root node 432. As can be seen, the heap data structure 520 shown in Figure 5B has a particular order. In a side note, this order may be for storing child nodes based on the increasing detour cost associated with the detour edge 436 that the child node represents. For example, in the embodiment given in Figure 5B, index 520a may be considered to have a lower detour cost associated with its detour edge 436 than index 520b. Therefore, nodes representing detour edges 436 with lower detour costs (in this case, detour edges 436 associated with taking node 2 from node 1) may first be stored in the heap data structure 520 in terms of their index positions.
[0065] On the side, as shown in step 504 of Figure 5A, once the computing system 100 traverses the child node 438, the computing system 100 can identify the detour edge 436 associated with the child node 438. For example, in the embodiment shown in Figure 5B, if the child node 438 is a node representing the detour edge 436 from node 1 to node 2, the computing system 100 can locate the detour edge 436 as the edge associated with traversing from node 1 to node 2.
[0066] On the other hand, as shown in step 506 of Figure 5A, once the detour edge 436 is located, the computing system 100 can generate an alternative route sequence 518 by traversing the graph (shown in Figure 5C, which is the same graph as in Figures 3B and 4C-4G) used to calculate values for the route graph 440 in reverse from the destination node 308 (node 6), until the computing system 100 decides to reach the terminal node of the detour edge 436. On the other hand, the computing system 100 can perform this traverse by taking one or more tree edges 316 in reverse from the destination node 308 until the computing system 100 encounters the terminal node of the detour edge 436. As an example, if we consider an example where child node 438 represents a detour edge 436 from node 1 to node 2, the computing system 100 can traverse in reverse along one or more tree edges 316 from destination node 308 (node 6) until it reaches node 2 (node 2 is the terminal node of the detour edge 436, as this is the destination of the detour edge 436 from node 1 to node 2). As a result, the traverse would be node 6 → 4 → 2.
[0067] On the other hand, as shown in step 508 of Figure 5A, once the terminal node of the detour edge 436 is located, the computing system 100 can determine that it has found or discovered an alternative path / route. On the other hand, the alternative path / route found may be a path / route associated with taking its detour edge 436 to the destination node 308. In the case of the detour edge 436 from node 1 to node 2, the computing system 100 can determine that it has found an alternative path / route that includes the detour edge 436 from node 1 to node 2. On the other hand, to complete the alternative path / route, the computing system 100 can further continue moving backward through the graph until it reaches the starting node 310 (e.g., node 0). Thus, in a given embodiment, the computing system 100 can proceed from node 2 → 1 → 0. On the other hand, once computing system 100 reaches the starting node 310, computing system 100 can consider all the nodes it has traversed in order to determine the nodes and edges that make up the alternative route it has traversed. On the other hand, the traversed route may be inserted as an alternative route in the alternative route sequence 518. Figure 5C shows the alternative route sequence 518, which enumerates the alternative routes found based on the above embodiment, which is the route from node 0→1→2→4→6.
[0068] On the other hand, the computing system 100 can continue traversing the path graph 440 with respect to all child nodes in a manner similar to that described, and locate all alternative paths / routes related to the detour edges associated with those child nodes. For example, taking the exemplary path graph 440 shown in Figure 5B, the computing system 100 can further identify a detour edge 436 from node 1 to node 6 (associated with another child node 438). On the other hand, once the computing system 100 has identified the detour edge 436, it can traverse the graph shown in Figure 5D until it locates the terminal node associated with that detour edge 436 (node 6), similar to what was described above with respect to the detour edge from node 1 to node 2. On the other hand, once the computing system 100 has identified the terminal node of the detour edge 436 (node 6 in this case), it can be determined that an alternative path / route has been found, including the detour edge 436 from node 1 to node 6. As shown in Figure 5D, since node 6 is also the destination node 308, no other route had to be traversed to reach node 6. Therefore, the only alternative route was node 6 → 1. On the other hand, to complete the alternative route, computing system 100 can further continue moving backward through the graph until it reaches the starting node 310 (e.g., node 0). Thus, in a given embodiment, computing system 100 can proceed from node 1 to 0. On the other hand, once a complete alternative route is identified, the alternative route may be inserted as an alternative route in the alternative route sequence 518. Figure 5D shows the alternative route sequence 518, enumerating the routes as 0 → 1 → 6.
[0069] On the other hand, as shown in step 510 of Figure 5A, the computing system 100 can further generate alternative route sequences 518 by continuing to traverse the route graph 440 from child node 438 to further child node 446. The purpose of performing these additional traverses is to further locate alternative routes / routes with further detour edges 444 associated with further child node 446.
[0070] On the other hand, information relating to further child nodes 446 may be stored in the heap data structure 520. In the embodiment shown in Figure 5B, indices 520c-520f show an example of information relating to further child nodes 438 that may be stored in the heap data structure 520. As an example, index 520c is shown storing and representing information relating to a further child node 446 associated with a further detour edge 444 from node 2 to node 1. On the other hand, information relating to the edge represented by the further child node 446 (e.g., the further detour edge 444 represented by the node) may be stored in the heap data structure 520. On the other hand, further information stored in the heap data structure 520 may include the cost associated with taking that edge (e.g., the detour cost and the further detour cost to take the further detour edge 444), and information relating to the parent node of the further child node 446 (e.g., a node on the path graph 440 that is a preceding node traversed from there to arrive at the further child node 446).
[0071] With respect to index 520c, it is shown that the parent node of the further child node 446 is child node 438, which is associated with the detour edge 436 from node 1 to node 2. Index 520c also shows that the cost associated with taking the further child node 446 via child node 438 is "5". This is determined by aggregating the cost of taking child node 438 (1→2) from root node 432 (6→R), which is 2 (i.e., the detour cost), and the cost of taking the further child node 446 (2→1) from child node 438 (1→2), which is 3 (i.e., the further detour cost).
[0072] Continuing the embodiment, in the side view, once the computing system 100 has traversed from child node 438 to further child node 446, as shown in step 512 of Figure 5A, the computing system 100 can identify further detour edges 444 associated with the further child node 446. For example, with respect to Figure 5B, if further child node 438 is a node representing a further detour edge 444 from node 2 to node 1, the computing system 100 can locate the further detour edge 444 as the edge associated with traversing from node 2 to node 1.
[0073] On the side, as shown in step 514 of Figure 5A, once a further detour edge 444 is located, the computing system 100 can generate an alternative path sequence 518 by traversing the graph shown in Figure 5E in reverse from the destination node 308 (node 6) until the computing system 100 decides to reach the terminal node of the further detour edge 444. On the side, the computing system 100 can perform this traverse by taking one or more tree edges 316 in reverse from the destination node 308 until the computing system 100 encounters the terminal node of the detour edge 436 associated with the parent node (i.e., child node 438) of a further child node 446. In the embodiment shown in Figure 5E, the terminal node is node 2, since this is the terminal node of the detour edge 436 associated with the child node 438 from node 1 to node 2. On the side, once a terminal node is located, the computing system 100 can take that detour edge 436 in the reverse direction until it reaches the terminal node of a further detour edge 444. In the embodiment of Figure 5E, this is node 1. Once the computing system 100 has located the terminal node of a further detour edge 444, it can determine that it has found a further alternative route and can consider the nodes it has traversed along that route. In the embodiment shown in Figure 5E, that alternative route consists of nodes 6→4→2→1.
[0074] On the side, as shown in step 516 of Figure 5A, once the terminal node of the further detour edge 444 is located, the computing system 100 can determine that it has found or discovered an alternative path / route. On the side, the discovered alternative path / route may be a path / route associated with taking that further detour edge 444 to the destination node 308. In the case of the further detour edge 444 from node 2 to node 1, the computing system 100 can determine that it has found an alternative path / route that includes the further detour edge 444 from node 2 to node 1. To complete the alternative path / route, the computing system 100 can further continue moving backward through the graph until it reaches the starting node 310 (e.g., node 0). Thus, in a given embodiment, the computing system 100 can proceed from node 1 → 2 → 0. Once the computing system 100 reaches the starting node 310, the computing system 100 can consider all the nodes it has traversed in order to determine the nodes and edges that make up the alternative path / route it has traversed. On the side, the traversed route may be inserted as an alternative route in the alternative route sequence 518. Figure 5E shows the alternative route sequence 518, which enumerates the alternative routes found based on the above embodiment, which is the route from node 0→2→1→2→4→6.
[0075] On the side, as shown in step 517 of Figure 5A, the computing system 100 can continue to traverse the path graph 440 sequentially with respect to all further child nodes in a manner similar to that described, and locate all alternative paths / routes with respect to the detour edges associated with those further child nodes. In this way, all alternative paths / routes and further alternative paths / routes may be determined and / or found. On the side, upon completion of step 517, a complete alternative path sequence 518 is generated.
[0076] On the other hand, upon completion of the alternative route sequence 518, the computing system 100 may use the alternative route sequence 518 to perform further functions. For example, on the other hand, as described above with respect to steps 208 and 210 in Figure 2, the computing system 100 may further generate a bidirectional graphical user interface (GUI) (as shown in Figure 7-9) for displaying the alternative route sequence 518. On the other hand, as shown in step 210, the computing system 100 may transmit the bidirectional GUI for display on a further device. For example, on the other hand, the transmission may be to the first device 102 for display on the screen, monitor, or other display unit of the first device 102.
[0077] On the other hand, based on the methods described above, computing system 100 may encounter a situation in which it may traverse a path / route infinitely while attempting to discover and / or locate an alternative path. This is especially true when a path is connected in a circular fashion. For example, Figure 5E shows two edges that are connected in a circular fashion to each other, from node 1 to node 2 and from node 2 to node 1. In some cases, this may lead computing system 100 to traverse nodes in an infinite loop, depending on the graph structure. To avoid infinite loop situations, safety mechanisms may be implemented for computing system 100 such that computing system 100 may be limited to traversing edges over a maximum number of iterations (i.e., up to a maximum distance) and / or until a maximum value with respect to the edge weighting is achieved with respect to the path / route. For example, on the other hand, Dijkstra's algorithm or A *When applying any of the algorithms, a rule may be set for the computing system 100 such that the computing system 100 will only do so over a certain distance at most, where the distance represents the maximum number over which the weights of one or more tree edges, detour edges, and further detour edges can be summed. In other words, a similar rule may be set for any of the steps mentioned with respect to Figures 2, 3, 4A, 4B, or 5A. Thus, the traverse of the computing system 100 may be controlled so that meaningful alternative paths / routes are determined and / or located.
[0078] It has been found that the computing system 100 described above significantly improves upon the technical state of conventional systems by providing a novel method for locating alternative routes using custom data structures (such as graph data structures and heap data structures) which can be used to represent real-world destinations. Conventional systems are typically configured to return the optimal route 306 to a destination. However, computing system 100 offers a more robust capability in that it can dynamically locate many alternative routes to a destination, giving users of computing system 100 more choices when determining the routes available to a real-world destination. Computing system 100 does this through the novel methods and procedures described above, which, when implemented, provide computing system 100 with a fast and efficient method for locating alternative routes.
[0079] The computing system 100 also provides a way to leverage the custom data structures described to significantly improve the computer's performance when locating alternative routes. For example, the use of the heap data structure 520 allows the computing system 100 to generate an ordered sequence of alternative routes that can be pre-ordered when they are located, and therefore, once the alternative routes are determined, requires less data processing compared to a system that performs ordering as a final step.
[0080] The computing system 100 can also be used to significantly improve industries such as transportation and logistics, where alternative routes need to be dynamically determined based on changing conditions. For example, if a transportation route becomes unnavigable due to unforeseen circumstances, the computing system 100 may be used to quickly and efficiently locate alternative routes. In this way, disruptions to commercial activities and logistics can be minimized, thus saving money and time for businesses, individuals, etc.
[0081] Methods 200, 300, 400, 401, and 500 described above may be implemented as instructions stored on a non-transient computer-readable medium to be executed by one or more computing devices such as a processor, a special-purpose computer, an integrated circuit, an integrated circuit core, or a combination thereof. The non-transient computer-readable medium may be implemented using any number of memory units such as volatile memory, non-volatile memory, internal memory, external memory, or a combination thereof. The non-transient computer-readable medium may be integrated as part of computing system 100 or installed as a removable part of computing system 100. The non-transient computer-readable medium may be integrated as part of a first device 102, a second device 106, or a combination thereof.
[0082] Components of this system Figure 6 shows an exemplary architecture 600 of components implementing the computing system 100, according to an aspect of this disclosure. In this aspect, the components may be part of any of the devices of the computing system 100 (e.g., a first device 102 or a second device 106), and may be hardware components on which the methods of the computing system 100 are implemented. In this aspect, the components may include a control unit 602, a storage unit 606, a communication unit 616, and a user interface 612. The control unit 602 may include a control interface 604. The control unit 602 may run software 610 to provide some or all of the intelligence of the computing system 100. The control unit 602 may be implemented in several different ways. For example, the control unit 602 may be a processor, an application-specific integrated circuit (ASIC), an embedded processor, a microprocessor, hardware control logic, a hardware finite state machine (FSM), a digital signal processor (DSP), a field-programmable gate array (FPGA), or a combination thereof.
[0083] The control interface 604 may be used for communication between the control unit 602 and other functional units or devices of the computing system 100. The control interface 604 may also be used for communication with the outside of the functional units or devices of the computing system 100. The control interface 604 may receive information from the functional units or devices of the computing system 100 or from the remote device 620, and may transmit information to the functional units or devices of the computing system 100 or to the remote device 620. The remote device 620 refers to a unit or device outside of the computing system 100.
[0084] The control interface 604 may be implemented in different ways, and may include different implementations depending on the functional unit or device or remote device 620 of the computing system 100 that interfaces with the control unit 602. For example, the control interface 604 may be implemented using an optical network, waveguides, a wireless network, a wired network for bus mounting, an application programming interface, or a combination thereof. The control interface 604 may be connected to a communication infrastructure 622, such as a bus, to interface with the functional unit or device or remote device 620 of the computing system 100.
[0085] The storage unit 606 may store software 610. For illustrative purposes, the storage unit 606 is shown as a single element, but it should be understood that the storage unit 606 can be a distribution of storage elements. Also, for illustrative purposes, the storage unit 606 is shown as a single hierarchical storage system, but it should be understood that the storage unit 606 can have different configurations. For example, the storage unit 606 may be formed using different storage technologies that form a memory hierarchical system including different levels of cache, primary memory, rotating media, or offline storage devices. The storage unit 606 may be volatile memory, non-volatile memory, internal memory, external memory, or a combination thereof. For example, the storage unit 606 may be a non-volatile storage device such as non-volatile random access memory (NVRAM), flash memory, or disk storage device, or a volatile storage device such as static random access memory (NVRAM) or dynamic random access memory (DRAM).
[0086] The storage unit 606 may include a storage interface 608. The storage interface 608 may be used for communication between the storage unit 606 and other functional units or devices of the computing system 100. The storage interface 608 may also be used for communication with the outside of the computing system 100. The storage interface 608 may receive information from other functional units or devices of the computing system 100 or from the remote device 620, and may transmit information to other functional units or devices of the computing system 100 or to the remote device 620. The storage interface 608 may include different implementations depending on the functional unit or device of the computing system 100 or the remote device 620 interfaced with the storage unit 606. The storage interface 608 may be implemented using techniques and methods similar to those used for the implementation of the control interface 604.
[0087] The communication unit 616 may enable communication to devices, components, modules, or units of the computing system 100, or to remote devices 620. For example, the communication unit 616 may enable the computing system 100 to communicate between its components or devices, for example, between a first device 102 and a second device 106. The communication unit 616 may further enable devices of the computing system 100 to communicate with remote devices 620, such as attachments, peripheral devices, or combinations thereof, through the network 104.
[0088] As shown, network 104 may encompass and represent a variety of networks and network topologies. For example, network 104 may be part of a network and may include wireless communication, wired communication, optical communication, ultrasonic communication, or a combination thereof. For example, satellite communication, cellular communication, Bluetooth®, Infrared Data Association Standards (IrDA), Wireless Fidelity (WiFi), and Global Interoperability Microwave Access (WiMAX) are examples of wireless communication that may be included within network 104. Cable, Ethernet®, Digital Subscriber Line (DSL), Fiber Optic Line, Fiber to the Home (FTTH), and Basic Telephone Services (POTS) are examples of wired communication that may be included within network 104. Furthermore, network 104 may traverse several network topologies and distances. For example, network 104 may include direct connection, personal area network (PAN), local area network (LAN), metropolitan area network (MAN), wide area network (WAN), or a combination thereof.
[0089] The communication unit 616 may also function as a communication hub, enabling devices of the computing system 100 to function as part of the network 104 and not be limited to being endpoints or terminal units to the network 104. The communication unit 616 may include active and passive components such as microelectronics or antennas for interaction with the network 104.
[0090] The communication unit 616 may include a communication interface 618. The communication interface 618 may be used for communication between the communication unit 616 and other functional units or devices of the computing system 100, or to a remote device 620. The communication interface 618 may receive information from other functional units or devices of the computing system 100 or from the remote device 620, and may transmit information to other functional units or devices of the system 100 or to the remote device 620. The communication interface 618 may include different implementations depending on the functional unit or device interfaced with the communication unit 616. The communication interface 618 may be implemented using techniques and methods similar to those used for the implementation of the control interface 604.
[0091] The user interface 612 may present information generated by the computing system 100. Alternatively, the user interface 612 allows a user of the computing system 100 to interface with a device or remote device 620 of the computing system 100. The user interface 612 may include input devices and output devices. Embodiments of input devices in the user interface 612 may include keypads, buttons, switches, touchpads, soft keys, keyboards, mice, or any combination thereof for providing data and communication inputs. Embodiments of output devices may include a display interface 614. Alternatively, the alternative path sequence 518 (in Figures 5C-5E) may be displayed on the display interface 614. The control unit 602 may operate the user interface 612 to present information generated by the computing system 100. The control unit 602 may also run software 610 to present information generated by the computing system 100 or to control other functional units of the computing system 100. The display interface 614 may be any graphical user interface, such as a display, projector, video screen, or any combination thereof.
[0092] This system's bidirectional GUI Figures 7-9 show an alternative route sequence 518 (shown in Figures 5C-5E) and a graphical user interface (GUI) for enabling a user to interface with the computing system 100, according to aspects of this disclosure. In relation to Figure 7, a bidirectional interface 702 is shown. In one aspect, the bidirectional interface 702 may be generated by the computing system 100 and transmitted to a device of the computing system 100 for display on a display unit. In one aspect, the display unit may be the display interface 614 in Figure 6. In one aspect, the bidirectional interface 702 may be accessed via application software or a web browser installed on one of the devices of the computing system 100. For example, in one aspect, the bidirectional interface 702 may be accessed via application software or a web browser installed on a first device 102 or a second device 106.
[0093] On the other hand, the bidirectional interface 702 can enable a user of the computing system 100 to interact with and / or interface with the computing system 100. On the other hand, the interaction may include, for example, selecting a real-world destination where the computing system 100 can find alternative routes to and from it. On the other hand, based on the selection, the computing system 100 may generate alternative routes based on methods 200, 300, 400, 401, and 500 described above and present these alternative routes to the user via the bidirectional interface 702.
[0094] On the other hand, the bidirectional interface 702 can further enable the user to interact with the computing system 100 by providing the user with the ability to filter and / or select alternative routes / paths that can be located using criteria. For example, on the other hand, the user can select a particular carrier that the user prefers to use. In the embodiment shown in Figure 7, 710 shows a dropdown list of airlines that can be selected by the user. On the other hand, based on the user selection, only routes / paths relating to the selected carrier may be filtered and displayed by the computing system 100.
[0095] On the other hand, further filtering and / or selection criteria may be provided by the user to further refine and / or filter the routes located by the computing system 100. For example, on the other hand, the user may further select a port of arrival using a drop-down list that can be accessed via button 708. In an embodiment, the port of arrival may be a specific airport, seaport, bus terminal, etc., which may be the destination. On the other hand, as shown in Figure 7, a further toggle button 706 may be used to further refine the routes generated and / or located by the computing system 100 based on criteria such as minimizing travel time along the route, so that only routes within a threshold distance or travel time may be located and / or displayed. Other criteria such as minimizing transfer time, providing the fastest route, providing a route within a certain monetary cost, and required arrival and departure dates can also be used as filtering criteria.
[0096] On the side, the bidirectional interface 702 can display alternative routes located by the computing system 100 based on user-provided filtering criteria. In Figure 7, 704a-704g show examples of alternative routes located by the computing system 100 based on user-provided filtering criteria. On the side, 704a-704g can display further information associated with each alternative route. On the side, this information may include the date and time associated with the route, the carrier operating that route, information about the carrier and / or airship, and further information about the route compared to other routes (e.g., whether the route is the cheapest route in terms of monetary cost, whether the route is the fastest route to reach the destination, whether the carrier and / or airship operating the route provides cargo-friendly airships, etc.). On the side, this information may be retrieved from a database or repository that stores this information. On the other hand, this information may be dynamically retrieved and / or determined from a database or repository when the computing system 100 locates alternative routes.
[0097] As an example, 704b displays a route with an associated departure date of 9 July 2021. 704b also shows the estimated travel time associated with the route, which is 14:30 PDT to 22:24 EDT. The carrier (e.g., United Airlines) may be displayed, and information related to that carrier may also be displayed (e.g., the flight number is UA 2612, and the aircraft to be used is a Boeing 737-900 aircraft). 704b may also display the estimated time of arrival at the destination port (e.g., 11:20 PDT). 704b may further display a ribbon or icon indicating further information about the route. In the example shown in Figure 7, the icon shown for 704b indicates that the route is the cheapest in terms of monetary cost compared to other routes, and is also cargo-friendly (e.g., goods or personnel exceeding a certain threshold mass, size, or weight can also be transported using that route).
[0098] On the other hand, based on the information displayed on the bidirectional interface 702, a user of the computing system 100 can determine and select an alternative route that is optimal for the user's specific transportation needs. On the other hand, this may be done via a button or icon, or by clicking on a specific route of choice.
[0099] With respect to Figure 8, a second bidirectional interface 802 is shown. On the side, the second bidirectional interface 802 can display recommended routes 804 to the user. On the side, the recommended routes 804 may be based on various filtering criteria entered by the user and / or on a predictive algorithm implemented as part of a method for generating alternative routes by the computing system 100. For example, on the side, if the user enters a filtering criterion for locating routes, the computing system 100 can use that criterion to generate and / or locate routes that satisfy that criterion, and further recommend routes based on that criterion. On the side, certain tie-breaking criteria and / or rules may also be implemented to refine and / or optimize the recommendations. For example, if multiple routes that meet the filtering criteria are located, the computing system 100 can further select a recommended route from among the multiple routes by selecting a route that meets further criteria such as being the cheapest in terms of monetary cost, the fastest route to the destination, and the route with the fewest transfers.
[0100] On the side, the computing system 100 can further use a prediction algorithm to make recommendations to the user. The prediction algorithm refers to an algorithm or a set of algorithms that can be implemented by the computing system 100 to learn patterns about routes / destinations, carriers, etc. over a certain time period. On the side, based on the learned patterns, the computing system 100 can make predictions about routes / destinations that are likely to be the best routes for the user. On the side, the prediction algorithm can also take into account the user's filtering criteria when providing recommendations. For example, if the user has a specific carrier that the user desires to use, the prediction algorithm can make predictions based on the learned information about that specific carrier and make recommendations only regarding that specific carrier. On the side, the prediction algorithm can use tools such as TensorFlow TM to be trained using machine learning and / or artificial intelligence techniques to learn patterns about routes / destinations, carriers, etc.
[0101] On the other hand, a predictive algorithm may be trained to learn patterns relating to a particular real-world destination. On the other hand, the patterns learned may relate to, for example, the times and dates when a route to a particular destination is most congested, the times when a route to a particular destination experiences frequent delays, the days and / or months when a particular destination has unfavorable weather patterns that necessitate interruptions or frequent route changes to and from that destination, etc. Similarly, a predictive algorithm may be trained to learn patterns relating to a particular carrier. For example, a predictive algorithm may be trained to learn carriers that consistently meet their estimated arrival times, carriers that experience frequent delays, carriers that frequently have damaged or broken aircraft or vessels, the monetary costs associated with a particular carrier relating to a route, etc. The foregoing are examples of patterns that can be learned by a predictive algorithm. POSA will recognize that other patterns consistent with the above examples can also be learned using a predictive algorithm.
[0102] On the other hand, once trained, the predictive algorithm may be used to make recommendations regarding routes that best suit the user's needs. In this way, the computing system 100 can provide the user with the route that is considered the best possibility. The predictive algorithm also enables the computing system 100 to continuously learn patterns about routes that best suit the user's needs and optimize recommendations to the user. The ability to do so can provide the computing system 100 with the ability to recommend routes that are determined to be the most reliable for transporting goods and personnel. On the other hand, the most reliable route is more likely to reduce the chances that the user will have to change the route of their shipment due to weather, delays, unreliable carriers, etc., which can result in the user saving money and time by taking the recommended route.
[0103] With respect to Figure 9, a third bidirectional interface 902 is shown. In a side view, the third bidirectional interface 902 may be part of a display of transportation and / or logistics application software that can be accessed via a desktop application or via a browser. In a side view, the third bidirectional interface 902 may have a second bidirectional interface 802 integrated as part of the third bidirectional interface 902, so that the user of the third bidirectional interface 902 may have the ability to have the user show recommended routes to a destination and select that route when planning the shipment / dispatch of goods or personnel.
[0104] On the other hand, recommendations may be based on various inputs provided by the user via a third bidirectional interface 902 and / or on information stored regarding shipments, such as those shown in various boxes and windows of the third bidirectional interface 902. On the other hand, the displayed and / or stored information can provide information and filtering criteria used by the computing system 100 to generate and / or locate alternative routes and / or recommended routes.
[0105] The above detailed description and aspects of the disclosed computing system 100 are not intended to be exhaustive or to limit the disclosed computing system 100 to the precise form disclosed above. Specific embodiments relating to the computing system 100 are described above for illustrative purposes, but various equivalent modifications are possible within the scope of the disclosed computing system 100, as a person skilled in the art will recognize. For example, while processes and methods are presented in a given order, alternative implementations may employ systems having processes or methods, performing routines having steps in a different order, and some processes or methods may be removed, moved, added, subdivided, combined, or modified to provide alternative or secondary combinations. Each of these processes or methods may be implemented in various different ways. Also, while processes or methods are shown as being performed sequentially from time to time, these processes or blocks may instead be performed or implemented in parallel or at different times.
[0106] The resulting methods 200, 300, 400, 401, and 500 described above, as well as the computing system 100, may be implemented by adapting components for cost-effective, highly versatile, accurate, rapid, efficient, and economical manufacturing, application, and use. Another important aspect of the aspects of this disclosure is that it beneficially supports and services the historical trend of reducing costs, simplifying systems, and / or increasing performance.
[0107] These and other beneficial aspects of the aspects of this disclosure will consequently advance the art to at least the following level. While the aspects disclosed are described as best modes for implementing the computing system 100, it should be understood that many alternatives, modifications, and variations will be obvious to those skilled in the art in light of the description herein. Therefore, it is intended to encompass all such alternatives, modifications, and variations that fall within the scope of the claims included. All matters described herein or shown in the accompanying drawings are to be interpreted in an illustrative and non-limiting sense. Therefore, the scope of this disclosure should be determined not by the aspects illustrated, but by the claims and their equivalents.
Claims
1. A computer implementation method for generating alternative routes, wherein the method is (a) One or more computing devices identify the optimal path to a destination node on a first graph, wherein the identification is: Determining one or more optimal path nodes, Determining one or more tree edges that represent the connections between the one or more optimal path nodes: This includes, (b) The one or more computing devices generate a path graph, the generation being: (i) Generate a dummy node connected to the destination node as an entry point to the first graph, (ii) generating a false edge indicating a connection from the destination node to the dummy node, (iii) Assigning the dummy node as the root node of the path graph, (iv) Determining an alternative route node on the first graph, wherein the alternative route node is directly connected to the destination node or one of the one or more optimal route nodes, (v) Determining a detour edge that represents a connection from the alternative route node to the destination node or to one of the one or more optimal route nodes, (vi) Specifying the determined detour edge as a child node of the root node of the path graph, (vii) Identifying the detour cost associated with traversing the detour edge in order to reach the destination node, (viiii) Inserting the detour cost as a variable in the path graph, (ix) Determining further alternative path nodes on the first graph, wherein the further alternative path nodes are directly connected to the alternative path nodes, (x) Determine further detour edges representing further connections from the further alternative path nodes to the further alternative path nodes, (xi) Specify the determined further detour edge as a further child node of the child node, (xi) Identifying the further detour costs associated with traversing the further detour edges to reach the alternative path node, (xiiii) Inserting the further detour cost as a further variable in the path graph, (xiv) Repeat steps (iv) to (xiii) in succession until all of the alternative path nodes, further alternative path nodes, detour edges, further detour edges, detour costs, and further detour costs are determined with respect to the first graph. This includes, (c) One or more computing devices generate an alternative route sequence based on the route graph, wherein the generation is (xv) Traversing the path graph from the root node to the child node, (xvi) Determining the bypass edge associated with the child node, (xvii) Traversing the first graph from the destination node to the determined detour edge associated with the child node, (xviiii) Based on determining the detour edge, determine an alternative path including the detour edge, (xix) Traversing from the child node to the further child node, (xx) Determining the further detour edge associated with the further child node, (xxi) Traversing the first graph from the destination node until the determined further detour edge associated with the further child node is found on the first graph, (xxii) Based on determining the further detour edges, determine further alternative routes including the further detour edges, (xxiii) Repeat (xv) to (xxii) in succession until all of the above alternative routes and further alternative routes are determined. This includes, (d) One or more computing devices generate a bidirectional graphical user interface (GUI) for displaying the alternative route sequence, (e) The one or more computing devices transmit the bidirectional GUI to a display unit for display. Methods that include...
2. Identifying the optimal path to the destination node in (a) is done using Dijkstra's algorithm or A * The method according to claim 1, based on applying any of the algorithms.
3. The method is to use Dijkstra's algorithm or A to a maximum of a predetermined distance. * The method according to claim 2, further comprising applying one of the algorithms, wherein the predetermined distance represents the maximum value of the aggregated sum of one or more weights of the tree edge, the detour edge, and the further detour edge, each weight representing one or more of time, monetary cost, and distance.
4. The method according to claim 1, further comprising storing the path graph as an ordered heap data structure.
5. Identifying the detour cost associated with traversing the detour edge to reach the destination node is: Identifying the starting node on the first graph, Identifying the path from the starting node to the destination node, wherein the path includes the detour edge. Aggregating the weights of a first set associated with the one or more tree edges that represent the connection between the one or more optimal path nodes and the destination node, The weights of the second set are aggregated, wherein the weights of the second set include each weight along the path from the starting node to the destination node. The detour cost is determined by subtracting the weight of the second aggregated set from the weight of the first aggregated set. The method according to claim 1, as determined by...
6. Identifying the further detour costs associated with traversing the further detour edges to reach the alternative path node is, Identifying the starting node on the first graph, Identifying the path from the starting node to the destination node, wherein the path includes the further detour edges, Aggregating the weights of a third set associated with the one or more tree edges that represent the connection between the one or more optimal path nodes and the alternative path nodes, The fourth set of weights is aggregated, wherein the fourth set of weights includes each weight along the path from the starting node to the alternative path node. The further detour cost is determined by subtracting the weight of the aggregated third set from the weight of the aggregated fourth set. The method according to claim 1, as determined by...
7. The method described above is: The system receives a user selection to choose a route from the alternative route sequence via the aforementioned bidirectional GUI, The one or more computing devices generate a transport route based on the selected route in order to transport a person or goods. The method according to claim 1, further comprising:
8. A non-transient computer-readable medium, the non-transient computer-readable medium containing instructions, the instructions causing a processor to perform an operation for generating an alternative path, the operation being, (a) One or more computing devices identify the optimal path to a destination node on a first graph, wherein the identification is: Determining one or more optimal path nodes, Determining one or more tree edges that represent the connections between the one or more optimal path nodes: This includes, (b) The one or more computing devices generate a path graph, the generation being: (i) Generate a dummy node connected to the destination node as an entry point to the first graph, (ii) generating a false edge indicating a connection from the destination node to the dummy node, (iii) Assigning the dummy node as the root node of the path graph, (iv) Determining an alternative route node on the first graph, wherein the alternative route node is directly connected to the destination node or one of the one or more optimal route nodes, (v) Determining a detour edge that represents a connection from the alternative route node to the destination node or one of the one or more optimal route nodes, (vi) Specifying the identified detour edge as a child node of the root node of the path graph, (vii) Identifying the detour cost associated with traversing the detour edge in order to reach the destination node, (viiii) Inserting the detour cost as a variable in the path graph, (ix) Determining further alternative path nodes on the first graph, wherein the further alternative path nodes are directly connected to the alternative path nodes, (x) Determine further detour edges representing further connections from the further alternative path nodes to the further alternative path nodes, (xi) Specify the determined further detour edge as a further child node of the child node, (xi) Identifying the further detour costs associated with traversing the further detour edges to reach the alternative path node, (xiiii) Inserting the further detour cost as a further variable in the path graph, (xiv) Repeat steps (iv) to (xiii) in succession until all of the alternative path nodes, further alternative path nodes, detour edges, further detour edges, detour costs, and further detour costs are determined with respect to the first graph. This includes, (c) One or more computing devices generate an alternative route sequence based on the route graph, wherein the generation is (xv) Traversing the path graph from the root node to the child node, (xvi) Determining the bypass edge associated with the child node, (xvii) Traversing the first graph from the destination node to the determined detour edge associated with the child node, (xviiii) Based on determining the detour edge, determine an alternative path including the detour edge, (xix) Traversing from the child node to the further child node, (xx) Determining the further detour edge associated with the further child node, (xxi) Traversing the first graph from the destination node until the determined further detour edge associated with the further child node is found on the first graph, (xxii) Based on determining the further detour edges, determine further alternative routes including the further detour edges, (xxiii) Repeat (xv) to (xxii) in succession until all of the above alternative routes and further alternative routes are determined. This includes, (d) One or more computing devices generate a bidirectional graphical user interface (GUI) for displaying the alternative route sequence, (e) The one or more computing devices transmit the bidirectional GUI to a display unit for display. Non-transient, computer-readable media, including those mentioned above.
9. The aforementioned operation is performed using Dijkstra's algorithm or A * A non-transient computer-readable medium according to claim 8, further comprising identifying the optimal path to the destination node in (a) based on the application of one of the algorithms.
10. The operation described above uses Dijkstra's algorithm or A up to a predetermined distance. * The non-transient computer-readable medium according to claim 9, further comprising applying one of the algorithms, wherein the predetermined distance represents the maximum value of the aggregated sum of one or more weights of the tree edge, the detour edge, and the further detour edge, each weight representing one or more of time, monetary cost, and distance.
11. The non-transient computer-readable medium according to claim 8, further comprising storing the path graph as an ordered heap data structure.
12. The operation involves identifying the detour cost associated with traversing the detour edge in order to reach the destination node. Identifying the starting node on the first graph, Identifying the path from the starting node to the destination node, wherein the path includes the detour edge. Aggregating the weights of a first set associated with the one or more tree edges that represent the connection between the one or more optimal path nodes and the destination node, The weights of the second set are aggregated, wherein the weights of the second set include each weight along the path from the starting node to the destination node. The detour cost is determined by subtracting the weight of the second aggregated set from the weight of the first aggregated set. A non-transient computer-readable medium according to claim 8, further comprising being determined by
13. The operation involves identifying the additional detour cost associated with traversing the additional detour edge to reach the alternative path node. Identifying the starting node on the first graph, Identifying the path from the starting node to the destination node, wherein the path includes the further detour edges, Aggregating the weights of a third set associated with the one or more tree edges that represent the connection between the one or more optimal path nodes and the alternative path nodes, The fourth set of weights is aggregated, wherein the fourth set of weights includes each weight along the path from the starting node to the alternative path node. The further detour cost is determined by subtracting the weight of the aggregated third set from the weight of the aggregated fourth set. A non-transient computer-readable medium according to claim 8, further comprising being determined by
14. The aforementioned operation is, The system receives a user selection to choose a route from the alternative route sequence via the aforementioned bidirectional GUI, The one or more computing devices generate a transport route based on the selected route in order to transport a person or goods. A non-transient computer-readable medium according to claim 8, further comprising:
15. A computing system for generating alternative routes, wherein the computing system is A memory unit for storing instructions, A control unit coupled to the aforementioned storage unit, A communication unit coupled to the storage unit and Equipped with, The control unit processes the stored instructions, (a) Identifying the optimal path to the destination node on the first graph, wherein the identification is Determining one or more optimal path nodes, Determining one or more tree edges that represent the connections between the one or more optimal path nodes: This includes, (b) generating a path graph, the generation of which means (i) Generate a dummy node connected to the destination node as an entry point to the first graph, (ii) generating a false edge indicating a connection from the destination node to the dummy node, (iii) Assigning the dummy node as the root node of the path graph, (iv) Determining an alternative route node on the first graph, wherein the alternative route node is directly connected to the destination node or one of the one or more optimal route nodes, (v) Determining a detour edge that represents a connection from the alternative route node to the destination node or to one of the one or more optimal route nodes, (vi) Specifying the determined detour edge as a child node of the root node of the path graph, (vii) Identifying the detour cost associated with traversing the detour edge in order to reach the destination node, (viiii) Inserting the detour cost as a variable in the path graph, (ix) Determining further alternative path nodes on the first graph, wherein the further alternative path nodes are directly connected to the alternative path nodes, (x) Determine further detour edges representing further connections from the further alternative path nodes to the further alternative path nodes, (xi) Specify the determined further detour edge as a further child node of the child node, (xi) Identifying the further detour costs associated with traversing the further detour edges to reach the alternative path node, (xiiii) Inserting the further detour cost as a further variable in the path graph, (xiv) Repeat steps (iv) to (xiii) in succession until all of the alternative path nodes, further alternative path nodes, detour edges, further detour edges, detour costs, and further detour costs are determined with respect to the first graph. This includes, (c) Generating an alternative route sequence based on the route graph, wherein the generation is (xv) Traversing the path graph from the root node to the child node, (xvi) Determining the bypass edge associated with the child node, (xvii) Traversing the first graph from the destination node to the determined detour edge associated with the child node, (xviiii) Based on determining the detour edge, determine an alternative path including the detour edge, (xix) Traversing from the child node to the further child node, (xx) Determining the further detour edge associated with the further child node, (xxi) Traversing the first graph from the destination node until the determined further detour edge associated with the further child node is found on the first graph, (xxii) Based on determining the further detour edges, determine further alternative routes including the further detour edges, (xxiii) Repeat (xv) to (xxii) in succession until all of the above alternative routes and further alternative routes are determined. This includes, (d) To generate a bidirectional graphical user interface (GUI) for displaying the alternative route sequence. It is configured to do the following: The communication unit processes the stored instructions, (e) Transmitting the bidirectional GUI to a display unit for display, (f) Receiving a user selection to select a route from the alternative route sequence via the bidirectional GUI. It is configured to do the following: The control unit is further configured to generate a transport route based on the selected route for transporting a person or goods, a computing system.
16. The control unit uses Dijkstra's algorithm or A * The computing system according to claim 15, further configured to identify the optimal path to the destination node in (a) based on the application of one of the algorithms.
17. The control unit uses Dijkstra's algorithm or A to control data up to a predetermined distance. * The computing system according to claim 16, further configured to apply any of the algorithms, wherein the predetermined distance represents the maximum value of the aggregated sum of one or more weights of the tree edge, the detour edge, and the further detour edge, each weight representing one or more of time, monetary cost, and distance.
18. The control unit is further configured to generate the path graph as an ordered heap data structure, The computing system according to claim 15, wherein the storage unit is further configured to store the path graph as the ordered heap data structure.
19. The control unit identifies the detour cost associated with traversing the detour edge in order to reach the destination node. Identifying the starting node on the first graph, Identifying the path from the starting node to the destination node, wherein the path includes the detour edge. Aggregating the weights of a first set associated with the one or more tree edges that represent the connection between the one or more optimal path nodes and the destination node, The weights of the second set are aggregated, wherein the weights of the second set include each weight along the path from the starting node to the destination node. The detour cost is determined by subtracting the weight of the second aggregated set from the weight of the first aggregated set. The computing system according to claim 15, further configured to be determined by
20. The control unit identifies the further detour cost associated with traversing the further detour edge in order to reach the alternative path node. Identifying the starting node on the first graph, Identifying the path from the starting node to the destination node, wherein the path includes the further detour edges, Aggregating the weights of a third set associated with the one or more tree edges that represent the connection between the one or more optimal path nodes and the alternative path nodes, The fourth set of weights is aggregated, wherein the fourth set of weights includes each weight along the path from the starting node to the alternative path node. The further detour cost is determined by subtracting the weight of the aggregated third set from the weight of the aggregated fourth set. The computing system according to claim 15, further configured to be determined by
Citation Information
Patent Citations
Route searching device
JP1997034910A
Navigation system, and method of notifying generation of alternative route
JP2005091247A
Navigation system and method for presenting alternative route
JP2005147818A
Navigation device and facility guidance method
JP2008267944A