Понимание сообщения об ошибке алгебраического цикла
Когда моя программа выдает ошибку алгебраического цикла, такую как приведенная ниже
terminate called after throwing an instance of 'std::runtime_error'
what(): Algebraic loop detected in DiagramBuilder:
A depends on
B depends on
C depends on
D depends on
E
Aborted (core dumped)
Означает ли это, что у меня есть следующий цикл
A --> B --> C --> D --> E --> A
или это только говорит о том, что петля обнаружена в E
(а также A
в D
это просто дополнительный контекст), т.е.
A --> B --> C --> D --> E --> (any one of A to D)
Потому что нет абсолютно никакой ценности A
зависит от значения E
в моей системе...
1 ответ
Трудно узнать, учитывая имена вашей абстрактной системы, но логика проверки алгебраического цикла здесь:
Если ваша круговая зависимость на диаграмме реальна (как и в любом цикле обратной связи), то вы должны убедиться, что по крайней мере один из узлов в цикле не является "прямой передачей". Обратите внимание, что большинство диаграмм с обратной связью нарушают алгебраический цикл, имея установку с состоянием (выходной сигнал зависит от состояния, а не напрямую от входного).