Dinics algoritması - Dinics algorithm - Wikipedia

Dinic'in algoritması veya Dinitz algoritması bir kuvvetli polinom hesaplamak için algoritma maksimum akış içinde akış ağı, 1970 yılında İsrailli (eski adıyla Sovyet) bilgisayar bilimcisi Yefim (Chaim) A. Dinitz tarafından tasarlandı.[1] Algoritma çalışır zaman ve benzer Edmonds-Karp algoritması hangi koşuyor en kısa artırma yollarını kullandığı için. Kavramlarının tanıtımı seviye grafiği ve engelleme akışı Dinic'in algoritmasının performansına ulaşmasını sağlar.

Tarih

Yefim Dinitz, bu algoritmayı sınıf öncesi bir alıştırmaya yanıt olarak icat etti. Adelson-Velsky algoritmaları sınıfı. O sırada, söz konusu olay ile ilgili temel gerçeklerin farkında değildi. Ford – Fulkerson algoritması.[2]

Dinitz, 1970 yılında dergide yayınlanan algoritmasını Ocak 1969'da icat ettiğinden bahsediyor. Doklady Akademii Nauk SSSR. 1974'te Shimon Even ve (o zamanki doktora öğrencisi) Alon Itai, Technion Hayfa'da Dinitz'in algoritması çok meraklı ve ilgisini çekmişti. Alexander V. Karzanov akışı engelleme ile ilgili bir fikir. Bununla birlikte, derginin kısıtlamalarını karşılamak için her biri dört sayfayla sınırlı olan bu iki makaleyi deşifre etmek zordu. Doklady Akademii Nauk SSSR. Hatta pes etmedi ve üç günlük çabanın ardından, katmanlı ağ bakımı sorunu dışında her iki belgeyi de anlamayı başardı. Sonraki birkaç yıl içinde, "Dinic'in algoritması" üzerine konferanslar verdi, yazarın adını yanlış telaffuz ederken onu popülerleştirdi. Even ve Itai de bu algoritmaya katkıda bulundu. BFS ve DFS, algoritma şimdi yaygın olarak bu şekilde sunulmaktadır.[3]

Ford-Fulkerson algoritması icat edildikten sonra yaklaşık 10 yıl boyunca, genel irrasyonel sınır kapasiteleri durumunda polinom zamanda sonlandırmanın yapılıp yapılamayacağı bilinmiyordu. Bu, genel durumlarda maksimum akış problemini çözmek için bilinen herhangi bir polinom-zaman algoritmasının eksikliğine neden oldu. Dinitz'in algoritması ve Edmonds-Karp algoritması (1972'de yayınlanmıştır) her ikisi de bağımsız olarak, Ford-Fulkerson algoritmasında, her artırma yolunun en kısa yol olması durumunda, artırma yollarının uzunluğunun azalmadığını ve algoritmanın her zaman sona erdiğini gösterdi.

Tanım

İzin Vermek ile ağ olmak ve kenar kapasitesi ve akışı , sırasıyla.

artık kapasite bir haritalama olarak tanımlanır,
  1. Eğer ,
  2. aksi takdirde.
artık grafik ağırlıksız bir grafiktir , nerede
.
Bir artırma yolu bir kalıntı grafikteki yol .
Tanımlamak en kısa yolun uzunluğu olmak -e içinde . Sonra seviye grafiği nın-nin grafik , nerede
.
Bir engelleme akışı bir akış öyle ki grafik ile içermez yol.[4][5]

Algoritma

Dinic Algoritması

Giriş: Ağ .
Çıktı: Bir akış maksimum değer.
  1. Ayarlamak her biri için .
  2. İnşaat itibaren nın-nin . Eğer , dur ve çıktı .
  3. Engelleyen bir akış bulun içinde .
  4. Arttırma akışı ekle tarafından ve 2. adıma geri dönün.

Analiz

Her engelleme akışındaki katman sayısının her seferinde en az 1 arttığı ve bu nedenle en fazla olduğu gösterilebilir. algoritmada akışları engelleme. Her biri için:

  • seviye grafiği tarafından inşa edilebilir enine arama içinde zaman
  • seviye grafiğindeki engelleyici bir akış Içinde bulunabilir zaman

toplam çalışma süresi ile her katman için. Sonuç olarak, Dinic'in algoritmasının çalışma süresi .[6]

Adlı bir veri yapısını kullanma dinamik ağaçlar, her aşamada bir tıkanma akışı bulmanın çalışma süresi azaltılabilir ve bu nedenle Dinic'in algoritmasının çalışma süresi şu şekilde iyileştirilebilir: .

Özel durumlar

Birim kapasiteye sahip ağlarda, çok daha güçlü bir zaman sınırı vardır. Her engelleme akışı şurada bulunabilir: zaman ve aşama sayısının geçmediği gösterilebilir ve . Böylece algoritma çalışır zaman.[7]

Ortaya çıkan ağlarda iki taraflı eşleştirme problem, fazların sayısı ile sınırlıdır , bu nedenle zaman sınırı. Ortaya çıkan algoritma aynı zamanda Hopcroft – Karp algoritması. Daha genel olarak, bu sınır herhangi bir birim ağı - kaynak ve havuz haricindeki her bir tepe noktasının tek bir kapasite giriş kenarına sahip olduğu veya tek bir kapasite çıkış kenarına sahip olduğu ve diğer tüm kapasitelerin keyfi tamsayılar olduğu bir ağ.[5]

Misal

Aşağıdaki, Dinic'in algoritmasının bir simülasyonudur. Seviye grafiğinde kırmızı etiketli köşeler değerlerdir . Mavi renkli yollar engelleyici bir akış oluşturur.

1.Dinic algoritması G1.svgDinic algoritması Gf1.svgDinamik algoritma GL1.svg

Engelleme akışı şunlardan oluşur:

  1. 4 birim debili,
  2. 6 birim akışlı ve
  3. 4 adet debi ile.

Bu nedenle, engelleme akışı 14 birimdir ve akış değeri 14. Engelleme akışındaki her bir artırma yolunun 3 kenarlar.

2.Dinamik algoritma G2.svgDinic algoritması Gf2.svgDinamik algoritma GL2.svg

Engelleme akışı şunlardan oluşur:

  1. 5 birim akış ile.

Bu nedenle, engelleme akışı 5 birimdir ve akış değeri 14 + 5 = 19. Her artırma yolunun 4 kenarı olduğuna dikkat edin.

3.Dinamik algoritma G3.svgDinic algoritması Gf3.svgDinamik algoritma GL3.svg

Dan beri ulaşılamaz algoritma, maksimum 19 değerinde bir akışı sonlandırır ve döndürür. Her engelleme akışında, artırma yolundaki kenarların sayısının en az 1 arttığını unutmayın.

Ayrıca bakınız

Notlar

  1. ^ Yefim Dinitz (1970). "Güç tahmini ile bir ağdaki maksimum akış sorununun çözümü için algoritma" (PDF). Doklady Akademii Nauk SSSR. 11: 1277–1280.
  2. ^ Ilan Kadar; Sivan Albagli (2009-11-27). "Dinitz'in bir ağda maksimum akışı bulmaya yönelik algoritması".
  3. ^ Yefim Dinitz. "Dinitz Algoritması: Orijinal Sürüm ve Even'in Sürümü" (PDF). Alıntı dergisi gerektirir | günlük = (Yardım)
  4. ^ Bu, alt grafiğin tüm doymuş kenarların (yani tüm kenarların) kaldırılmasından kaynaklandığı anlamına gelir. öyle ki ) herhangi bir yol içermiyor -e . Diğer bir deyişle, engelleme akışı öyle ki, her olası yol -e doymuş bir kenar içerir.
  5. ^ a b Tarjan 1983, s. 102.
  6. ^ Yefim Dinitz (2006). "Dinitz 'Algoritması: Orijinal Sürüm ve Even'in Sürümü" (PDF). İçinde Oded Goldreich; Arnold L. Rosenberg; Alan L. Selman (editörler). Teorik Bilgisayar Bilimi: Hafızasında Denemeler Shimon Bile. Springer. s. 218–240. ISBN  978-3-540-32880-3.
  7. ^ Hatta, Shimon; Tarjan, R. Endre (1975). "Ağ Akışı ve Test Grafiği Bağlantısı". Bilgi İşlem Üzerine SIAM Dergisi. 4 (4): 507–518. doi:10.1137/0204043. ISSN  0097-5397.

Referanslar