# Schwere und Vollständigkeit (theoretische Informatik)

In der theoretischen Informatik – insbesondere in der Berechenbarkeits- und der Komplexitätstheorie – bezeichnet die Schwere (Übersetzung von engl. hardness dt. „Schwierigkeit“) eines Problems dessen Eigenschaft, mindestens so schwierig lösbar zu sein wie alle Probleme einer betrachteten Klasse. Die Vollständigkeit eines Problems bedeutet dann, dass es sich um ein schwierigstes Problem aus dieser Klasse handelt. Anschaulich gesprochen kann also ein Algorithmus, der ein schweres Problem lösen kann, mit nur geringen Modifikationen auch alle Probleme der entsprechenden Klasse lösen.
Die Idee, Probleme nach ihrer Lösbarkeit zu vergleichen und dabei schwere und vollständige Probleme zu untersuchen, geht auf einen Aufsatz von Emil Post aus dem Jahr 1944 zurück.

## Definitionen

Schwere und Vollständigkeit werden üblicherweise nur für Entscheidungsprobleme betrachtet. Bei diesen wird gefragt, ob einem bestimmten Objekt eine besondere Eigenschaft zukommt oder nicht. Genauer genügt es sogar – durch eine geeignete Gödelisierung – ausschließlich Entscheidungsprobleme von Mengen natürlicher Zahlen zu betrachten. Das Ziel ist also stets die charakteristische Funktion einer Teilmenge von $\mathbb {N}$ zu berechnen. Dieser Ansatz hat den Vorteil, dass nun die Probleme mit den Teilmengen selbst identifiziert werden können. Es ist aber sehr leicht möglich die folgenden Definitionen auch auf Optimierungs- und Suchprobleme zu übertragen.
Sei daher nun ${\mathcal {C}}\subseteq {\mathcal {P}}(\mathbb {N} )$ ein Mengensystem über den natürlichen Zahlen, $A\subseteq \mathbb {N}$ eine weitere Menge und schließlich $\preceq$ eine (berechenbarkeits- oder komplexitätstheoretische) Reduktion.
* Das Problem $A$ heiße ${\mathcal {C}}$-schwer bezüglich $\preceq$, falls gilt: $\forall C\in {\mathcal {C}}\colon C\preceq A$
Wenn sich also jedes Problem der Klasse ${\mathcal {C}}$ auf $A$ $\preceq$-reduzieren lässt.
* $A$ heiße ${\mathcal {C}}$-vollständig bezüglich $\preceq$ falls $A$ zusätzlich selbst in ${\mathcal {C}}$ liegt.
Ist ${\mathcal {C}}$ eine Komplexitätsklasse, so werden meist nur solche Reduktionen betrachtet, deren Berechnungsaufwand noch innerhalb der Klasse selbst liegt.

## Sprechweise

Wenn es aus dem Zusammenhang klar bzw. unerheblich ist, um welche Reduktion es sich handelt, wird diese in der Notation auch häufig weggelassen. So bedeutet beispielsweise der Begriff NP-Vollständigkeit, dass ein Problem vollständig für die Komplexitätsklasse aller nicht-deterministisch in Polynomialzeit lösbaren Probleme bezüglich der polynomiell zeitbeschränkten oder der logarithmisch platzbeschränkten Many-one-Reduktion ist. Diese abkürzende Schreibweise ist möglich, da in diesem speziellen Fall die beiden Reduktionsarten äquivalent sind.
Gelegentlich wird sogar die Angabe der betrachteten Problemklasse unterdrückt, so steht vor allem im englischen Sprachraum vollständig (englisch complete) für die Eigenschaft eines Problems, vollständig für die Klasse der rekursiv aufzählbaren Mengen bezüglich der Many-one- bzw. der One-one-Reduktion zu sein. Auch hier sind die beiden betrachteten Reduktionen gleichwertig.

## Beispiele

* Stephen Cook zeigte 1971, dass das Erfüllbarkeitsproblem der Aussagenlogik $SAT$ NP-vollständig ist, darauf aufbauend wies Richard Karp ein Jahr später diese Eigenschaft noch für 20 weitere Probleme nach.
* Umgekehrt lassen sich Problemklassen auch dadurch definieren, dass man ein für sie vollständiges Problem (bezüglich einer bestimmten Reduktion) angibt. So ist die Komplexitätsklasse NP die Gesamtheit aller Probleme, die sich polynomiell zeitbeschränkt many-one auf $SAT$ reduzieren lassen.
* Eine Menge ist genau dann rekursiv aufzählbar, wenn sie sich many-one auf das Halteproblem $H$ reduzieren lässt. $H$ selbst liegt ebenfalls in RE, weshalb es RE-vollständig ist.
* Da das spezielle Halteproblem $K$ und das $\varepsilon$-Halteproblem $H_{0}$ rekursiv isomorph zu $H$ sind, sind sie ebenfalls RE-vollständig.
* Sowohl die Menge $TOTAL$ aller totalen berechenbaren Funktionen als auch ihr Komplement sind RE-schwer aber nicht RE-vollständig.

## Eigenschaften

* Die Reduktionen $\preceq$ bilden Quasiordnungen auf der Menge ${\mathcal {P}}(\mathbb {N} )$ aller Probleme. Die ${\mathcal {C}}$-schweren Probleme sind dann gerade die oberen Schranken und die ${\mathcal {C}}$-vollständigen Probleme die Maxima der Klasse ${\mathcal {C}}$ bezüglich $\preceq$. Dabei ist zu beachten, dass auf Grund der fehlenden Antisymmetrie von $\preceq$ die Maxima nicht notwendig eindeutig sein müssen.
** Insbesondere sind Reduktionen transitiv. Ist also ein Problem $A$ schwer bzgl. $\preceq$ für die Klasse ${\mathcal {C}}$ und gilt zusätzlich $A\preceq B$ für ein weiteres Problem, so ist dieses ebenfalls ${\mathcal {C}}$-schwer.
* Eine Menge ist genau dann produktiv, wenn sie coRE-schwer ist, dies ist der Satz von Myhill. Die Berechenbarkeitsklasse coRE enthält dabei gerade die Komplemente rekursiv aufzählbarer Mengen.
** Daraus folgt, dass die kreativen Mengen genau die RE-vollständigen sind.
* Im Allgemeinen hängt das Verhalten von komplementären Klassen bzw. Problemen von der gewählten Reduktion ab:
** Unter der Turing-Reduktion $\preceq _{T}$ ist bspw. ein Problem genau dann ${\mathcal {C}}$-schwer, wenn es auch $co{\mathcal {C}}$-schwer ist.
** Unter der Many-One-Reduktion $\preceq _{m}$ dagegen ist ein Problem genau dann ${\mathcal {C}}$-schwer, wenn sein Komplement $co{\mathcal {C}}$-schwer ist.