www.wikidata.de-de.nina.az
Dieser Artikel befasst sich mit der Komplexitatstheorie als Teilgebiet der theoretischen Informatik Sie ist zu unterscheiden von der Theorie komplexer Systeme als einer der Hauptstromungen der Systemtheorie Die Komplexitatstheorie als Teilgebiet der theoretischen Informatik befasst sich mit der Komplexitat algorithmisch behandelbarer Probleme auf verschiedenen formalen Rechnermodellen Die Komplexitat von Algorithmen wird in deren Ressourcenverbrauch gemessen meist Rechenzeit oder Speicherplatzbedarf manchmal auch speziellere Masse wie die Grosse eines Schaltkreises oder die Anzahl benotigter Prozessoren bei parallelen Algorithmen Die Komplexitat eines Problems ist wiederum die Komplexitat desjenigen Algorithmus der das Problem mit dem geringstmoglichen Ressourcenverbrauch lost Die Komplexitatstheorie unterscheidet sich von der Berechenbarkeitstheorie die sich mit der Frage beschaftigt welche Probleme prinzipiell algorithmisch gelost werden konnen Demgegenuber besteht das wichtigste Forschungsziel der Komplexitatstheorie darin die Menge aller losbaren Probleme zu klassifizieren Insbesondere versucht man die Menge der effizient losbaren Probleme deren Ressourcenverbrauch in der Praxis bewaltigt werden kann von der Menge der inharent schwierigen Probleme abzugrenzen Inhaltsverzeichnis 1 Einordnung in die Theoretische Informatik 2 Probleme aus Sicht der Komplexitatstheorie 2 1 Entscheidungsprobleme als formale Sprachen 2 2 Berechnungsprobleme als Abbildungen 2 3 Probleminstanzen 2 4 Problemreprasentationen 2 5 Problemgrosse 2 6 Bester schlechtester und durchschnittlicher Fall fur Problemgrossen 2 7 Untere und obere Schranken fur Probleme 3 Maschinenmodelle in der Komplexitatstheorie 3 1 Kostenfunktionen 3 2 Kostenmasse 3 3 Maschinenmodelle und Probleme 3 4 Haufig eingesetzte Maschinenmodelle 3 5 Die erweiterte Church Turing These 3 6 Modellmodifikationen fur Speicherplatzanalysen 4 Landau Notation 5 Bildung von Komplexitatsklassen 5 1 Einflussgrossen bei der Bildung von Komplexitatsklassen 5 2 Anforderungen an Schrankenfunktionen 5 3 Hierarchiesatze 5 3 1 Zeithierarchiesatz 5 3 2 Raumhierarchiesatz 5 3 3 Wofur die Hierarchiesatze nicht gelten 5 4 Wichtige Zeitklassen 5 5 Wichtige Raumklassen 5 6 Komplementbildungen 6 Das P NP Problem und seine Bedeutung 6 1 Die Klasse P Praktisch losbare Probleme 6 2 Die Klasse NP Effizient verifizierbare Probleme 6 3 Der Fall P NP 6 4 Der Fall P NP 6 5 Konsequenzen fur die Komplexitatstheorie 7 Sprachen und Komplexitatsklassen 8 Geschichte der Komplexitatstheorie 8 1 Grundlagen 8 2 Beginn der komplexitatstheoretischen Forschung 8 3 Erforschung der Klasse NP 8 4 Randomisierte Komplexitatsklassen 9 Literatur 10 Weblinks 11 FussnotenEinordnung in die Theoretische Informatik Bearbeiten nbsp Die Komplexitatstheorie innerhalb der theoretischen InformatikDie Komplexitatstheorie gilt neben der Berechenbarkeitstheorie und der Theorie der Formalen Sprachen als einer der drei Hauptbereiche der Theoretischen Informatik Zu ihren wesentlichen Forschungszielen gehort die Klassifizierung von Problemen im Hinblick auf den zu ihrer Losung notwendigen Aufwand Eine besondere Rolle spielt dabei die Abgrenzung der praktisch effizient losbaren Probleme Die Komplexitatstheorie grenzt daher diejenigen Probleme ein zu denen andere Disziplinen der Informatik uberhaupt sinnvollerweise nach effizienten Losungen suchen sollten und motiviert so die Entwicklung praxistauglicher Approximationsalgorithmen Neben dem reinen Erkenntnisgewinn bereichert auch das Methodenarsenal der komplexitatstheoretischen Forschung zahlreiche angrenzende Gebiete So fuhrt etwa ihre enge Verzahnung mit der Automatentheorie zu neuen Maschinenmodellen und einem umfassenderen Verstandnis der Arbeitsweise von Automaten Die haufig konstruktive Beweisfuhrung findet auch im Rahmen des Entwurfs und der Analyse von Algorithmen und Datenstrukturen Anwendung Probleme aus Sicht der Komplexitatstheorie BearbeitenEntscheidungsprobleme als formale Sprachen Bearbeiten nbsp EntscheidungsproblemDen zentralen Gegenstand der Komplexitatstheorie bilden Probleme und zwar in der Regel Entscheidungsprobleme deren Instanzen eine Ja Nein Antwort erfordern Ein Entscheidungsproblem wird dabei oft als formale Sprache dargestellt Man druckt jede Probleminstanz als Wort uber einem Alphabet aus d h als Folge von Zeichen aus diesem Alphabet Die fragliche Sprache besteht aus den Wortern denen eine Instanz mit der Antwort Ja entspricht Die Aufgabe besteht dann in der Losung des Wortproblems also darin fur ein gegebenes Wort zu entscheiden ob es zu der Sprache gehort oder nicht und damit hat man auch die Antwort auf die entsprechende Probleminstanz gefunden Wenn zum Beispiel das Problem darin besteht zu entscheiden ob ein Graph zusammenhangend ist oder nicht dann ware ein Wort eine Darstellung eines beliebigen Graphen Die zugehorige zu entscheidende Sprache ware die Menge der Worter die einen zusammenhangenden Graphen darstellen Man konnte annehmen dass die Einschrankung auf Entscheidungsprobleme viele wichtige Probleme ausschliesst Es gibt jedoch zu allen im Sinne der Komplexitatstheorie relevanten Problemen auch ein entsprechendes Entscheidungsproblem Betrachtet man zum Beispiel das Problem der Multiplikation zweier Zahlen so besteht die dazugehorige Sprache des Entscheidungsproblems aus allen Zahlen Tripeln a b c displaystyle a b c nbsp fur die der Zusammenhang a b c displaystyle a cdot b c nbsp gilt Die Entscheidung ob ein gegebenes Tripel zu dieser Sprache gehort entspricht dem Losen des Problems der Multiplikation zweier Zahlen Berechnungsprobleme als Abbildungen Bearbeiten Neben Entscheidungsproblemen betrachtet man auch Berechnungsprobleme Ein solches erfordert eine Antwort die die Problemlosung beschreibt Das Multiplikationsproblem beispielsweise stellt sich in der Praxis meist als Berechnungsproblem Man will das Produkt zweier Zahlen ermitteln Man versteht ein Berechnungsproblem also als eine Abbildung aus einem Definitionsbereich in einen Losungsraum im Fall der Multiplikation von naturlichen Zahlen also als Abbildung N N N a b a b displaystyle mathbb N times mathbb N rightarrow mathbb N a b mapsto a cdot b nbsp Ein anderes Beispiel ist das Problem des Handlungsreisenden Hier sucht man nach der optimalen Reihenfolge in der man gegebene Orte besucht wobei die Gesamtlange der Route minimal sein soll Viele Optimierungsprobleme sind von grosser praktischer Bedeutung Fur die Definition der meisten Komplexitatsklassen wird jedoch die Formulierung durch Entscheidungsprobleme bevorzugt Eine wichtige Unterkategorie der Berechnungsprobleme stellen die Optimierungsprobleme dar Bei Optimierungsproblemen besteht der funktionale Zusammenhang aus der Forderung das Maximum bzw Minimum einer gegebenen Kostenfunktion uber alle moglichen Losungen des Problems zu bestimmen Beim Problem des Handlungsreisenden ware also die Lange der optimalen Route zu berechnen Probleminstanzen Bearbeiten Eine Probleminstanz ist nicht mit dem Problem selbst zu verwechseln Ein Problem stellt in der Komplexitatstheorie eine allgemeine Fragestellung eine Schablone dar Eine Instanz des Problems ist dann eine vollstandige Fragestellung welche die richtige Antwort ja bzw nein im Fall eines Entscheidungsproblems festlegt Eine Instanz des Problems des Handlungsreisenden konnte zum Beispiel die Frage sein ob eine Route durch die Landeshauptstadte Deutschlands mit einer maximalen Lange von 2000 km existiert Die Entscheidung uber diese Route hat jedoch nur begrenzten Wert fur andere Probleminstanzen wie etwa eine Rundreise durch die Sehenswurdigkeiten Mailands In der Komplexitatstheorie interessiert man sich daher fur Aussagen die unabhangig von konkreten Instanzen sind Ein Problem wird so allgemein formuliert dass es eine unendliche Menge von Probleminstanzen definiert denn es ist nicht sinnvoll nach der Komplexitat einer endlichen Menge von Instanzen zu fragen ein Programm konnte eine Liste von vorgefertigten Antworten enthalten und nur durch Tabellenzugriff die richtige Losung ausgeben was den Aufwand fur die Ermittlung der Antworten nicht widerspiegelt Interessant wird es erst wenn eine unendliche Menge von Instanzen gegeben ist und man einen Algorithmus finden will der fur jede Instanz die richtige Antwort berechnet Problemreprasentationen Bearbeiten Als formale Sprachen werden Probleme und deren Instanzen uber abstrakten Alphabeten definiert Haufig wird das binare Alphabet mit den Symbolen 0 und 1 gewahlt da dies der Verwendung von Bits bei modernen Rechnern am nachsten kommt Eingaben werden dann durch Alphabetsymbole kodiert An Stelle von mathematischen Objekten wie Graphen verwendet man moglicherweise eine Bitfolge die der Adjazenzmatrix des Graphen entspricht an Stelle von naturlichen Zahlen zum Beispiel deren Binardarstellung Auch wenn sich Beweise komplexitatstheoretischer Aussagen in der Regel konkreter Reprasentationen der Eingabe bedienen versucht man Aussagen und Betrachtung unabhangig von Reprasentationen zu halten Dies kann etwa erreicht werden indem man sicherstellt dass die gewahlte Reprasentation bei Bedarf ohne allzu grossen Aufwand in eine andere Reprasentation transformiert werden kann ohne dass sich hierdurch die Berechnungsaufwande insgesamt signifikant verandern Um dies zu ermoglichen ist unter anderem die Auswahl eines geeigneten universellen Maschinenmodells von Bedeutung Problemgrosse Bearbeiten Hat man ein Problem formal definiert zum Beispiel das Problem des Handlungsreisenden in Form eines Graphen mit Kantengewichten so mochte man Aussagen daruber treffen wie sich ein Algorithmus bei der Berechnung der Problemlosung in Abhangigkeit von der Schwierigkeit des Problems verhalt Im Allgemeinen sind bei der Beurteilung der Schwierigkeit des Problems viele verschiedene Aspekte zu betrachten Dennoch gelingt es haufig wenige skalare Grossen zu finden die das Verhalten des Algorithmus im Hinblick auf den Ressourcenverbrauch massgeblich beeinflussen Diese Grossen bezeichnet man als die Problemgrosse In aller Regel entspricht diese der Eingabelange bei einer konkret gewahlten Reprasentation der Eingabe Man untersucht nun das Verhalten des Algorithmus in Abhangigkeit von der Problemgrosse Die Komplexitatstheorie interessiert sich fur die Frage Wie viel Mehrarbeit ist fur wachsende Problemgrossen notwendig Steigt der Aufwand in Relation zur Problemgrosse zum Beispiel linear polynomial exponentiell oder gar uberexponentiell So kann man beim Problem des Handlungsreisenden die Problemgrosse als Anzahl der vorgegebenen Orte definieren wobei man vernachlassigt dass auch die vorgegebenen Streckenlangen verschieden grosse Eingabegrossen aufweisen konnen Dann ist dieses Problem fur die Problemgrosse 2 trivial da es hier uberhaupt nur eine mogliche Losung gibt und diese folglich auch optimal sein muss Mit zunehmender Problemgrosse wird ein Algorithmus jedoch mehr Arbeit leisten mussen Bester schlechtester und durchschnittlicher Fall fur Problemgrossen Bearbeiten Auch innerhalb einer Problemgrosse lassen sich verschiedene Verhaltensweisen von Algorithmen beobachten So hat das Problem des Handlungsreisenden fur die 16 deutschen Landeshauptstadte dieselbe Problemgrosse n 16 displaystyle n 16 nbsp wie das Finden einer Route durch 16 europaische Hauptstadte Es ist keineswegs zu erwarten dass ein Algorithmus unter den unterschiedlichen Bedingungen selbst bei gleicher Problemgrosse jeweils gleich gut arbeitet Da es jedoch in der Regel unendlich viele Instanzen gleicher Grosse fur ein Problem gibt gruppiert man diese zumeist grob in drei Gruppen bester durchschnittlicher und schlechtester Fall Diese stehen fur die Fragen Bester Fall Wie arbeitet der Algorithmus in Bezug auf die in Frage stehende Ressource im gunstigsten Fall Durchschnittlicher Fall Wie arbeitet der Algorithmus durchschnittlich wobei die zugrundegelegte Verteilung fur die Berechnung eines Durchschnitts nicht immer offensichtlich ist Amortisierter Fall Wie arbeitet der Algorithmus im schlechtesten Fall bei einer Folge von Durchlaufen Schlechtester Fall Wie arbeitet der Algorithmus im schlimmsten Fall Die Funktionen in den Ergebnissen zu den Fragen sind wenn sie scharf angegeben sind aufsteigend geordnet d h ein Problem das amortisiert bspw quadratischen Bedarf hat hat hochstens quadratischen Bedarf auch im Durchschnitt und im schlechtesten Fall keinen geringeren Untere und obere Schranken fur Probleme Bearbeiten Die Betrachtung bester schlechtester und durchschnittlicher Falle bezieht sich stets auf eine feste Eingabelange Auch wenn die Betrachtung konkreter Eingabelangen in der Praxis von grossem Interesse sein kann ist diese Sichtweise fur die Komplexitatstheorie meist nicht abstrakt genug Welche Eingabelange als gross oder praktisch relevant gilt kann sich aufgrund technischer Entwicklungen sehr schnell andern Es ist daher gerechtfertigt das Verhalten von Algorithmen in Bezug auf ein Problem ganzlich unabhangig von konkreten Eingabelangen zu untersuchen Man betrachtet hierzu das Verhalten der Algorithmen fur immer grosser werdende potentiell unendlich grosse Eingabelangen Man spricht vom asymptotischen Verhalten des jeweiligen Algorithmus Bei dieser Untersuchung des asymptotischen Ressourcenverbrauchs spielen untere und obere Schranken eine zentrale Rolle Man mochte also wissen welche Ressourcen fur die Entscheidung eines Problems mindestens und hochstens benotigt werden Fur die Komplexitatstheorie sind die unteren Schranken von besonderem Interesse Man mochte zeigen dass ein bestimmtes Problem mindestens einen bestimmten Ressourcenverbrauch beansprucht und es folglich keinen Algorithmus geben kann der das Problem mit geringeren Ressourcen entscheidet Solche Ergebnisse helfen Probleme nachhaltig bezuglich ihrer Schwierigkeit zu separieren Jedoch sind bisher nur vergleichsweise wenige aussagekraftige untere Schranken bekannt Der Grund hierfur liegt in der Problematik dass sich Untersuchungen unterer Schranken stets auf alle denkbaren Algorithmen fur ein Problem beziehen mussen also auch auf Algorithmen die heute noch gar nicht bekannt sind Im Gegensatz dazu gelingt der Nachweis oberer Schranken in der Regel durch die Analyse konkreter Algorithmen Durch den Beweis der Existenz auch nur eines Algorithmus der die obere Schranke einhalt ist der Nachweis bereits erbracht Bei bestimmten Problemen etwa der Komplexitat von Verschlusselungsverfahren wird der Nachweis versucht dass der zu erwartende Ressourcenverbrauch beim Versuch das Verfahren zu brechen jedes realistische Mass ubersteigt Fur Probleme die selbst mit einem Computer von der Grosse der Erde nicht wahrend der Lebensdauer der Erde zu losen sind wurde der Begriff transcomputationales Problem gepragt Maschinenmodelle in der Komplexitatstheorie BearbeitenKostenfunktionen Bearbeiten Zur Analyse des Ressourcenverbrauchs von Algorithmen sind geeignete Kostenfunktionen zu definieren welche eine Zuordnung der Arbeitsschritte des Algorithmus zu den verbrauchten Ressourcen ermoglichen Um dies tun zu konnen muss zunachst festgelegt werden welche Art von Arbeitsschritt einem Algorithmus uberhaupt erlaubt ist Diese Festlegung erfolgt in der Komplexitatstheorie uber abstrakte Maschinenmodelle wurde man auf reale Rechnermodelle zuruckgreifen so waren die gewonnenen Erkenntnisse bereits in wenigen Jahren uberholt Der Arbeitsschritt eines Algorithmus erfolgt in Form einer Befehlsausfuhrung auf einer bestimmten Maschine Die Befehle die eine Maschine ausfuhren kann sind dabei durch das jeweilige Modell streng limitiert Daruber hinaus unterscheiden sich verschiedene Modelle etwa in der Handhabung des Speichers und in ihren Fahigkeiten zur parallelen Verarbeitung d h der gleichzeitigen Ausfuhrung mehrerer Befehle Die Definition der Kostenfunktion erfolgt nun durch eine Zuordnung von Kostenwerten zu den jeweils erlaubten Befehlen Kostenmasse Bearbeiten Haufig wird von unterschiedlichen Kosten fur unterschiedliche Befehle abstrahiert und als Kostenwert fur eine Befehlsausfuhrung immer 1 gesetzt Sind auf einer Maschine beispielsweise Addition und Multiplikation die erlaubten Operationen so zahlt man fur jede Addition und jede Multiplikation die im Laufe des Algorithmus berechnet werden mussen den Kostenwert von 1 hinzu Man spricht dann auch von einem uniformen Kostenmass Ein solches Vorgehen ist dann gerechtfertigt wenn sich die erlaubten Operationen nicht gravierend unterscheiden und wenn der Wertebereich auf dem die Operationen arbeiten nur eingeschrankt gross ist Dies wird schon fur eine einfache Operation wie die Multiplikation klar Das Produkt zweier einstelliger Dezimalzahlen durfte sich ungleich schneller errechnen lassen als das Produkt zweier hundertstelliger Dezimalzahlen Bei einem uniformen Kostenmass wurden beide Operationen dennoch mit einem Kostenwert von 1 veranschlagt Sollten sich die moglichen Operanden im Laufe eines Algorithmus tatsachlich so gravierend unterscheiden so muss ein realistischeres Kostenmass gewahlt werden Haufig wahlt man dann das logarithmische Kostenmass Der Bezug auf den Logarithmus ergibt sich daraus dass sich eine Dezimalzahl n displaystyle n nbsp im Wesentlichen durch log 2 n displaystyle log 2 n nbsp viele Binarziffern darstellen lasst Man wahlt zur Reprasentation der Operanden Binarziffern aus und definiert die erlaubten booleschen Operationen Sollte das jeweilige Maschinenmodell Adressen verwenden so werden auch diese binar codiert Auf diese Weise werden die Kosten uber die Lange der Binardarstellung logarithmisch gewichtet Andere Kostenmasse sind moglich werden jedoch nur selten eingesetzt Maschinenmodelle und Probleme Bearbeiten Man unterscheidet verschiedene Berechnungsparadigmen der pragmatischste Typ ist sicher der der deterministischen Maschinen weiterhin gibt es den in der Theorie besonders relevanten Typ der nichtdeterministischen Maschinen weiterhin gibt es noch probabilistische Maschinen alternierende und andere In der Regel kann man jedes Maschinenmodell mit jedem der obigen Paradigmen definieren Einige Paradigmen so zum Beispiel der Nichtdeterminismus modellieren dabei einen Typ der der Theorie vorbehalten bleiben muss da man den Nichtdeterminismus in der dort definierten Form physikalisch nicht bauen kann sie erraten einen richtigen Pfad in einem Berechnungsbaum lassen sich jedoch haufig leicht zu einem gegebenen Problem konstruieren Da eine Transformation von nichtdeterministischen in deterministische Maschinen immer relativ einfach moglich ist konstruiert man daher zunachst eine nichtdeterministische Maschinenversion und transformiert diese spater in eine deterministische Daraus geht eine wichtige Beweistechnik der Komplexitatstheorie hervor Lasst sich zu einem gegebenen Problem ein bestimmter Maschinentyp konstruieren auf dem das Problem mit bestimmten Kosten entschieden werden kann so kann damit bereits die Komplexitat des Problems eingeschatzt werden Tatsachlich werden sogar die unterschiedlichen Maschinenmodelle bei der Definition von Komplexitatsklassen zugrunde gelegt Dies entspricht einer Abstraktion von einem konkreten Algorithmus Wenn ein Problem auf Maschine M displaystyle M nbsp entscheidbar ist wobei ein entsprechender Algorithmus evtl noch gar nicht bekannt ist so lasst es sich unmittelbar einer bestimmten Komplexitatsklasse zuordnen namlich derjenigen die von M displaystyle M nbsp definiert wird Dieses Verhaltnis zwischen Problemen und Maschinenmodellen ermoglicht Beweisfuhrungen ohne die umstandliche Analyse von Algorithmen Haufig eingesetzte Maschinenmodelle Bearbeiten Besonders haufig eingesetzte Modelle sind nbsp Turingmaschine nbsp Registermaschine nbsp Kellerautomat nbsp Endlicher AutomatZur Untersuchung parallelisierbarer Probleme konnen daruber hinaus auch parallelisierte Versionen dieser Maschinen zum Einsatz kommen insbesondere die parallele Registermaschine Die erweiterte Church Turing These Bearbeiten Fur die Verwendung von Maschinenmodellen in der Komplexitatstheorie ist eine Erweiterung der Church Turing These von Bedeutung die auch als erweiterte Church Turing These bezeichnet wird Sie besagt dass alle universellen Maschinenmodelle in Bezug auf die Rechenzeit bis auf polynomielle Faktoren gleich machtig sind Dies ermoglicht dem Komplexitatstheoretiker eine relativ freie Wahl des Maschinenmodells im Hinblick auf das jeweilige Untersuchungsziel Auch diese These ist nicht beweisbar im Gegensatz zur gewohnlichen Church Turing These ware es aber moglich sie durch ein Gegenbeispiel zu widerlegen Modellmodifikationen fur Speicherplatzanalysen Bearbeiten Zur Untersuchung des Mindestspeicherbedarfs der fur die Losung von Problemen benotigt wird nimmt man haufig die folgenden Modifikationen des verwendeten Maschinenmodells in der Regel eine Turingmaschine vor Der Eingabespeicher darf nur gelesen werden Auf die Ausgabe darf nur geschrieben werden Der Schreibkopf wird nur nach Schreibvorgangen und immer in dieselbe Richtung bewegt falls das Maschinenmodell eine solche Bewegung vorsieht Fur die Untersuchung des Speicherbedarfs durfen dann Ein und Ausgabe der Maschine unberucksichtigt bleiben Die Motivation fur diese Anderungen ist die folgende Wurde zum Beispiel der Eingabespeicher in die Speicherplatzanalyse einbezogen so konnte kein Problem in weniger als O n displaystyle mathcal O n nbsp Platzbedarf gelost werden denn das Eingabewort hat ja immer genau die Lange und damit den Speicherbedarf n Indem man die Eingabe nur lesbar macht verhindert man dass sie fur Zwischenrechnungen verwendet werden kann Man kann dann die Eingabe bei der Berechnung des Platzbedarfs vernachlassigen Eine ahnliche Argumentation fuhrt zu der Einschrankung der Ausgabe Durch die zusatzliche Einschrankung einer moglichen Kopfbewegung wird verhindert dass die Kopfposition verwendet wird um sich Information zu merken Insgesamt stellen all diese Einschrankungen sicher dass Ein und Ausgabe bei der Speicherplatzanalyse nicht berucksichtigt werden mussen Die vorgenommenen Modifikationen beeinflussen das Zeitverhalten der Maschine ubrigens nur um einen konstanten Faktor und sind damit vernachlassigbar Landau Notation Bearbeiten Hauptartikel Landau Symbole Bei der Untersuchung von Grossenordnungen fur Aufwande wird in der Komplexitatstheorie ausgiebig von der Landau oder O Notation Gebrauch gemacht um den minimalen mittleren oder maximalen Zeit oder Speicherplatzbedarf eines Algorithmus zu beschreiben Man spricht dann von Zeitkomplexitat bzw Platzkomplexitat Die Komplexitat kann vom verwendeten Maschinenmodell abhangen In der Regel nimmt man jedoch ein normales Modell an zum Beispiel ein der Turingmaschine aquivalentes Dabei werden lineare Faktoren und Konstanten aus der Betrachtung ausgeblendet Diese Vorgehensweise mag zunachst uberraschen ware doch fur den Praktiker haufig bereits eine Halbierung der Aufwande von hoher Bedeutung Der Standpunkt der Komplexitatstheorie lasst sich theoretisch mit einer Technik rechtfertigen die man als lineares Beschleunigen oder auch Speedup Theorem bezeichnet Wir beschranken uns hier auf das Zeitverhalten Analoge Beweise kann man auch fur den Speicherbedarf oder andere Ressourcen fuhren Das Speedup Theorem besagt vereinfachend dass sich zu jeder Turingmaschine die ein Problem in Zeit T displaystyle T nbsp entscheidet eine neue Turingmaschine konstruieren lasst die das Problem in Zeit weniger als e T displaystyle varepsilon cdot T nbsp entscheidet Dabei kann e gt 0 displaystyle varepsilon gt 0 nbsp beliebig klein gewahlt sein Das bedeutet nichts anderes als dass sich jede Turingmaschine die ein bestimmtes Problem lost um einen beliebigen konstanten Faktor beschleunigen lasst Der Preis fur diese Beschleunigung besteht in einer stark vergrosserten Arbeitsalphabetgrosse und Zustandsmenge der verwendeten Turingmaschine letztlich also Hardware Diese Beschleunigung wird unabhangig von der Problemgrosse erreicht Bei der Betrachtung des asymptotischen Verhaltens von Problemen ergibt es daher keinen Sinn konstante Faktoren zu berucksichtigen solche Faktoren liessen sich durch Anwendung der Beschleunigungstechnik wieder beseitigen Die Vernachlassigung konstanter Faktoren die sich in der O Notation ausdruckt hat daher nicht nur praktische Grunde sie vermeidet auch Verfalschungen im Rahmen komplexitatstheoretischer Betrachtungen Oft ist es sehr aufwendig oder ganz unmoglich fur ein Problem L displaystyle L nbsp eine Funktion f L w f L w displaystyle f L colon w rightarrow f L w nbsp anzugeben die allgemein jeder beliebigen Eingabe fur ein Problem die zugehorige Anzahl der Rechenschritte bzw der Speicherzellen zuordnet Daher begnugt man sich in der Regel damit statt jede Eingabe einzeln zu erfassen sich lediglich auf die Eingabelange n w displaystyle n w nbsp zu beschranken Es ist aber meist ebenfalls zu aufwendig eine Funktion f L n f L n n w displaystyle f L colon n rightarrow f L n n w nbsp anzugeben Daher hat man die Landau Notation entwickelt die sich auf das asymptotische Verhalten der Funktion f L displaystyle f L nbsp beschrankt Man betrachtet also in welchen Schranken sich der Rechenaufwand der Bedarf an Speicher und Rechenzeit halt wenn man die Eingabe vergrossert Das wichtigste Landau Symbol ist O displaystyle mathcal O nbsp grosser lateinischer Buchstabe O mit dem man obere Schranken angeben kann untere Schranken sind im Allgemeinen viel schwieriger zu finden Dabei bedeutet f O g displaystyle f in mathcal O g nbsp oft auch f n O g n displaystyle f n mathcal O g n nbsp dass eine Konstante c gt 0 displaystyle c gt 0 nbsp und ein n 0 N displaystyle n 0 in mathbb N nbsp existieren so dass fur alle n gt n 0 displaystyle n gt n 0 nbsp gilt f n c g n displaystyle f n leq c cdot g n nbsp In anderen Worten Fur alle Eingabelangen ist der Rechenaufwand f n displaystyle f n nbsp nicht wesentlich grosser d h hochstens um einen konstanten Faktor c displaystyle c nbsp als g n displaystyle g n nbsp Dabei ist die Funktion f displaystyle f nbsp nicht immer bekannt als Funktion g displaystyle g nbsp wird hingegen meist eine Funktion gewahlt deren Wachstum gut bekannt ist wie g x x 2 displaystyle g x x 2 nbsp oder g x 2 x displaystyle g x 2 x nbsp Die Landau Notation ist gerade dazu da den Rechenaufwand Platzbedarf abzuschatzen wenn es zu aufwendig ist die genaue Funktion anzugeben bzw wenn diese zu kompliziert ist Die Landau Symbole erlauben es dadurch Probleme und Algorithmen nach ihrer Komplexitat in Komplexitatsklassen zusammenzufassen In der Komplexitatstheorie lassen sich die verschiedenen Probleme und Algorithmen dann folgendermassen vergleichen Man kann fur Problemstellungen mit W displaystyle Omega nbsp eine untere Schranke fur beispielsweise die asymptotische Laufzeit angeben mit O displaystyle mathcal O nbsp entsprechend eine obere Schranke Bei O f displaystyle mathcal O f nbsp wird die Form von f displaystyle f nbsp z B f n n 2 displaystyle f n n 2 nbsp auch als die Komplexitatsklasse oder Aufwandsmass bezeichnet also z B quadratisch Bei dieser Notation werden wie die Definitionen der Landau Symbole zeigen konstante Faktoren vernachlassigt Dies ist gerechtfertigt da die Konstanten zu grossen Teilen vom verwendeten Maschinenmodell bzw bei implementierten Algorithmen von der Qualitat des Compilers und diversen Eigenschaften der Hardware des ausfuhrenden Computer abhangig sind Damit ist ihre Aussagekraft uber die Komplexitat des Algorithmus sehr beschrankt Bildung von Komplexitatsklassen BearbeitenEine wesentliche Aufgabe der Komplexitatstheorie besteht darin sinnvolle Komplexitatsklassen festzulegen in diese die vorliegenden Probleme einzusortieren und Aussagen uber die wechselseitigen Beziehungen zwischen den Klassen zu finden Einflussgrossen bei der Bildung von Komplexitatsklassen Bearbeiten Eine Reihe von Faktoren nehmen Einfluss auf die Bildung von Komplexitatsklassen Die wichtigsten sind die folgenden Das zugrunde liegende Berechnungsmodell Turingmaschine Registermaschine usw Der verwendete Berechnungsmodus deterministisch nichtdeterministisch probabilistisch usw Die betrachtete Berechnungsressource Zeit Platz Prozessoren usw Das angenommene Kostenmass uniform logarithmisch Die eingesetzte Schrankenfunktion Anforderungen an Schrankenfunktionen Bearbeiten Zur Angabe oder Definition von Komplexitatsklassen verwendet man Schrankenfunktionen Schreibt man beispielsweise DTIME f so meint man damit die Klasse aller Probleme die auf einer deterministischen Turingmaschine in der Zeit O f displaystyle mathcal O f nbsp entschieden werden konnen f displaystyle f nbsp ist dabei eine Schrankenfunktion Um als Schrankenfunktion fur komplexitatstheoretische Analysen eingesetzt werden zu konnen sollte die Funktion mindestens die folgenden Anforderungen erfullen f N N displaystyle f colon mathbb N rightarrow mathbb N nbsp Schrittzahl Speicher usw werden als naturliche Zahlen berechnet f n 1 f n displaystyle f n 1 geq f n nbsp monotones Wachstum Die Funktion f displaystyle f nbsp muss selbst in Zeit O f displaystyle mathcal O f nbsp und mit Raum O f displaystyle mathcal O f nbsp berechenbar sein Raum Zeitkonstruierbarkeit Eine Funktion die diesen Anforderungen genugt bezeichnet man auch als echte Komplexitatsfunktion Der Sinn der Anforderungen ist zum Teil technischer Natur Die Schrankenfunktion kann selbst auf konstruktive Art zum Beispiel als Turingmaschine in Beweise einfliessen und sollte sich daher fur diese Zwecke gutartig verhalten An dieser Stelle soll nur darauf hingewiesen werden dass bei der Wahl der Schrankenfunktion eine gewisse Vorsicht walten muss weil sonst bestimmte algorithmische Techniken nicht angewandt werden konnen Die meisten in der Praxis auftretenden Funktionen entsprechen den oben genannten Einschrankungen so etwa die konstante Funktion die Logarithmusfunktion die Wurzelfunktion Polynome die Exponentialfunktion sowie alle Kombinationen dieser Funktionen Es folgt eine Ubersicht der wichtigsten Schrankenfunktionen mit der jeweils ublichen Sprechweise Die Angabe erfolgt wie ublich in O Notation Die wichtigsten Schrankenfunktionen konstant O 1 displaystyle mathcal O 1 nbsp logarithmisch O log n displaystyle mathcal O log n nbsp polylogarithmisch O log k n displaystyle mathcal O log k n nbsp fur k 1 displaystyle k geq 1 nbsp linear O n displaystyle mathcal O n nbsp linearithmisch O n log n displaystyle mathcal O n log n nbsp quadratisch O n 2 displaystyle mathcal O n 2 nbsp polynomial O n k displaystyle mathcal O n k nbsp fur k 1 displaystyle k geq 1 nbsp exponentiell O d n displaystyle mathcal O d n nbsp fur d gt 1 displaystyle d gt 1 nbsp faktoriell O n displaystyle mathcal O n nbsp Hierarchiesatze Bearbeiten Fur die gebildeten Klassen mochte man moglichst beweisen dass durch zusatzlich bereitgestellte Ressourcen tatsachlich mehr Probleme gelost werden konnen Diese Beweise bezeichnet man als Hierarchiesatze auch Separationssatze genannt da sie auf den Klassen der jeweiligen Ressource eine Hierarchie induzieren Es gibt also Klassen die in eine echte Teilmengenbeziehung gesetzt werden konnen Wenn man solche echten Teilmengenbeziehungen ermittelt hat lassen sich auch Aussagen daruber treffen wie gross die Erhohung einer Ressource sein muss um damit eine grossere Zahl von Problemen berechnen zu konnen Von besonderem Interesse sind dabei wiederum die Ressourcen Zeit und Raum Die induzierten Hierarchien bezeichnet man auch als Zeithierarchie und Raumhierarchie Die Hierarchiesatze bilden letztlich das Fundament fur die Separierung von Komplexitatsklassen Sie bilden einige der fruhesten Ergebnisse der Komplexitatstheorie Es muss erganzt werden dass alle Hierarchiesatze auf diversen Voraussetzungen beruhen Eine dieser Voraussetzungen ist etwa dass die oben genannten Anforderungen an echte Komplexitatsfunktionen erfullt werden Ohne die Einhaltung dieser Anforderungen bricht tatsachlich die gesamte Klassenhierarchie in sich zusammen 1 Zeithierarchiesatz Bearbeiten Der Zeithierarchiesatz besagt DTIME f n DTIME f n log 2 f n displaystyle operatorname DTIME big f n big subsetneq operatorname DTIME big f n cdot log 2 f n big nbsp Es gibt also Probleme deren asymptotischer Zeitbedarf auf einer deterministischen Turingmaschine innerhalb der Klasse DTIME f n log 2 f n displaystyle operatorname DTIME big f n cdot log 2 f n big nbsp aber nicht in DTIME f n displaystyle operatorname DTIME big f n big nbsp liegt Eine ahnliche Beziehung lasst sich fur nichtdeterministische Turingmaschinen finden Raumhierarchiesatz Bearbeiten Der Raumhierarchiesatz besagt DSPACE f n DSPACE f n log f n displaystyle operatorname DSPACE big f n big subsetneq operatorname DSPACE big f n cdot log f n big nbsp Die Aussage ist analog zum Zeithierarchiesatz Man erkennt jedoch dass im Vergleich zur Zeit bereits eine geringere Steigerung des Raumes ausreicht Faktor log f n displaystyle log f n nbsp im Vergleich zu log 2 f n displaystyle log 2 f n nbsp um eine grossere Klasse zu bilden Dies entspricht auch einer intuitiven Erwartung verhalt sich doch der Raum insgesamt aufgrund seiner Wiederverwendbarkeit alte Zwischenergebnisse konnen uberschrieben werden gutmutiger Wofur die Hierarchiesatze nicht gelten Bearbeiten Die Hierarchiesatze beziehen sich ausschliesslich auf den jeweils gleichen Berechnungsmodus und eine einzelne Ressource also zum Beispiel auf die Ressource Zeit auf einem deterministischen Maschinenmodell Es wird jedoch keine Aussage daruber getroffen wie sich etwa Raum und Zeitklassen zueinander verhalten oder in welchem Verhaltnis deterministische oder nichtdeterministische Klassen zueinander stehen Dennoch gibt es derartige Zusammenhange Sie werden in den Abschnitten Beziehungen zwischen Raum und Zeitklassen und Beziehungen zwischen deterministischen und nichtdeterministischen Klassen behandelt Wichtige Zeitklassen Bearbeiten DTIME f Allgemeine Schreibweise fur deterministische Zeitklassen P Deterministisch in Polynomialzeit entscheidbare Sprachen EXPTIME Deterministisch in Exponentialzeit entscheidbare Sprachen NTIME f Allgemeine Schreibweise fur nichtdeterministische Zeitklassen NP Nichtdeterministisch in Polynomialzeit entscheidbare Sprachen NEXPTIME Nichtdeterministisch in Exponentialzeit entscheidbare Sprachen NC Parallel in polylogarithmischer Zeit berechenbare Funktionen Wichtige Raumklassen Bearbeiten DSPACE f Allgemeine Schreibweise fur deterministische Raumklassen L Deterministisch mit logarithmisch beschranktem Raum entscheidbare Sprachen PSPACE Deterministisch mit polynomial beschranktem Raum entscheidbare Sprachen NSPACE f Allgemeine Schreibweise fur nichtdeterministische Raumklassen NL Nichtdeterministisch mit logarithmisch beschranktem Raum entscheidbare Sprachen CSL Kontextsensitive Sprachen sind die nichtdeterministisch mit linear beschranktem Raum entscheidbaren Sprachen Siehe auch Liste von Komplexitatsklassen Komplementbildungen Bearbeiten Fur jede Komplexitatsklasse K lasst sich ihre Komplementklasse CoK bilden Die Komplementklasse enthalt genau die Komplemente der Elemente der ursprunglichen Klasse Fasst man K als Menge von Sprachen auf K P S displaystyle K subseteq mathcal P Sigma nbsp siehe Potenzmenge so ist die Komplementklasse C o K L S L K displaystyle CoK L mid Sigma setminus L in K nbsp Bezogen auf die entsprechenden Entscheidungsprobleme heisst das CoK enthalt die Probleme auf deren Instanzen die Antwort immer gegensatzlich lautet wie bei einem Problem in K Im Gegensatz dazu kann man auch das Komplement einer Klasse K betrachten Dieses enthalt genau die Sprachen Probleme aus einer gegebenen Grundmenge die nicht in K sind diese Probleme sind in der Regel viel schwerer als die in K Die Komplementklasse CoK hingegen besitzt mit K in der Regel einen nichtleeren Durchschnitt Fur deterministische Maschinen gilt in der Regel K CoK da in der Ubergangsfunktion einfach nur die Ubergange zu akzeptierenden Zustanden durch Ubergange zu verwerfenden Zustanden ausgetauscht werden mussen und umgekehrt Fur andere Berechnungsmodi gilt dies jedoch nicht da hier die Akzeptanz anders definiert ist Beispielsweise ist bislang unbekannt ob NP CoNP gilt P CoP ist wahr da das zugrunde liegende Modell deterministisch ist und hier die akzeptierenden und ablehnenden Zustande in den Berechnungen einfach ausgetauscht werden konnen wie im vorherigen Absatz angesprochen So sehen wir sofort dass P im Durchschnitt von NP und CoNP enthalten ist Ob dieser Durchschnitt genau P ist ist nicht bekannt Das P NP Problem und seine Bedeutung BearbeitenEines der wichtigsten und nach wie vor ungelosten Probleme der Komplexitatstheorie ist das P NP Problem Ist die Klasse P gleich der Klasse NP Diese Frage kann als eine zentrale Forschungsmotivation der Komplexitatstheorie angesehen werden und eine Vielzahl der komplexitatstheoretischen Ergebnisse wurde erzielt um der Losung des P NP Problems naher zu kommen Die Klasse P Praktisch losbare Probleme Bearbeiten Die Tragweite des P NP Problems resultiert aus der Erfahrung dass die Probleme der Klasse P in der Regel praktisch losbar sind Es existieren Algorithmen um Losungen fur diese Probleme effizient oder doch mit vertretbarem zeitlichem Aufwand zu berechnen Der zeitliche Aufwand zur Problemlosung wachst fur die Probleme der Klasse P maximal polynomial In der Regel lassen sich Algorithmen finden deren Zeitfunktionen Polynome niedrigen Grades sind Da das gewahlte Maschinenmodell dieser Zeitklasse deterministisch und damit realisierbar ist entsprechen die Probleme der Klasse P in etwa den praktisch losbaren Problemen auch wenn Instanzen erheblicher Grosse betrachtet werden Die Klasse NP Effizient verifizierbare Probleme Bearbeiten Die Algorithmen zur Losung der Probleme in NP basieren auf einem nichtdeterministischen Maschinenmodell Fur solche Maschinen wird eine unbeschrankte Parallelisierbarkeit der sich verzweigenden Berechnungspfade angenommen die technisch nicht realisiert werden kann Zwar arbeiten auch die Algorithmen zur Losung der Probleme in NP in polynomialer Zeit aber eben auf der Basis eines physikalisch nicht realisierbaren Maschinenmodells Alternativ zur Definition uber den Nichtdeterminismus kann man die Klasse NP auch uber die Verifikation von Problemen beschreiben Ein Verifikationsalgorithmus bekommt neben der eigentlichen Eingabe zusatzlich einen Zeugen auch Zertifikat genannt ubergeben Fur eine Ja Instanz muss der Verifikationsalgorithmus zumindest bei einem moglichen Zeugen zu einer positiven Antwort kommen Bei einer Nein Instanz darf der Verifikationsalgorithmus fur keinen Zeugen zu einer positiven Antwort kommen Gibt es fur ein Problem einen Verifikationsalgorithmus der mit einem Zeugen polynomieller Lange in polynomieller Zeit arbeitet dann liegt dieses Problem in der Klasse NP Ein Beispiel fur einen effizient verifizierbares Problem ist das Erfullbarkeitsproblem SAT Hier wird gefragt ob es fur eine boolesche Formel eine Belegung ihrer Variablen gibt sodass die Formel wahr ist Ein moglicher Verifikationsalgorithmus benutzt als Zeugen einen Vektor welcher die Variablenbelegung kodiert Fur eine gegebene Variablenbelegung ist es leicht einen effizienten Algorithmus zu entwerfen der die Formel fur diese Belegung auswertet Damit ist dieses Problem in der Klasse NP Das Finden der Belegung ist nicht Aufgabe des Verifikationsalgorithmus Eine nichtdeterministische Turingmaschine kann ein Problem in NP dadurch losen dass sie erst alle moglichen Losungen erzeugt wobei der Rechenweg in entsprechend viele Pfade verzweigt wird und anschliessend jede dieser Losungen verifiziert was deterministisch also ohne weitere Verzweigung erfolgen kann Es gibt Probleme in NP die fur grosse Instanzen als praktisch unlosbar gelten Dazu gehoren die NP vollstandigen Probleme In dieser Klasse finden sich Probleme aus fast allen Bereichen der Informatik Aber nicht alle Probleme in NP sind schwer weil NP auch die Klasse P enthalt Der Fall P NP Bearbeiten Wurde das P NP Problem im Sinne von P NP gelost so wussten wir dass es selbst fur NP vollstandige Probleme Algorithmen geben muss die mit polynomiellem Zeitaufwand arbeiten Da umgekehrt die Definition der NP Vollstandigkeit Algorithmen voraussetzt mit denen es gelingt beliebige Probleme aus NP in polynomieller Zeit auf NP vollstandige Probleme zu reduzieren waren mit der polynomialen Losbarkeit auch nur eines einzigen NP vollstandigen Problems sofort samtliche Probleme der Klasse NP in polynomieller Zeit losbar Dies hatte eine Problemlosekraft in der gesamten Informatik zur Folge wie sie auch durch noch so grosse Fortschritte in der Hardware Entwicklung nicht erreicht werden kann Andererseits ist fur bestimmte Anwendungsfalle eine Losung des P NP Problems im Sinne von P NP eher unerwunscht Beispielsweise wurden asymmetrische Verschlusselungsverfahren erheblich an Sicherheit verlieren da diese dann in Polynomialzeit gebrochen werden konnten Der Fall P NP Bearbeiten Wurde das P NP Problem im Sinne von P NP gelost so ware klar dass weitere Bemuhungen polynomielle Losungen fur NP vollstandige Probleme zu finden sinnlos waren Man kann sich leicht vorstellen dass aufgrund der hohen Bedeutung der Probleme in NP die Bemuhungen um eine effiziente Losung erst dann eingestellt werden wenn diese nachgewiesenermassen unmoglich ist Bis zu diesem Zeitpunkt wird noch viel private und offentliche Forschungsenergie aufgewandt werden In vielen Theoremen wird heute jedoch angenommen dass P NP gilt denn nur so kann ohne einen Beweis der Gleichheit trotzdem effektive Forschungsarbeit geleistet werden Man sucht nach Auswegen durch Approximationen und Heuristiken nach Problemeinschrankungen die die Praxis nicht vernachlassigen Konsequenzen fur die Komplexitatstheorie Bearbeiten Zu den wichtigsten Forschungszielen der Komplexitatstheorie gehort die Abgrenzung des praktisch Machbaren und damit des Betatigungsfeldes der Informatik schlechthin Die vorherigen Abschnitte haben die Wichtigkeit dieser Grenzziehung verdeutlicht Im Zuge der Versuche das P NP Problem zu losen hat die Komplexitatstheorie zahlreiche Ergebnisse zu Tage gefordert und ihre Analysemethoden Zug um Zug verfeinert Diese Ergebnisse werden insbesondere beim Entwurf und der Analyse praktisch wichtiger Algorithmen angewandt und wirken so auch unmittelbar auf die Praktische Informatik Die seit uber dreissig Jahren andauernden Bemuhungen das P NP Problem zu losen gewahren daruber hinaus dem praktischen Informatiker ein grosses Mass an Sicherheit dass isolierte Bemuhungen zur effizienten Losung von Problemen aus NP mehr oder weniger sinnlos sind Die praktische Informatik konzentriert sich daher bei der Losung fur Probleme aus NP auf Naherungslosungen oder die Abwandlung der ursprunglichen Probleme So kann sich beispielsweise die Problemkomplexitat von Optimierungs Algorithmen enorm verringern wenn man keine optimale Losung anstrebt sondern mit einer fast optimalen Losung zufrieden ist Die Komplexitatstheorie liefert fur diese Vorgehensweise die theoretische Ruckendeckung Sprachen und Komplexitatsklassen BearbeitenDas folgende Inklusionsdiagramm gibt einen recht groben Uberblick uber die Zusammenhange zwischen Klassen der Berechenbarkeitstheorie der Chomsky Hierarchie und den bedeutendsten Komplexitatsklassen nbsp InklusionsdiagrammGeschichte der Komplexitatstheorie BearbeitenNachdem in den vorhergehenden Abschnitten zahlreiche Grundbegriffe und wichtige Ergebnisse der Komplexitatstheorie erlautert wurden wird in den folgenden Abschnitten ein geschichtlicher Abriss gegeben der die zeitliche Abfolge dieser Ergebnisse einordnen helfen soll Grundlagen Bearbeiten Vor dem eigentlichen Beginn der explizit auf die Komplexitat von Algorithmen bezogenen Forschung wurden zahlreiche Grundlagen erarbeitet Als wichtigste kann dabei die Konstruktion der Turingmaschine durch Alan Turing im Jahr 1936 angesehen werden die sich fur spatere Algorithmen Analysen als ausgesprochen flexibles Modell erwies Als erste informelle komplexitatstheoretische Untersuchungen werden Ergebnisse von John Myhill 1960 Raymond Smullyan 1961 und Hisao Yamada 1962 angesehen die sich mit speziellen raum und zeitbeschrankten Problemklassen beschaftigt haben jedoch in ihren Arbeiten noch keinen Ansatz zu einer allgemeinen Theorie entwickelten Beginn der komplexitatstheoretischen Forschung Bearbeiten Einen ersten grossen Schritt in Richtung einer solchen Theorie unternahmen Juris Hartmanis und Richard E Stearns in ihrer 1965 erschienenen Arbeit On the computational complexity of algorithms Sie gaben bereits eine quantitative Definition von Zeit und Platzkomplexitat und wahlten damit bereits die beiden Ressourcen aus die bis heute als die wichtigsten angesehen werden Dabei wahlen sie die Mehrband Turingmaschine als Grundlage und trafen damit eine sehr robuste Entscheidung die in vielen komplexitatstheoretischen Feldern Bestand hat Sie erarbeiteten auch bereits erste Hierarchiesatze In den folgenden Jahren kam es zu einer Reihe fundamentaler Ergebnisse 1967 veroffentlichte Manuel Blum das Speedup Theorem 1969 folgte das Union Theorem von Edward M McCreight und Albert R Meyer Und 1972 veroffentlicht Allan Borodin das Gap Theorem Diese Ergebnisse lassen sich nicht nur als grundlegend fur die Komplexitatstheorie ansehen sie stellen auch ein Abtasten des noch neuen Forschungsgebietes dar das sich zugleich noch durch moglichst spektakulare Ergebnisse rechtfertigen muss So treffen diese Theoreme z T zwar uberraschende Aussagen sind aber mitunter auf Annahmen gebaut die man heute einschranken wurde Beispielsweise werden keine echten Komplexitatsfunktionen siehe oben vorausgesetzt In derselben Zeit die etwa die ersten zehn Jahre komplexitatstheoretischer Forschung umfasst kam es zur Formulierung der Klasse P als der Klasse der praktisch losbaren Probleme Alan Cobham zeigte dass die Polynomialzeit robust unter der Wahl des Maschinenmodells ist was man heute unter der erweiterten Church Turing These zusammenfasst Daruber hinaus erwiesen sich viele mathematische Funktionen als in Polynomialzeit berechenbar Erforschung der Klasse NP Bearbeiten Die Klasse NP kam zuerst bei Jack Edmonds vor der jedoch zunachst nur eine informelle Definition gab Die Tatsache dass zahlreiche wichtige Probleme in NP zu liegen schienen liess diese Klasse jedoch bald als attraktives Forschungsfeld erscheinen Der Begriff der Reduzierbarkeit und die darauf basierende NP Vollstandigkeit wurde entwickelt und fand zuerst im Satz von Cook 1971 pragnanten Ausdruck Das Erfullbarkeitsproblem SAT ist NP vollstandig und damit ein schwerstes Problem in NP Nebenbei bemerkt bezog sich die ursprungliche Arbeit von Stephen Cook auf Tautologien aussagenlogische Formeln die durch jede Belegung erfullt werden wahrend der Begriff der Erfullbarkeit nicht erwahnt wird Da die Ergebnisse bezuglich der Tautologien jedoch relativ einfach auf die Erfullbarkeit ubertragen werden konnen rechnet man sie Stephen Cook zu Einen Teil dieser Ubertragung leistete Richard Karp 1972 indem er die Technik der Reduktion ausarbeitete Vollig unabhangig von diesen Arbeiten entwickelte Leonid Levin 1973 in der damaligen Sowjetunion eine Theorie der NP Vollstandigkeit die im Westen fur lange Zeit unbeachtet blieb 1979 veroffentlichten Michael R Garey und David S Johnson ein Buch welches 300 NP vollstandige Probleme beschreibt Computers and intractability Dieses Buch wurde fur kunftige Forscher zu einer wichtigen Referenz Randomisierte Komplexitatsklassen Bearbeiten 1982 stellte Andrew Yao das Konzept der Fallturfunktionen trapdoor functions vor die eine spezielle Art von Einwegfunktionen one way functions darstellen und zeigte deren grundlegende Wichtigkeit in der Kryptographie auf Jedoch genugt fur die Schwierigkeit einen Code zu knacken die Worst Case Betrachtungsweise der Komplexitatsklassen wie NP nicht Es durfen vielmehr auch keine Algorithmen existieren die diese Probleme in einem signifikanten Anteil aller Falle effizient losen Dies korrespondiert zum Modell der probabilistischen Turingmaschine und motivierte die Einfuhrung randomisierter Komplexitatsklassen wie PP ZPP RP oder BPP alle eingefuhrt von John T Gill 1977 Mit dieser Ubersicht wurden die wesentlichen Grundsteine der Geschichte der Komplexitatstheorie umrissen Wie in anderen Forschungsgebieten auch fachern sich die neueren Ergebnisse in viele teils sehr spezielle Teilbereiche auf Insbesondere kamen auch Komplexitatsklassen fur die Quanteninformationstheorie hinzu siehe Quantencomputer Literatur BearbeitenSanjeev Arora amp Boaz Barak Computational Complexity A Modern Approach Cambridge University Press Cambridge 2009 ISBN 978 0 521 42426 4 Ding Zhu Du amp Ker I Ko Theory of Computational Complexity John Wiley amp Sons New York 2000 ISBN 0 471 34506 7 Lance Fortnow amp Steve Homer A Short History of Computational Complexity 14 November 2002 PDF 225 kB Michael R Garey amp David S Johnson Computers and Intractability A guide to the theory of NP completeness Freeman New York 2003 ISBN 0 7167 1045 5 Juris Hartmanis amp Richard E Stearns On the computational complexity of algorithms In Transactions of the American Mathematical Society Vol 117 1965 S 285 306 PDF 2018 KB Jan van Leeuwen Hrsg Handbook of Theoretical Computer Science Volume A Algorithms and Complexity The MIT Press Elsevier Amsterdam 1994 ISBN 0 262 72020 5 Christos Papadimitriou Computational Complexity Addison Wesley Reading Mass 1995 ISBN 0 201 53082 1 K Rudiger Reischuk Komplexitatstheorie Band I Grundlagen Maschinenmodelle Zeit und Platzkomplexitat Nichtdeterminismus 2 Auflage Teubner Stuttgart Leipzig 1999 ISBN 3 519 12275 8 Michael Sipser Introduction to the Theory of Computation 2 Auflage Thomson Boston 2006 ISBN 0 534 95097 3 International Edition Ingo Wegener Komplexitatstheorie Grenzen der Effizienz von Algorithmen 1 Auflage Springer Berlin 2003 ISBN 3 540 00161 1 Weblinks Bearbeiten nbsp Commons Komplexitatstheorie Sammlung von Bildern Videos und Audiodateien Complexity Zoo Verzeichnis der wichtigsten KomplexitatsklassenFussnoten Bearbeiten Derartige Probleme gibt es beispielsweise im Bereich der probabilistischen Komplexitatsklassen Schrankt man hier wie fur praktisch verwendbare probabilistische Algorithmen erforderlich die Fehlerwahrscheinlichkeit ein so resultiert daraus unter anderem dass die Komplexitatsklassen nicht mehr aufzahlbar sind Dies ist aber fur alle Separationsverfahren eine Voraussetzung Als Ergebnis lassen sich Polynomzeitalgorithmen plotzlich durch Linearzeitalgorithmen ersetzen Das Beispiel zeigt wie sensibel das Geflecht aus Voraussetzungen und den abgeleiteten Satzen insgesamt ist nbsp Dieser Artikel ist als Audiodatei verfugbar source source Speichern 41 23 min 39 9 MB Text der gesprochenen Version 29 Dezember 2013 Mehr Informationen zur gesprochenen Wikipedia nbsp Dieser Artikel wurde am 13 November 2006 in dieser Version in die Liste der exzellenten Artikel aufgenommen Normdaten Sachbegriff GND 4120591 1 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Komplexitatstheorie amp oldid 235507818