Aggiungi una corrispondenza a un percorso hamiltoniano per ridurre la distanza massima tra determinate coppie di vertici


14

Qual è la complessità del seguente problema?

Input :

Query : c'è una corrispondente Mtale che per ogni(v,u)R ,dG(v,u)k ?
(doveG=([n],MH) )

Ho avuto una discussione con un amico su questo problema. Il mio amico pensa che il problema sia in tempo polinomiale. Penso che sia NP-completo.


11
Puoi semplificarlo ulteriormente, almeno in termini di presentazione. Ti viene dato , un percorso con n vertici e una raccolta R di coppie di questi vertici. Si desidera aumentare il percorso con una corrispondenza in modo che la distanza tra qualsiasi coppia in R sia al massimo k . KnRRK
Sasho Nikolov,

Penso che questa formulazione possa essere fonte di confusione dopo la mia ultima modifica per rimuovere alcune ambiguità.
pfim

1
La mia interpretazione è corretta, vero?
Sasho Nikolov,

Ho fatto una modifica per rendere più rigorosa la dichiarazione del problema. Penso che questo possa essere ulteriormente semplificato perché come si può semplicemente supporre che H sia il percorso Hamiltoniano 1-2-3-4-5 ...- n senza perdita di generalità. Quindi hai solo bisogno di . n
Kaveh,

Risposte:


1

Questa risposta non è corretta .

Il tuo amico ha ragione. Il vostro problema (come interpretato dalla Sasho) non pone alcuna restrizione alla cardinalità del corrispondente . Quindi, scegliere C essere una corrispondenza tra le coppie di R . Quindi per qualsiasi numero intero positivo k , la distanza tra ogni coppia in R è inferiore a k .CCRkRk

Il tuo problema diventa interessante se si forza percorsi di contenere i bordi sia dal corrispondente e il percorso P .CP


Cosa intendi con "corrispondenza tra le coppie in "? R
Emil Jeřábek sostiene Monica il

@ EmilJeřábek Significa collegare i nodi di ogni coppia in con un bordo. Quindi C è solo R con un bordo che collega ogni coppia. Ciò equivale a aumentando il percorso P con una marcia perfetta sulle coppie di R . RCRPR
Mohammad Al-Turkistany,

1
Non sembra avere molto senso per me. E se non corrispondesse? Dì, se R contiene le coppie ( 1 , 2 ) e ( 1 , 3 ) , come scegli C ? RR(1,2)(1,3)C
Emil Jeřábek sostiene Monica

@ EmilJeřábek Sì. Il tuo punto è valido Modificherò la mia risposta.
Mohammad Al-Turkistany,

@pfim È possibile formare il percorso più breve usando solo i bordi di ? C
Mohammad Al-Turkistany,

0

AGGIORNAMENTO: la risposta qui sotto non è corretta, perché ho erroneamente supposto che il percorso Hamiltoniano sia in un grafico arbitrario, non in . Lo lascio libero, forse sarò in grado di risolverlo o darà alcuni suggerimenti per un'altra risposta.Kn

Penso che sia NP-completo. Questa è un'idea di riduzione molto informale / rapida di 3SAT

Per ogni variabile aggiungo un "gadget variabile" con:Xio

  • tre nodi Xio,+Xio,-Xio
  • due bordi variabili e ( X i , - X i )(Xio,+Xio)(Xio,-Xio)

Aggiungi un nodo sorgente e collegalo a tutte le variabili X i .SXio

Per ogni clausola aggiungere un nodo C j e collegarlo alle variabili corrispondenti + X i o - X i che costituisce la clausola.CjCj+Xio-Xio

L'immagine seguente rappresenta: (+X1-X2-X3)(-X2X3X4)

inserisci qui la descrizione dell'immagine

L'insieme (nodi che devono essere collegati) contiene ( S , C 1 ) , ( S , C 2 ) , . . .R(S,C1),(S,C2),...

Il percorso semplice dovrebbe includere tutti i bordi "BLU" tranne i bordi variabili ( X i , + X i ) e ( X i , - X i ) (nell'immagine sopra i bordi blu rappresentano i bordi che includiamo in P ).P(Xio,+Xio)(Xio,-Xio)P

A questo punto, la formula iniziale è soddisfacente se e solo se il percorso più breve da a ciascun nodo della clausola C j non è maggiore di tre. Infatti per raggiungere una clausola da S in tre passaggi dobbiamo attraversare almeno una variabile X i : S X i± X iC j . Quindi dobbiamo attraversare uno dei due bordi: X i+ X i o X iSCjSXioSXio±XioCjXio+Xio e includerlo in CXio-Xio)C(perché per costruzione non fa parte di ). Ma entrambi non possono essere inclusi, perché condividono un vertice.P

Ma non siamo sicuri di poter costruire un semplice percorso che includa tutti i bordi blu perché alcuni nodi hanno più di un bordo blu incidente.P

Per risolvere questo problema, sostituiamo ogni nodo con più bordi blu incidente, con un albero che contiene solo coppie di bordi blu incidente che saranno inclusi in e bordi che li separano e che dovrebbero essere inclusi in C per raggiungere i nodi della clausola:PC

inserisci qui la descrizione dell'immagine

Il grafico originale diventa:

inserisci qui la descrizione dell'immagine

KCjS

C

P che attraversa ciascun vertice e ciascun bordo blu, basta aggiungere nodi extra per evitare scorciatoie tra le clausole o le variabili:

inserisci qui la descrizione dell'immagine


Cercare di costruire un percorso che contenga tutti i bordi blu mi preoccupa: alcuni vertici hanno più di 2 bordi blu incidenti su di essi, quindi non può esserci un singolo percorso semplice inclusi tutti i bordi blu.
Mikhail Rudoy,

Ok, grazie ... Ho completamente dimenticato quello che è un percorso semplice :-( ... ora dovrebbe essere risolto.
Marzio De Biasi

Questo post su math.SE suggerisce che il problema potrebbe non essere NP-completo. Potrebbe essere intrattabile ma risolvibile in tempi quasipolinomiali math.stackexchange.com/questions/2218929/…
Mohammad Al-Turkistany

@ MohammadAl-Turkistany: vedi un difetto nell'attuale versione della risposta?
Marzio De Biasi,

No, non vedo alcun difetto evidente.
Mohammad Al-Turkistany,
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.