L-нотація

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

L-нотація — асимптотична нотація, аналогічна до О-нотації, записується як Ln[α,c] при n, що прямує до нескінченності. Подібно до O-нотації, L-нотація зазвичай застосовується для оцінки обчислювальної складності алгоритмів. При цьому n є деяким параметром вхідних даних алгоритму, пропорційним їх розміру: наприклад, кількість вершин і ребер у вхідному графі в алгоритмах пошуку найкоротшого шляху, або натуральне число в алгоритмах розкладання його на прості множники. Перевага L-нотації над O-нотацією полягає в тому, що вона спрощує аналіз алгоритмів.

Визначення

Нехай c>0, α[0,1], тоді

Ln[α,c]=e(c+o(1))(lnn)α(lnlnn)1α

Множник ec(lnn)α(lnlnn)1α виражає домінуючу складову, а множник eo(1)(lnn)α(lnlnn)1α — другорядну, яка зростає повільніше.

При α=0 Ln[α,c]=Ln[0,c]=e(c+o(1))lnlnn=(lnn)c+o(1) є поліномом від lnn.

При α=1 Ln[α,c]=Ln[1,c]=e(c+o(1))lnn=nc+o(1) є експонентою від lnn (і також поліномом від n).

При 0<α<1 Ln[α,c] є субекспоненційною, тобто росте повільніше, ніж експонента з основою, більшою за 1, але швидше за будь-який поліном від lnn.

Історія

Першим застосував L-нотацію Шаблон:Не перекладено у своїй праці «Аналіз та порівняння деяких алгоритмів факторизації цілих чисел»[1]. Для алгоритмів, які він аналізував, нотація мала лише один параметр c, а α була константою, рівною 1/2. Померанс уживав літеру L (або малу літеру l) у цій та попередніх статтях для формул, які містили багато логарифмів.

Формулу, яка містить два параметри, запровадили Шаблон:Не перекладено та Шаблон:Не перекладено у своїй статті «Алгоритми в теорії чисел»[2]. Таку нотацію вони застосували для аналізу алгоритму Копперсміта обчислення дискретного логарифма. Їхня форма нотації частіше трапляється в сучасній літературі.

У літературі з криптографії трапляється визначення L-нотації через O-велике:[3]

Ln[α,c]=O(ec(lnn)α(lnlnn)1α).

Це не стандартне визначення. O-нотація передбачає, що час роботи обмежений функцією зверху. Однак для алгоритмів, де зазвичай застосовується L-нотація (факторизація цілих чисел, дискретне логарифмування), функція не є верхньою межею, тому таке визначення не краще.

Приклади

Багато алгоритмів факторизації цілих чисел загального призначення мають субекспоненційну часову складність. Асимтотично найшвидшим є метод решета числового поля з оцінкою складності:

Ln[1/3,c]=e(c+o(1))(lnn)1/3(lnlnn)2/3

при c=(64/9)1/31.923.

До розробки методу решета числового поля асимптотично найшвидшим був метод квадратичного решета з оцінкою:

Ln[1/2,1]=e(1+o(1))(lnn)1/2(lnlnn)1/2.

Для задачі дискретного логарифма на еліптичній кривій, найшвидшим алгоритмом загального призначення є Шаблон:Не перекладено: час роботи оцінюється як квадратний корінь від порядку групи n. У L-нотації це записується наступним чином:

Ln[1,1/2]=n1/2+o(1).

Тест простоти AKS потребує поліноміального часу. Це означає, що складність тесту простоти може бути не більшою за

Ln[0,c]=(lnn)c+o(1),

доведено, що c не перевищує 6.[4]

Примітки

Шаблон:Reflist Шаблон:Reflist

  1. Шаблон:Cite article
  2. Arjen K. Lenstra and Hendrik W. Lenstra, Jr, "Algorithms in Number Theory", in Handbook of Theoretical Computer Science (vol. A): Algorithms and Complexity, 1991.
  3. Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone. Handbook of Applied Cryptography. CRC Press, 1996. Шаблон:Isbn. http://www.cacr.math.uwaterloo.ca/hac/.
  4. Hendrik W. Lenstra Jr. and Carl Pomerance, "Primality testing with Gaussian periods", preprint, 2011, http://www.math.dartmouth.edu/~carlp/aks041411.pdf.