Memoization nedir ve nasıl Python kullanabilir miyim? | Netgez.com
SORU
1 Ocak 2010, Cuma


Memoization nedir ve nasıl Python kullanabilir miyim?

Ben sadece Python başladı ve memoization ne ve nasıl kullanılacağı hakkında hiçbir fikrim yok. Ayrıca, basitleştirilmiş bir örnek alabilir miyim?

CEVAP
1 Ocak 2010, Cuma


Memoization etkili hatırlama anlamına gelir ("" - >"" ->muhtıra memoization hatırlanmak) yöntemini çağırır yöntem girişlerine dayalı sonuçlar ve daha sonra hatırladı sonuç döndürmek yerine, yine sonuç hesaplama. Yöntem sonuçlar için bir önbellek olarak düşünebilirsiniz. Daha fazla ayrıntı için, sayfaya bakın Cormen 365 et al., Algoritmalar (3e) giriş.

Hesaplama faktöriyel Python memoization kullanmak için basit bir örnek bu gibi bir şey olacaktır:

factorial_memo = {}
def factorial(k):
    if k < 2: return 1
    if not k in factorial_memo:
        factorial_memo[k] = k * factorial(k-1)
    return factorial_memo[k]

Çok daha karmaşık ve bir sınıfa memoization işlemi saklanması

class Memoize:
    def __init__(self, f):
        self.f = f
        self.memo = {}
    def __call__(self, *args):
        if not args in self.memo:
            self.memo[args] = self.f(*args)
        return self.memo[args]

Sonra:

def factorial(k):
    if k < 2: return 1
    return k * factorial(k - 1)

factorial = Memoize(factorial)

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • atKristaBradford

    atKristaBrad

    4 Aralık 2010
  • AyfionGaming

    AyfionGaming

    20 ÅžUBAT 2013
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011