Genelleştirilmiş 3SUM (k-SUM) sorunu mu var?


29

3sum sorun çalışır 3 tam sayılarını belirlemek için bir dizi büyüklüğü N , öyle ki , bir + b + c = 0 .Sbir,b,cSnbir+b+c=0

İkinci dereceden daha iyi bir çözüm olmadığı, yani olduğu varsayılmaktadır . Veya farklı koymak gerekirse: o ( n log ( n ) + n 2 ) .O(n2)O(ngünlük(n)+n2)

Bu genelleştirilmiş probleme de geçerli olacak acaba Yani: tamsayılar bul için i [ 1 .. k ] bir dizi içinde S büyüklüğü n öyle ki Σ i [ 1 .. k ] a i = 0 .birbenben[1 ..k]SnΣben[1 ..k]birben=0

Bunu k 2 için de yapabileceğinizi düşünüyorum (basit k = 3 algoritmasını genelleştirmek önemsizdir ). Fakat diğer k değerleri için daha iyi algoritmalar var mı?O(ngünlük(n)+nk-1)k2k=3
k


karar ağacı karmaşıklığıyla ilgili daha düşük sınırlara bakan 3SUM hakkındaki son haberler / bildiri
vzn

Yanıtlar:


27

k -UMA aşağıdaki gibi daha hızlı bir şekilde çözülebilir.

  • Hatta için k : Compute sıralanmış bir liste S tüm toplamlar k/2 girdi elemanları. S hem x sayısını hem de olumsuzlamasını içerdiğini kontrol edin x . Algoritma çalışır O(nk/2logn) süresi.

  • Tek k : ( k - 1 ) / 2 giriş öğelerinin tüm toplamlarının S sıralanmış listesini hesaplayın . Her bir giriş elemanı için a , onay ister S hem de içerir x ve - bir - x , bir sayı için , x . (İkinci adım, temel olarak 3SUM için O ( n 2 ) zaman algoritmasıdır.) Algoritma, O ( n ( k + 1 ) / 2 ) zamanında çalışır.(k1)/2aSxaxxO(n2)O(n(k+1)/2)

(, Muhtemelen, günlük faktörü hariç her iki algoritma en uygun olan k çift ve daha büyük 2 ) herhangi bir sabit için k hesaplama doğrusal karar ağacı modelinin belli zayıf fakat doğal kısıtlama. Daha fazla detay için bakınız:


stackoverflow.com/a/14737071/511736 , k = 4 olduğunda O (n ^ 2) algoritması
önerir

1
Hashing hile yapıyor. StackOverflow'ta açıklanan algoritma sadece tamsayı girişi için O (n ^ 2) zamanında ve yalnızca yüksek olasılıkla ve yalnızca uygun bir rasgele karma fonksiyonu kullanıyorsanız çalışır. Cevabımdaki algoritmalar gerçek RAM modelinde çalışıyor, tamamen belirleyici ve zaman sınırları en kötü durumda. Ayrıca "bit hileci" kullanarak tamsayı ayarında log faktörlerini tıraş edebilirsiniz, ancak bu çok sıkıcı.
JeffE

12

-SUM,k-SATherhangi bir sabit k için 2 o ( n ) zamandaçözülemediği sürece n Ω ( d ) gerektirir. Bu,Mihai Patrascu ve Ryan Williams (1) tarafındanbirmakaledegösterilmiştir.dnΩ(d)2O(n)

Başka bir deyişle, üstel zaman hipotezi varsayarak, algoritmanız üssün sabit bir faktöre kadar optimaldir ( cinsinden bir polinom faktörü ).n

(1) Mihai Patrascu ve Ryan Williams. Daha Hızlı SAT Algoritmalarının Olasılığı Üzerine. Proc. Kesikli Algoritmalar Üzerine 21. ACM / SIAM Sempozyumu (SODA2010)


3

İşte birkaç basit gözlem.

İçin , sen bunu yapabilir Θ ( n ) bir sıfır için diziyi tarayarak zaman. İçin k = 2 , içeri karma olmadan bunu yapabilir İçeride ISTV melerin RWMAIWi'nin ( n log n ) zaman. Diziyi sıralayın ve sonra tarayın. Her öğe için ben bir ikili arama yapmak - i . Bu, Θ ( n log n ) ' nin toplam karmaşıklığına yol açar . Vaka için k = n sen bunu yapabilirsin İçeride ISTV melerin RWMAIWi'nin ( n )k=1Θ(n)k=2Θ(ngünlükn)ben-benΘ(ngünlükn)k=nΘ(n) Diziyi toplayarak ve sonucu kontrol ederek

Daha fazla referans için, 3SUM için Açık Sorunlar Projesi sayfasına bakın .


-1

Bkz http://arxiv.org/abs/1407.4640

RSUM problemini çözmek için yeni bir algoritma Valerii Sopin

Özet:

Bazı durumlarda zaman karmaşıklığının ikinci dereceden bir değerlendirmesini içeren herhangi bir doğal r için rSUM problemini çözmek için belirlenmiş bir algoritma sunulmaktadır. Kullanılan hafıza miktarı açısından, elde edilen algoritma ayrıca ikinci dereceden bir sıraya sahiptir. Elde edilen algoritma fikri, tamsayı sayıları dikkate almak yerine, ikili sayma sisteminde bu sayıları ardışık bit olarak değerlendirmeyi temel almaktadır. Bir tamsayı sayısının toplamının sıfıra eşit olması durumunda, bu sayılardaki ardışık herhangi bir bit tarafından sunulan sayıların toplamının sıfıra yeterince "yakın" olması gerektiği gösterilmiştir. Bu, bir fortiori'nin çözümü oluşturmadığı rakamları atmayı mümkün kılar.

Bu konuda yeni bir şey.


1
Soruyla ilgili olan makaledeki sonuçları açıkça belirtebilir misiniz? (Makale bir bütün olarak ilgiliyse, özetin yapıştırılması uygun olabilir.) SE ile ilgili mesajların bir linkten daha fazlası olması gerekiyor.
FrankW

1
Olduğu gibi, bu cevap bir cevap (değil, potansiyel olarak yararlı) bir yorumdur. Bu nedenle bazı orijinal içerikler içermesi gerekir, örneğin algoritmayı kendi kelimelerinizle tanımlamanız. Bunu yapmak ister misin? Cevap vermezseniz cevaba yorum yapabilirsiniz. (Temsilciniz nedeniyle yorum yapamayacağınızın farkındayım.)
Raphael

Bu güvenilir bir kağıt gibi görünmüyor. "Bazı durumlarda ikinci dereceden zaman karmaşıklığı" iddiası yararlı bir açıklama değildir. Zaman karmaşıklığı, tanımı gereği, en kötü durumdaki çalışma süresidir. Kabarcık sıralama, bazı durumlarda doğrusal zamanda çalışır, ancak zaman karmaşıklığı ikinci dereceden kalır.
DW
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.