The present invention relates to a context based ride offer search.
There has been a growing demand for ridesharing, especially in urban areas, as a solution to environmental conservation, economic efficiency, and congestion relief. In the ridesharing, a ridesharing searcher (passenger) needs to select an optimum one of ridesharing proposals (ride offers) from drivers.
According to an embodiment of the present invention, there is provided a computer-implemented method for searching for a ride offer. The method includes receiving a plurality of ride offers, wherein each of the plurality of ride offers specifies a route that a vehicle passes along. The method further includes receiving location information of an origin and a destination for a passenger, and a preference of the passenger for at least one of a get-on point, where the passenger gets into the vehicle, and a get-off point, where the passenger gets out of the vehicle. The method further includes determining an origin candidate point being a point in a first predetermined range from the origin, wherein the origin candidate point satisfies the preference for the get-on point. The method further includes determining an origin route being one of the routes specified in the received plurality of ride offers, wherein the origin route passes through the origin candidate point. The method further includes determining a destination candidate point being a point in a second predetermined range from the destination, wherein the destination candidate point satisfies the preference for the get-off point. The method further includes determining a destination route being one of the routes specified in the received plurality of ride offers, wherein the destination route passing through the destination candidate point. The method further includes determining an optimum route to suggest to the passenger, wherein the optimum route includes both the origin route and the destination route in common.
According to another embodiment of the present invention, there is provided a ride offer search apparatus. The ride offer search apparatus includes a ride offer receiver, a preference receiver, an origin candidate point determinator, an origin route determinator, a destination candidate point determinator, a destination route determinator, and an optimum route determinator. The ride offer receiver receives a plurality of ride offers, wherein each ride offer specifies a route that a vehicle passes along. The preference receiver receives location information for an origin and a destination of a passenger, and a preference of the passenger for at least one of a get-on point, where the passenger gets into the vehicle, and a get-off point, where the passenger gets out of the vehicle. The origin candidate point determinator determines an origin candidate point, wherein the origin candidate point is a point in a first predetermined range from the origin, and satisfies the preference for the get-on point. The origin route determinator determines an origin route, wherein the origin route is one of the routes specified in the plurality of ride offers, and passes through the origin candidate point. The destination candidate point determinator determines a destination candidate point, wherein the destination candidate point is a point in a second predetermined range from the destination, and satisfies the preference for the get-off point. The destination route determinator determines a destination route, wherein the destination route is one of the routes specified in the plurality of ride offers, and passes through the destination candidate point. The optimum route determinator determines an optimum route to suggest to the passenger, wherein the optimum route includes both the origin route and the destination route in common.
According to yet another embodiment of the present invention, there is provided a computer program product for searching for a ride offer. The computer program product includes a computer readable storage medium having program instructions embodied therewith. The program instructions are executable by a computer to cause the computer to receive a plurality of ride offers, wherein each of the plurality of ride offers specifies a route that a vehicle passes along. The program instructions are executable by a computer to further cause the computer to receive location information of an origin and a destination for a passenger, and a preference of the passenger for at least one of a get-on point, where the passenger gets into the vehicle, and a get-off point, where the passenger gets out of the vehicle. The program instructions are executable by a computer to further cause the computer to determine an origin candidate point being a point in a first predetermined range from the origin, wherein the origin candidate point satisfies the preference for the get-on point. The program instructions are executable by a computer to further cause the computer to determine an origin route being one of the routes specified in the plurality of ride offers, wherein the origin route passes through the origin candidate point. The program instructions are executable by a computer to further cause the computer to determine a destination candidate point being a point in a second predetermined range from the destination, wherein the destination candidate point satisfies the preference for the get-off point. The program instructions are executable by a computer to further cause the computer to determine a destination route being one of the routes specified in the plurality of ride offers, wherein the destination route passes through the destination candidate point. The program instructions are executable by a computer to further cause the computer to determine an optimum route to suggest to the passenger, wherein the optimum route includes both the origin route and the destination route in common.
According to yet another embodiment of the present invention, there is provided a computer-implemented method for searching for a ride offer. The method includes receiving plural ride offers, each ride offer specifying a route a vehicle passes along. The method further includes receiving a location information on an origin and a destination a passenger desires. The method further includes determining a connecting route being a route connecting the origin and the destination. The method further includes determining an origin route being one of the routes specified in the ride offers, the origin route including a section within a first predetermined range from the origin, the origin route crossing the connecting route. The method further includes determining a destination route being one of the routes specified in the ride offers, the destination route including a section within a second predetermined range from the destination, the destination route crossing the connecting route. The method further includes determining an optimum route to be suggested to the passenger, the optimum route being a combination of the origin route and the destination route.
According to yet another embodiment of the present invention, there is provided a ride offer search apparatus. The ride offer search apparatus includes a ride offer receiver, a location receiver, a connecting route determinator, an origin route determinator, a destination route determinator, and an optimum route determinator. The ride offer receiver receives plural ride offers, each ride offer specifying a route a vehicle passes along. The location receiver receives a location information on an origin and a destination a passenger desires. The connecting route determinator determines a connecting route being a route connecting the origin and the destination. The origin route determinator determines an origin route being one of the routes specified in the ride offers, the origin route including a section within a first predetermined range from the origin, the origin route crossing the connecting route. The destination route determinator determines a destination route being one of the routes specified in the ride offers, the destination route including a section within a predetermined range from the destination, the destination route crossing the connecting route. The optimum route determinator determines an optimum route to be suggested to the passenger, the optimum route being a combination of the origin route and the destination route.
According to yet another embodiment of the present invention, there is provided a computer program product for searching for a ride offer. The computer program product includes a computer readable storage medium having program instructions embodied therewith. The program instructions are executable by a computer to cause the computer to receive plural ride offers, each ride offer specifying a route a vehicle passes along. The program instructions are executable by a computer to further cause the computer to receive a location information on an origin and a destination a passenger desires. The program instructions are executable by a computer to further cause the computer to determine a connecting route being a route connecting the origin and the destination. The program instructions are executable by a computer to further cause the computer to determine an origin route being one of the routes specified in the ride offers, the origin route including a section within a first predetermined range from the origin, the origin route crossing the connecting route. The program instructions are executable by a computer to further cause the computer to determine a destination route being one of the routes specified in the ride offers, the destination route including a section within a second predetermined range from the destination, the destination route crossing the connecting route. The program instructions are executable by a computer to further cause the computer to determine an optimum route to be suggested to the passenger, the optimum route being a combination of the origin route and the destination route.
Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the attached drawings.
It is to be noted that the present invention is not limited to these exemplary embodiments to be given below and may be implemented with various modifications within the scope of the present invention. In addition, the drawings used herein are for purposes of illustration, and may not show actual dimensions.
An example shown in
Here, the origin and the destination of the passenger's movement (travel) are not always on the route of the ride offer (hereinafter may be referred to simply as the “route”), so that not only the route passing through the exact origin and the exact destination but also the route passing near the origin and near the destination are subject to search in the present exemplary embodiment.
In
The present exemplary embodiment may include three steps to find an optimum route(s). More specifically, the present exemplary embodiment firstly searches for an origin route, which is a route passing through or near the origin, to determine an origin route candidate(s). The present exemplary embodiment secondly searches for a destination route, which is a route passing through or near the destination, to determine a destination route candidate(s). The present exemplary embodiment finally calculates an optimum route(s), which is a route(s) to be suggested to the passenger, matching both of search conditions, i.e., the origin route candidate(s) and the destination route candidate(s). Hereinafter the ride offer including the optimum route is referred to as the optimum ride offer. Further, the optimum ride offer can be regarded as a search result. The details of the calculation of the optimum route will be described later.
Further, when the destination of the passenger's travel cannot be reached from the origin of the passenger's travel with a single route, i.e., a direct route, the passenger can transfer to another vehicle. That is to say, the passenger may take multiple (two or more) routes to move from the origin to the destination by changing the vehicles, if needed. Hereinafter, the multiple routes to be taken by the passenger in a single travel may be referred to as a transfer route. Here, the routes involved in the transfer route are not necessarily be intersected; the transfer route may involve no intersection of the routes.
In
Further, in the present exemplary embodiment, the passenger can search for a ride offer based on the passenger's preference expressed in a context (text). Hereinafter, the context indicating the passenger's preference is referred to as a “preference context”. The preference context may indicate an attribute of a get-on point and/or a get-off point. The get-on point refers to a point on a particular route where the passenger gets on the vehicle of the ride offer. The get-off point refers to a point on a particular route where the passenger gets off the vehicle of the ride offer. For example, the passenger may want to get on the vehicle at a point near a convenience store or a cafe to spend wait time for the arrival of the vehicle. In another example, the passenger may want to get off the vehicle at a point connected with a pedestrian path, so that the passenger can move safely. In still another example, the passenger may want to get off the vehicle at a point having a ridesharing history, so that the passenger can feel safe. Here, if the passenger searches for a ride offer based on a preference context “a cafe”, the route passing near a cafe is to be selected.
Further, the passenger may have multiple preference contexts for the get-on point and/or the get-off point. If the multiple preference contexts are specified by the passenger, a route including the point(s) satisfying the multiple preference contexts may be a candidate route.
The ride offer search server 100 may include an index processor 110, a direct ride processor 130, and a transfer ride processor 150. The index processor 110 conducts a preprocessing operation that processes a context index and a point index. The direct ride processor 130, in response to the search request, searches for ride offers having a direct route to output the optimum ride offer. The transfer ride processor 150 searches for ride offers having a transfer route.
The index processor 110 may include a ride offer storage 111, an index generator 113, a context index storage 115, and a point index storage 117.
The ride offer storage 111 stores ride offers received from the driver terminal 200, i.e., from the driver. Each ride offer may include information on a driver's ID, a type of a vehicle, a schedule (date and time) of the travel, and a route. The information on the route may further include information on passing points. Note that the passing points refer to points on the route where the passenger can get on and get off the vehicle. Here, the passing point may be an area within a predetermined range (e.g., a radius of 50 m) rather than an exact point. The starting point and the destination point of the driver's route are ones among the passing points. For example, the passing points may be a place as a landmark, such as a shop, a restaurant, an intersection of a road, a station rotary, or an entrance of a park. Note that the above get-on point and get-off point are selected among the passing points.
The index generator 113 generates the context index and the point index from the ride offers stored in the ride offer storage 111. The context index storage 115 stores the context index. The point index storage 117 stores the point index. The details of the context index and the point index will be described later.
The direct ride processor 130 may include an origin processor 131, a destination processor 141, and a direct route evaluator 149.
The origin processor 131 calculates origin route candidate(s). The origin processor 131 may include an origin mesh calculator 133, an origin context index searcher 135, and an origin route searcher 137. The origin mesh calculator 133 calculates meshes (described later) as to the origin of the passenger's travel. The origin context index searcher 135 searches for the points which are located near the origin and match the preference context, using the context index stored in the context index storage 115. The origin route searcher 137 searches for the origin route candidate(s), using the point index stored in the point index storage 117. The details of the operation of the origin processor 131 will be described later.
The destination processor 141 calculates destination route candidate(s). The destination processor 141 may include a destination mesh calculator 143, a destination context index searcher 145, and a destination route searcher 147. The destination mesh calculator 143 calculates meshes as to the destination of the passenger's travel. The destination context index searcher 145 searches for the points which are located near the destination and match the preference context, using the context index stored in the context index storage 115. The destination route searcher 147 searches for the destination route candidate(s), using the point index stored in the point index storage 117. The details of the operation of the destination processor 141 will be described later.
The direct route evaluator 149 evaluates the origin route candidate(s) from the origin route searcher 137 and the destination route candidate(s) from the destination route searcher 147. If the direct route evaluator 149 determines that a common route(s) between the origin route candidate(s) and the destination route candidate(s) exists, the direct route evaluator 149 outputs the optimum ride offer(s) having the common route(s) to the passenger terminal 300, i.e., to the passenger. If the direct route evaluator 149 determines that no common route exists, the direct route evaluator 149 outputs a calculation order to the transfer ride processor 150.
The transfer ride processor 150 may include an efficient route calculator 151, a candidate sorter 153, and a transfer route evaluator 159.
The efficient route calculator 151 receives the calculation order from the direct route evaluator 149 to calculate an efficient route(s). The efficient route calculator 151 calculates all of the efficient routes connecting the origin and the destination of the passenger's travel while satisfying a predetermined condition (described later).
The candidate sorter 153 sorts the origin route candidate(s) and the destination route candidate(s) using the efficient route determined by the efficient route calculator 151. The sorting of the origin route candidate(s) and the destination route candidate(s) will be described later.
The transfer route evaluator 159 evaluates the ride offer candidates from the candidate sorter 153 to output the optimum ride offer(s) to the passenger terminal 300, i.e., to the passenger.
Note that the ride offer storage 111 is an example of the claimed ride offer receiver. The origin mesh calculator 133 is an example of the claimed preference receiver and the location receiver. The origin context index searcher 135 is an example of the claimed origin candidate point determinator. The origin route searcher 137 is an example of the claimed origin route determinator. The destination context index searcher 145 is an example of the claimed destination candidate point determinator. The destination route searcher 147 is an example of the claimed destination route determinator. The direct route evaluator 149 is an example of the claimed optimum route determinator.
As shown in
Further, the map shown in
Hereinafter, referring to
As shown in
The ID of the route shown in
As shown in
As shown in
As shown in
Here, the meshes in the table shown in
Note that the context indexes are prepared for each preference context. In the search operation, the context index is determined according to each preference context specified in the search request to acquire candidate points (described later). Here, if the multiple preference contexts are included in a single search request, the candidate points may be narrowed down with multiple context indexes. That is to say, the candidate points may be narrowed down by using multiple search conditions such as “and”, “or”, “and/or” to combine the multiple context indexes.
As shown in
In the present exemplary embodiment, the calculation of the optimum route utilizes the multiplex indexes, i.e., the context index and the point index, to reduce the calculation costs. Here, as mentioned above, in the context index, the passing points are selected with the preference context and filtered by the mesh. Further, as mentioned above, in the point index, the routes are sorted by the passing points. The route having the subject passing point can be identified with the point index.
Hereinafter, the origin mesh and the adjacent meshes will be described in detail. The origin mesh is a mesh covering the origin of the passenger's travel. The adjacent meshes are meshes being adjacent to the origin mesh. In the example shown in
The passing points included in the origin mesh can be deemed as the passing points near the origin. That is to say, using the origin mesh can eliminate the need for an accurate calculation of the distance between the origin and the respective passing points. This can reduce the calculation cost to determine the passing points near the origin. Note that in the existing technology, all passing points on the routes passing near the origin or the destination are simply subject to calculation, so that the calculation is performed on any completely unrelated ride offer too, which is unnecessary.
Using the adjacent meshes allows to avoid missing the point(s) located near the origin and outside of the origin mesh. More specifically, focusing on the single origin mesh alone may result in missing the point(s) being close to the origin and located in the adjacent meshes. The points detected (covered) by a mesh are varied depending on settings for the mesh; with a single mesh in particular, such mesh settings significantly affect accuracy of the point detection. Using the adjacent meshes can reduce influence of the mesh settings on accuracy of the point detection.
The passing points determined with the origin mesh and the adjacent meshes may be further narrowed down by the distance between the respective points and the origin. That is to say, the points are filtered with a predetermined distance, i.e., walking distance from the origin of the passenger's travel. This may reduce the calculation costs for the ride offer search.
As shown in
The calculation of the transfer route uses the efficient route. The efficient route refers to the shortest route from the origin to the destination of the passenger's travel or a route having a length within a predetermined range from the length of the shortest route. Note that the efficient routes are defined independently of the routes in the ride offers.
Here, each efficient route is assigned a priority to evaluate the route for calculation of the optimum route. In the shown example, the priority is assigned based on the length of the subject efficient route. More specifically, a higher priority is assigned to an efficient route having a shorter length. The priority can be the inverse of the length of the subject efficient route. In
To determine the transfer route, the efficient routes and their priorities are used. More specifically, the exemplary embodiment prioritizes the routes crossing or overlapping one or more the efficient routes, because the route crossing (overlapping) one or more the efficient routes can be deemed as the routes being close to the shortest route. The priority of the subject route is determined by the priority of the efficient route the subject route crosses or overlaps. Note that if the subject route crosses multiple efficient routes, the priority of the subject route can be determined from the highest priority among the priorities of the multiple efficient routes. Further, if the subject route has multiple intersections with the single efficient route, the priority of the subject route can be increased. Note that the number of the multiple intersections is an example of the origin-oriented manner and a destination-oriented manner.
Here, in the calculation of the transfer route, the routes passing near the origin of the passenger's travel and the routes passing near the destination of the passenger's travel are respectively sorted according to their priorities. The calculation of the transfer route is conducted on a combination of one of the prioritized routes passing near the origin and one of the prioritized routes passing near the destination.
In the example shown in
The cost function can be defined as follows:
C(rorO,rorD,dOD,L)
where rorO is the distance from the origin to the subject route passing near the origin, and rorD is the distance from the subject route passing near the destination to the destination, dOD is the distance of the shortest path between the subject route passing near the origin and the subject route passing near the destination, and L is the length of a ride sharing section in the subject routes. Here, if an intersection occurs in the subject routes, dOD is set to zero. When a combination of the subject routes meets a predetermined condition, e.g., when the combination is found to have the minimum cost value, the combination is set to the optimum ride offer.
Note that rorO is an example of the claimed length of a path between the origin and the origin route. Further, rorD is an example of the claimed length of a path between the destination route and the destination. Further, dOD is an example of the claimed length of a shortest path between the origin route and the destination route. The cost value is an example of the claimed score. The paths between the origin and the subject route passing near the origin, between the subject route passing near the destination and the destination, between the subject route passing near the origin and the subject route passing near the destination are an example of the claimed walking path. The ride sharing section in the subject routes is an example of the claimed ride path.
C=100*(rorO+rorD+dOD)+L
The above cost function represents that the walking distance, i.e., rorO, rorD, and dOD, is weighted 100 times the traveling distance L on the vehicle. In the example shown in
Referring to
The index generator 113 firstly reads the ride offers (refer to
Next, the index generator 113 updates the context index (refer to
Next, the index generator 113 then updates the point index (refer to
Referring to
The origin mesh calculator 133 firstly retrieves the passenger's origin and the preference for the get-on point (OPREF) from the search request (step 801). The origin mesh calculator 133 then calculates the origin mesh and the adjacent meshes (step 802).
Next, the origin context index searcher 135 calculates a whole point set O using the context index (step 803). The whole point set O includes all passing points included in the origin mesh or the adjacent meshes and matching the preference specified in the search request. The origin context index searcher 135 then filters the whole point set O with a threshold LO (step 804). Specifically, the origin context index searcher 135 identifies the passing point(s), from the whole point set O, that is located within the predetermined distance (=the threshold LO) from the origin of the passenger's travel. The origin route searcher 137 then calculates the origin route candidate(s) using the point index (step 805). The origin route candidate is a route passing through the point included in the filtered whole point set O in step 804.
The destination mesh calculator 143 retrieves the passenger's destination and preference for the get-off point (DPREF) from the search request (step 806). The destination mesh calculator 143 then calculates the destination mesh and the adjacent meshes (step 807).
Next, the destination context index searcher 145 calculates a whole point set D (step 808). The whole point set D includes all passing points included in the destination mesh or the adjacent meshes and matching the preference specified in the search request. The destination context index searcher 145 then filters the whole point set D with a threshold LD (step 809). Specifically, the destination context index searcher 145 identifies the point(s), from the whole point set D, that is located within a predetermined distance (=the threshold LD) from the destination of the passenger's travel. The destination route searcher 147 then calculates the destination route candidate(s) using the point index (step 810). The destination route candidate is a route passing through the point included in the filtered whole point set D in step 810.
Next, the direct route evaluator 149 determines whether a common route exists between the origin route candidate(s) and the destination route candidate(s) (step 811). In other words, the direct route evaluator 149 determines whether at least one route is included in the origin route candidate(s) and the destination route candidate(s) in common. If the common route exists (Yes in step 811), the direct route evaluator 149 outputs the common route as the optimum ride offer, to the passenger terminal 300 (step 812).
Note that the origin mesh and the adjacent meshes are examples of the claimed first predetermined range and the claimed divided areas. The origin mesh is an example of the claimed origin area. The adjacent meshes of the origin mesh are examples of the claimed adjacent area. The destination mesh and the adjacent meshes are examples of the claimed second predetermined range. The whole point set O is an example of the claimed origin candidate point. The whole point set D is an example of the claimed destination candidate point. The origin route candidate is an example of the claimed origin route. The destination route candidate is an example of the claimed destination route. The common route is an example of the claimed optimum route. The threshold LD is an example of the claimed predetermined distance. The context index is an example of the claimed preference relationship. The point index is an example of the claimed route relationship.
Here, referring to
If a common route does not exist (No in step 811), the direct route evaluator 149 outputs the calculation order to the efficient route calculator 151 (step 901). The efficient route calculator 151 then calculates the efficient routes (step 902). The efficient route calculator 151 then calculates priorities of the origin route candidates (step 903). The efficient route calculator 151 also calculates priorities of the destination route candidates (step 904). The candidate sorter 153 then sorts the origin route candidates according to their priorities (step 905). Specifically, the candidate sorter 153 arranges the origin route candidates in descending order of the priority. The candidate sorter 153 also sorts the destination route candidates according to their priorities (step 906). Specifically, the candidate sorter 153 arranges the destination route candidates in descending order of the priority.
Next, the transfer route evaluator 159 combines one of the prioritized origin route candidates having the highest priority and one of the prioritized origin route candidates having the highest priority (step 907). The transfer route evaluator 159 then calculates a cost value gained by the cost function (step 908). The transfer route evaluator 159 then compares the gained cost value with a threshold CO (step 909). If the calculated cost function is smaller than the threshold CO (Yes in step 909), the transfer route evaluator 159 outputs the combination of the one of the origin route candidates and the one of the destination route candidates as the optimum route, to the passenger terminal 300 (step 910). Here, if the calculated cost function is equal to or larger than the threshold CO (No in step 909), the transfer route evaluator 159 combines another one of the origin route candidates and another one of the destination route candidates having the next highest priority (step 907). Note that the combination of the one of the origin route candidates and the one of the destination route candidates is an example of the claimed another optimum route.
Here, the above example produces the multiplex indexes based on the preference context in advance and uses the multiplex index in searching for a ride offer based on the preference context. This may reduce the calculation cost of the search, in particular the calculation cost as to the transfer route. Further, the above example enables a fast search for the ride offer by using the preference context, and contributes to, for example, implementation of more convenient user applications. Not only the search for the direct route but also the search for the transfer route can be performed fast. In the above mentioned example, the passenger may obtain the search result in real time.
Note that the passenger terminal 300 is an example of the claimed output terminal. The user interface 310 is an example of the claimed image.
Referring to
In
In the above explanation, the transfer route includes two routes, one passing near the origin and one passing near the destination. However, the number of the routes in a single transfer route is not limited to two. For example, a single transfer route may include three or more routes. That is to say, the passenger may change the vehicles two times or more in the single transfer route.
In the above explanation, the transfer route includes two routes, and both of the two routes cross the efficient route. However, the transfer route may include a route not crossing the efficient route.
In the above explanation, the adjacent meshes surrounds the origin (destination) mesh. However, the adjacent meshes are not required to surround the origin (destination) mesh. For example, if the origin of the passenger's travel is located on the edge of the area the ride offer search server 100 covers, the adjacent meshes do not surround the origin mesh.
In the above explanation, the preference is specified as to the get-on point and the get-off point. The ride offer search server 100 may further receive the preference as to transfer points. For example, the transfer route is assumed to include two routes, i.e., the first route and the second route. The passenger may specify the preference as to the get-off point on the first route, and as to the get-on point on the second route. In this example, the candidate points for transfer may be narrowed down by searching the context index using the preference as to the transfer points. Note that the preference may be specified as to at least one of the get-on point, the get-off point and the transfer points.
In the above explanation, the area in the map is divided into the meshes. However, the shape of the divided area is not limited to the mesh, i.e., the square or rectangular shape. Further, the area may be divided by streets or region classification, such as administrative districts.
The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.