Olumlu topolojik sıralama


45

Köşelerinde gerçek sayı ağırlıkları olan yönlendirilmiş bir asiklik grafiğim olduğunu varsayalım. Topolojik sıralamanın her öneki için ağırlıkların toplamının negatif olmadığı DAG'ın topolojik sıralamasını bulmak istiyorum. Veya, sipariş teorik terminolojisini tercih ederseniz, ağırlıklı bir kısmi düzene sahibim ve her öneki negatif olmayan bir ağırlığa sahip olacak şekilde doğrusal bir uzantı istiyorum. Bu sorun hakkında ne bilinir? Polinom zamanında NP-tamam mı yoksa çözülebilir mi?


4
Bu grafikte açgözlü algoritmayı deneyin: 1 -> 2 -> 3, 1 -> 4 -> 5, köşe ağırlıkları 1: +2, 2: -2, 3: +3, 4: -1 , 5: -2. Açgözlü algoritma v1 ile başlar, sonra v4'ü seçer ve sonra takılır. Doğru sıra v1, v2, v3, v4, v5'tir.
Robin Kothari

2
"Frechet uzaklık sorunlarının bazıları JeffE ve diğerleri de bakıyorlardı" - Güzel soyutlama! Diğerlerinin yararına, işte bir versiyon: Diyelim ki size kenar ağırlıklı bir G grafiği ve dış yüzünde iki köşe verilmiş. Bir sınır yolunu bir dizi temel hareketle s'den t'ye diğerine dönüştürmek istiyorsunuz. Her hareket, mevcut yolu, bazı yüz sınırlarıyla simetrik farkıyla değiştirir. Gelişen yolun maksimum uzunluğunu en aza indiren mve dizisini ne kadar çabuk bulabiliriz?
Jeffε

3
Tsuyoshi, bunun için üzgünüm, yorum yaparken yeni bir satır eklemeye çalıştım ve yorumumun kesilmesine neden oldu. Yani fikir şu ki, bileğinizin etrafına sıkıca bağlanmış bir ip var ve bunu sıyrıp atıp çıkaramayacağınızı bilmek istiyorsunuz. Bileğiniz, hücreleri kısmi bir düzenin elemanları olan poligonal bir ağ olarak temsil edilir (daha önce dizeye daha yakın, daha sonra sırayla daha yakın). Bir hücrenin ağırlığı, iç ve dış sınırlar arasındaki uzunluk farkıdır.
David Eppstein

1
@David: Açıklama için teşekkürler. Bu sefer şu anki soru ile nasıl ilişkili olduğunu anlayabiliyorum ve bu ilginç!
Tsuyoshi Ito

3
Çok kullanışlı olmayan ama eğlenceli bir gözlem: Bu problem, her işin işlem zamanının negatif olabileceği son tarihler ve öncelik sınırlamaları ile birlikte tek makineli sıralama problemine eşdeğerdir . Olumsuz işlem süresi ile bu sorun P'dedir (Lawler ve Mooer 1969 jstor.org/stable/2628367 ) ve eğer bir çözüm varsa, o zaman işleme süresinden bağımsız bir çözüm vardır. Bazı işlerin olumsuz işlem süresi varsa, bu açıkça bozulur.
Tsuyoshi Ito

Yanıtlar:


18

Bu sorun MAKSİMUM KÜMÜLAT maliyetini en aza indirmek SIRALAMA çok benzer gibi görünen problem [SS7] içinde Gorey & Johnson . Zekâ:

KURULUM: Görevlerin değerini , T'nin kısmi düzenini , her t T için bir "maliyet" c ( t ) Z (eğer c ( t ) < 0 ise , "kar" olarak görülebilir) ve sabit K Z .TTc(t)ZtTc(t)<0KZ

SORU: Bir tek işlemcili programı var mı için T özelliğine sahiptir itaat öncelik kısıtlamaları ve hangi her görev için, bu t T , bütün görevlerin maliyetlerinin toplamıdır t ' ile σ ( t ' ) σ ( t ) en fazla K mı?σTtTtσ(t)σ(t)K

Ben, bu sorun NP-tam kalır belirsiz değilim 0 G & J söz sabitlenen sorun NP-tam kalmasını ise C ( t ) { - 1 , 0 , 1 } tüm t T .Kc(t){1,0,1}tT


7
Bu iyi görünüyor. O halde, genellik kaybı olmadan alabilir , aksi halde c -value - K (veya c -value - 1'in K işleri) ile sınırlandırılmamış bir iş ekleyebilirsiniz . K=0c-KKc-1
daveagp

@mhum: İlgili sonuçlar hakkında teknik bir rapor üzerinde çalışıyorum ve sizi alıntılamak istiyorum. Bana gerçek ismini verir misin? İstersen bana e-posta gönderebilirsin ya da sadece
anonim

9

Benim cevabım, bu sorunu P'de çözebilecekseniz, başka bir açık problemi de çözebildiğiniz sorusudur: Pozitif topolojik sıralama, 3 al

Düzenleme: Bu sorunun aynı zamanda NP tamamlandı olduğu, DAG'nizin yalnızca iki düzeyi varsa, yani iki kenarlı yönlendirilmiş bir yol yoksa sorununuz zaten NP tamamlandı.


3

Sorunu doğru anlarsam, tamamlanma sürelerinin ağırlıklı toplamını (1 | prec | \ sum wc) ilgilendiren soruna indirgenebilecek öncelikli kısıtlı tek makine çizelgeleme probleminin (b) azaldığını düşünüyorum. 1 | prec | \ sum wc probleminde, her biri negatif olmayan ağırlık ve işlem süresi olan n işlere sahibiz, işler üzerine bir pozlama yapıyoruz ve işlerin doğrusal tamamlanmalarını istiyoruz, öyle ki işlerin ağırlıklı toplam süreleri en aza indirdi. Her işin işlem süresinin 1'e eşit olduğunu varsaysak bile, sorunlar NP-tamamlandı.


Kesinlikle ilginç bir olasılık. Ancak, optimizasyon kriterinin (tamamlanma zamanlarının toplamını en aza indirecek şekilde) kısıtlamalara (negatif olmayan önekler) dönüşecek şekilde azaltmayı nasıl yaparsınız?
David Eppstein

Zamanlama probleminin bu NP-bütünlüğü sonucunu bilmiyorum, ancak iş bitirme zamanlarının ağırlıklı toplamının en fazla K olacağı konusunda doğrusal bir uzatma olup olmadığına karar verme kararı ile ilgili olduğunu düşünüyorum, bu yüzden sanmıyorum. Bir optimizasyon kriteri ile bir kısıtlama arasındaki ayrım burada önemlidir. Bununla birlikte, mevcut sorundaki tamamlanma zamanlarının ağırlıklı toplamı üzerindeki kısıtlamanın nasıl temsil edileceğini anlamadım .
Tsuyoshi Ito

Azalmanın başlangıçta düşündüğüm kadar kolay olmadığını düşünüyorum. Cevabımdan artık emin değilim.
monaldo

Daha önceki yorumumda bir hata yaptım. Gönderdiğimde, ağırlıklandırılmamış toplam üzerindeki bir kısıtlamayı temsil etmenin kolay olduğunu düşündüm (dolayısıyla ağırlıklı ağırlık vurgusu ), ama bu tamamen yanlıştı.
Tsuyoshi Ito

2

Azami ağırlığa sahip her zaman azami elemanı (kısmi sırayla) alırsak ne olur? Elemanları tükettikten sonra, çıkış olarak ters sırayla geri veririz.


Sorun, kısmi sıralamayı tersine çevirme ve tüm ağırlıkları olumsuzlama dönüşümü altında değişmez. Bu yüzden bunun açgözlü açgözlü algoritmadan ne kadar farklı olabileceğini anlamıyorum Robin K yorumlarda bir karşı örnek verdi.
David Eppstein

Ama bu yöntem onun örneği için işe yarıyor: ilk önce köşe 5, sonra köşe 4, sonra 3, 2 ve nihayet 1 seçilecek. Son sıra 1, 2, 3, 4, 5 olacaktı. Bu yöntemin işe yaradığını ispatlamanın zor olduğunu sanmıyorum. Son konumda, asgari ağırlıkta maksimum ağırlığa sahip bir eleman (lavabo) bulunmayan bir çözümünüz olduğunu varsayalım. Ardından, bu özelliğe sahip başka bir çözümü, böyle bir elemanın konumunu kalıcı olarak değiştirerek ve gerisini olduğu gibi koruyarak bulabilirsiniz. Geri kalanlara indüksiyon yaparak devam edin ve resmi bir kanıt elde edin.
Daniel Martin

Evet, işe yaramadı ... 1 -> 2 -> 3, 1 -> 4 sırasıyla 4, -7, 6, 3 ağırlıklarında.
Daniel Martin

1

Bu problem bana bir çok karar ağacını hatırlatıyor. Her zaman en ümit vaat eden yolu seçmeye çalışan, ancak tüm alt maddeye bakarak bu tür bir çözüm düşünürdüm:

Lavabo düğümlerinden başlayarak, her seferinde bir seviye olan kaynaklara doğru ilerleyin. Bunu yaparken her kenara bir ağırlık verin. Bu ağırlık, "ödemek" zorunda kalacak minimum miktarı temsil etmeli ya da kenardan işaret eden düğümden başlayarak alt çizelgeyi geçerek "kazanacaksınız". Diyelim ki i + 1 seviyesindeyiz ve i seviyesine yükseliyoruz. İ seviyesindeki bir düğüme işaret eden bir kenar için ağırlık atamak istediğim şey:

  1. edge_weight = işaret_düğümü_ ağırlığı.
  2. "İşaret düğümü" nden başlayarak maksimum ağırlığı olan kenarı bulun. Bu ağırlık next_edge_weight olsun.
  3. edge_weight + = next_edge_weight

Ardından, siparişi aşağıdaki gibi oluşturun:

  1. S, arama sınırı olsun, yani bundan sonra seçilecek düğümler kümesi olsun.
  2. Düğümü seçerek (node_weight + maximum_edge_weight) büyütülmesini sağlayın.
  3. Düğümü grafikten ve S'den kaldırın. Düğümün "alt öğelerini" S'ye ekleyin.
  4. Grafik boş değilse, 1. adıma gidin.
  5. Dur.

Fikir, negatif ağırlık alt yazılarının maliyetini daha sonra kaldırabilmek için, ilk önce mümkün olduğunca fazla kazanç sağlayacak olan alt yazıların arasında dolaşmaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.