Ich unterrichte einen Kurs über Meta-Heuristik und muss interessante Beispiele für klassische kombinatorische Probleme für den Begriff Projekt generieren . Konzentrieren wir uns auf TSP. Wir beschäftigen uns mit Graphen der Dimension und größer. Ich habe natürlich versucht, ein Diagramm mit einer Kostenmatrix mit Werten aus einem zufälligen U ( 0 , 1 ) zu erstellen, und herausgefunden, dass (wie erwartet) das Histogramm für die Pfadkosten (gezeichnet durch Abtasten vieler zufälliger Pfade) hat eine sehr enge Normalverteilung ( μ ist 100, aber σ ist ungefähr 4). Dies bedeutet meiner Meinung nach, dass das Problem sehr einfach ist, da die meisten zufälligen Pfade unter dem Durchschnitt liegen und der Pfad mit den minimalen Kosten einem zufälligen Pfad sehr nahe kommt.
Also habe ich den folgenden Ansatz versucht: Nachdem Sie die -Matrix erzeugt haben, machen Sie einen langen zufälligen Spaziergang um den Graphen und verdoppeln oder halbieren Sie zufällig (Bernoulli mit p = 0,5 ) den Wert der Kante. Dies neigt dazu, alle Werte zu senken und schließlich Null zu erreichen. Wenn ich jedoch genau die richtige Anzahl von Schritten mache, kann ich eine Verteilung mit μ um 2 und σ um 1 erhalten .
Meine Frage ist zunächst, ob dies überhaupt eine gute Definition für ein interessantes Problem ist. Idealerweise möchte ich eine Instanz, die sehr multimodal ist (für die gängigsten Nachbarschaftsfunktionen) und nur sehr wenige Pfade in der Nähe des Minimalwerts aufweist, sodass die meisten zufälligen Lösungen sehr weit vom Optimum entfernt sind. Die zweite Frage ist angesichts dieser Beschreibung, wie ich Instanzen mit solchen Merkmalen generieren kann.
quelle
Antworten:
Ein allgemeiner Ansatz zum Generieren härterer Instanzen lautet wie folgt:
Dieser Ansatz leitet sich aus allgemeinen Ideen in der Kryptographie ab, bei denen wir Einwegprobleme für Falltüren erstellen möchten: Wenn das Problem ohne Kenntnis der geheimen Falltür schwer zu lösen ist, aber mit Kenntnis der geheimen Falltür, wird das Problem sehr einfach. Es gab viele Versuche, geheime Falltüren in eine Vielzahl von schwierigen Problemen einzubetten (wobei die Härte des Problems auch nach dem Hinzufügen der Falltür erhalten bleibt), mit gemischtem Erfolg. Dieser allgemeine Ansatz scheint jedoch für Ihre Zwecke praktikabel zu sein.
Die daraus resultierenden Problemfälle mögen schwierig sein , aber werden sie aus praktischer Sicht interessant sein ? Ich weiß es nicht. Schlägt mich. Sie sehen für mich ziemlich künstlich aus, aber was weiß ich?
Wenn Ihr primäres Ziel darin besteht, Probleminstanzen auszuwählen, die praktisch relevant und repräsentativ für reale TSP-Anwendungen sind, wäre mein Vorschlag ein völlig anderer Ansatz. Beginnen Sie stattdessen mit der Untersuchung realer TSP-Anwendungen, suchen Sie dann nach repräsentativen Instanzen dieser Probleme und konvertieren Sie sie in die entsprechende TSP-Probleminstanz. Sie arbeiten also mit Probleminstanzen, die aus einem realen Problem abgeleitet wurden.
quelle
Ein Ansatz, der Ihnen häufig eine hohe Kontrolle über die Art der Lösungen gibt, ist die Umstellung von einem vollständigen NP-Problem auf ein anderes. Jetzt definieren Sie "interessant" in Ihrer Frage auf statistische Weise, aber ein anderer guter Ansatz besteht darin, klassische Probleme aus dem Feld zu verwenden. Mein Favorit ist Factoring / SAT. Es ist trivial, entweder "glatte" Zahlen mit vielen Faktoren oder Primzahlen mit nur zwei "Faktoren" (einer und der Primzahl) zu finden. Erstellen Sie die SAT-Instanz, um das Factoring zu lösen, und die Lösungen sind die Faktoren (tatsächlich Permutationen von Faktoren, aber auch, die nicht schwer im Voraus zu zählen sind).
Bei diesem Ansatz gibt es eine natürliche Definition von "interessant" - harte Instanzen, die nicht in P-Zeit gelöst werden können. und dieser Ansatz erzeugt garantiert harte Instanzen für das Faktorisieren nicht glatter Zahlen, andernfalls würde er eine der offensten Fragen in der Komplexitätstheorie lösen, dh die Härte des Faktorisierens .
Konvertieren Sie dann möglicherweise zu Ihrem Problem, in diesem Fall TSP. Um diese Antwort auszufüllen, wäre es schön, eine direkte SAT-zu-TSP-Konvertierung zu haben. Ich denke, sie sind da draußen, aber ich kenne sie nicht. Hier sind jedoch einige Hinweise zum Faktorisieren auf SAT in dieser Frage: Reduzieren des Problems der ganzzahligen Faktorisierung auf ein NP-vollständiges Problem
Wenn Sie Factoring nicht mögen, ist es aus verschiedenen Gründen möglicherweise immer noch vorzuziehen, die Instanzen zuerst in SAT zu erstellen. Sie könnten mit zufälligen SAT-Instanzen beginnen, die so eingestellt sind, dass sie im leicht-schwer-leicht-Übergangspunkt usw. zentriert sind. oder Sie können mit DIMACS- Hard-Instanzen arbeiten, die von der Community generiert wurden. oder erstellen Sie andere logische "Programme" in SAT.
quelle