HALF CLIQUE - Problema completo NP


20

Vorrei iniziare osservando che si tratta di un problema di compiti a casa, si prega di fornire solo consigli e osservazioni correlate, NESSUN RISPOSTA DIRETTA per favore . Detto questo, ecco il problema che sto esaminando:

Let MEZZA CLIQUE = { | è un grafico non orientato con un sottografo completo con almeno nodi, dove n è il numero di nodi in }. Mostra che HALF-CLIQUE è NP-completo.Gn / 2 GGn/2G

Inoltre, conosco quanto segue:

  • In termini di questo problema, una cricca è definita come un sottografo non orientato del grafico di input, in cui ogni due nodi sono collegati da un bordo. Un -clique è una cricca che contiene nodi.kk
  • Secondo il nostro libro di testo, " Introduzione alla teoria della computazione " di Michael Sipser , pag 268, che il problema CLIQUE = { | G è un grafico non orientato con k -clique} è in NPsol,KsolK
  • Inoltre, secondo la stessa fonte (a pag. 283) nota che CLIQUE è in NP-Complpete (quindi ovviamente anche in NP).

Penso di avere il kernel di una risposta qui, tuttavia potrei usare qualche indicazione di ciò che è sbagliato in esso o di eventuali punti correlati che potrebbero essere rilevanti per una risposta . Questa è l'idea generale che ho finora,

Ok, per prima cosa noterei che un certificato sarebbe semplicemente un HALF-QLIQUE di . Ora sembra che ciò che dovrei fare è creare un verificatore che sia una riduzione del tempo polinomiale da CLIQUE (che sappiamo essere NP-Complete) a HALF-CLIQUE. La mia idea sarebbe che questo sarebbe fatto creando una macchina Turing che esegue il verificatore della macchina turing nel libro per CLIQUE con il vincolo aggiuntivo per HALF-CLIQUE.taglian/2

Mi sembra corretto, ma non mi fido ancora di me stesso in questo argomento. Ancora una volta, vorrei ricordare a tutti che si tratta di un PROBLEMA DI LAVORO A CASA, quindi per favore cerca di evitare di rispondere alla domanda. Qualsiasi consiglio che non sia all'altezza di questo sarebbe il benvenuto!

Risposte:


15

A giudicare dalla descrizione e dai commenti, potresti essere aiutato al meglio da una descrizione esatta di come le riduzioni possono essere utilizzate per dimostrare la completezza NP:

Un problema è NP-completo se è in NP ed è NP-difficile. Ciò significa che qualsiasi prova di completezza NP ha due parti: una prova che il problema risiede nella NP e una prova che è NP-difficile.

Per la prima parte, devi dimostrare che le istanze YES possono essere verificate in tempo polinomiale usando un certificato adeguato. In alternativa, è possibile dimostrare che il problema può essere risolto in un tempo polinomiale da una macchina di Turing non deterministica, ma ciò non avviene di solito poiché si possono facilmente commettere errori.

Nel tuo caso, ciò si riduce a dimostrare che per ogni grafico con un clique, puoi trovare qualche prova che esiste davvero una tale cricca, tale che, armato con una tale prova, puoi verificare in tempo polinomiale che c'è davvero una tale cricca.n/2

Per la seconda parte, devi dimostrare che il problema è NP-difficile. Questo è in quasi tutti i casi dimostrato dimostrando che il tuo problema è almeno altrettanto grave di qualche altro problema NP-difficile. Se HALF-CLIQUE è duro almeno quanto CLIQUE, deve anche essere NP-difficile.

Puoi farlo dimostrando una riduzione DA CLIQUE, A HALF-CLIQUE. "Riduci" il problema, rendendolo "più semplice". Dici "Risolvere CLIQUE è difficile, ma ho dimostrato che devi risolvere solo HALF-CLIQUE per risolvere CLIQUE". (molte persone, anche esperti, a volte lo dicono nel modo sbagliato :))

Esistono diversi tipi di riduzioni: la riduzione più comunemente usata è quella in cui si mappano le istanze di in questo caso CLIQUE su istanze di HALF-CLIQUE le cui dimensioni sono al massimo polinomialmente più grandi, in tempo polinomiale. Ciò significa che se possiamo risolvere HALF-CLIQUE, possiamo anche risolvere CLIQUE concatenando l'algoritmo e la riduzione.

In altre parole, dobbiamo dimostrare che possiamo risolvere CLIQUE se possiamo risolvere HALF-CLIQUE. Lo facciamo mostrando che per ogni istanza di CLIQUE, possiamo progettare un'istanza di HALF-CLIQUE in modo tale che l'istanza di CLIQUE sia un'istanza 'yes' se l'istanza di HALF-CLIQUE è un'istanza 'yes'.

La dimostrazione inizia quindi in questo modo: dato un grafico , posso creare un grafico H = ( V , E ) tale che G contenga un k -clique sef H contiene un n / 2 -clique. Lascio questa parte a te (questa è la parte che richiede creatività, la parte che riguarda il problema specifico a portata di mano).sol=(V,E)H=(V',E')solKHn/2


Ottima configurazione, penso che tu abbia fatto un ottimo lavoro nel fornire le informazioni sufficienti per guidare senza fornire una risposta e farlo in modo eloquente. Grazie.
BrotherJack,

1
Qualcosa del genere dovrebbe essere inserito nel tag wiki di np-complete per riferimento futuro. Ti dispiacerebbe?
Raffaello

8

solKHHsolK

Lo spoiler seguente contiene un suggerimento su come eseguire questa riduzione:

Hsol


Non capisco cosa stai dicendo. Quello che ho cercato di fare è stato ridurre HALF-CLIQUE a CLIQUE modificando il Varifier utilizzato nel libro per dimostrare che CLIQUE era NP, farlo funzionare sul grafico di input G e se ha trovato un CLIQUE per verificare se detto CLIQUE conteneva almeno n / 2 nodi, dove n è il numero di nodi in G. Un tale verificatore di HALF-CLIQUE non mostrerebbe che il verificatore di CLIQUE ne è una forma ridotta (come in un sotto-problema di risoluzione di HALF-CLIQUE )?
BrotherJack,

O stai dicendo che ce l'ho all'indietro e devo dimostrare che CLIQUE deve essere ridotto a HALF-CLIQUE? Inoltre, non riceverò completamente il tuo spoiler. C'è un modo per spiegarlo senza dare la risposta?
BrotherJack,

3
Sì, per mostrare che un problema è NP-completo, è necessario (a) mostrare che è in NP e (b) ridurre ad esso un problema NP-difficile noto . Per ricordare la giusta direzione per la riduzione, il punto è usare il nuovo problema come una "scatola nera" per risolvere efficacemente un noto problema NP-C.
Louis,

OK, penso di aver capito adesso. Grazie per l'aiuto!
BrotherJack,

+1 Penso di averlo capito. Il tuo suggerimento è stato molto istruttivo una volta capito cosa stavo facendo di sbagliato. Grazie ancora!
BrotherJack,

0

È possibile ridurre il problema di copertura dei vertici. Se il grafico del complemento del grafico dato ha una copertura del vertice inferiore a n / 2 nodi, questo grafico avrà una cricca di più di n / 2 nodi, ovvero sarà una mezza cricca. Basta affermare che è difficile risolvere il problema Vertex Cover così è.


1
Dal momento che è possibile ridurre da qualsiasi problema NP completo, questo non è estremamente utile. Sono previsti dettagli sulla riduzione.
Raffaello

n/2
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.