Bu sorun, Vertex Cover'dan indirgeyerek NP-zordur.
Vertex Cover probleminde, bir grafiği ve bir sayısı verilir ve görevimiz, her kenarın olay olacak şekilde en fazla köşesinde bir alt kümesi olup olmadığını belirlemektir. en az bir tepe noktasında . (Eşdeğer olarak: her kenarı en fazla köşeyi silerek öldürmek mümkün müdür ?)G = ( V , E ) r U r V E U G rG=(V,E)rUrVEUGr
İlk olarak, bölümleme içine ayrık alt kümelerini her öğesi atama eşdeğerdir tam olarak bir mümkün etiketler. İndirgeme temel fikri bir etiket oluşturmak için her köşe için olarak ve her bir kenar aşağıdaki anlamda, sadece uç noktalarına karşılık gelen iki etiketlerden birine tahsis edilecek "izin" için: karşılık gelen bir bir kenar atama etiketi, başka hangi kenarlara aynı etikete atanabileceğine dair (gerçek) bir kısıtlama getirmezken, karşılık gelen olmayan bir etikete kenar atamak, başka bir kenarın aynı etikete atanmasını önler - ki elbette sayıyı yukarı itme etkisi vardır etiketlerin ayrı ayrı olması gerekir.A s A s S j v j VAsAsSjvjV
Sorununuzun bir örneğini Vertex Cover örneğinden oluşturmak için:( A , a , s ) ( G , r )(A,a,s)(G,r)
- Set etmekVe bir elemanı oluşturmak içinde her bir kenar için içinde . (Bu çiftler tamsayıları olarak düşünülebilir ; aralarındaki herhangi bir bijection bunu yapar.)k | E | ( i , j ) A v i v j E 1 , … , kk|E|(i,j)AvivjE1,…,k
- Set içinEğer ya da ; aksi takdirde, değerini 1 olarak ayarlayın.a ( b , c ) , d | E | d = b d = c a ( b , c ) , da(b,c),d|E|d=bd=cbir(b,c),d
- ayarlayın .s = rs=r
Eğer sadece etiket çekme: Vertex Kapak bir VAR-örneğidir, o zaman sadece sorunun inşa örneği de bir VAR örnekli olduğunu görmek kolaydır köşe tekabül bir çözelti içinde ve her kenar veya etiketlerinden hangisi (her iki etiket de seçilmişse isteğe bağlı olarak seçin karşılık gelen öğeyi atayın . Bu çözüm altkümelerini kullanır ve geçerlidir; çünkü yürürlükteki tek karşılık gelenlerdir.( G , r ) S j v j U v b v c ∈ E ( b , c ) ∈ A S b S c s a i j(G,r)SjvjUvbvc∈E(b,c)∈ASbScsaij den daha fazlasını önlemenin (non) etkisi olan etiketler kenarlara aynı etiket atanır. | E ||E|
Sorununuzun bir YES örneği orijinalinin Vertex Cover'ın YES örneği olduğunu ima ettiğini göstermeye devam etmektedir . Bu biraz daha geçerli bir çözelti, çünkü karmaşık için olabilir genel ata bir kenar bir sigara -corresponding etiket yani, anlamı, sevemeyeceğimizdir mutlaka geçerli bir çözüm geçerli bir tepe noktası "okunması" .X = ( A , a , s ) ( G , r ) Y X ( i , j ) S m m ∉ { i , j } U YX=(A,a,s)(G,r)YX(i,j)Smm∉{i,j}UY
Bununla birlikte, sigara karşılık gelen etiketin tahsisi ciddi çözeltisi yapısını sınırlayan yüksek bir maliyet: bir kenar zaman bir etiket tahsis edilir ile, , aslında bu sağlar olması gerekir ancak bu etiket verilir kenarı. Dolayısıyla, karşılık gelen böyle bir etiketlenmemiş kenar içeren herhangi bir çözeltisinde , aşağıdaki gibi alternatif bir çözeltisi oluşturabiliriz :( i , j ) S m m ∉ { i , j } a ( i , j ) , m = 1(i,j)Smm∉{i,j}a(i,j),m=1Y ( i , j ) ↦ S m Y ′Y(i,j)↦Sm
- Keyfi Yeni etiket seçmek için ya olmaya veya .S z ( i , j ) S i S j
- Bu yeni etiketi atayın . Bu geçersiz bir çözümle sonuçlanıyorsa, bunun nedeni tam olarak bir diğer kenara , zaten etiketi atanmış . Bu durumda, ve 1. adıma gidin.( i , j ) ( i ′ , j ′ ) z ∉ { i ′ , j ′ } S z ( i , j ) = ( i ′ , j ′ )
Yukarıdaki algoritma iki yoldan biriyle sona ermelidir: ya çelişki yeni bir etiketi ya da tam bir köşe noktası döngüsü bulunur. İlk durumda, setleri ile geçerli yeni bir çözüm bulunurken, ikinci durumda setleri ile geçerli yeni bir çözüm bulunur; her iki durumda da, karşılık gelen bir etikete atanmış en az bir kenar daha olacak şekilde geçerli yeni bir çözüm oluşturduk . Tüm bu işlemi en fazlaZaman, geçerli bir çözüm ürettiler olacak orijinal Vertex Kapak soruna bir çözüm hangi olabilir okunabilir.S z s - 1 s | E | Y ″
Bu yapı açıkça polinom zamanıdır, bu nedenle probleminiz NP-serttir.