Попытки позволяют эффективно хранить списки элементов. Префиксы являются общими, что позволяет экономить место.
Я ищу аналогичный способ эффективного хранения деревьев. Я хотел бы иметь возможность проверять членство и добавлять элементы, также желательно знать, является ли данное дерево поддеревом некоторых сохраненных деревьев или существует ли сохраненное дерево, являющееся поддеревом данного дерева.
Обычно я храню около 500 несбалансированных бинарных деревьев высотой менее 50.
РЕДАКТИРОВАТЬ
Мое приложение - это своего рода средство проверки моделей, использующее какие-то памятки. Представьте, что у меня есть состояние и следующие формулы: и где является сложной подформулой, и представьте, что я сначала хочу узнать, выполняется ли в . Я проверяю, выполняется ли и после длительного процесса я понимаю, что это так. Теперь я хочу знать, содержит ли в . Я хотел бы вспомнить тот факт, что имеет место, и заметить, что так что я могу получить в почти мгновенно.f = ϕ g = ( ϕ ∨ ψ ) ϕ f s ϕ g s f g ⇒ f g s
И наоборот, если я докажу, что не выполняется в , то я хочу сказать, что не сохраняется в почти мгновенно.т ф т
Мы можем построить частичный порядок на формулах и иметь если . Для каждого состояния мы храним два набора формул; хранит максимальные формулы, которые сохраняются, а хранит минимальные формулы, которые не сохраняются. Теперь, учитывая состояние и формулу , я могу видеть, ли , или если в этом случае я сделано, и я знаю непосредственно, держит ли в .g ⇒ f s L ( s ) l ( s ) s g ∃ f ∈ L ( s ) , f ⇒ g ∃ f ∈ l ( s ) , g ⇒ f g s
В настоящее время и реализованы в виде списков, и это явно не оптимально, потому что мне нужно перебирать все сохраненные формулы по отдельности. Если бы мои формулы были последовательностями, и если частичный порядок был «является префиксом», то процесс может оказаться гораздо быстрее. К сожалению, мои формулы имеют древовидную структуру, основанную на , модальном операторе и атомарных предложениях.л ¬ , ∧
Как указывают @Raphael и @Jack, я мог бы упорядочить деревья, но боюсь, что это не решит проблему, потому что интересующий меня частичный порядок не будет соответствовать «является префиксом».