پیچیدگی محاسباتی اعمال ریاضی

جدول زیر فهرست زمان اجرای الگوریتم‌های مختلف برای عملیات رایج ریاضی را نشان می‌دهد.

در اینجا پیچیدگی، اشاره به پیچیدگی زمانی اجرای محاسبات در یک ماشین تورینگ مالتی تیپ است.[۱] نماد O بزرگ را برای توضیح نماد مورد استفاده ببینید.

توجه: با توجه به تنوع الگوریتم‌های ضرب، منظور از (M(n تعداد عملیات در الگوریتم انتخاب شده برای ضرب است.

توابع حسابی ویرایش

عمل وروذی خروجی الگوریتم پیچیدگی
جمع دو عدد n رقمی N و N یک عدد n+1 رقمی جمع کتاب درسی با انتقال رقم Θ(n), Θ(log(N))
تفریق دو عدد n رقمی N و N یک عدد n+1 رقمی جمع کتاب درسی با قرض گرفتن Θ(n), Θ(log(N))
ضرب Two One 2n-digit number ضرب طولانی کتاب درسی O(n2)
Karatsuba algorithm O(n1.585)
3-way Toom–Cook multiplication O(n1.465)
k-way Toom–Cook multiplication O(nlog (2k − 1)/log k)
Mixed-level Toom–Cook (Knuth 4.3.3-T)[۲] O(n 22 log n log n)
Schönhage–Strassen algorithm O(n log n log log n)
Fürer's algorithm[۳] O(n log n 2O(log* n))
تقسیم Two n-digit numbers One n-digit number Schoolbook long division O(n2)
Newton–Raphson division O(M(n))
ریشه دوم One n-digit number One n-digit number روش نیوتنNewton's method O(M(n))
Modular exponentiation Two n-digit numbers and a k-bit exponent One n-digit number Repeated multiplication and reduction O(M(n) 2k)
Exponentiation by squaring O(M(n) k)
Exponentiation with Montgomery reduction O(M(n) k)

توابع جبری ویرایش

عملیات ورودی خروجی الگوریتم پیچیدگی
محاسبه چندجمله‌ای یک چند جملهای از درجه n که ضرایب چندجمله‌ای با اندازه ثابت هستند یک عدد با اندازه ثابت محاسبه مستقیم Θ(n)
روش هورنر Θ(n)
بزرگ‌ترین مقسوم علیه مشترک gcd (روی Z[x] یا F[x]) دو چندجمله‌ای از درجه n که ضرایب با اندازه ثابت دارند یک چند جمله‌ای از درجه حداکثر n الگوریتم اقلیدسی O(n2)
الگوریتم سریع اقلیدسی[۴] O(M(n) log n)

توابع خاص ویرایش

بسیاری از روش‌های این بخش در Borwein و Borwein[۵] موجودند.

توابع مقدماتی ویرایش

توابع مقدماتی با ترکیب عملیات حسابی، تابع نمایی (exp)، لگاریتم طبیعی (log)، توابع مثلثاتی (sin، cos) و معکوس آنها ساخته می‌شوند. پیچیدگی یک تابع مقدماتی معادل با پیچیدگی معکوس آن است زیرا همه توابع مقدماتی تحلیلی هستند و بنابراین با روش نیوتن معکوس پذیرند. به ویژه اگر هر کدام از exp یا log در حوزه اعداد مختلط را بتوان با یک پیچیدگی حساب کرد آنگاه آن پیچیدگی برای همه توابع مقدماتی دیگر دست یافتنی است.

توابع غیرمقدماتی ویرایش

ثابت‌های ریاضی ویرایش

این جدول پیچیدگی محاسباتی تقریب اعداد ثابت مشخصی را تا n رقم درست فراهم می‌کند.

ثابت الگوریتم پیچیدگی
ثابت طلایی، φ Newton's method O(M(n))
ریشه دوم 2
روش نیوتن O(M(n))
عدد اویلر e Binary splitting of the Taylor series for the exponential function O(M(n) log n)
Newton inversion of the natural logarithm O(M(n) log n)
Pi, π Binary splitting of the arctan series in Machin's formula O(M(n) (log n)2)
الگوریتم سلامین-برنت O(M(n) log n)
Euler's constant, γ Sweeney's method (approximation in terms of the exponential integral) O(M(n) (log n)2)

نظریه اعداد ویرایش

الگوریتم‌های محاسبات نظریه اعداد در نظریه اعداد محاسباتی مطالعه می‌شوند.

جبر ماتریس ویرایش

در جدول پیچیدگی محاسباتی زیر فرض می‌شود که حساب با عناصر انفرادی دارای پیچیدگی محاسباتی (1)O است.

عمل ورودی خروجی الگوریتم پیچیدگی
ضرب ماتریسی دو ماتریس n در n یک ماتریس n در n Schoolbook matrix multiplication O(n3)
Strassen algorithm O(n2.807)
Coppersmith–Winograd algorithm O(n2.376)
Optimized CW-like algorithms[۶][۷][۸] O(n2.373)
ضرب ماتریسی یک ماتریس n در m و یک ماتریس m در p یک ماتریس n در p ضرب ماتریسی کتاب درسی O(nmp)
معکوس ماتریس* یک ماتریس n در n یک ماتریس n در n روش حذفی گاوس-جردن O(n3)
Strassen algorithm O(n2.807)
Coppersmith–Winograd algorithm O(n2.376)
Optimized CW-like algorithms O(n2.373)
دترمینان یک ماتریس n در n یک عدد بسط لاپلاس O(n!)
تجزیه LU O(n3)
الگوریتم بارایس Bareiss O(n3)
ضرب ماتریسی سریع[۹] O(n2.373)
جایگذاری پسرو ماتریس مثلثی n جواب جایگذاری پسرو[۱۰] O(n2)

منابع ویرایش

  1. A. Schönhage, A.F.W. Grotefeld, E. Vetter: Fast Algorithms—A Multitape Turing Machine Implementation, BI Wissenschafts-Verlag, Mannheim, 1994
  2. D. Knuth.
  3. Martin Fürer.
  4. http://planetmath.org/fasteuclideanalgorithm
  5. J. Borwein & P. Borwein.
  6. Davie, A.M.; Stothers, A.J. (2013), "Improved bound for complexity of matrix multiplication", Proceedings of the Royal Society of Edinburgh, 143A: 351–370, doi:10.1017/S0308210511001648
  7. Vassilevska Williams, Virginia (2011), Breaking the Coppersmith-Winograd barrier (PDF)
  8. Le Gall, François (2014), "Powers of tensors and fast matrix multiplication", Proceedings of the 39th International Symposium on Symbolic and Algebraic Computation ( ISSAC 2014), arXiv:1401.7714
  9. Aho, Alfred V.; Hopcroft, John E.; Ullman, Jeffrey D. (1974), The Design and Analysis of Computer Algorithms, Addison-Wesley, Theorem 6.6, p.  241
  10. J. B. Fraleigh and R. A. Beauregard, "Linear Algebra," Addison-Wesley Publishing Company, 1987, p 95.