استفاده از Memoization در پایتون برای سرعت بخشیدن به عملکردهای کند

عکس پروفایل Emil Sadek Hacker Noon

خاطره سازی

یادآوری یک روش بهینه سازی است که با ذخیره نتایج مکالمات عملکرد قبلی ، برنامه ها را سرعت می بخشد. این اجازه می دهد تا تماس های بعدی برای استفاده مجدد از نتایج حافظه پنهان ، جلوگیری از محاسبه مجدد وقت گیر.

یادآوری معمولاً در برنامه نویسی پویا مورد استفاده قرار می گیرد ، جایی که مشکلات را می توان به زیرمشکلات ساده تری تقسیم کرد. یکی از این مشکلات برنامه نویسی پویا محاسبه nشماره فیبوناچی.

فیبوناچی

اعداد فیبوناچی دنباله ای از اعداد صحیح است که هر عدد حاصل جمع دو عدد قبلی است و از اعداد 0 و 1 شروع می شود.

F(0) = 0
F(1) = 1
F(n) = F(n - 1) + F(n - 2)

تابعی که محاسبه می کند nشماره فیبوناچی اغلب به صورت بازگشتی اجرا می شود.

def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)

فراخوانی عملکرد

fibonacci(4)

می توان با یک درخت بازگشت تجسم کرد.

توجه داشته باشید که این عملکرد چندین بار با همان ورودی فراخوانی می شود. به ویژه

fibonacci(2)

دو بار از ابتدا محاسبه می شود. با افزایش ورودی ، زمان اجرا به صورت نمایی رشد می کند. این بهینه نیست و با استفاده از یادآوری قابل بهبود است.

خاطره نویسی در پایتون

پایتون 3 حفظ توابع را فوق العاده آسان می کند. ماژول functools موجود در کتابخانه استاندارد پایتون دو تزئین کننده مفید را فراهم می کند …

سئو PBN | خبر های جدید سئو و هک و سرور