Optimierungsproblem Bearbeiten

Ein Optimierungsproblem besteht aus einer Menge   von Lösungen und einer Zielfunktion  , die jeder Lösung einen Wert (Qualität; Fitness) zuordnet. Im Fall eines Maximierungsproblems ist   umso höher, je besser die Lösung   ist. Bei einem Minimierungsproblem ist es umgekehrt, was sich durch Negieren von   auf den ersten Fall zurückführen lässt. Man sucht in der Regel eine beste (optimale) Lösung in  , also ein   mit dem höchsten bzw. niedrigsten  .

Informatik Bearbeiten

Man unterscheidet hier folgende Problemstellungen:

  • Entscheidungsprobleme, bei denen zusätzlich ein Grenzwert   gegeben ist, und ermittelt werden soll, ob es ein   gibt mit  .
  • eigentliche Optimierungsprobleme, bei denen man den Wert der besten Lösung wissen will, also  .
  • Suchprobleme, bei denen eine optimale Lösung   gesucht ist, also  , oder eine Lösung mit einer gegebenen Mindestqualität, d. h. ein   mit  .
  • Approximationsprobleme: man will eine möglichst gute Lösung finden, ohne dass von vornherein weitere Vorgaben gemacht werden.

In der Theoretischen Informatik meint man mit Optimierungsproblem in der Regel ein eigentliches Optimierungsproblem, bei dem also nur der bestmögliche Wert und keine Lösung selbst gesucht ist. Auch betrachtet man üblicherweise den Sonderfall einer diskreten Bewertungsfunktion  , da dies meist keinen erheblichen Unterschied macht und man reelle Zahlen weniger gut handhaben kann, z. B. näherungsweise als Gleitkommazahlen.

Meistens betrachtet man in der Theoretischen Informatik aber Entscheidungsprobleme. Zu einem Optimierungsproblem lässt sich leicht ein Entscheidungsproblem erzeugen, indem man zur Problemstellung den Grenzwert   bzw.   hinzunimmt. Umgekehrt kann man für die meisten praktisch interessanten Probleme zeigen, dass ein Lösungsweg für das Entscheidungsproblem zu einer Lösung des entsprechenden Such- oder Optimierungsproblems modifiziert werden kann, die nicht entscheidend mehr Rechenzeit oder Speicherplatz benötigt.

Problem Bearbeiten

 

Gesucht:  , welches das größte   liefert.

Registermaschine 1 Bearbeiten

Befehlssatz  

endliches Alphabet   mit  

Operatoren  

surjektive Adressfunktion:  


Programm  


 

Register  


Die Maschine beginnt mit   mit der Eingabe in den Registern   bis   mit  . Ein Arbeitsschritt besteht in der Ausführung des Befehls   gemäß nachfolgender Tabelle. Dies wird iterativ wiederholt, solange   (Der Index 1 bedeutet: das erste Element des Tupels  ). Wenn  , hält die Maschine an, und die Ausgabe steht in den Registern.

Alternativ: zur Befehlsmenge werden   zum Lesen der Eingabe bzw. Schreiben in die Ausgabe hinzugefügt, und alle Register werden mit   initialisiert.

  Aktion
aset  
rset  
rinc  
j  
jB wenn   dann  
jnB wenn   dann  
ld  
st  
op(i)  
ild  
ist  
iop(i)  
in   nächstes Eingabezeichen
out Ausgabe  

Nach jeder Aktion wird der Befehlszähler inkrementiert ( ), außer nach einem Sprung, d. h. nachdem   ausgeführt wurde.

Für die Befehle ild, ist und iop(1) bis iop(x) wird die Adresse A wie folgt berechnet:

 
 
while   do
 
 
end while

Registermaschine 2 Bearbeiten

  • endliches Arbeitsalphabet   mit  
  • Programm  
  • Register  
  • Akkumulator  
  • Befehlszähler  
  • Addressregister  
  • Operatoren  
  • Prädikate  
  • surjektive Addressfunktion  
Befehlscode   Aktion
set  
load  
op(i)  
store  
jmp(i) wenn  , dann  , sonst  
offs  
halt (keine)

Am Anfang ist   und  . Das Programm der Länge   steht in  , und es ist   für   oder  . Die Eingabe der Länge   steht in  , und es ist   für   oder  .

Integral Bearbeiten

 

Hash Bearbeiten

 . Gegeben: Verkettungsfunktion  , Nachricht  , Salz   mit  , Hashlänge  .

 
 
 
 

P Bearbeiten

Notation:

  •   ist die Menge der natürlichen Zahlen mit Null.
  •   ist das Alphabet einer formalen Sprache, das heißt jedes Wort ist eine binäre Zeichenfolge bestehend aus   und  .
  •   bezeichnet die Menge aller binären Wörter der Länge  .
  •   bezeichnet die Menge aller endlich langen binären Wörter.

Ein Entscheidungsproblem wird als formale Sprache   über dem Alphabet   dargestellt, also  . Dazu wird ein Formalismus festgelegt, um jede Probleminstanz (deren Lösung eine ja/nein-Antwort ist) als Wort in   darzustellen, und   enthält genau die Wörter  , die eine gültige Darstelung einer Probleminstanz sind, auf die die richtige Antwort „ja“ lautet.

  bezeichne die Menge der Algorithmen  , die das Problem   lösen:  .

  bezeichnet die Zahl der Rechenschritte, die der Algorithmus   bei Eingabe von   ausführt, mit der Turingmaschine als ausführendes Maschinenmodell.

Die Klasse   ist die Menge der effizient-lösbaren Entscheidungsprobleme. Ein Entscheidungsproblem   ist effizient-lösbar, falls ein Algorithmus   existiert, der nur polynomielle Zeit braucht, d. h. es existiert ein Polynom  , so dass  .

Dann ist   die Klasse der effizient-lösbaren Entscheidungsprobleme, das heißt[1]

 
  1. Oded Goldreich: P, NP, and NP-Completeness: The Basics of Computational Complexity. Hrsg.: Cambridge University Press. 2010, ISBN 978-0-521-19248-4 (englisch).