Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > В какую структуру данных из STL лучше обернуть LSD |
Автор: sisi 9.1.2013, 00:35 |
Я хочу представить молекулярное строение известной кислоты LSD ( диэтиламид d-лизергиновой кислоты ) в структуре данных для работы в С++. В целом, как я вижу картину. Строение молекулы для переноса в код, можно сделать так: - представить вещ-во в виде графа ( G = <V, E>; g - граф, v - вершина, edge - ребро ). Каким образом? Атом - вершина графа, соединения между атомами - ребра графа ( тут кстати, встает вопрос, что делать с двойными или тройными химическими связями ). Приведу графическое представление lsd для наглядности, чтобы посмотреть, как на вещ-во, как на граф: ![]() Зная тот факт, что нужно учитывать возможные изменения lsd-кислоты с др. вещ-вом ( хим. структура распадается ). Нужно подобрать хорошую структуру данных, которая бы справлялась за O(log N), пока на ум приходят использование самобалансирующихся деревьев, как: Red-Black деревья ( как раз <map> контейнер из STL ) и В-семейство деревьев. Но, есть моменты, где мне нужно обходить полностью граф ( каждую вершину ) для визуализации хим. формулы. И тут нужно подкрутить алгоритмы обхода всех вершин графа, как DFS/BFS ( поиски в глубину и ширину ). В общем, посоветуйте решение. Есть ли какие-нибудь структуры данных для моей цели из STL ( или Boost ), т.к. проект четко будет на С++ только. Порой идут мысли, что придется имплементировать с нуля структуры данных самому, как и алгоритмы, учитывая сложность задачи. |
Автор: Earnest 9.1.2013, 07:16 |
Граф можно представить только графом; дерево - частный случай, не прокатит. В STL готового контейнера нет, зато есть в бусте - целая библиотека, BGL. Придется немного разобраться в ее концепции, но потом не будешь иметь проблем. |