The disclosed embodiments relate generally to grouping trip itineraries.
Travel websites provide tools for travelers to search for and display trip itineraries (e.g., transportation and lodging options). These tools typically generate a user interface that displays trip itineraries satisfying a search query submitted by a traveler. However, the same trip itineraries may be displayed multiple times under different names or descriptions. Furthermore, less desirable trip itineraries may be displayed. These trip itineraries clutter the results and make it more difficult for the traveler to identify a desired trip itinerary.
The embodiments disclosed in the present disclosure are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings. Like reference numerals refer to corresponding parts throughout the drawings.
The description that follows includes illustrative systems, methods, techniques, instruction sequences, and computing machine program products that embody illustrative embodiments. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter. It will be evident, however, to those skilled in the art that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known instruction instances, protocols, structures and techniques have not been shown in detail.
Note that the term “trip itinerary” is used in this specification to refer to one or more routes to one or more destinations that are associated with particular dates and/or times. A route may be traversed by an airplane, a train, a bus, a car, or any other mode of transportation. A destination may include a hotel, a restaurant, a point-of-interest (e.g., museum, landmark), or any other place to which a traveler may desire to travel. A route may include one or more legs between intermediate destinations. For example, a trip itinerary may include two routes: (1) a route from point A to point B and (2) a route from point B to point A (e.g., a round-trip trip itinerary). Route (1) may include two legs: (a) a leg from point A to point C and (2) a leg from point C to point B. Route (2) may include one leg from point B to point A.
Also note that although the following description refers to flights, the embodiments described herein may be applied to any mode of transportation including, but not limited to, airplane, train, bus, car, bicycle, foot, and the like. Furthermore, the embodiments described herein may be applied to displaying itineraries for hotel reservations, car rentals, restaurant reservations, and any type of reservation that involves a time and/or a date.
As discussed above, search tools on existing travel websites typically present all trip itineraries that satisfy a search query. In doing so, the same trip itinerary may be displayed multiple times. For example, a flight operated by one airline may be marketed by multiple airlines. Each of these airlines may use their own airline code and flight number. Accordingly, the same flight may be displayed multiple times as different flights. Moreover, similar and less desirable trip itineraries may also be displayed. For example, consider (1) a first flight that is priced at $300, leaves SFO at 9:00 AM and arrives at LAX at 10:00 AM, and has an on-time record of 89%, (2) a second flight that is also priced at $300, leaves SFO at 9:00 AM and arrives at LAX at 10:00 AM, and has an on-time record of 25%, and (3) a third flight that is priced at $350 and leaves SFO at 9:00 AM and arrives at LAX at 10:00 AM, and has an on-time record of 89%. In this example, the first flight may be more desirable than the second flight because the first flight has a higher on-time record than the second flight. The first flight may also be more desirable than the third flight because the first flight is less expensive than the third flight. Displaying all of these flights in the user interface may make it more difficult for the traveler to identify a desired trip itinerary.
The embodiments described herein provide techniques for grouping trip itineraries to reduce the number of redundant, worse, or similar trip itineraries displayed in the user interface.
In some embodiments, the server 102, the client computer system 104, the aggregator computer system 106, and the carrier computer system 110 are coupled to each other via network 120. Network 120 can generally include any type of wired or wireless communication channel capable of coupling together computing nodes (e.g., the server 102, the client computer system 104, the carrier computer system 110). This includes, but is not limited to, a local area network (LAN), a wide area network (WAN), or a combination of networks. In some embodiments, network 120 includes the Internet. In some embodiments, network 120 includes at least one private network (e.g., a virtual private network, a private physical network). In these embodiments, one or more of the server 102, the client computer system 104, the aggregator computer system 106, and the carrier computer system 110, are coupled to each other via the private network.
In some embodiments, the server 102 is configured to execute search queries to identify trip itineraries that satisfy search parameters received from a traveler using the client computer system 104.
In some embodiments, the server 102 periodically obtains updated data relating to trip itineraries from the carrier computer system 110 and/or the aggregator computer system 106. For example, the server 102 may obtain updated data indicating the status of trip itineraries (e.g., whether the trip itineraries are still available, the seats that are available). In these embodiments, the server 102 updates the database 212 using updated data relating to the trip itineraries.
Returning to
Note that the databases 111, 212, 308, and 406 may include any type of system for storing data in non-volatile storage. This includes, but is not limited to, systems based upon magnetic, optical, and magneto-optical storage devices, as well as storage devices based on flash memory and/or battery-backed up memory. In some embodiments, the databases 111, 212, 308, and 406 are distributed database (e.g., geographically distributed and/or distributed within a data center). In some embodiments, the databases 111, 212, 308, and 406 are relational databases. In some embodiments, the databases 111, 212, 308, and 406 are key-value stores.
The following discussion illustrates a typical process involving the networked system 100. A traveler using the client computer system 104 submits a search query including search parameters for trip itineraries to the server 102. In some embodiments, the search parameters include one or more of a departure point (e.g., departure city, departure airport, departure station), an arrival point (e.g., arrival city, arrival airport, arrival station), a departure date (or date range), a departure time (or time range), an arrival date (or date range), an arrival time (or time range), a cabin preference, a number of passengers, and preferred carriers. Note that some of the search parameters may be optional. For example, a departure point and an arrival point may be required, but the departure date, the departure time, the arrival date, the arrival time, the cabin preference, and the preferred carriers may be optional search parameters.
The server 102 then executes the search query to identify trip itineraries that satisfy the search parameters received from the client computer system 104. The server 102 may query the database 212 of the server 102 to identify trip itineraries stored in the database 212 that satisfy the search parameters. Alternatively or additionally, the server 102 may query the carrier computer system 110 and/or the aggregator computer system 106 to identify trip itineraries that satisfy the search parameters. The server 102 then transmits the identified trip itineraries to the client computer system 104.
The client computer system 104 then displays the received trip itineraries in a user interface (e.g., a web browser) on the display device of the client computer system 104. In some embodiments, the client computer system 104 displays the trip itineraries on a time graph in the user interface. In some embodiments, the time graph includes at least one dominating flight itinerary that is displayed to the exclusion of corresponding dominated flight itineraries. These embodiments are described in more detail below with respect to
The embodiments described herein use various data structures, which are described in more detail below with respect to
The domination module 208 identifies (1204) a dominating trip itinerary and a dominated trip itinerary from the plurality of trip itineraries, where the dominating trip itinerary satisfies predetermined domination criteria with respect to the dominated trip itinerary. Operation 1204 is described in more detail below with respect to
In some embodiments, a first trip itinerary satisfies the predetermined domination criteria with respect to a second trip itinerary when each parameter in a predetermined set of parameters for the first trip itinerary are equal to or higher in value with respect to each of the corresponding parameters in the predetermined set of parameters for the second trip itinerary.
In some embodiments, the predetermined set of parameters for a trip itinerary includes one or more of a departure point, an arrival point, one or more carriers, a price of a trip itinerary, a duration of the trip itinerary, a departure time of the trip itinerary, an arrival time of the trip itinerary, and a number of stops of the trip itinerary. For a given trip itinerary, values may be assigned to at least a subset of these parameters. A value may be assigned to a parameter using any technique (e.g., a mathematical function, heuristic rules). The following exemplary guidelines may be used when assigning values to parameters: a value for a departure point is higher when the departure point is close to a starting point (e.g., the starting point/departure point specified by a traveler in the search query), a value for an arrival point is higher when the arrival point is close to the destination, a value for a carrier (e.g., an airline, an airline alliance, a train company, a bus company) is higher when the carrier is one of the preferred carriers specified by a traveler, a value for a price of a trip itinerary is higher when the price is lower, a value for a duration of the trip itinerary is higher when the duration is shorter, a value for a departure time of the trip itinerary is higher when the departure time is within a traveler-defined and/or a system-defined time range, a value for an arrival time of the trip itinerary is higher when the arrival time is within a traveler-defined and/or a system-defined time range, and a value for a number of stops of the trip itinerary is higher when the number of stops is lower.
In some embodiments, at least one parameter in the predetermined set of parameters includes a tolerance range so that when a first value of the at least one parameter for the first trip itinerary and a second value of the at least one parameter for the second trip itinerary are within the tolerance range of each other, the first trip itinerary and the second trip itinerary are deemed to be equal in value with respect to the at least one parameter. For example, if a tolerance range is +/−1 hour for a departure time, trip itineraries having departure times within +/−1 hour may be deemed to be equal in value with respect to the departure time.
In some embodiments, the dominating trip itinerary and the dominated trip itinerary have a common departure point and a common arrival point. In some embodiments, the dominating trip itinerary and the dominated trip itinerary have departure points within a first predetermined distance of each other and arrival points within a second predetermined distance of each other. For example, a search query including a departure point in the San Francisco Bay area may produce trip itineraries having a departure point of SFO, OAK, or SJC. Similarly, an arrival point in the New York City area may include an arrival point of LGA, JFK, and EWR.
In some embodiments, the dominating trip itinerary and the dominated trip itinerary have a common departure date and a common arrival date.
Attention is now directed to
Attention is now directed to
The domination module 208 identifies (1402) trip itineraries in the plurality of trip itineraries with respect to which the respective trip itinerary satisfies the predetermined domination criteria. For example,
The domination module 208 adds (1404) the trip itineraries to the list of dominated trip itineraries for the respective trip itinerary. Continuing the example from above, the domination module 208 adds the trip itineraries B and C to the list of dominated trip itineraries for the trip itinerary A. The domination module 208 also adds the trip itinerary C to the list of dominated trip itineraries for the trip itinerary B.
The domination module 208 increments (1406) a dominated counter for each trip itinerary added to the list of dominated trip itineraries. The dominated counter indicates a number of trip itineraries that satisfy the predetermined domination criteria with respect to the trip itinerary added to the list of dominated trip itineraries. In other words, the dominated counter indicates the number of trip itineraries that dominate the added trip itineraries. For example, referring to
Returning to
Attention is now directed to
The domination module 208 identifies (1502) trip itineraries in the plurality of trip itineraries that satisfy the predetermined domination criteria with respect to the respective trip itinerary. For example, in
The domination module 208 removes (1504) the trip itineraries in the list of dominated trip itineraries for the respective trip itinerary when at least one other trip itinerary in the plurality of trip itineraries satisfies the predetermined domination criteria with respect to the respective trip itinerary. Continuing the example from above, since the trip itinerary A satisfies the predetermined domination criteria with respect to the trip itinerary B, the trip itinerary C is removed from the list of dominated trip itineraries for the trip itinerary B, as illustrated in
The domination module 208 decrements (1506) a dominated counter for each trip itinerary that is removed from the list of dominated trip itineraries for the respective trip itinerary. Continuing the example from above, the domination module 208 decrements the dominated counter for the trip itinerary C by 1 because the trip itinerary C is no longer on the list of dominated trip itineraries for the trip itinerary B. In other words, the trip itinerary B is no longer deemed to dominate the trip itinerary C.
Returning to
The domination module 208 identifies (1308) the dominated trip itinerary as a trip itinerary in the list of dominated trip itineraries corresponding to the dominating trip itinerary. For example, the dominated trip itinerary for the trip itinerary A includes the trip itineraries B and C.
Returning to
In some embodiments, when generating the user interface, the domination module 208 generates user interface code for the user interface and transmits the user interface code to the client computer system 104. The user interface code may include a markup language (e.g., HTML) and/or programs (e.g., scripts, browser-executable code).
In some embodiments, the user interface code includes the details of the dominating and dominated trip itineraries and logic to selectively display and hide the details of the dominated trip itinerary within the user interface of the computer system. The logic may include scripts (e.g., JavaScript scripts), browser-executable code (e.g., Java code), HTML 5 code, and the like.
The user interface is described in more detail below with respect to
As illustrated in
As illustrated in
In some embodiments, when a traveler clicks on (or performs an appropriate user interface action on) the domination indicator 1748, the dominated itineraries corresponding to the dominating itinerary are displayed. For example, when a traveler clicks on the domination indicator 1748, the trip itineraries represented by time bars 1760, 1762, 1764, 1766, and 1768 are displayed on the time graph 1700, as illustrated in
As illustrated in
Returning to
The machine is capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The example of the computer system 1800 includes a processor 1802 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), and memory 1804, which communicate with each other via bus 1808. Memory 1804 includes volatile memory devices (e.g., DRAM, SRAM, DDR RAM, or other volatile solid state memory devices), non-volatile memory devices (e.g., magnetic disk memory devices, optical disk memory devices, flash memory devices, tape drives, or other non-volatile solid state memory devices), or a combination thereof. Memory 1804 may optionally include one or more storage devices remotely located from the computer system 1800. The computer system 1800 may further include a video display unit 1806 (e.g., a plasma display, a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system 1800 also includes input devices 1810 (e.g., keyboard, mouse, trackball, touchscreen display), output devices 1812 (e.g., speakers), and a network interface device 1816. The aforementioned components of the computer system 1800 may be located within a single housing or case (e.g., as depicted by the dashed lines in
Memory 1804 includes a machine-readable medium 1820 on which is stored one or more sets of data structures and instructions 1822 (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The one or more sets of data structures may store data. Note that a machine-readable medium refers to a storage medium that is readable by a machine (e.g., a computer-readable storage medium). The data structures and instructions 1822 may also reside, completely or at least partially, within memory 1804 and/or within the processor 1802 during execution thereof by computer system 1800, with memory 1804 and processor 1802 also constituting machine-readable, tangible media.
The data structures and instructions 1822 may further be transmitted or received over a network 120 via network interface device 1816 utilizing any one of a number of well-known transfer protocols (e.g., HyperText Transfer Protocol (HTTP)). Network 120 can generally include any type of wired or wireless communication channel capable of coupling together computing nodes (e.g., the computer system 1800). This includes, but is not limited to, a local area network (LAN), a wide area network (WAN), or a combination of networks. In some embodiments, network 120 includes the Internet.
Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code and/or instructions embodied on a machine-readable medium or in a transmission signal) or hardware modules. A hardware module is a tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., the computer system 1800) or one or more hardware modules of a computer system (e.g., a processor 1802 or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
In various embodiments, a hardware module may be implemented mechanically or electronically. For example, a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a processor 1802 or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
Accordingly, the term “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where the hardware modules comprise a processor 1802 configured using software, the processor 1802 may be configured as respective different hardware modules at different times. Software may accordingly configure a processor 1802, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
Modules can provide information to, and receive information from, other modules. For example, the described modules may be regarded as being communicatively coupled. Where multiples of such hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the modules. In embodiments in which multiple modules are configured or instantiated at different times, communications between such modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple modules have access. For example, one module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further module may then, at a later time, access the memory device to retrieve and process the stored output. Modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
The various operations of example methods described herein may be performed, at least partially, by one or more processors 1802 that are temporarily configured (e.g., by software, code, and/or instructions stored in a machine-readable medium) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors 1802 may constitute processor-implemented (or computer-implemented) modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented (or computer-implemented) modules.
Moreover, the methods described herein may be at least partially processor-implemented (or computer-implemented) and/or processor-executable (or computer-executable). For example, at least some of the operations of a method may be performed by one or more processors 1802 or processor-implemented (or computer-implemented) modules. Similarly, at least some of the operations of a method may be governed by instructions that are stored in a computer readable storage medium and executed by one or more processors 1802 or processor-implemented (or computer-implemented) modules. The performance of certain of the operations may be distributed among the one or more processors 1802, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processors 1802 may be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors 1802 may be distributed across a number of locations.
While the embodiment(s) is (are) described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the embodiment(s) is not limited to them. In general, techniques for the embodiments described herein may be implemented with facilities consistent with any hardware system or hardware systems defined herein. Many variations, modifications, additions, and improvements are possible.
Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the embodiment(s). In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the embodiment(s).
The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the embodiments to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles and their practical applications, to thereby enable others skilled in the art to best utilize the embodiments and various embodiments with various modifications as are suited to the particular use contemplated.
This application claims priority under 35 U.S.C. §119 to U.S. Provisional Patent Application No. 61/477,488 filed 20 Apr. 2011, entitled “System and Method for Grouping Trip Itineraries,” by inventors Steven Ladd Huffman and Adam Julian Goldstein; this application also claims priority under 35 U.S.C. §119 to U.S. Provisional Patent Application No. 61/477,495 filed 20 Apr. 2011, entitled “System and Method for Filtering Trip Itineraries”, by inventors Adam Julian Goldstein and Steven Ladd Huffman; this application also claims priority under 35 U.S.C. §119 to U.S. Provisional Patent Application No. 61/391,997 filed 11 Oct. 2010, entitled “System and Method for Identifying Flight Itineraries,” by inventors Adam Julian Goldstein and Steven Ladd Huffman; this application also claims priority under 35 U.S.C. §120 to U.S. Design patent application No. 29/383,565 filed 19 Jan. 2011, entitled “User Interface for a Display,” by inventors Adam Julian Goldstein and Steven Ladd Huffman; this application also claims priority under 35 U.S.C. §120 to U.S. Design patent application No. 29/383,568 filed 19 Jan. 2011, entitled “Transitional User Interface for a Display,” by inventors Adam Julian Goldstein and Steven Ladd Huffman; this application also claims priority under 35 U.S.C. §120 to U.S. Design patent application No. 29/383,570 filed 19 Jan. 2011, entitled “User Interface for a Display,” by inventors Adam Julian Goldstein and Steven Ladd Huffman; this application also claims priority under 35 U.S.C. §120 to U.S. Design patent application No. 29/383,574 filed 19 Jan. 2011, entitled “Transitional User Interface for a Display,” by inventors Adam Julian Goldstein and Steven Ladd Huffman; this application also claims priority under 35 U.S.C. §120 to U.S. Design patent application No. 29/383,575 filed 19 Jan. 2011, entitled “Transitional User Interface for a Display,” by inventors Adam Julian Goldstein and Steven Ladd Huffman; this application also claims priority under 35 U.S.C. §120 to U.S. Design patent application No. 29/383,576 filed 19 Jan. 2011, entitled “Transitional User Interface for a Display,” by inventors Adam Julian Goldstein and Steven Ladd Huffman; this application also claims priority under 35 U.S.C. §120 to U.S. Design patent application No. 29/383,578 filed 19 Jan. 2011, entitled “Transitional User Interface for a Display,” by inventors Adam Julian Goldstein and Steven Ladd Huffman; this application also claims priority under 35 U.S.C. §120 to U.S. Design patent application No. 29/383,579 filed 19 Jan. 2011, entitled “Transitional User Interface for a Display,” by inventors Adam Julian Goldstein and Steven Ladd Huffman; which applications are incorporated by reference herein in their entirety.
Number | Date | Country | |
---|---|---|---|
61477488 | Apr 2011 | US | |
61477495 | Apr 2011 | US | |
61391997 | Oct 2010 | US |