Алгоритмы обнхода графа
От: hell citizen Россия  
Дата: 19.10.07 09:30
Оценка:
Всем доброго дня!

Есть граф, состоящий, как известно, из узлов и соединяющих их ребёр. И есть несколько алгоритмов его обхода, которые надо реализовать. Количество алгоритмов может и будет увеличиваться и они совсем разные. Выходные данные алгоритмов тоже отличаются. В качестве абстрактного примера можно рассмотреть построение текста по блок-схеме, а в качестве живого примера можно посмотреть в SQL Server Enterprise Manager на дизайнер запросов, там для генерации SQL запроса из диаграммы тоже наверное применяется хитрый алгоритм обхода.

Хотелось бы сделать нечто, упрощающее разработку и отладку этих алгоритмов, и уменьшающее число потенциальных ошибок. Мне для этих целей приглянулся паттерн "визитёр". Как я думаю, любой алгоритм обхода состоит из последовательности действий "старт", "переход", "возврат" и "стоп". Вот на этом я и застрял. Хочется сделать что-то такое, чтобы класс "алгоритм обхода" реализовывал некий одинаковый интерфейс и предоставлял некую f(last_action, link, node), возвращающую следующее действие из 4х приведённых. Но пока не очень-то получается.

Собственно поэтому и пишу — я не очень силён в теории, возможно в мои выкладки где-то закралась ошибка, или я чего-то недопонимаю, может быть сообщество поможет мне преодолеть этот затык или поправит меня в чёмто?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.