5

düğümleri çeşitli iş yükünün ve kenarları yükleri arasında bağımlılık olduğu bir grafik olduğunu varsayalım. (Bu döngüsel bağımlılık mevcut olmamalıdır çünkü bir DAG budur.) Ayrıca işi yapabilecek birden fazla ajanların bir dizi varBir iş akışı DAG'sını paralel kaynak tahsisine dönüştürmek için algoritma?

.

bazı iş yükü çeşitleri

, diğerleri belirli bir maddenin verilmesi gereken her hangi bir madde verilebilir ve diğerleri maddelerin, belirli bir grup içinden bir maddenin verilmesi gerekir.

nasıl iş yüklerini atarım öyle ki:

  • tüm engelleme iş yükleri tamamlanana kadar hiçbir iş yükü bir ajan verilir

    en kısa zaman toplam iş yükü grafiği tamamlamak için gereklidir
  • . (Temsilcinin boşta kalma süresini en aza indirmenin genellikle iyi bir şey olduğunu, ancak temel bir gereklilik olmadığını unutmayın - belirli bir aracının daha uzun bir süre için boş kaldığı ancak tüm işlerin tamamında tüm işlerin tamamlanması için toplam sürenin en az olduğu senaryolar olabilir.)

İş yükleri süresi tahminleri var ama her iş yükü hesaplamak için eşit zaman alır yalınlık sağlamak için varsayalım. (Her iş yükü, sabit zamanlı bir işlem olduğundan, her iş yükünü birden çok, seri olarak bağımlı iş yüklerine ayırın.)

Topolojik DAG sınıflandırmasının farkındayım, ancak bu, düğümlerin tek, seri bir sıralamasını üretir. Paralel olarak çalışan birden çok aracım var ve ilişkiler potansiyel olarak büyük zamanlama optimizasyonlarının, görevlerin bariz bir şekilde yeniden sıralanmasıyla yapılabildiği şekildedir.

Bunun sonucu

asgari genel süresinin bir Gantt grafiği olarak iyi hale getirir. Aslında, bir takımda mühendislere bir kilometre taşı içinde böcek biletlerinin tahsisi olarak problemi düşünürseniz, ASAP'ı bir kilometre taşı alma amacı ile, o zaman fikri anlayabilirsiniz. (Hayır ... :) MS Project içine Grafiğimi almak ve sonra ihraç etmek söyleme lütfen - Bunun arkasında algoritması ilgileniyorum!)

İşaretçiler için iyi bilinen algoritmalar, yazılım kütüphaneleri veya Genel konular ve ilkeler çok takdir edilmektedir!

cevap

4

, bu NP-zor bir problemdir.

:

< utanmaz fişi>

bir çok benzer bir sorun kitabımda "Algorithms For Interviews"

</utanmaz fişi de var> Burada

sorun ve kitaptan bir çözümdür

Biz M sınıflarda N dersleri planlamak gerekir. Bu derslerden bazıları başkaları için önkoşultur. Tüm dersleri mümkün olan en kısa sürede bitirebilmek için derslerin ne zaman ve nerede tutulacağını nasıl seçersiniz?

Solüsyon: Bir dizi N birim süreli ders ve M sınıfı verilir. Aynı anda aynı sınıfta iki dersin olması gerekmediği sürece dersler eşzamanlı olarak gerçekleştirilebilir ve tüm öncelikler sınırlandırılır. Bu derslerin, tamamlanma zamanını en aza indirecek şekilde zamanlama problemi NP-complete olarak bilinir. Bu sorun, grafikler kullanılarak doğal olarak modellenmiştir. Dersleri köşe başı olarak köşegen olarak modelliyoruz, eğer v bir önkoşul ise, v. V. Için bir önkoşuldur. Açıkça, grafik, öncelikli sınırlamaların karşılanması için asiklik olmalıdır. Sadece bir ders odası varsa, dersleri topolojik düzende tutabilir ve N dersini N zamanında tamamlayabiliriz (her dersin birim süre olduğunu varsayarak). Aşağıdakileri gözlemleyerek buluşsal yöntemler geliştirebiliriz: her zaman, öncelikleri sınırlı olan bir dizi ders vardır. Bu set M'den küçükse, hepsini planlayabiliriz; aksi halde, zamanlamak için bir alt kümesi seçmemiz gerekir. bunlar başlangıcında olduğu en uzun bağımlılık zincirinin uzunluğuna göre

  • sıralandırın ders: alt küme seçimi çeşitli metrik dayalı olabilir.
  • Hemen önkoşul olan derslerin sayısına dayanarak sıralı dersler.
  • Doğrudan veya dolaylı önkoşul olan derslerin toplam sayısına dayanan sıralı sipariĢ dersleri.

Şu anda programlanabilir olan dersleri sipariş etmek için bu ölçütlerin kombinasyonlarını da kullanabiliriz. Örneğin, her köşe için, kritikliğini, en uzun yoldan bir lavaboya kadar olacak şekilde tanımlarız. Dersleri topolojik düzende işleyerek programlıyoruz. Algoritmamızın herhangi bir noktasında, bir dizi aday derslerimiz var. Bunlar, önkoşulları önceden planlanmış olan dersler. Aday seti M boyutundan küçükse, tüm dersleri programlıyoruz; Aksi takdirde, M en kritik dersleri seçeriz ve bunları planlayın - fikir, daha uzun bağımlılık zincirlerinin başlangıcında olduklarından daha erken planlanması gerektiğidir. Ölçüt, sezgiseldir ve optimum zamanlamalara yol açmayabilir. Bu, sorunun NP tamamıyla tamamlandığından beklenilmesi gerekir. Diğer buluşsal yöntemler kullanılabilir, örneğin, L dersine bağlı olan derslerin sayısını dersin L kritikliği veya ölçütün bazı kombinasyonları olarak kullanabiliriz.

+1

İyi bir özet. Görevlerin bağımlılık sayısına göre sıralanması, iyi bir sezgiseldir, ancak bazı kaynakların ve derslik sınıflarının arasında bir bağımlılık olması durumunda, özellikle paralel kaynakların (sınıflar) yetersiz kullanımına yol açabilir - örneğin, bazı dersler projektöre ihtiyaç duyuyorsa ve sadece bazıları sınıflar projektörler kurmuştu. Bu durumda, özellikle derslerin çoğunun projektörlere ihtiyacı varsa, tüm sınıflarınızı tam olarak tutmak zor olacaktır. – Yetanotherjosh

2

PERT üzerine Wikipedia makalesi başlamak için yararlı bir yer olabilir. Uyumlu bir ajan olarak kısa sürede bir görevin tüm öncülleri yapıldığı gibi kullanılabilir böylece ajanların sonsuz sayıda yoksa