не могу найти команду rllib после установки луча

Мемонирование эффективно относится к запоминанию («воспоминания» → «меморандум» → для запоминания) результаты вызовов методов на основе входных данных метода, а затем возврат запоминаемого результата, а не повторение вычисления результата. Вы можете думать об этом как кэш для результатов метода. Более подробную информацию см. На стр. 387 для определения в . Введение в алгоритмы (3e), Cormen и др.

. Простой пример вычисления факториалов с использованием memoization в Python был бы чем-то вроде это:

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

Вы можете усложниться и инкапсулировать процесс memoization в класс:

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)
        #Warning: You may wish to do a deepcopy here if returning objects
        return self.memo[args]

Затем:

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

factorial = Memoize(factorial)

Функция известный как « decorators », был добавлен в Python 2.4, который позволяет вам просто написать следующее, чтобы выполнить одно и то же:

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

Библиотека декораторов питона имеет аналогичный декоратор, называемый memoized , который немного более устойчив, чем класс Memoize, показанный здесь.

0
задан scott huang 28 February 2019 в 02:30
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: