![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
sisi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.1.2013 Репутация: нет Всего: нет |
Я хочу представить молекулярное строение известной кислоты LSD ( диэтиламид d-лизергиновой кислоты ) в структуре данных для работы в С++.
В целом, как я вижу картину. Строение молекулы для переноса в код, можно сделать так: - представить вещ-во в виде графа ( G = <V, E>; g - граф, v - вершина, edge - ребро ). Каким образом? Атом - вершина графа, соединения между атомами - ребра графа ( тут кстати, встает вопрос, что делать с двойными или тройными химическими связями ). Приведу графическое представление lsd для наглядности, чтобы посмотреть, как на вещ-во, как на граф: ![]() Зная тот факт, что нужно учитывать возможные изменения lsd-кислоты с др. вещ-вом ( хим. структура распадается ). Нужно подобрать хорошую структуру данных, которая бы справлялась за O(log N), пока на ум приходят использование самобалансирующихся деревьев, как: Red-Black деревья ( как раз <map> контейнер из STL ) и В-семейство деревьев. Но, есть моменты, где мне нужно обходить полностью граф ( каждую вершину ) для визуализации хим. формулы. И тут нужно подкрутить алгоритмы обхода всех вершин графа, как DFS/BFS ( поиски в глубину и ширину ). В общем, посоветуйте решение. Есть ли какие-нибудь структуры данных для моей цели из STL ( или Boost ), т.к. проект четко будет на С++ только. Порой идут мысли, что придется имплементировать с нуля структуры данных самому, как и алгоритмы, учитывая сложность задачи. Это сообщение отредактировал(а) sisi - 9.1.2013, 00:45 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Граф можно представить только графом; дерево - частный случай, не прокатит. В STL готового контейнера нет, зато есть в бусте - целая библиотека, BGL. Придется немного разобраться в ее концепции, но потом не будешь иметь проблем.
-------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |