Benutzer:Megatherium/Kram

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Optimierungsproblem[Bearbeiten | Quelltext 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 | Quelltext 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 | Quelltext bearbeiten]

Gesucht: , welches das größte liefert.

Registermaschine 1[Bearbeiten | Quelltext 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 | Quelltext 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 | Quelltext bearbeiten]

Hash[Bearbeiten | Quelltext bearbeiten]

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

P[Bearbeiten | Quelltext 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).