# Missile Defense is NP-Complete

**URL:** <https://aurora4x.com/t/missile-defense-is-np-complete/274>\
**Category:** General Discussion\
**Created:** [March 24, 2026, 2:54pm UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274 "2026-03-24T14:54:40Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![omicron-gamma](https://yyz1.discourse-cdn.com/flex011/user_avatar/aurora4x.com/omicron-gamma/32/834_2.png) [@omicron-gamma](https://aurora4x.com/u/omicron-gamma)\
**Post date:** [March 24, 2026, 2:54pm UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/1 "2026-03-24T14:54:40Z")

</div>

For those of you planning out your point-defense systems, here’s an interesting read about the “Weapon-Target Assignment Problem” that turned up today (note: it uses AMMs from the current Mideast conflict as an illustrative example).

> **[Missile Defense is NP-Complete | An Optimization Odyssey](https://smu160.github.io/posts/missile-defense-is-np-complete/)**
>
> Exploring the Weapon-Target Assignment problem: how missile defense connects to NP-completeness, SSPK probability calculations, and how saturation attacks exploit computational limits.

As far as Aurora is concerned, this means that:

- If you’re the attacker, it’s better to have many small missiles than a few large missiles (unless you have good ECM, in which case you can make your large missiles deploy decoys)
- If you’re the defender, then it is critically important to make sure that your missile detection is up to snuff. [Decoys](https://aurora4x.com/t/aurora-v2-2-0-patch-notes-november-26th-2023/27/17) are useful here since they aren’t affected by your tracking speed.

---

<div class="post-metadata">

**Author:** ![Hanzoku](https://yyz1.discourse-cdn.com/flex011/user_avatar/aurora4x.com/hanzoku/32/345_2.png) [@Hanzoku](https://aurora4x.com/u/Hanzoku)\
**Post date:** [March 24, 2026, 4:19pm UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/2 "2026-03-24T16:19:33Z")

</div>

Yes but no. Originally missile combat was fairly binary a you either swamp the target’s point defense or you did no damage. So yes, ‘optimal’ design was size 1-2 missiles fired in overwhelming swarms. Now ECM, decoys, and target randomization allows for leakers to hit, and there’s value to using larger missiles to allow for more penaids and a larger strike.

---

<div class="post-metadata">

**Author:** ![Nori](https://avatars.discourse-cdn.com/v4/letter/n/67e7ee/32.png) [@Nori](https://aurora4x.com/u/Nori)\
**Post date:** [March 25, 2026, 3:13am UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/3 "2026-03-25T03:13:26Z")

</div>

Missiles are in a much better place vs vb6 in my mind. It seems like a variety of strategies are possible including large missiles, or swarms of small ones.

---

<div class="post-metadata">

**Author:** ![Walter](https://avatars.discourse-cdn.com/v4/letter/w/85e7bf/32.png) [@Walter](https://aurora4x.com/u/Walter)\
**Post date:** [October 17, 2026, 8:13pm UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/4 "2026-10-17T20:13:49Z")

</div>

The article seems to work with at least one false assumption:

“The product terms in the objective mean that the marginal value of assigning an additional interceptor to a target _depends on how many are already assigned there_ — there are diminishing returns. This couples all assignments together: you cannot evaluate one assignment without knowing the rest. This nonlinearity destroys the decomposition properties that make the linear assignment problem tractable.”

This is - as far as my understanding goes - wrong.

The first interceptor always protects kill chance (1) multiplied by _value.  
The second interceptor protects [kill chance (2) - kill chance (1)] multiplied by_ value.

And so on.  
That does not change and it allows for a fixed list, that you work down until you have no interceptors left.  
Multiple attacks aimed at the same target are treated as if they were attacking different targets that incidentally had the same value.

_Edit: It may be better to divide the value of the target by the number of attacks before assigning any defence._

Since I am just a bear of little understanding I may be wrong on this, but until somebody can show me the error of my ways I think the author of the article you linked had a brainfart.

---

<div class="post-metadata">

**Author:** ![GrandNord](https://avatars.discourse-cdn.com/v4/letter/g/f08c70/32.png) [@GrandNord](https://aurora4x.com/u/GrandNord)\
**Post date:** [October 17, 2026, 9:31pm UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/5 "2026-10-17T21:31:20Z")

</div>

As an example of this, I’ve been using size 12 short range missiles in my current campaign and they’ve been pretty devastating. They have ECCM, increased hit chance (don’t remember the name) and 2 decoys. Against most oponents the decoys soak up a good 50 to 70% of the point défense fire and I pretty consistently get 25 to 40% of my missiles to get through, even with relatively modest, 40-60 missiles volleys.

With a 30 damage warhead a few hits tend to be enough to disable or degrade most ships.

With small missiles I don’t think I would have comparable results, as I would have to drop all additionnal modules, and after some time and some research ECCM and increased hit chance become very impactful.

---

<div class="post-metadata">

**Author:** ![AuroraSteve](https://yyz1.discourse-cdn.com/flex011/user_avatar/aurora4x.com/aurorasteve/32/96_2.png) [@AuroraSteve](https://aurora4x.com/u/AuroraSteve)\
**Post date:** [October 17, 2026, 10:28pm UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/6 "2026-10-17T22:28:52Z")

</div>

My current standard missile is size-24, 9 decoys, 25 point warhead, ECCM, ATG, retargeting and onboard sensors. It is useful even in small numbers, although expensive. The best AI counter so far is a size-3 AMM with its own retargeting and dual warheads.

---

<div class="post-metadata">

**Author:** ![L0ckAndL0ad](https://yyz1.discourse-cdn.com/flex011/user_avatar/aurora4x.com/l0ckandl0ad/32/1154_2.png) [@L0ckAndL0ad](https://aurora4x.com/u/L0ckAndL0ad)\
**Post date:** [October 18, 2026, 6:35am UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/7 "2026-10-18T06:35:15Z")

</div>

Uhm, don’t forget about the Shock Damage. The bigger the single hit is, the better. In most of my recent campaigns I moved away from size-6 missiles in favor of size-24+ and they are AWESOME. NPR ships are usually beefy anyway.

---

<div class="post-metadata">

**Author:** ![Andrew\_Moreton](https://yyz1.discourse-cdn.com/flex011/user_avatar/aurora4x.com/andrew_moreton/32/971_2.png) [@Andrew\_Moreton](https://aurora4x.com/u/Andrew_Moreton)\
**Post date:** [October 18, 2026, 12:40pm UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/8 "2026-10-18T12:40:12Z")

</div>

The article seems a reasonable coverage of the basics or shooting at incoming missiles, about the level of maths of a competent 18 year old. It does not cover all of the possible issues of real world weapons and engagements and certainly does not cover the rather different assumptions and baselines of Aurora

---

<div class="post-metadata">

**Author:** ![skoormit](https://yyz1.discourse-cdn.com/flex011/user_avatar/aurora4x.com/skoormit/32/341_2.png) [@skoormit](https://aurora4x.com/u/skoormit)\
**Post date:** [October 18, 2026, 4:13pm UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/9 "2026-10-18T16:13:34Z")

</div>

Possibly you overlooked this bit:

> [@](#):
>
> …each interceptor has a different SSPK against each warhead…

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.)

---

<div class="post-metadata">

**Author:** ![serger](https://yyz1.discourse-cdn.com/flex011/user_avatar/aurora4x.com/serger/32/961_2.png) [@serger](https://aurora4x.com/u/serger)\
**Post date:** [October 18, 2026, 5:27pm UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/10 "2026-10-18T17:27:24Z")

</div>

That’s why sane AD doctrines tend to build layered defence and use unified munitions.

---

<div class="post-metadata">

**Author:** ![Walter](https://avatars.discourse-cdn.com/v4/letter/w/85e7bf/32.png) [@Walter](https://aurora4x.com/u/Walter)\
**Post date:** [October 19, 2026, 12:44pm UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/11 "2026-10-19T12:44:33Z")

</div>

Thank you for taking the time to spell that out for me.  
I did indeed read past that line and so did not allow for there being different types of interceptors and attackers.

With possible damage counted in millions of lives and (insert plausible and mind-boggling number) of Euros/Dollars/Yen it also makes sense to pursue the 1.5 in 10000 difference that your example showed.

That might be a great example to explain what military intelligence is and what it is for.  
When you know (or can make a good guess) what a likely attacker’s capabilities are, you can run the numbers in preparation and when it actually happens you might have a pre-solved plan ready. And/or gotten some extra funds for the network if the projections are threatening enough.

I hereby apologize to the author of the article.

---

<div class="post-metadata">

**Author:** ![skoormit](https://yyz1.discourse-cdn.com/flex011/user_avatar/aurora4x.com/skoormit/32/341_2.png) [@skoormit](https://aurora4x.com/u/skoormit)\
**Post date:** [October 19, 2026, 2:19pm UTC](https://aurora4x.com/t/missile-defense-is-np-complete/274/12 "2026-10-19T14:19:49Z")

</div>

> [@Walter](#):
>
> it also makes sense to pursue the 1.5 in 10000 difference that your example showed

Bear in mind, of course, that my example was meant to provide a simple demonstration of the math, not to represent a realistic scenario.

In a real world scenario, the marginal difference between a “fast” solution and an optimal one is likely to be far more than in my contrived example.
