Sütun Siparişi için CO diyeceğim bu sorun NP-zor . NP-zor problemi Vertex Cover'dan (VC) buna bir azalma :
VC ve CO'nun karar problem formları
Girdi VC örneği olsun (V,E,k). Şu soruyu temsil eder: "Grafik göz önüne alındığında(V,E), en fazla bir dizi seçmek mümkün mü k köşeleri V öyle ki her kenar E en az bir tepe noktasında olay var mı? " (A,k′) sorusunu temsil eden CO ifadesi: "Matris verildi A elemanları ile {−1,0,1}, sütunlarına izin vermek mümkün mü A öyle ki a 1 en azından -1'den önce görünür k′"Bu iki problem, her birinin cevabının EVET ya da HAYIR olduğu biçim problemi şeklinde belirtilir : resmi olarak konuşursak, NP-tamamlanmış (ya da değil) bir problemdir. OP'nin sorusunda belirtilen daha doğal optimizasyon problem formunun karmaşıklık açısından kabaca eşdeğer olduğunu görün: eşik parametresinde ikili arama, bir problem problem çözücüsünü kullanarak optimizasyon problemini çözmek için kullanılabilirken, optimizasyon problemi çözücüsünün tek bir çağrılması , ardından tek bir karşılaştırma, karar sorunu çözmek için yeterlidir.
VC örneğinden CO örneği oluşturma
İzin Vermek n=|V| ve m=|E|. Bir matris oluşturacağızA ile (n+1)m+n satırlar ve n+1sütunlar. Üst(n+1)m satırlar m blokları n+1her satır, her blok kaplanması gereken bir kenarı temsil eder . Altn satırlar, CO çözümünün sol tarafına dahil edilirse (bir tepe noktasına karşılık gelen) bir sütunun (bir tepe noktasına karşılık gelen) sabit bir maliyete yol açmasına neden olacak şekilde "bayraklar" içerir (tepe noktasının tepe kapağına dahil edilen bir tepe noktasına karşılık gelir) VC çözeltisi).
Her köşe için vi, içinde bir sütun oluşturun:
- en iyiler arasında (n+1)m satırlar j- bloğu n+1 kenarlarda satırların tümü +1 içerir ej olay vi, ve 0 ise, ve
- altta n satır hariç tüm satırlar 0'dır. i-th, -1.
Şunlardan oluşan bir "çit" sütunu daha oluşturun (n+1)m -1 kopyası, ardından n +1 kopyaları.
Son olarak, eşiği ayarlayın k′ oluşturulan CO örneği için: (n+1)m+n−k. Başka bir deyişle, en fazlak+1'den önce -1'in göründüğü satırlar. Bu sayıda ihlal eden satıra CO çözümünün "maliyeti" diyelim.
Kanıt
CO örneğine yönelik bir çözüm ile orijinal VC örneğindeki bir köşe kümesi arasındaki yazışma şudur: Çitin solundaki her sütun, kümedeki bir tepe noktasına karşılık gelir ve çitin sağındaki her sütun aşağıdakilere karşılık gelir olmayan bir tepe noktası.
Sezgisel olarak, "çit" sütununun üstündeki -1'ler, sola yerleştirilecek sütunların bir alt kümesinin seçimini, birlikte tüm bu konumlarda + 1'ler içeren - her birinde meydana gelen bir köşe alt kümesine karşılık gelen şekilde zorlar kenar. "Çit" in solunda görünen bu sütunların her birinin alt kısmında bir yerde ayrı bir satırda -1 vardırn1 maliyeti olan satırlar; "çit" in altındaki + 1'ler sağa yerleştirilen tüm sütunların böyle bir maliyet ödememesini sağlar.
Açıkça en fazla kullanan bir VC çözümü k vertices en çok maliyetle inşa edilmiş CO örneğine bir çözüm getirir k: Tepe noktası kapağındaki köşelere karşılık gelen sütunları rastgele, ardından çit sütunu ve ardından kalan tüm sütunları istediğiniz sırayla sipariş edin.
CO örneğine en fazla maliyetle bir çözüm olduğunu göstermeye devam ediyor k bir tepe kapağına karşılık gelir k köşe noktası.
Aksine, CO örneğine en fazla maliyetle bir çözüm olduğunu varsayalım k üstte bir sıra bırakıyor (n+1)m+1'den önce -1 olan satırlar. Bu satır bir bloğa ait(n+1) belirli bir kenara karşılık gelen satırlar uv. Orijinal örnekte bu bloktaki her satırAyapı ile özdeştir; sütunlara izin vermek bu satırları değiştirebilir, ancak aynı olmalarını etkilemez. Böylece bunların her birin+1 özdeş satırlar, çözümde +1'den önce -1'e sahiptir, bu da en az maliyeti ifade eder n+1. Fakatk≤n<n+1: çelişki.
Her biri m üstteki satır blokları (n+1)msatırlar -1'den önce +1 değerine sahiptir, karşılık gelen kenarların her biri çitin solundaki bir sütuna karşılık gelen bir tepe noktasıyla kaplıdır: yani, köşelerin bu alt kümesi bir tepe örtüsü oluşturur. Üstlerin hiçbiri olmadığından(n+1)m Satırların + 1'den önce -1 değeri vardır, çözümde maliyetin tahakkuk edebileceği tek yer en alttadır nsatır, çitin soluna yerleştirilmiş sütunlardan. Her bir sütunun maliyeti tam olarak 1'dir, bu nedenle maliyetin en fazla olduğu göz önüne alındığındaken fazla olmalı k bu tür sütunlar ve dolayısıyla en fazla k kapak köşeleri.
Son olarak, CO örneğinin VC örneğinden polinom zamanda oluşturulabileceği açıktır, yani CO'nun çözümü için bir polinom-zaman algoritması mevcutsa, herhangi bir VC örneğinin de ilk önce açıklandığı gibi bir CO örneği yapılarak polinom zamanda çözülebileceği açıktır. yukarıda ve sonra çözme. VC NP-sert olduğundan CO da vardır.