Предотвращение обратной связи в дизайне класса C ++ - PullRequest
3 голосов
/ 24 января 2012

Какая рекомендуемая реализация для абстрактной сети маршрутизации, которая предотвращает или сообщает о циклах обратной связи.

Например:

  • А модулирует B
  • B модулирует C
  • C модулирует A

этот пример создаст цикл обратной связи. Окончательное значение A неизвестно до тех пор, пока оно не будет присвоено, и в этой системе A не может точно модулировать значения, которые зависят от A, и, таким образом, получить окончательное значение A.

Фактическая реализация является более сложной, с большим количеством проходов, где любое значение может модулировать любое другое значение, если только они не создают такого рода цикл обратной связи.

Есть ли какая-либо библиотека или тип контейнера, которые могут помочь решить эту проблему?

1 Ответ

2 голосов
/ 24 января 2012

С точки зрения программирования, вы смотрите на ориентированный граф и пытаетесь определить, является ли он ациклическим. Учитывая, что вы используете C ++, библиотека Boost Graph будет для вас очевидным выбором. Если вы попытаетесь выполнить топологическую сортировку на графе, произойдет сбой (с помощью boost::not_a_dag), когда / если граф содержит цикл (поскольку топологически сортировать может только ациклический граф).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...