Last edit by: mbwmbw
All files are available for download at: http://mbw.name/Files/FlyerTalk/Delta_Class_Action/
Furthermore, each document has been linked to the download location.
For a full download of the complaint and attachments click here.
Date Filed # Docket Text
08/07/2014 1 COMPLAINT with Jury Demand; against Delta Airlines, Inc. by Darla Opper. ( Filing Fee PAID $400 receipt number 0757-1939172) (Attachments: # 1 Exhibit A, # 2 Exhibit B, # 3 Exhibit C, # 4 Exhibit D, # 5 Exhibit E, # 6 Exhibit F, # 7 Exhibit G, # 8 Civil Cover Sheet, # 9 Summons)(Shah, James)
08/07/2014 NOTICE Regarding assignment of this matter to Chief Judge William C Griesbach ;Consent/refusal forms for Magistrate Judge Duffin to be filed within 21 days;the consent/refusal form is available on our web site ;pursuant to Civil Local Rule 7.1 a disclosure statement is to be filed upon the first filing of any paper and should be filed now if not already filed (jcl)
08/07/2014 2 DISCLOSURE Statement by Darla Opper. (Shah, James)
08/08/2014 Summons Issued as to Delta Airlines, Inc. (mec)
08/20/2014 3 Refusal to Jurisdiction by US Magistrate Judge by Darla Opper. (Shah, James)
08/25/2014 4 SUMMONS Returned Executed by Darla Opper. Delta Airlines Inc served on 8/14/2014, answer due 9/4/2014. (Shah, James)
08/29/2014 5 Unopposed MOTION for Extension of Time by Delta Airlines Inc. (Smith, Renee)
08/29/2014 6 DISCLOSURE Statement by Delta Airlines Inc. (Smith, Renee)
09/02/2014 TEXT ONLY ORDER GRANTING 5 Unopposed MOTION for Extension of Time filed by Delta Airlines Inc., signed by Chief Judge William C Griesbach on 09/02/2014. The deadline for filing its responsive pleading is extended 14 days, until September 18, 2014. (cc: all counsel)(Griesbach, William)
09/18/2014 7 MOTION to Dismiss by Delta Airlines Inc. (Balassa, Gabor)
09/18/2014 8 BRIEF in Support filed by Delta Airlines Inc re 7 MOTION to Dismiss . (Attachments: # 1 Exhibit A - Best Fare Guarantee, # 2 Exhibit B - Best Fare Guarantee Claim Form, # 3 Exhibit C - Tabatabai v. West Coast Life Ins. Co, # 4 Exhibit D - Marine Travelift, Inc. v. Marine Lift Sys., Inc, # 5 Exhibit E - Tilstra v. Bou-Matic, LLC, # 6 Exhibit F - PNC Bank, N.A. v. Van Hoornaar, # 7 Exhibit G - NIIJII Entmt, LLC v. Troha) (Balassa, Gabor)
10/03/2014 9 Unopposed MOTION for Extension of Time by Darla Opper. (Shah, James)

Furthermore, each document has been linked to the download location.
For a full download of the complaint and attachments click here.
Date Filed # Docket Text
08/07/2014 1 COMPLAINT with Jury Demand; against Delta Airlines, Inc. by Darla Opper. ( Filing Fee PAID $400 receipt number 0757-1939172) (Attachments: # 1 Exhibit A, # 2 Exhibit B, # 3 Exhibit C, # 4 Exhibit D, # 5 Exhibit E, # 6 Exhibit F, # 7 Exhibit G, # 8 Civil Cover Sheet, # 9 Summons)(Shah, James)
08/07/2014 NOTICE Regarding assignment of this matter to Chief Judge William C Griesbach ;Consent/refusal forms for Magistrate Judge Duffin to be filed within 21 days;the consent/refusal form is available on our web site ;pursuant to Civil Local Rule 7.1 a disclosure statement is to be filed upon the first filing of any paper and should be filed now if not already filed (jcl)
08/07/2014 2 DISCLOSURE Statement by Darla Opper. (Shah, James)
08/08/2014 Summons Issued as to Delta Airlines, Inc. (mec)
08/20/2014 3 Refusal to Jurisdiction by US Magistrate Judge by Darla Opper. (Shah, James)
08/25/2014 4 SUMMONS Returned Executed by Darla Opper. Delta Airlines Inc served on 8/14/2014, answer due 9/4/2014. (Shah, James)
08/29/2014 5 Unopposed MOTION for Extension of Time by Delta Airlines Inc. (Smith, Renee)
08/29/2014 6 DISCLOSURE Statement by Delta Airlines Inc. (Smith, Renee)
09/02/2014 TEXT ONLY ORDER GRANTING 5 Unopposed MOTION for Extension of Time filed by Delta Airlines Inc., signed by Chief Judge William C Griesbach on 09/02/2014. The deadline for filing its responsive pleading is extended 14 days, until September 18, 2014. (cc: all counsel)(Griesbach, William)
09/18/2014 7 MOTION to Dismiss by Delta Airlines Inc. (Balassa, Gabor)
09/18/2014 8 BRIEF in Support filed by Delta Airlines Inc re 7 MOTION to Dismiss . (Attachments: # 1 Exhibit A - Best Fare Guarantee, # 2 Exhibit B - Best Fare Guarantee Claim Form, # 3 Exhibit C - Tabatabai v. West Coast Life Ins. Co, # 4 Exhibit D - Marine Travelift, Inc. v. Marine Lift Sys., Inc, # 5 Exhibit E - Tilstra v. Bou-Matic, LLC, # 6 Exhibit F - PNC Bank, N.A. v. Van Hoornaar, # 7 Exhibit G - NIIJII Entmt, LLC v. Troha) (Balassa, Gabor)
10/03/2014 9 Unopposed MOTION for Extension of Time by Darla Opper. (Shah, James)

Class Action Federal Lawsuit Aginst Delta RE: Best Fares Available
#91
Join Date: Jun 2004
Location: ATL
Programs: Delta PlM, 1M
Posts: 6,282
I'm assuming input data is all published fares. So if the airline publishes a fare AAA-CCC (which routes through BBB), that's considered a single step for the algorithm. So there would be three fares to look at: AAA-BBB, BBB-CCC, and AAA-CCC. When finding the cheapest AAA-CCC involving two or fewer hops, it would look at all three (and also AAA-XXX and XXX-CCC, etc.)
The answer is 25387776. Question was, "how many Angels can dance on the head of a pin"? :-)
#92
FlyerTalk Evangelist
Join Date: Jun 2004
Location: MSP
Programs: DL PM, MM, NR; HH Diamond, Bonvoy LT Gold, Hyatt Explorist, IHG Diamond, others
Posts: 12,015
There are some published fares, including direct flights and connections. Those are all input to the program. It is then an easy algorithm to find all least-cost routings between cities.
#94
Join Date: Dec 2007
Posts: 1,688
The problem with your logic is that you're still assuming that the price of the ticket only increases as fare components are added. This is not true. You cannot reliably price a ticket until the entire ticket is known, or even make claims such as "the ticket will be at least $X." For example, adding a fare component can change which location is considered the destination vs. the stop over. Adding a fare component can change whether or not the ticket qualifies as round/circle trip. Adding a fare component can exceed a minimum stay requirement or fulfill a Saturday stay requirement.
See this article: http://www.msri.org/people/members/s...s/airfares.pdf
Obviously, if you bound the problem by saying "I only want to see non-stop fares" or "I won't leave the US to connect on an otherwise domestic itinerary" or "my itinerary must be complete within X days" then you can solve the problem in a reasonable period of time. But, that doesn't mean its not still NP-hard. It just means you've reduced the problem to a degree where all of the possibilities can be checked.
#95
FlyerTalk Evangelist
Join Date: Jul 2003
Posts: 20,595
A "published" fare, does not mean an "available" fare. Ultimately, you need to query the GDS systems to see what's actually available in the fare buckets. You can cache the data, but how stale do you let the cached inventory to get before you refresh it? What if some of the published fares you are searching haven't had their bucket availability instantiated in your cache yet?
#96
Join Date: Oct 2012
Location: NYC
Programs: AA DULtArer
Posts: 5,522
No. The "shortest path" problem is with some pre-assigned value to any leg. It does not depend on distance, or any assumptions of an additive metric.
Seth is still technically wrong though. The said logic does work to search for fare breaks, but not solve the entire married fare problem.
Example. A-B-C or A-C (only routes). Shortest path algs would be able to easily search A-B(stop)B-C vs A-C. But the A-C fare itself could route via B with different metrics I would guess that a simple solution of the married fare problem would actually be quadratic in routes.
This is still a useless conversation. In practice the problem is trivial. If DL starts flying 1000000000 routes a day, then let's come back here.
Seth is still technically wrong though. The said logic does work to search for fare breaks, but not solve the entire married fare problem.
Example. A-B-C or A-C (only routes). Shortest path algs would be able to easily search A-B(stop)B-C vs A-C. But the A-C fare itself could route via B with different metrics I would guess that a simple solution of the married fare problem would actually be quadratic in routes.
This is still a useless conversation. In practice the problem is trivial. If DL starts flying 1000000000 routes a day, then let's come back here.
once I've found a way to get from AAA to BBB for $222, any route that's already over $222 doesn't need to be extended, because it already lost.
#97
Join Date: Dec 2007
Posts: 1,688
And delta doesn't need to fly 1000000000 routes a day to cause this issue. Even with Delta's current route structure, and limiting yourself just to DL-marketed flights, there are already sufficiently many ways to get from A to B that you cannot practically check them all.
#98
Join Date: Nov 2010
Location: BDL/HPN/JFK/FLL
Programs: DL Diamond Ham Sandwich
Posts: 1,051
As I noted above, the problem is that extending a route can lower its price.
And delta doesn't need to fly 1000000000 routes a day to cause this issue. Even with Delta's current route structure, and limiting yourself just to DL-marketed flights, there are already sufficiently many ways to get from A to B that you cannot practically check them all.
And delta doesn't need to fly 1000000000 routes a day to cause this issue. Even with Delta's current route structure, and limiting yourself just to DL-marketed flights, there are already sufficiently many ways to get from A to B that you cannot practically check them all.
So:
(1) Lowest available "married segment" fare to destination
(2) Find fares (married or individual flight) from origin airport that are lower than fare found in (1)
(3) Find fares (married or individual flight) from connecting airport found in (2) which combine to be less than the currently best fare or combination of fares
(4) For each fare or combinations of fares found in (3) iterate (3) until at destination
The reality is that you could stop at a couple connections for practical purposes...
#99
Join Date: Dec 2007
Posts: 1,688
No DaDaDan extending broken fare routes can not lower the price. This problem requires solving the "what is the lowest AAA-ZZZ fare available" and then looking for combinations of fares that get you from AAA to BBB without going over that price.
So:
(1) Lowest available "married segment" fare to destination
(2) Find fares (married or individual flight) from origin airport that are lower than fare found in (1)
(3) Find fares (married or individual flight) from connecting airport found in (2) which combine to be less than the currently best fare or combination of fares
(4) For each fare or combinations of fares found in (3) iterate (3) until at destination
The reality is that you could stop at a couple connections for practical purposes...
So:
(1) Lowest available "married segment" fare to destination
(2) Find fares (married or individual flight) from origin airport that are lower than fare found in (1)
(3) Find fares (married or individual flight) from connecting airport found in (2) which combine to be less than the currently best fare or combination of fares
(4) For each fare or combinations of fares found in (3) iterate (3) until at destination
The reality is that you could stop at a couple connections for practical purposes...
See this article: http://www.msri.org/people/members/s...s/airfares.pdf
Separately, looking at your algorithm, I don't think it is comprehensive. If the problem is to fly AAA to BBB, there are also round trip fares from AAA to NNN that allow an open jaw where the "return" can be to BBB. If you price AAA-NNN alone, as suggested in your Step 2, the price could be a high OW fare, at which point your algorithm will stop exploring this option. Only by adding the segment NNN-BBB, do you find that it qualifies as a RT with OJ.
This is at least one way where searching fares progressively fails. At least one other one is creating an itinerary that, by adding a leg, qualifies for RTW pricing.
#100
Join Date: Nov 2010
Location: BDL/HPN/JFK/FLL
Programs: DL Diamond Ham Sandwich
Posts: 1,051
Separately, looking at your algorithm, I don't think it is comprehensive. If the problem is to fly AAA to BBB, there are also round trip fares from AAA to NNN that allow an open jaw where the "return" can be to BBB. If you price AAA-NNN alone, as suggested in your Step 2, the price could be a high OW fare, at which point your algorithm will stop exploring this option. Only by adding the segment NNN-BBB, do you find that it qualifies as a RT with OJ.
This is at least one way where searching fares progressively fails. At least one other one is creating an itinerary that, by adding a leg, qualifies for RTW pricing.
This is at least one way where searching fares progressively fails. At least one other one is creating an itinerary that, by adding a leg, qualifies for RTW pricing.
I think that once again you're not talking about broken fares but fares from origin to destination, and that type of fare (married segments if connecting) is exactly the logic that would be in step 1 of what I outlined, and is what Delta.com already does.
And
#101
Join Date: Dec 2007
Posts: 1,688
(With the caveat that I'm really only thinking about domestic flights and not all the crazy extra fees and complexity for Intl)
I think that once again you're not talking about broken fares but fares from origin to destination, and that type of fare (married segments if connecting) is exactly the logic that would be in step 1 of what I outlined, and is what Delta.com already does.
And
I think that once again you're not talking about broken fares but fares from origin to destination, and that type of fare (married segments if connecting) is exactly the logic that would be in step 1 of what I outlined, and is what Delta.com already does.
And
1. NYC-BOS fares
2. Fares to other airports that are lower (just NYC-LHR is an expensive OW fare and not cheaper)
(Btw, I know you excluded international fares. I used LHR just because it is referenced in the article. The same facts could apply domestically as well. There aren't as many cases in practice since most RT are just 2xOW domestically these days. But, that hasn't always been the case. And there's nothing stopping an occasional violation of this norm.)
Last edited by DaDaDan; Sep 10, 14 at 8:30 am Reason: Spelling
#102
FlyerTalk Evangelist
Join Date: Jun 2004
Location: MSP
Programs: DL PM, MM, NR; HH Diamond, Bonvoy LT Gold, Hyatt Explorist, IHG Diamond, others
Posts: 12,015
A "published" fare, does not mean an "available" fare. Ultimately, you need to query the GDS systems to see what's actually available in the fare buckets. You can cache the data, but how stale do you let the cached inventory to get before you refresh it? What if some of the published fares you are searching haven't had their bucket availability instantiated in your cache yet?
Here's a least-cost all-routes algorithm:
There are N cities. Create an NxN matrix; the entries are the airline's published fare from AAA to BBB, with 0 on the diagonal (it's free to say in the same place). Call that M1 (cheapest route with 1 or fewer fares).
Do a "matrix multiply" using min over plus (standard matrix multiply is plus over times) M1 x M1. Call the result M2, it's the cheapest route with 2 or fewer fares.
Do that again, M2 x M2. Call the result M4, it's the cheapest result with 4 or fewer fares.
Continue until Mn, where n>=N. That takes ceiling(log2(N)) steps. The result is the cheapest routes from any city to any other. Total time is clearly polynomial in N.
For those looking at broken round-trips, hidden cities, etc., those technically aren't allowed by the airlines. But if they are to be allowed in this problem, it's easy to include them. When the airline quotes a fare from AAA to BBB, check the routing, and include that as the fare from AAA to any CCC along the route if lower than already found.
The real-world problem is a bit harder, because we need to consider connections, minimum time, etc. However, that's still feasible: let each node be an airport at a time, where the times are arrival+MCT for each flight. Waiting at an airport is free. It's still polynomial in the number of flights.
#103
Join Date: Dec 2007
Posts: 1,688
Here's a least-cost all-routes algorithm:
There are N cities. Create an NxN matrix; the entries are the airline's published fare from AAA to BBB, with 0 on the diagonal (it's free to say in the same place). Call that M1 (cheapest route with 1 or fewer fares).
Do a "matrix multiply" using min over plus (standard matrix multiply is plus over times) M1 x M1. Call the result M2, it's the cheapest route with 2 or fewer fares.
Do that again, M2 x M2. Call the result M4, it's the cheapest result with 4 or fewer fares.
Continue until Mn, where n>=N. That takes ceiling(log2(N)) steps. The result is the cheapest routes from any city to any other. Total time is clearly polynomial in N.
For those looking at broken round-trips, hidden cities, etc., those technically aren't allowed by the airlines. But if they are to be allowed in this problem, it's easy to include them. When the airline quotes a fare from AAA to BBB, check the routing, and include that as the fare from AAA to any CCC along the route if lower than already found.
The real-world problem is a bit harder, because we need to consider connections, minimum time, etc. However, that's still feasible: let each node be an airport at a time, where the times are arrival+MCT for each flight. Waiting at an airport is free. It's still polynomial in the number of flights.
There are N cities. Create an NxN matrix; the entries are the airline's published fare from AAA to BBB, with 0 on the diagonal (it's free to say in the same place). Call that M1 (cheapest route with 1 or fewer fares).
Do a "matrix multiply" using min over plus (standard matrix multiply is plus over times) M1 x M1. Call the result M2, it's the cheapest route with 2 or fewer fares.
Do that again, M2 x M2. Call the result M4, it's the cheapest result with 4 or fewer fares.
Continue until Mn, where n>=N. That takes ceiling(log2(N)) steps. The result is the cheapest routes from any city to any other. Total time is clearly polynomial in N.
For those looking at broken round-trips, hidden cities, etc., those technically aren't allowed by the airlines. But if they are to be allowed in this problem, it's easy to include them. When the airline quotes a fare from AAA to BBB, check the routing, and include that as the fare from AAA to any CCC along the route if lower than already found.
The real-world problem is a bit harder, because we need to consider connections, minimum time, etc. However, that's still feasible: let each node be an airport at a time, where the times are arrival+MCT for each flight. Waiting at an airport is free. It's still polynomial in the number of flights.
More specifically, you've made several assumptions here that are not true in practice:
1. There is only one published fare between two city pairs (or at least the cheapest fare is trivial to observe).
This allows you to reduce the problem to the shortest distance problem where we know in advance the distance between any two locations.
This is not true in our case. There are many published fares for any route, and the ability to use one may depend on a number of conditions, including conditions dependent on other fare components. E.g., it must be part of a round trip, requires Saturday stay, etc. Each fare must be checked and all conditions validated against the attributes of the entire ticket.
You also have to determine availability on any particular flight segment.
This means you need to determine the time complexity not just in number of segments (as you have done) but also in number of fare rules filed and in flights offered. In order to determine the minimum price between two points, you need to check every fare rule and every flight's availability. As connections are added, the universe of relevant fare rules and feasible flights whose availability must be checked grows.
Even ignoring the availability issue, it grows very quickly.
[Edited to add: So apparently in FT land, the symbol for exponentiation is ^. Please interpret accordingly!]
Assume:
F = number of fares filed per city pair
C = number of cities
n = number of segments
I want to fly AAA-BBB.
For a non-stop flight (n=1), there are F fare rules to check.
For exactly one connection, AAA-ZZZ-BBB, there are F fare rules to check for AAA-ZZZ and F fares to check for ZZZ-BBB. So, for one connection city (n=2), there are F^2 fares to check times C-2 cities (you cannot connect in AAA or BBB).
For exactly two connections, AAA-YYY-ZZZ-BBB, you check F^3 fares times (C-2)^2 connection points. This assumes that you allow connections such as AAA-YYY-AAA-BBB, which in theory is necessary. For example, you could be flying on a RT fare AAA-YYY with an OJ return ending at BBB, and the segment from your "destination" YYY to BBB requires a connection at AAA. This could price lower than the OW fare AAA-BBB.
Ok, for arbitrarily many F, C, and n, you have:
summation(1,N) of [F(C-2)^(n-1)]^n
This definitely grows faster than polynomial time.
As an example:
F will vary by city pair, but let's say it is 15 fare rules per city pair
C is something like 1500 commercial airports in the world
Let's assume N is 5 segments.
This yields 2.5 x 10^69 fares to calculate. If you assume you can check 10 fares per second, that's 7.8 x 10^60 years.
And it gets worse...
2. Any stay in a city is just like any other.
This assumption again reduces the complexity, but does not hold in practice. Your stay in any city can be termed a connection, a stopover, or a destination. Which category it falls into depends on the timing of the flights into and out of the city, the remaining segments on the ticket, the fare rule you're using, and in some cases your option.
3. Taxes, fees, carrier-imposed surcharges, etc. are irrelevant.
These can only be calculated knowing the entire ticket and all of its attributes, including small things like point of sale, plating carrier, etc., some of which you can manipulate to get a lower price.
Last edited by DaDaDan; Sep 10, 14 at 4:55 pm
#105
Join Date: Dec 2007
Posts: 1,688