Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > В какую структуру данных из STL лучше обернуть LSD


Автор: sisi 9.1.2013, 00:35
Я хочу представить молекулярное строение известной кислоты LSD ( диэтиламид d-лизергиновой кислоты ) в структуре данных для работы в С++.

В целом, как я вижу картину. Строение молекулы для переноса в код, можно сделать так:
- представить вещ-во в виде графа ( G = <V, E>; g - граф, v - вершина, edge - ребро ). Каким образом?

Атом - вершина графа, соединения между атомами - ребра графа ( тут кстати, встает вопрос, что делать с двойными или тройными химическими связями ).

Приведу графическое представление lsd для наглядности, чтобы посмотреть, как на вещ-во, как на граф:
user posted image

Зная тот факт, что нужно учитывать возможные изменения lsd-кислоты с др. вещ-вом ( хим. структура распадается ). Нужно подобрать хорошую структуру данных, которая бы справлялась за O(log N), пока на ум приходят использование самобалансирующихся деревьев, как: Red-Black деревья ( как раз <map> контейнер из STL ) и В-семейство деревьев.

Но, есть моменты, где мне нужно обходить полностью граф ( каждую вершину ) для визуализации хим. формулы. И тут нужно подкрутить алгоритмы обхода всех вершин графа, как DFS/BFS ( поиски в глубину и ширину ).

В общем, посоветуйте решение. Есть ли какие-нибудь структуры данных для моей цели из STL ( или Boost ), т.к. проект четко будет на С++ только.
Порой идут мысли, что придется имплементировать с нуля структуры данных самому, как и алгоритмы, учитывая сложность задачи.

Автор: Earnest 9.1.2013, 07:16
Граф можно представить только графом; дерево - частный случай, не прокатит. В STL готового контейнера нет, зато есть в бусте - целая библиотека, BGL. Придется немного разобраться в ее концепции, но потом не будешь иметь проблем. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)