(Giriş numaralarının bir sabitle sınırlanması için sorunun açıklamasını anlıyorum, bu yüzden bağlılığa bağımlılığı izlemeyeceğim.)
Problem lineer zamanda ve logaritmik alanda logaritmaların toplamı kullanılarak çözülebilir. Daha ayrıntılı olarak, algoritma aşağıdaki gibidir:
- İkili sayaçları kullanarak, her iki listedeki olası her giriş numarasının yineleme sayısını sayın.
Bu zaman alır O ( n )ve sayaçlar boşluk kullanıyor O ( günlükn ), her sayaç tarafından sınırlandırıldığı için n değerinde.
İzin Vermek p1, … ,pk aşağıdaki asal sayılar olsun O ( 1 )ciltli. Her sayacı bir sayıya dağıtarakbir asal faktörlerine bir (uygun çokluk ile) ve bir liste için sayıları diğer listeden çıkararak, aşağıdakileri zamanında elde ederiz O ( günlükn ):
Hesaplama tam sayıları β1, … ,βk ile O ( günlükn ) Sorunun işaretini belirlemeye eşdeğer olacak şekilde bitler Λ : =Σki = 1βbengünlükpben.
Eğer β1= ⋯ =βk= 0, ürünlerin eşit olduğunu yanıtlayın.
Aksi takdirde N- ≠ 0. By Baker'ın teoremi , biz ciltli düşürebilir
|Λ|>2−Clogn
belli bir sabit için
C. Böylece, aşağıdakiler doğru bir şekilde
Λ:
- Çıkış işareti ∑ki=1βiπi, nerede πi bir yaklaşımıdır logpi için m:=Clogn+k+1 doğruluk bitleri.
İzin Vermek M(m) ikisinin çarpımının maliyeti olmak mbit tamsayıları. Mevcut en iyi sınırM(m)=O(mlogm2O(log∗m)), ama burada önemsiz olsak bile çok fazla fark yaratmaz. O(m2)çarpma algoritması. Hesaplayabilirizlogpi için m zaman içindeki doğruluk bitleri O(M(m)logm)AGM yinelemesini kullanarak (örneğin buraya bakın ) ve sonra∑iβiπi zaman alır O(M(m)). Genel olarak, 4. adım zaman alırO(M(m)logm)⊆O(lognpoly(loglogn)).
Bu nedenle, algoritmanın çalışma süresine O(n) İlk adım.