Possibly you overlooked this bit:
In other words, either the incoming missiles are not homogeneous, or our interceptors aren’t. (Or both.)
If our interceptors are homogeneous but the missiles are not, then you can precalculate net PK for each missile for any number of interceptors.
Then you just start assigning interceptors to the next missile in the list, and after each assignment you reinsert the missile into the list based on the marginal PK of the next interceptor assigned to it.
So, it doesn’t matter which interceptor you pick next, because they are all identical.
And each assignment you make is to the missile where it makes the biggest possible difference.
You get an optimal solution.
That’s an O(log n) insertion you have to do O(n) times, so overall it’s O(n log n).
Yay, polynomial time.
But what if our interceptors are not homogeneous, but the missiles are?
In short, it doesn’t work.
(In fact, it seems like a version of the backpack problem.)
You can sort your interceptor list by SSPK, then make an initial pass to assign the best interceptors one missile each, keeping your missile list sorted by current PK.
Now what?
You have a sorted list of interceptors (based on SSPK) and a sorted list of missiles (based on current PK).
It may seem like you can just keep assigning the best remaining interceptor to the missile with the lowest current PK.
That gets you polynomial time, but it doesn’t guarantee an optimal solution.
Consider a simple example with two identical missiles and five interceptors with these SSPK values:
SSPK
.102
.101
.100
.09
.09
You assign the best interceptor to one of the missiles, and the second best to the other missile.
You assign the third interceptor to the best choice available (the .101 PK missile, which becomes .1909).
The fourth gets assigned to the .102 PK missile, which becomes .18282.
The fifth and final gets assigned to that same missile, which gives it a final PK of .2563662
Total expected kills = .4472662.
But that’s not the best possible.
Suppose you assign the third missile to the worse choice for it (the .102 PK missile, which becomes .1918).
Then you assign the fourth and fifth to the other one (.101 → .18191 → .2555381).
Total expected kills = .4473381.
Clearly the “best remaining interceptor to lowest PK missile” algorithm failed us with those last three assignments.
It actually failed us even earlier, with the second assignment.
Suppose instead of splitting our best two interceptors, we assigned them to the same missile, and the remaining three interceptors to the other missile.
Total expected kills = .4474080 (.192698 + .254710).
In short, as the article attempted to delineate, there is no known polynomial time solution that finds the optimal assignment of non-homogeneous interceptors (even if the missiles are homogeneous).
(And since it is NP-Complete, it is extraordinarily unlikely that an undiscovered polynomial time solution exists.)