Just for fun - here's the full pseudo-code, as developed in JT's mental software development environment, whilst walking the dog in teeming rain this afternoon.
We have a busy A road which contains a 10 mile stretch of dual carriageway with S/C at either end. It is a busy bank holiday and traffic is trundling along at the speed of the occasional HGV, which is therefore dictating a steady stream of nose to tail 40mph traffic.
Let's say we have 3 classes of driver.
1. Very selfish. Will always drive in the fastest available lane, will always merge as late as possible, will NEVER let anyone else merge in front of them.
2. Mildly selfish. Will drive in the emptiest lane, will merge reasonably early, will always also let another car in, "to repay the favour".
3. Not selfish. Won't ever "jump the queue", will always allow others to merge.
If we feed our system entirely with type 3 drivers, then the dual carriageway becomes entirely redundant, as the 40mph queue in the single carriageway will continue along the entirety of the left lane. No-one will ever overtake because it's a queue and that would be selfish.
If we feed in equal numbers of type 2 and type 3 drivers some will use the outer lane, but when they pull back in they will slow the left hand lane by letting more cars in in front of them. These will then do the same, and if unchecked the behaviour will result in a completely static left lane, with the only traffic making progress being the type 2 drivers who use the right lane to overtake the static queue. All type 3 drivers will queue indefinitely in L1 for the reasons outlined above.
With an equal mix of all 3 driver types the traffic will move once more, simply becuase the very selfish drivers will dilute the behaviour of the type 2 drivers. Now the outer lane will contain an equal mix of type 2 and type 1 drivers, but the type 1 drivers will allow L1 to move slowly, because when they return to it they will block any more L2 drivers from re-joining in front of them. L1 will still move slower than L2, and type 3 drivers will still get the longest journey time, but at least both lanes now flow.
But if we feed nothing but type 1 drivers into the system they will feed alternately into L1 and L2 at the start of the dual carriageway (as each one joins a lane the other lane then becomes the fastest one, attracting the next in the queue), travel at higher speed throughout it's length and then zip merge at the end, at the latest moment. Ideal behaviour, as it maximises throughput in the higher capacity road section, which also means that the maximum number of cars can pass any slower vehicles, and that if a vehicle joins from a sideroad during the D/C it doesn't slow the queue - as it would in the first scenario where no-one would use the outer lane to overtake it.
So "selfish" behaviour benefits society as a whole, as well as the individual. And yes, it is selfish behaviour because the reasoning for each driver taking this course of action is for the sole intent of benefitting themselves, which to me seems a fair definition of selfish. That assumes, of course, that they haven't read this thread, nor found themselves saddled with an overly fertile analytical brain that reaches conclusions such as these
a propos of nothing.
Nash* would be proud of us (as would Thatcher!)
(* thanks for the aide memoire BW, and the compliment!

)