Toplama zinciri üs alma - Addition-chain exponentiation

İçinde matematik ve bilgisayar Bilimi, en uygun toplama zinciri üs alma bir yöntemdir üs alma pozitif olarak tamsayı minimum sayıda çarpma gerektiren güçler. Bu diziye karşılık gelir A003313 üzerinde Çevrimiçi Tam Sayı Dizileri Ansiklopedisi. En kısa olanı oluşturarak çalışır toplama zinciri bu, istenen üssü üretir. Zincirdeki her üs alma, önceki üs alma sonuçlarından ikisi çarpılarak değerlendirilebilir. Daha genel olarak, toplama zinciri üs alma aynı zamanda çeşitli algoritmalar tarafından oluşturulan minimal olmayan ekleme zincirleri ile üs almaya da atıfta bulunabilir (çünkü en kısa toplama zincirini bulmak çok zordur).

En kısa ekleme zinciri algoritma daha fazla çarpma gerektirmez ikili üs alma ve genellikle daha az. Daha iyi olduğu yerin ilk örneği, a15, ikili yöntemin altı çarpma gerektirdiği ancak en kısa bir toplama zinciri yalnızca beşi gerektirdiği durumlarda:

(ikili, 6 çarpma)
(en kısa toplama zinciri, 5 çarpma).
Nasıl yapılacağını gösteren tablo Üs alma kullanma Ek Zincirler
Sayısı
Çarpmalar
Gerçek
Üs alma
Spesifik uygulama
Ek Zincirler Üs alma yapmak
0a1a
1a2a × a
2a3a × a × a
2a4(a × a → b) × b
3a5(a × a → b) × b × a
3a6(a × a → b) × b × b
4a7(a × a → b) × b × b × a
3a8((a × a → b) × b → d) × d
4a9(a × a × a → c) × c × c
4a10((a × a → b) × b → d) × d × b
5a11((a × a → b) × b → d) × d × b × a
4a12((a × a → b) × b → d) × d × d
5a13((a × a → b) × b → d) × d × d × a
5a14((a × a → b) × b → d) × d × d × b
5a15((a × a → b) × b × a → e) × e × e
4a16(((a × a → b) × b → d) × d → h) × h

Öte yandan, en kısa bir toplama zincirinin belirlenmesi zordur: şu anda keyfi üsler için etkili optimal yöntemler bilinmemektedir ve belirli bir üs kümesi için en kısa bir toplama zinciri bulma ile ilgili problem kanıtlanmıştır. NP tamamlandı.[1] En kısa zincir verildiğinde bile, toplama zinciri üs alma, ikili yöntemden daha fazla bellek gerektirir, çünkü potansiyel olarak zincirdeki birçok önceki üsleri depolaması gerekir. Bu nedenle pratikte, en kısa toplama zinciri üssü, öncelikle en kısa zincirin önceden hesaplanabildiği ve çok büyük olmadığı küçük sabit üsler için kullanılır.

Ayrıca birkaç yöntem vardır: yaklaşık en kısa toplama zinciri ve genellikle ikili üs alma işleminden daha az çarpma gerektiren; ikili üs alma kendi başına bir suboptimal toplama zinciri algoritmasıdır. En uygun algoritma seçimi bağlama bağlıdır (örneğin, çarpmanın göreli maliyeti ve belirli bir üssün yeniden kullanım sayısı).[2]

En kısa ekleme zincirini bulma sorunu çözülemez. dinamik program, çünkü varsayımını karşılamıyor optimal altyapı. Yani, gücü, her biri minimum olarak hesaplanan daha küçük güçlere ayırmak yeterli değildir, çünkü daha küçük güçler için ekleme zincirleri ilişkili olabilir (hesaplamaları paylaşmak için). Örneğin, en kısa toplama zincirinde a15 yukarıdaki alt problem a6 olarak hesaplanmalıdır (a3)2 dan beri a3 yeniden kullanılır (örneğin, a6 = a2(a2)2, ayrıca üç çarpma gerektirir).

Toplama-çıkarma-zincir üs alma

Hem çarpmaya hem de bölmeye izin veriliyorsa, toplama-çıkarma zinciri Daha da az toplam çarpma + bölme elde etmek için kullanılabilir (burada çıkarma, bölmeye karşılık gelir). Bununla birlikte, çarpmaya kıyasla bölmenin yavaşlığı, bu tekniği genel olarak çekici kılmaktadır. Üs alma için olumsuz Öte yandan tamsayı kuvvetleri, yine de bir bölüm gerektiğinden, bir toplama-çıkarma zinciri genellikle faydalıdır. Böyle bir örnek a−31, bilgi işlem nerede 1 /a31 en kısa ekleme zinciri ile a31 7 çarpma ve bir bölme gerektirir, oysa en kısa toplama-çıkarma zinciri 5 çarpma ve bir bölme gerektirir:

(toplama-çıkarma zinciri, 5 sonuç + 1 böl).

Üs alma için eliptik eğriler, bir noktanın tersi (xy) ücretsiz olduğu için (x, −y) ve bu nedenle toplama-çıkarma zincirleri bu bağlamda pozitif tamsayı üsleri için bile optimaldir.[3]

Referanslar

  1. ^ Downey, Peter; Leong, Benton; Sethi, Ravi (1981). "Toplama zincirleri ile dizileri hesaplama". Bilgi İşlem Üzerine SIAM Dergisi. 10 (3): 638–646. doi:10.1137/0210047.
  2. ^ Gordon, D.M. (1998). "Hızlı üs alma yöntemlerine ilişkin bir araştırma" (PDF). J. Algoritmalar. 27: 129–146. CiteSeerX  10.1.1.17.7076. doi:10.1006 / jagm.1997.0913. Arşivlenen orijinal (PDF) 2013-11-11 tarihinde. Alındı 2013-11-11.
  3. ^ François Morain ve Jorge Olivos, "Toplama-çıkarma zincirleri kullanarak eliptik bir eğri üzerinde hesaplamaları hızlandırmak," RAIRO Informatique théoretique et uygulaması 24, s. 531-543 (1990).
  • Donald E. Knuth, Bilgisayar Programlama Sanatı, Cilt 2: Seminümerik Algoritmalar, 3. baskı, §4.6.3 (Addison-Wesley: San Francisco, 1998).
  • Daniel J. Bernstein, "Pippenger Algoritması, "yazarın Yüksek hızlı şifreleme kitap. (2002)