TSP neden şehirlerin tekrarını gerektirmiyor?


9

TSP'nin tekrarlanan şehirlerin olasılığını reddetmesi bana tuhaf geliyor. Bu seyahat eden satıcının amacı mümkün olduğunca hızlı gitmek ve tüm şehirleri ziyaret etmektir, değil mi? Peki, daha önce bulunduğunuz bir şehirde seyahat etmek daha hızlı olursa?


2
Eminim keyfi. Sadece nadir durumlarda tekrarlanan şehirlere izin verilmesi fark yaratacaktır (asla metrik TSP'de). Yani problemler pek farklı değil. Nedeni muhtemelen tarihi.
Karolis Juodelė

Yanıtlar:


3

Tam olarak nasıl tanımladığınız önemli değil, çünkü bu sadece gerçek dünya problemini modellemenin bir yolu. TSP'de, sadece bir dizi şehre ve her bir çift arasında seyahat etmenin maliyetine sahipsiniz. Bu, modelleme yaptığınız gerçek dünya durumunda, B ve C arasındaki en iyi rotanın A'dan geçebileceği olasılığını dışlamaz. Bu durumda, evet, TSP'de ABCA olarak modellenen rota çok iyi bir şekilde A'dan B'ye C'ye giderken ekstra bir zaman sürmeyi içerir, ancak bu detay TSP modelinde soyutlanır.


1
Geçerli bir nokta, ama belirtmek isterim ki TSP gerçek dünyadaki durumlarda sıklıkla kullanılmaktadır. Gerçek dünya uygulamaları uygulanırken tekrarlanmayan gereksinim öngörülüyor mu?
danmcardle

@danmcardle Uygulamaya bağlıdır.
Tom van der Zanden

2

Kısıtlamanın garip göründüğüne katılıyorum ve birçok pratik durumda, ilgili değil. David'in cevabında işaret ettiği gibi, modellemeyi kendiniz değiştirebilirseniz, o zaman gerçekten önemli değil. Ancak değiştirilemez bir örnek verildiğinde, bir fark yaratacaktır, çünkü bu kısıtlamaya sahip genel TSP, sabit bir faktör içinde yaklaşık olarak kabul edilemezken, tek ziyaret kısıtlamasını gevşetmek, faktör 2 içinde (metrik olmasa bile) ). Bir şeyi özlemediğim sürece, standart argümanlarla, önce minimum bir yayılan ağaç oluşturabilirsiniz (c), euler tur tekniği ile bu ağacı ziyaret edin. Açıkçası, turunuzun toplam maliyeti2c (her kenarda iki kez). Çelişkili olarak, daha düşük bir maliyet turu varsac, daha sonra bu tur, maliyetten daha düşük bir MST çıkarmak için kullanılabilir cbu bir çelişki.


1

Tekrarlanan herhangi bir tur verildiğinde, herhangi bir şehri tekrarlamayan daha kısa bir tur yapabilirsiniz. Örneğin, formun bir turunu düşünün

AXAY,
hangi ziyaretler Aiki defa. İkinci ziyaretinizde bir kısayol kullanabilirsiniz.A, doğrudan X için Y:
AXY.

Olabilir en kısa yolu X için Y geçiyor A, ancak bu zaten kenarda kapsüllenmiş XY. Bir söz düşünebilirsinizA "geçmek" olarak değil A daha çok "durmak" A. Sadece durman gerekA bir kez, geçebilirsin A birkaç defa.

TSP için gerçek algoritmalar, "kısayollar alma" gibi bir adıma sahip olabilir, örneğin Christofides'in algoritması. Örneğin bu açıklamaya veya daha kısa hesaba bakın .


4
TSP metriğini varsayıyorsunuz (yani, üçgen eşitsizliğinin taşıdığı). Ancak, genel TSP'de üçgen eşitsizliği yoktur. Örneğin, şehirleriniz olabilirA,X1,,Xn, nerede d(A,Xi)=1 ve d(xi,xj)=100 hepsi için i,j. Tekrarlarla en kısa turAX1AX2AAXnA, maliyetle 2n+1 ama tekrar etmeden en kısa tur AX1XnA, maliyetle 100n98.
David Richerby

Elbette, ancak (1) OP, metrik olan TSP'nin gerçek dünyadaki uygulamalarıyla ilgileniyor gibi görünüyor ve (2) metrik olmayan TSP o kadar ilginç değil (çok zor olduğu için).
Yuval Filmus

2
@YuvalFilmus gerçek dünya TSP metrik gerekli değildir. A'dan B'ye giden yollarda trafik olduğu için A'dan B'ye seyahat eden bazı zamanlar AC +
CB'den

1
@Babibu Kenardaki mesafe (A,B)en kısa mesafedirA için B. Sizin durumunuzda,A için Ben kısa mesafe değildir.
Yuval Filmus

0

Bunun genel bir cevabı yok, ancak "insanlar aptal değil". Durumlarına uygun çözümü uygulayacaklardır. Seyrek olarak, seyahat eden satış elemanı sorununun kendisi ile ilgilenen insanlardır. Klasik durumda Eveb, gerçek bir dünya satış elemanı belirli bir zaman dilimi içinde gelirlerini belirli bir kısıtlama kümesi içinde en üst düzeye çıkarma problemiyle daha fazla ilgilenir. Sorunun bu örneğinde, katedilen toplam mesafe, en uygun cevabı bulmaya giden bir dizi farklı faktörden sadece biridir.


0

Tekrarlara izin verilirse, X -> A -> Y arasındaki tüm bağlantıları inceleyin ve bu X -> Y'den daha kısa ise, X -> Y'nin uzunluğunu X -> A -> uzunluğuyla değiştirirsiniz. Y ve standart algoritma ile ortaya çıkan sorunu çözer. Değişiklik kalmayana kadar değiştirme işlemini tekrarlamanız gerektiğini düşünüyorum, çünkü daha kısa bir bağlantı X -> Y bulursanız, şimdi X -> Y -> Z'nin X -> Y'den daha kısa olduğu anlamına gelebilir.

Hangi bağlantıları değiştirdiğinizi takip edin, çözümdeki bağlantıları gözden geçirin ve çözüm X -> Y içeriyorsa bunu X -> A -> Y ile değiştirin.

PS. Bence fikrim harika, ama şu anda doğru olduğundan pek emin değilim. X -> Y yerine X -> A -> Y sadece bir kısayol değil, aynı zamanda A şehrini de kapsar.

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.