Frage

Ich möchte wissen, ob das folgende Problem lernbar ist und wie man es herausfindet. Jedes Problem, das ich sehe, kann ich "Ja" oder "Nein" sagen, also sind die meisten Probleme und Algorithmen, die nicht wenige sind (was zur Verfügung gestellt wird hier)?

Eingabe: Ein gerichtetes und endliches Diagramm $ g $ mit $ v $ und $ u $ als Scheitelpunkte
Frage: Gibt es einen Pfad in $ g $ mit $ u $ als anfänglicher Scheitelpunkt und $ v $ als endgültigen Scheitelpunkt?

War es hilfreich?

Lösung

Jedes Problem, bei dem nur eine begrenzte Datenmenge untersucht werden muss, ist enttäuscht, da es einen Algorithmus gibt, der aus der Aufzählung aller potenziellen Lösungen besteht. Es mag lächerlich langsam sein, aber das ist nicht relevant: Wenn es einen Algorithmus gibt, ist es entzündbar.

Das Problem, das Sie angeben, nimmt eine endliche Graphe an, die stark darauf hinweist, dass sie lehnte. Streng genommen müssen Sie etwas weiter aussehen. Das Problem ist eine Eigenschaft auf den Pfaden im Diagramm, und manchmal gibt es eine unendliche Anzahl von Pfaden, wenn der Diagramm einen Zyklus enthält (Sie können diesen Zyklus so oft wie Sie möchten). Es ist jedoch einfach, das Problem auf ein begrenztes Problem zu verwandeln: Wenn ein Weg mit $ u $ und mit $ v $ vorhanden ist, können Sie alle Zyklen in diesem Weg ausschneiden, und Sie haben eine Neue Lösung, die keinen Zyklus enthält. Da es eine begrenzte Anzahl von Pfaden gibt, die keinen Zyklus beinhalten (wenn das Diagramm $ k $ Kanten enthält, gibt es höchsten Path von $ u $ bis $ v $ ist endarter und daher entzündbar.

Übrigens wird diese Eigenschaft genannt Konnektivität.

Dieser Ansatz ist üblich, genannt die Ermäßigung. Bei einem Problem, das nicht unkompliziert ist, haben wir es auf ein Problem reduziert, das wir wussten, wie wir es lösen sollten.

Es ist oft schwierig zu beweisen, dass ein Problem unentscheidbar ist. Um zu beweisen, dass ein Problem unkompliziert ist, müssen wir nur einen Algorithmus aufweisen, der ihn entscheidet. Um zu beweisen, dass ein Problem unentscheidbar ist, müssen wir beweisen, dass kein Algorithmus existieren kann. Es gibt einige bekannte, unentschlossene Probleme. In der Praxis, die meiste Zeit, wenn wir beweisen, dass ein Problem unentscheidbar ist, zeigen wir, dass es ein bekanntes, unentschlossenes Problem gibt, das sich auf unser Problem verringert. Da ein Algorithmus für unser Problem das bekannte, unentscheidbare Problem lösen würde, muss auch unser Problem nicht entscheidbar sein.

Man kann nicht wirklich sagen, dass „die meisten“ Probleme lehnte oder „die meisten“ Probleme unentscheidbar sind. In einigen theoretischen Sinne sind fast alle Probleme unentscheidbar, aber wir haben eine starke Tendenz, „interessante“ Probleme anzugehen, und diese haben eher eine Lösung.

Andere Tipps

Das Problem ist trivial lernbar, wie Gilles in einem Kommentar hervorgeht. Wie für Ihre andere Frage ...

sind die meisten Probleme und Algorithmen, die nicht wenige sind (was zur Verfügung gestellt wird hier)?

Nö. Eigentlich, die meisten Probleme sind unentscheidbar. Tatsächlich gibt es unbedingt viele Probleme (Sprachen), aber es gibt nur zählbare Turing -Maschinen, was bedeutet, dass es höchstens zählbar viele lehbare Probleme gibt.

Ja, das ist lichtdurchschnittlich, da Sie eine umfassende Suche nach allen möglichen Pfaden durchführen können. Es besteht keine Notwendigkeit, sich Wege anzusehen, die einen Scheitelpunkt wiederholen, da der "Umweg" übersprungen werden kann. Die Länge eines nicht repetitiven Pfades wird jedoch durch die Größe des Graphen begrenzt, die endlich ist, und daher gibt es nur endlich viele solcher Pfade, die einzeln überprüft werden können.

Was nicht entscheidbar ist, ist Folgendes: Angesichts eines unendlichen Diagramms $ G $ und zwei Scheitelpunkte $ a $ und $ B $ entscheiden Sie, ob es einen Pfad von $ $ $ $ B $ gibt. Dies ist nicht lauter, wenn das Diagramm als Orakel angegeben wird und auch nicht entscheidbar ist, wenn das Diagramm über ein Programm angegeben wird, das es berechnet.

Es gibt keine Methode, die Ihnen sagt, ob ein bestimmtes Problem lernbar ist oder nicht. Mit der Zeit können Sie eine gute "Ahnung" erhalten, ob ein bestimmtes Problem lernbar ist oder nicht.

Was ich normalerweise tue, ist Folgendes:

  1. Versuchen Sie, das Problem zu lösen. Versuchen Sie, an ein Computerprogramm zu denken, das das gegebene Problem löst. Für Ihr vorgeschlagenes Problem - ein sehr einfaches Programm überprüft nur einen möglichen Weg und gelingt es daher immer, es zu finden (falls es existiert), oder geben Ihnen mit, dass es sonst keinen Weg gibt.
  2. Das Problem klar formulieren. Viele Probleme sind einfach zu vage, aber wenn es klar geschrieben ist, ist es sehr leicht zu erkennen, ob es sich Reis Satz)
  3. Wenn (2) nicht funktioniert hat, Sie aber immer noch glauben, dass das Problem unentscheidbar ist, versuchen Sie, dies durch Reduzierung durch ein unentschlossenes Problem zu beweisen (das Problem der Störung des Problems (oder dessen Komplement) funktioniert in vielen Fällen).

Fast immer, wenn Sie versuchen, Schritt (1) für ein unentscheidbares Problem zu tun, benötigen Sie Ihr Programm, um zu überprüfen unendlich Anzahl der Dinge. Dies ist in der Regel ein Zeichen dafür, dass das Problem nicht lehnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top