【Python 高速化】メモ化 (Memoization) を行う

python

メモ化 (Memoization) とは、関数の呼び出し時に計算結果を記憶しておき、同じ引数が渡された場合は計算結果を再利用することで、プログラムの実行速度を高速化する手法です。

メモ化を行うことで、関数の呼び出し時に計算を行う必要がなくなり、プログラムの実行速度が高速化されます。これは、関数の呼び出し時に計算を行う必要がないため、計算量が減少し、プログラムの実行速度が高速化されるからです。

以下のようなpythonコードを用いて、メモ化を行うことで高速化を行うことができます。

def memoize(f):
memo = {}
def helper(x):
if x not in memo:
memo[x] = f(x)
return memo[x]
return helper
@memoize
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
print(fib(40))

上記のコードでは、関数fibをメモ化するために、memoize関数を定義しています。memoize関数は、引数として関数fを受け取り、helper関数を返します。helper関数は、引数xを受け取り、memoという辞書型変数にxが存在するかを確認します。xが存在しない場合は、f(x)を計算してmemoに追加し、存在する場合はmemoから計算結果を取得します。

また、fib関数には@memoizeデコレータを付けています。これにより、fib関数の呼び出し時に、memoize関数が実行され、helper関数が返されます。helper関数は、fib関数の引数を受け取り、memoに存在するかを確認します。存在しない場合は、fib関数を実行して計算結果をmemoに追加し、存在する場合はmemoから計算結果を取得します。

これにより、fib関数の呼び出し時に計算を行う必要がなくなり、プログラムの実行速度が高速化されます。

タイトルとURLをコピーしました