Complessità di tipo topologico con posizioni vincolate


15

Mi viene dato come input un DAG di n vertici in cui ogni vertice x è inoltre etichettato con qualche S ( x ) { 1 , ... , n } .GnxS(x){1,,n}

Una specie topologica di è una biiezione f dai vertici di G a { 1 , ... , n } tale che per tutti x , y , se esiste un percorso da x a y in G, allora f ( x ) f ( y ) . Vorrei decidere se esiste una specie topologica di G tale che per tutte le x , f ( x ) S ( xGfG{1,,n}xyxyGf(x)f(y)Gx .f(x)S(x)

Qual è la complessità di questo problema decisionale?

[Note: Chiaramente questo è in NP. Se guardi il grafico delle coppie di vertici / posizione consentite, con bordi non indirizzati tra gli accoppiamenti che sono in conflitto perché violano l'ordine, otterrai un grafico di cricche disgiunte in cui vuoi scegliere al massimo una coppia per cricca, al massimo una coppia per posizione e al massimo una coppia per vertice: sembra correlata alla corrispondenza tridimensionale, ma non riesco a vedere se è ancora difficile con la struttura aggiuntiva di questo specifico problema.]

Risposte:


9

Penso che questo problema sia NP-difficile. Provo a disegnare una riduzione da MinSAT. Nel problema MinSAT ci viene dato un CNF e il nostro obiettivo è ridurre al minimo il numero di clausole soddisfatte. Questo problema è NP-difficile, vedi ad esempio http://epubs.siam.org/doi/abs/10.1137/S0895480191220836?journalCode=sjdmec

Dividi i vertici in due gruppi: alcuni rappresenteranno valori letterali, altri clausole, quindi dove v è il numero di variabili del CNF (solitamente indicato con n ) e c è il numero di clausole. Dirigere un bordo da ciascun vertice letterale al vertice della clausola in cui si verifica. Definisci S per un vertice letterale che rappresenta x i come { i , i + v + k } (dove k è un parametro arbitrario), quindi f ( x i )n=2v+cvncSxi{i,i+v+k}k e f ( ˉ x i ) , 2 v + k + 1 , ...f(xi)=i o f ( ˉ x i ) = i e f ( x i ) = i + v + k . Per ogni clausola-vertice, lascia S = { v + 1 , , v + k ,f(x¯i)=i+v+kf(x¯i)=if(xi)=i+v+k , quindi k dei vertici-clausola sono `` piccoli ''.S={v+1,,v+k,2v+k+1,,n}k

Ora il CNF ha un incarico in cui almeno k clausole sono false se e solo se il problema può essere risolto per l'istanza sopra. Il problema MinSAT è esattamente quello di verificare se una formula CNF ha un'assegnazione che rende false almeno k clausole, quindi questo dimostra che il tuo problema è NP-difficile.φk

Per aiutarti a comprendere questa riduzione, ecco l'intuizione: le etichette piccole ( ) corrispondono al valore di verità Falso e le etichette grandi ( v + k + 1 , ... , 2 v + k ) corrispondono a Vero. I vincoli per i vertici letterali assicurano che ogni x i sia True o False e che ¯ x i1,2,,v+kv+k+1,,2v+kxixi¯ha il valore di verità opposto. I bordi assicurano che se qualsiasi valore letterale è True, anche tutti i vertici-clausola che lo contengono sono assegnati True. (Al contrario, se a tutti i letterali di una clausola è assegnato Falso, questa struttura grafica consente di assegnare al vertice-clausola Falso o Vero.) Infine, la scelta di assicura che k dei vertici-clausola siano assegnati Falso e c - k false (tutti i vertici della clausola a cui è stato assegnato False, più probabilmente alcuni di quelli a cui è stato assegnato True). Viceversa, se esiste un'assegnazione alle variabili che rende almeno k delle clausole di φkkck di loro sono assegnati a True. Quindi, se esiste un ordinamento topologico valido di questo grafico, allora c'è un'assegnazione alle variabili che rende almeno delle clausole di φkφkφ falso , allora esiste un tipo topologico valido di questo grafico (compiliamo le etichette per i vertici letterali in modo ovvio; e per ogni clausola di che è vera, diamo al suo corrispondente vertice-clausola un'etichetta che corrisponde a True; le altre clausole-vertici possono ricevere etichette corrispondenti ad un valore di verità arbitrario).φ


Grazie per la tua risposta! Sto cercando di capire il tuo schizzo. Ti dispiacerebbe spiegare cos'è ? k
a3nm,

1
@ a3nm: k è un parametro fornito per l'ingresso MinSAT.
domotorp,

1
@Marzio: SAT non è equivalente a MinSAT con , come in quest'ultimo problema richiederemmo che tutte le clausole fossero false. Il tuo ϕ non ha una falsa assegnazione di tutte le clausole. Naturalmente questo non dimostra che la mia riduzione sia corretta ...k=|c|ϕ
domotorp,

Questa è una riduzione meravigliosa! @ a3nm, ho suggerito una modifica alla risposta per spiegare l'elegante riduzione di domotorp in modo più dettagliato; se è approvato, si spera che ti aiuterà a capire le idee più chiaramente.
DW

@domotorp: hai ragione, mi sono completamente perso cos'è MinSAT. Bella riduzione !!!
Marzio De Biasi,

2

Nota che se rilassi il problema permettendo a di essere arbitrario (non necessariamente biiettivo), allora diventa polinomiale. L'algoritmo procede in modo simile all'ordinamento topologico: numerate i vertici uno per uno, mantenendo l'insieme U di vertici non numerati i cui vicini sono stati numerati. Quando possibile, scegli un vertice x U e numeralo con l' elemento più piccolo di S ( x ) maggiore dei numeri dei suoi vicini. Non è difficile vedere che un'istanza ( G , S ) ha una soluzione se viene eseguito l'algoritmo precedente ( G ,fUxUS(x)(G,S)(G,S) termina con tutti i vertici numerati.


Il punto giusto, questo rilassamento significa che un'avida euristica funziona, e questo è anche nel caso in cui non è il numero di vertici ma un valore arbitrario. Siamo d'accordo sul fatto che, in quest'ultimo caso, dove iniettività e suriettività non sono più equivalenti, dovresti rilassare entrambi (e non solo uno) affinché l'euristica avida funzioni? n
a3nm,

2

Un'osservazione banale è che se per tutti x , quindi questo problema è risolvibile in tempo polinomiale, riducendo a 2SAT.|S(x)|2x

Ecco come. Introdurre una variabile per ciascun vertice x e ciascuno i tale che i S ( x ) . Per ogni coppia x , y di vertici, se esiste un percorso da x a y , otteniamo alcuni vincoli: se i S ( x ) , j S ( y ) e i > j , allora otteniamo il vincolo ¬ v x , ivx,ixiiS(x)x,yxyiS(x)jS(y)i>j . La biettività ci fornisce un altro insieme di vincoli: per ogni coppia x , y di vertici con x y , se i S ( x ) e i S ( y ) , aggiungiamo ¬ v x , i¬ v y , i . Infine, il requisito secondo cui a ciascun vertice deve essere assegnata un'etichetta ci fornisce un altro insieme di vincoli: per ogni x , se S (¬vx,i¬vy,jx,yxyiS(x)iS(y)¬vx,i¬vy,ix , otteniamo il vincolo v x , iv x , j . (Nota che solo l'ultima serie di vincoli sfrutta la promessa che | S ( x ) |2 per ogni x .)S(x)={i,j}vx,ivx,j|S(x)|2x

Mi rendo conto che questa osservazione non ti aiuterà nella tua situazione particolare. Mi dispiace per quello.

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.