Held – Karp algoritması - Held–Karp algorithm

Held – Karp algoritması, olarak da adlandırılır Bellman – Held – Karp algoritması, bir dinamik program 1962'de bağımsız olarak önerilen algoritma Bellman[1] ve Düzenlendi ve Karp[2] çözmek için Seyahat Eden Satıcı Sorunu (TSP). TSP, Hamilton devre problemi. Sorun şu şekilde tanımlanabilir: bir ülkede N şehir turu bulmak (ziyaret edilecek tüm şehirlerin ulaşılabilir olduğu varsayılarak), tur (a) her şehri yalnızca bir kez ziyaret etmeli, (b) başlangıç ​​noktasına dönmeli ve (c ) minimum mesafede olun.[3]Genel olarak, TSP simetrik seyyar satıcı problemi (sTSP), asimetrik seyyar satıcı problemi (aTSP) ve çoklu seyahat eden satıcı problemi (mTSP) olarak sınıflandırılır.[kaynak belirtilmeli ]

Grafik modeli

sTSP: İzin Vermek V = {v1 ,..., vn } bir dizi şehir, E = {(r, s) | r, sV} kenar seti olun ve drs = dsr kenar ile ilişkili bir maliyet ölçüsü olabilir (r, s) ∈ E.

aTSP: Eğer drsdsr en az bir (r, s) daha sonra sTSP bir aTSP olur. sTSP bir yönsüz grafik aTSP, bir Yönlendirilmiş grafik.

mTSP: Çoklu TSP probleminde, aynı şehirden başlayan birkaç satıcı var; Başlangıç ​​şehri dışındaki her şehir, tam olarak bir satıcı tarafından tam olarak bir kez ziyaret edilmeli ve turlarının toplam uzunlukları en aza indirilmelidir. MTSP'ye, başlangıç ​​şehrini yeniden ziyaret etmesine izin verilen standart TSP'nin bir değişikliği olarak bakılabilir. MTSP genellikle rahatlamış araç yönlendirme sorunu.

Algoritma

Açıklama

Dinamik programlama prosedürü aşağıdadır:

TSP için bir optimizasyon özelliği vardır:

   Minimum mesafeli bir yolun her alt yolu, minimum mesafenin kendisidir.

En küçüğünden başlayarak tüm alt problemlerin çözümlerini hesaplayın. Bir çözümü hesaplamak, yukarıdaki özyinelemeli denklemleri kullanarak daha küçük problemler için çözümler gerektirdiğinde, halihazırda hesaplanmış olan bu çözümlere bakın. Minimum mesafe turunu hesaplamak için, son denklemi kullanarak 1. düğümü oluşturun ve diğer düğümler için tekrarlayın. problem, hangi alt problemleri çözmemiz gerektiğini bilemeyiz, bu yüzden hepsini çözeriz.

Yinelemeli formülasyon

Şehirleri 1, 2, numaralandırın. . . , N ve şehir 1'den başladığımızı ve şehirler arasındaki mesafeyi ben ve şehir j dır-dir dben, j. Alt kümeleri düşünün S ⊆ {2, . . . , N} şehir ve için cS, İzin Vermek D(S, c) 1. şehirden başlayarak, tüm şehirleri ziyaret ederek minimum mesafe S ve şehirde bitirmek c.

İlk aşama: eğer S = {c}, sonra D(S, c) = d1,c. Aksi takdirde: D(S, c) = dakxSc (D(Sc, x) + dx,c ).

İkinci aşama: Tüm şehirlerin eksiksiz bir turu için minimum mesafeM = dkc∈ {2, ...,N} (D({2, . . . , N}, c) + dc,1 )

Bir tur n1 , . . ., nN tam tatmin ettiği zaman minimum mesafedir M = D({2, . . . , N}, nN ) + dnN,1 .

Misal[4]

Mesafe matrisi:

Fonksiyon açıklaması:

  • g (x, S) - 1'den başlayarak, yol min maliyeti köşe x'te biter, S kümesindeki köşeleri tam olarak bir kez geçerek
  • cxy - kenar maliyeti y'den x'de biter
  • p (x, S) - S kümesinden sondan ikinciye kadar olan tepe noktasından x'e, TSP yolunu en sonunda oluşturmak için kullanılır.


k = 0, boş küme:

∅ ayarla:

       g (2, ∅) = c21 = 1 g (3, ∅) = c31 = 15 g (4, ∅) = c41 = 6

k = 1, 1 öğeli kümeleri düşünün:

{2} ayarla:

       g (3, {2}) = c32 + g (2, ∅) = c32 + c21 = 7 + 1 = 8 p (3, {2}) = 2 g (4, {2}) = c42 + g (2, ∅) = c42 + c21 = 3 + 1 = 4 p (4, {2}) = 2

{3} ayarla:

       g (2, {3}) = c23 + g (3, ∅) = c23 + c31 = 6 + 15 = 21 p (2, {3}) = 3 g (4, {3}) = c43 + g (3, ∅) = c43 + c31 = 12 + 15 = 27 p (4, {3}) = 3

{4} ayarla:

       g (2, {4}) = c24 + g (4, ∅) = c24 + c41 = 4 + 6 = 10 p (2, {4}) = 4 g (3, {4}) = c34 + g (4, ∅) = c34 + c41 = 8 + 6 = 14 p (3, {4}) = 4

k = 2, 2 öğeden oluşan kümeleri düşünün:

{2,3} ayarla:

         g (4, {2,3}) = dk {c42 + g (2, {3}), c43 + g (3, {2})} = min {3 + 21, 12 + 8} = min {24, 20} = 20 p (4, {2,3}) = 3

{2,4} ayarla:

         g (3, {2,4}) = min {c32 + g (2, {4}), c34 + g (4, {2})} = min {7 + 10, 8 + 4} = min {17, 12} = 12 p (3, {2,4}) = 4

{3,4} ayarlayın:

          g (2, {3,4}) = dk {c23 + g (3, {4}), c24 + g (4, {3})} = min {6 + 14, 4 + 27} = min {20, 31} = 20 p (2, {3,4}) = 3

Optimal bir turun uzunluğu:

 f = g (1, {2,3,4}) = min {c12 + g (2, {3,4}), c13 + g (3, {2,4}), c14 + g (4, {2,3})} = min {2 + 20, 9 + 12, 10 + 20} = min {22, 21, 30} = 21

1. düğümün öncülü: p (1, {2,3,4}) = 3

3. düğümün öncülü: p (3, {2,4}) = 4

4. düğümün öncülü: p (4, {2}) = 2

2. düğümün öncülü: p (2, {}) = 1

Bu nedenle, optimal bir TSP turu 1 → 2 → 4 → 3 → 1 ile verilir.

Sözde kod[5]

işlevi algoritması TSP (G, n) dır-dir    için k: = 2 ila n yapmak        C ({k}, k): = d1, k    sonu için    için s: = 2 -e n − 1 yapmak        hepsi için S ⊆ {2,. . . , n}, | S | = s yapmak            hepsi için k ∈ S yapmak                C (S, k): = dakikam ≠ k, m∈S [C (S  {k}, m) + dm, k]            sonu için        sonu için    sonu için    opt: = mink ≠ 1 [C ({2, 3,.., N}, k) + dk, 1]    dönüş (tercih)son işlev

Karmaşıklık

Kapsamlı sayım

Herhangi bir şehirde başlayan bu kaba kuvvet yöntemi, mümkün olan her şeyi numaralandırır. permütasyonlar Ziyaret edilecek şehirler ve her permütasyonun mesafesini bulun ve minimum mesafeden birini seçin. Tümünü kapsayan toplam olası rota sayısı şehirler olarak verilebilir ve sırasıyla aTSP ve sTSP'de.[6]

Dinamik programlama yaklaşımı

Bu algoritma, kapsamlı numaralandırmaya göre daha hızlı (ancak yine de üstel zaman) yürütme sunar ve çok fazla alan kullanmanın dezavantajı: bu algoritmanın en kötü durum zaman karmaşıklığı ve boşluk .

Zaman: Hesaplamada kullanılan temel işlemler, eklemeler ve karşılaştırmalardır. İlk aşamadaki her birinin sayısı şu şekilde verilir:

ve ikinci aşamada her birinin oluşum sayısı

Uzay:

Alan karmaşıklığı, boyut alt kümeleri için minimum maliyetlerin hesaplanmasının farkına vararak biraz iyileştirilebilir. s yalnızca boyutun alt kümelerini gerektirir s-1.

Yalnızca boyutun alt kümelerini depolayarak s-1 ve s algoritmanın herhangi bir noktasında uzay karmaşıklığı şu şekilde azalır:

İlgili algoritmalar

TSP'yi çözmek için kesin algoritma

Dinamik Programlamanın yanı sıra, Doğrusal programlama ve Dallara bağlı algoritma, TSP'yi çözebilen hassas algoritmalardır. Doğrusal programlama, kesme düzlemi yöntemi için geçerlidir. Tamsayılı programlama Örneğin, modeldeki iki kısıtla oluşturulan DP'yi çözme ve ardından optimum bir çözüme kademeli olarak yakınsamak için eşitsizlik kısıtlaması ekleyerek kesme düzlemini arama. İnsanlar bir kesme düzlemi bulmak için bu yöntemi uyguladıklarında, genellikle deneyime bağlıdırlar. Dolayısıyla bu yöntem nadiren genel bir yöntem olarak kabul edilir.

Dallara bağlı algoritma, büyük ölçekli problemi çözmek için iyi olmasa da, yaygın olarak kullanılan bir arama algoritmasıdır. Arama sürecini etkili kısıtlayıcı sınır yoluyla kontrol eder, böylece mümkün olan en kısa sürede en uygun çözümü bulmak için uzay durumu ağacından en uygun çözüm dalını arayabilir. Bu algoritmanın kilit noktası, kısıtlayıcı sınırın seçimidir. Farklı kısıtlayıcı sınırlar, farklı dallara bağlı algoritmalar oluşturabilir.

TSP'yi çözmek için yaklaşık algoritma

Problemi çözmek için hassas algoritmanın uygulanması çok sınırlı olduğundan, genellikle yaklaşık algoritma veya sezgisel algoritma kullanırız. Algoritmanın sonucu C / C * ≤ ε ile değerlendirilebilir. C, yaklaşık algoritmadan üretilen toplam seyahat mesafesidir; C * en uygun seyahat mesafesidir; ε, yaklaşık çözümün toplam seyahat mesafesinin en kötü koşullarda optimal çözüme oranının üst sınırıdır. Ε> 1.0 değeri. 1.0'a ne kadar yakınsa, algoritma o kadar iyidir. Bu algoritmalar şunları içerir: İnterpolasyon algoritması, En yakın komşu algoritması, Clark & ​​Wright algoritması, Çift kapsamlı ağaç algoritması, Christofides algoritması, Hibrit algoritma, Olasılıksal algoritma.

Referanslar

  1. ^ "Gezgin satıcı sorununun dinamik programlama tedavisi", Richard Bellman, Doç. Hesaplama Mach. 9. 1962.
  2. ^ 'Sorunları sıralamak için dinamik bir programlama yaklaşımı', Michael Held ve Richard M. Karp, Endüstriyel ve Uygulamalı Matematik Derneği Dergisi 1:10. 1962
  3. ^ http://www.cs.man.ac.uk/~david/algorithms/graphs.pdf
  4. ^ http://www.mafy.lut.fi/study/DiscreteOpt/tspdp.pdf
  5. ^ http://www.lsi.upc.edu/~mjserna/docencia/algofib/P07/dynprog.pdf[kalıcı ölü bağlantı ]
  6. ^ Gutin, Gregory ve Abraham P. Punnen, editörler. Gezgin satıcı problemi ve çeşitleri. Cilt 12. Springer, 2002.