Редактировать : Я не ищу реализацию, а просто ключевые слова для поиска и методологии, чтобы начать меня.
Я борюсь с созданием дерева зависимостей, в котором дочерние узлы обновляются внешним процессом, и требуется обновить все родительские узлы обновленных дочерних узлов.
Пример. Представьте себе дерево, подобное этому: O [родитель], O (l) [левый ребенок], O (r) [правый ребенок], O (ll), O (lr), O (rl) и O (rr).O (ll), O (lr), O (rl) и O (rr) имеют ссылку на сбор данных, который обновляется через случайные интервалы).
Я хочу реализовать процесс извлечения, где наЧерез определенные интервалы процесс проверяет, обновляется ли O.«Обновленный» определяется как обновленный, когда обновляются все дочерние узлы, иначе используется только кэшированное значение (результат) этого узла.Задача процесса извлечения состоит в том, чтобы гарантировать, что O обновляется, когда ни один из дочерних узлов не обновляется.Это означает, что процесс должен пройти по дереву и проверить, обновляются ли O (ll), O (lr), O (rl) и O (rr).Если сбор данных, на который ссылаются эти дочерние узлы, обновляется с момента последнего обновления этих дочерних узлов, то эти дочерние узлы необходимо обновлять как функцию измененного сбора данных.Если сбор данных обновлен и, следовательно, дочерние узлы O (ll), O (lr), O (rl) и O (rr) также обновлены, и это означает, что O (l) и O (r) также должныбудет обновлен, и впоследствии O также будет обновляться.Каждый дочерний узел является входом для своего родительского узла.
Сложность заключается в том, что каждый дочерний узел является общим для разных деревьев, то есть дочерний узел одного дерева также может быть любым дочерним узлом другого дерева.Цель этой структуры - избежать пересчета дочернего узла, когда он уже обновлен.Дочерние узлы используются совместно, если разные деревья реализуют дочерний узел с той же функциональностью (функцией и параметризацией), что и у уже существующего дочернего узла.
Я застрял с дизайном этой структуры и с тем, как приступить к реализацииЭто.Я еще не предоставил код, потому что застрял в процессе проектирования.По сути каждый ребенок является функцией и зависит от самих зависимых функций.
Что меня удивляет, так это то, предлагает ли C # возможность декорировать методы и классы, чтобы упростить проверку обновления узла или нет.Также ленивая оценка играет роль в этом процессе вообще?