it-swarm.com.de

Was bedeutet es zu sagen, dass ein Algorithmus Sound and Complete ist?

Ich hörte verschiedene Interpretationen von Ton und vollständig. Ich verstehe, dass Vollständigkeit bedeutet, eine Lösung zu finden, wenn es eine gibt. Was es bedeutet zu sagen, dass ein Algorithmus Ton ist.

Was bedeutet es zu sagen, dass ein Algorithmus Sound and Complete ist?

33
mutelogan

Dies sind sehr spezifische Begriffe in Bezug auf Logik.

Hier sind einige Ausgangspunkte:

http://en.wikipedia.org/wiki/Soundness

http://en.wikipedia.org/wiki/Completeness_ (Logik)

Grundsätzlich bedeutet Solidität (eines Algorithmus), dass der Algorithmus keine unwahren Ergebnisse liefert. Wenn ich zum Beispiel einen Sortieralgorithmus habe, der manchmal keine sortierte Liste zurückgibt, ist der Algorithmus nicht korrekt.

Vollständigkeit bedeutet andererseits, dass der Algorithmus alle möglichen Eingaben adressiert und keine übersieht. Wenn mein Sortieralgorithmus also niemals eine unsortierte Liste zurückgeben würde, sondern sich einfach weigern würde, an Listen zu arbeiten, die die Nummer 7 enthalten, wäre sie nicht vollständig.

Es ist vollständig und solide, wenn es auf allen Eingaben funktioniert (semantisch gültig in der Welt des Programms) und immer die richtige Antwort erhält.

50
Erik Dietrich

Ich finde Erik Dietrichs Antwort etwas verwirrend. Folgendes ist besser:

Ein Algorithmus ist Ton wenn diese Antwort immer dann wahr ist, wenn er eine Antwort zurückgibt. Ein Algorithmus ist vollständig, wenn er garantiert, dass für eine beliebige Eingabe eine korrekte Antwort zurückgegeben wird (oder wenn keine Antwort vorhanden ist, garantiert er, dass ein Fehler zurückgegeben wird).

Zwei wichtige Punkte:

  1. Solidität ist eine schwache Garantie. Es verspricht nicht, dass A endet.
  2. Solidität und Vollständigkeit sind verwandte Konzepte; Tatsächlich sind sie das logische Gegenteil voneinander. d.h. die Solidität sagt, dass wenn eine Antwort zurückgegeben wird, diese Antwort wahr ist. Die Vollständigkeit besagt, dass eine Antwort wahr ist, wenn sie zurückgegeben wird.

Betrachten Sie als Beispiel einen Sortieralgorithmus A, der als Eingabe eine Liste von Zahlen empfängt. Wir sagen, dass A gut ist, wenn jedes Mal, wenn es ein Ergebnis zurückgibt, das Ergebnis eine sortierte Liste ist. Ebenso sagen wir, dass A vollständig ist, wenn garantiert wird, dass eine sortierte Liste jedes Mal zurückgegeben wird, wenn wir ihr eine Liste mit Zahlen geben.

16
Daniel

Diese Begriffe stammen aus der Berechnungstheorie und sind daher im Kontext der Berechnungstheorie aussagekräftiger als im Kontext der Softwareentwicklung

In den meisten Standardberechnungsmodellen werden Rechenprobleme als Sprachen dargestellt. Eine Sprache ist eine Reihe von Zeichenfolgen. Ein Algorithmus ist also nur ein System oder eine Prozedur, die entscheidet, ob eine bestimmte Zeichenfolge Mitglied einer Sprache ist (indem sie true oder false zurückgibt). In Bezug auf die Softwareentwicklung befasst sich die Berechnungstheorie speziell mit Funktionen, die so aussehen, vorausgesetzt, Zeichenfolgen sind unveränderlich:

boolean some_function(string argument){...}

Wir nennen diese Funktion complete , wenn sie für jedes Argument, das Mitglied der Sprache ist, true zurückgibt. Wir nennen es sound , wenn es für jedes Argument, das kein Mitglied der Sprache ist, false zurückgibt.

Mit anderen Worten, es ist vollständig, wenn es immer true zurückgibt, wenn wir möchten, dass es true zurückgibt, und klingt, wenn es immer false zurückgibt, wenn wir möchten, dass es false zurückgibt.

Wie überträgt sich dies auf andere Arten von Funktionen? Wie sich herausstellt, ist es fast immer möglich, eine beliebige Datenmenge in eine Zeichenfolge einzufügen und innerhalb der Funktion wiederherzustellen. Die Einschränkung von Argumenttyp und Arität ist also nichts weiter als eine theoretische Vereinfachung. Die Einschränkung des Rückgabetyps ist jedoch wichtiger. Probleme, die ein boolesches Ergebnis erfordern, heißen Entscheidungsprobleme . Viel Berechnungstheorie beinhaltet Entscheidungsprobleme; Die Mengen P und NP sind auf Entscheidungsprobleme beschränkt (und NP könnte ohne diese Einschränkung zumindest nicht vernünftig definiert werden). Das Stoppproblem ist ein weiteres Beispiel für ein stark untersuchtes Entscheidungsproblem .

Ich bin der Meinung, dass diese Begriffe nicht außerhalb des Bereichs von Entscheidungsproblemen verallgemeinern, sodass der Unterschied zwischen ihnen bei der Erörterung einer allgemeinen Funktion nicht wirklich bedeutsam ist.

2
Kevin