А не встречалось ли вам что-нибудь уже готовое для обхода не очень больших деревьев и графов?
Задачи типовые: развернуть граф/дерево в плоский список, получить список объектов, ссылающихся на данный объект и наоборот, получить список объектов, на которые ссылается данный объект через свои свойства? И притом чтобы все это работало быстро и желательно с кэшированием информации о типах или какой-нибудь прекомпиляцией. Я тут свой велосипед через Reflection написал, но он вышел немного тормознутый, мягко говоря
Посмотри Boost Graph Library.
Сам не работал, но книжку в издательстве Питер редактировал.
Здравствуйте, α, Вы писали:
α>А не встречалось ли вам что-нибудь уже готовое для обхода не очень больших деревьев и графов?
α>Задачи типовые: развернуть граф/дерево в плоский список, получить список объектов, ссылающихся на данный объект и наоборот, получить список объектов, на которые ссылается данный объект через свои свойства? И притом чтобы все это работало быстро и желательно с кэшированием информации о типах или какой-нибудь прекомпиляцией. Я тут свой велосипед через Reflection написал, но он вышел немного тормознутый, мягко говоря
Мы используем вот эту библиотеку:
QuickGraph. Насколько я понимаю для работы с графами под .net особых альтернатив нет. Во всяком случае, если кто-то предложит что лучше с удовольствием посмотрю.
Если данных очень много имеет смысл посмотреть в сторону графовых БД. В частности наиболее популярная сейчас это Neo4j.
Не так давно Microsoft зарелизила свою графовую БД. Раньше они ее называли Trinity, сейчас Graph Engine. У них свой язык по аналогии с Gremlin, Cypher и т.п. — TSL (Trinity Specification Language)
Graph Engine — может быть это то, что вам нужно. Сам пока пристально не смотрел.