Qo'shish zanjiri ko'rsatkichi - Addition-chain exponentiation

Yilda matematika va Kompyuter fanlari, maqbul qo'shimcha zanjirli eksponitsiya usuli hisoblanadi eksponentatsiya ijobiy tomonidan tamsayı minimal sonli ko'paytirishni talab qiladigan kuchlar. Bu ketma-ketlikka mos keladi A003313 ustida Butun sonlar ketma-ketligining onlayn entsiklopediyasi. Bu eng qisqa yaratish orqali ishlaydi qo'shilish zanjiri kerakli ko'rsatkichni hosil qiladi. Zanjirdagi har bir ko'rsatkichni oldingi eksponentatsiya natijalarining ikkitasini ko'paytirish orqali baholash mumkin. Umuman olganda, qo'shimcha zanjirli eksponitsiya shuningdek, turli xil algoritmlar asosida tuzilgan minimal bo'lmagan qo'shilish zanjirlari bo'yicha ko'rsatkichlarni nazarda tutishi mumkin (chunki eng qisqa qo'shilish zanjirini topish juda qiyin).

Eng qisqa qo'shilish zanjiri algoritm dan ortiq ko‘paytirishni talab qilmaydi ikkilik ko'rsatkichlar va odatda kamroq. Qaerda yaxshiroq ishlashi haqida birinchi misol a15, ikkilik usulda oltita ko'paytirish kerak, ammo eng qisqa qo'shilish zanjiri faqat beshtasini talab qiladi:

(ikkilik, 6 marta ko'paytirish)
(eng qisqa qo'shilish zanjiri, 5 ta ko'paytirish).
Qanday qilishni ko'rsatadigan jadval Ko'rsatkich foydalanish Qo'shimcha zanjirlar
Soni
Ko'paytirish
Haqiqiy
Ko'rsatkich
Maxsus amalga oshirish
Qo'shimcha zanjirlar eksponentatsiya qilish
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

Boshqa tomondan, eng qisqa qo'shilish zanjirini aniqlash qiyin: hozirda o'zboshimchalik bilan ko'rsatkichlar uchun samarali optimal usullar ma'lum emas va ma'lum bir darajalar to'plami uchun eng qisqa qo'shilish zanjirini topish bilan bog'liq muammo isbotlangan To'liq emas.[1] Eng qisqa zanjir berilgan taqdirda ham, qo'shimcha zanjir ko'rsatkichi ikkilik usuldan ko'ra ko'proq xotirani talab qiladi, chunki u zanjirdagi ko'plab oldingi ko'rsatkichlarni saqlashi mumkin. Amalda, eng qisqa qo'shilish zanjiri ko'rsatkichi birinchi navbatda eng qisqa zanjir oldindan hisoblab chiqilishi mumkin bo'lgan va unchalik katta bo'lmagan kichik sobit ko'rsatkichlar uchun ishlatiladi.

Buning uchun bir nechta usullar mavjud taxminiy eng qisqa qo'shilish zanjiri va ko'pincha ikkilik ko'rsatkichga qaraganda kamroq ko'paytirishni talab qiladi; ikkilik daraja ko'rsatkichi o'zi suboptimal qo'shish zanjiri algoritmidir. Optimal algoritm tanlovi kontekstga bog'liq (masalan, ko'paytmaning nisbiy narxi va berilgan ko'rsatkichni qayta ishlatish soni).[2]

Eng qisqa qo'shilish zanjirini topish muammosini hal qilib bo'lmaydi dinamik dasturlash, chunki bu taxminni qondirmaydi maqbul pastki tuzilish. Ya'ni, kuchni kichik kuchlarga ajratish etarli emas, ularning har biri minimal hisoblangan, chunki kichik kuchlar uchun qo'shimcha zanjirlar bir-biriga bog'liq bo'lishi mumkin (hisob-kitoblarni bo'lishish uchun). Masalan, uchun eng qisqa qo'shilish zanjirida a15 yuqorida, pastki muammo a6 sifatida hisoblash kerak (a3)2 beri a3 qayta ishlatiladi (aksincha, aytaylik, a6 = a2(a2)2, shuningdek, uchta ko'paytma kerak).

Qo'shish-ayirboshlash - zanjir ko'rsatkichi

Agar ikkiga ko'paytirish va bo'lishga ruxsat berilgan bo'lsa, unda an qo'shish-ayirish zanjiri undan ham kamroq umumiy ko'paytmalar + bo'linishlarni olish uchun ishlatilishi mumkin (bu erda olib tashlash bo'linishga to'g'ri keladi). Biroq, ko'payish bilan taqqoslaganda sekinlik bu texnikani umuman yoqimsiz qiladi. Ko'rsatkich uchun salbiy tamsayı kuchlari, boshqa tomondan, chunki baribir bitta bo'linish zarur, qo'shish-ayirish zanjiri ko'pincha foydalidir. Bunday misollardan biri a−31, bu erda hisoblash 1 /a31 uchun eng qisqa qo'shilish zanjiri tomonidan a31 7 ta ko'paytirish va bitta bo'linishni talab qiladi, eng qisqa qo'shish-ayirish zanjiri uchun 5 ta ko'paytirish va bitta bo'linish kerak:

(qo'shish-ayirish zanjiri, 5 multa + 1 div).

Ko'rsatkichni yoqish uchun elliptik egri chiziqlar, nuqta teskari (xy) bepul narxda mavjud, chunki u shunchaki (x, −y), shuning uchun qo'shish-ayirish zanjirlari bu kontekstda hatto musbat tamsayı ko'rsatkichlari uchun ham maqbuldir.[3]

Adabiyotlar

  1. ^ Dauni, Piter; Leong, Benton; Seti, Ravi (1981). "Qo'shish zanjirlari bilan hisoblash ketma-ketliklari". Hisoblash bo'yicha SIAM jurnali. 10 (3): 638–646. doi:10.1137/0210047.
  2. ^ Gordon, D. M. (1998). "Tez eksponentatsiya usullari bo'yicha so'rovnoma" (PDF). J. Algoritmlar. 27: 129–146. CiteSeerX  10.1.1.17.7076. doi:10.1006 / jagm.1997.0913. Arxivlandi asl nusxasi (PDF) 2013-11-11 kunlari. Olingan 2013-11-11.
  3. ^ François Morain va Xorxe Olivos, "Qo'shish-ayirish zanjirlari yordamida elliptik egri chiziqdagi hisob-kitoblarni tezlashtirish," RAIRO Informatique théoretique et application 24, 531-543-betlar (1990).
  • Donald E. Knut, Kompyuter dasturlash san'ati, 2-jild: Semikumerik algoritmlar, 3-nashr, §4.6.3 (Addison-Uesli: San-Frantsisko, 1998).
  • Daniel J. Bernshteyn, "Pippenger algoritmi, "mualliflik tarkibiga kiritilishi kerak Yuqori tezlikdagi kriptografiya kitob. (2002)