Я пишу простую программу на Python.
Моя программа, похоже, страдает от линейного доступа к словарям,
его время выполнения растет экспоненциально, хотя алгоритм является квадратичным.
Я использую словарь для запоминания значений. Это кажется узким местом.
Значения, которые я хэширую, являются кортежами точек.
Каждая точка: (x, y), 0 <= x, y <= 50 <br>
Каждый ключ в словаре: кортеж из 2-5 точек: ((x1, y1), (x2, y2), (x3, y3), (x4, y4))
Ключи читаются во много раз чаще, чем пишутся.
Правильно ли я понимаю, что на таких входах python-диктат имеет линейное время доступа?
Насколько мне известно, наборы имеют гарантированное логарифмическое время доступа.
Как я могу имитировать дикты, используя наборы (или что-то подобное) в Python?
edit В соответствии с запросом (упрощенная) версия функции памятки:
def memoize(fun):
memoized = {}
def memo(*args):
key = args
if not key in memoized:
memoized[key] = fun(*args)
return memoized[key]
return memo