Der Nachweis, dass die gerichtete Graphendiagnose NP-schwer ist


11

Ich habe eine Hausaufgabe, gegen die ich mich schon seit einiger Zeit mit dem Kopf geschlagen habe, und ich würde mich über Hinweise freuen. Es geht darum, ein bekanntes Problem auszuwählen, dessen NP-Vollständigkeit nachgewiesen ist, und eine Reduktion von diesem Problem auf das folgende Problem zu konstruieren, das ich DGD (Directed Graph Diagnostic) nennen werde.

Problem

Eine Instanz von DGD besteht aus Eckpunkten , gerichteten Kanten und einer positiven ganzen Zahl . Es gibt drei Arten von Eckpunkten: Ecken mit nur eingehenden Kanten , Ecken mit nur ausgehenden Kanten und Ecken mit beide ein- und ausgehenden Kanten . Lassen Sie außerdem .(V,E,k)V=I.O.BEkichÖB.D.=Ö×ich

Das Problem ist nun, ob wir alle Knoten mit höchstens Elementen von abdecken können , d. H.kD.

SD,|S|k. vV. (v1,v2)S. v1vv2

wobei bedeutet, dass es einen gerichteten Weg von nach .abab


Ich denke, dass das Problem der dominierenden Menge das ist, von dem ich reduzieren sollte, da auch dies Bedenken hat, eine Teilmenge von Knoten mit einer anderen Teilmenge abzudecken. Ich habe versucht, eine DGD-Instanz zu erstellen, indem ich zuerst zwei Knoten für jedes Element der dominierenden Menge erstellt, alle Kanten kopiert und dann das der DGD-Instanz gleich dem der DS-Instanz gesetzt habe.k

Angenommen, eine einfache DS-Instanz mit den Knoten , 2 und 3 und den Kanten ( 1 , 2 ) und ( 1 , 3 ) . Dies ist eine Ja-Instanz mit k = 1 ; Die dominierende Menge besteht in diesem Fall nur aus Knoten 1 . Eine Reduzierung mit der gerade beschriebenen Methode würde zu einer DGD-Instanz mit zwei Pfaden ( 1 2 1 ) und ( 1 3 1 ) führen.123(1,2)(1,3)k=11(121)(131);; Um alle Knoten abzudecken, würde nur ein Paar ausreichen. Dies hätte perfekt funktioniert, wenn nicht die dominierende Menge der DS-Instanz natürlich nicht in Polynomzeit bestimmt werden kann, was hier erforderlich ist.(1,1)

Ich habe festgestellt, dass es viele gut aussehende Möglichkeiten gibt, die Kanten und Eckpunkte beim Reduzieren zu transformieren, aber mein Problem besteht darin, DGDs in Form von DSs k auszudrücken . Dominating Set schien ein passendes Problem zu sein, aber aus diesem Grund denke ich, dass ich vielleicht versuchen sollte, ein Problem zu reduzieren, das kein solches k hat ?kkk


Herzlich willkommen! Ich habe versucht, die Problemstellung zu klären. hast du es so gemeint Übrigens möchten Sie vielleicht einen erkennbareren Benutzernamen als "user8879" wählen. :)
Raphael

Ja, danke, dies ist in der Tat eine kompaktere Version.
user8879

Antworten:


9

Reduzieren Sie stattdessen von NP-komplett SET-COVER .

Sei mit k N eine Instanz der Mengenabdeckung. Definieren Sie eine Instanz ( V , E , k ) von DGD wie folgt:S.1,,S.m{1,,n}}kN.(V.,E.,k')

  • V.={s1,,sm,Ö1,,Öm,e1,,en,Ö}}
  • E={(si,oi)i=1,,n}{(si,ej)jSi}{(ej,o)j=1,,n}
  • k=m+k

Es ist leicht zu erkennen, dass die konstruierte DGD-Instanz genau dann eine positive Antwort hat, wenn die gegebene Set-Cover-Instanz eine positive Antwort hat. Insbesondere müssen alle Paare ( s i , o i ) ausgewählt werden, egal was passiert, um alle o i abzudecken ; dann müssen k der m Paare ( s i , o ) alle e j abdecken , und die ersten Komponenten der ausgewählten sind die Lösung der SET-COVER-Instanz. Wenn eine solche Auswahl nicht möglich ist, hat die SET-COVER-Instanz ebenfalls keine Lösung.m(si,oi)oikm(si,o)ej

Da die Konstruktion in Polynomzeit möglich ist, beweist dies SET-COVER DGD.p


Betrachten Sie als Beispiel die auf Wikipedia angegebene Beispielsatz-Deckungsinstanz , nämlich und setzen Sie S = { { 1 , 2 , 3 } , { 2 , 4 } , { 3 , 4 } , { 4 , 5 } } . Dies führt zu der folgenden Grafik:{1,2,3,4,5}S={{1,2,3},{2,4},{3,4},{4,5}}

Beispiel
[ Quelle ]


1
Dies ist fast richtig, da I und B zwar vollständig abgedeckt sind, O jedoch nicht. Die Set-Cover-Instanz ist eine Ja-Instanz für k = 2, aber in der DGD-Instanz lässt k = 2 s2 und s3 unbedeckt. Ich denke, dass dies wahrscheinlich gelöst werden kann, indem automatisch eine Kante von jedem Knoten in O zu o hinzugefügt wird .
user8879

(si,o)siS

Jetzt verstanden: Erstellen Sie einen zusätzlichen Knoten in B für jeden Knoten in O und verknüpfen Sie ihn dann mit dem entsprechenden Knoten in O und mit o . In diesem Beispiel erhalten Sie vier zusätzliche Pfade (s1 -> s1 '-> o usw.). Schließlich sollte es nach dem Erhöhen von k mit vier vollständig sein.
user8879

si
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.