Сообщение Re: Перевод понимания из интуиции в логику от 20.11.2020 23:51
Изменено 20.11.2020 23:57 xma
Re: Перевод понимания из интуиции в логику
Здравствуйте, Khimik, Вы писали:
K>У меня возникла такая задача: определить в молекуле все циклы (точнее, ароматические циклы). Молекула – это набор атомов с декартовыми координатами и связей между ними. Например в этой молекуле два цикла по 6 атомов:
вкртаце, чтобы получить число наикратчайших замкнутых путей (циклов), (синтаксис приблизительный )
для начала надо разработать структуру хранения данных
для начала найдём все атомы — присвоим каждому индекс и поместим в массив
далее, напишем метод нахождения первого попавшегося кратчайшего замкнутого пути из атомов (для цикла)
щаз понял, что если как соты фигачится будут циклы с атомами — то надо будет дополнительно сохранять массив индексов атомов каждого цикла в каждый атом, и уже по каждому атому пробегаться (по аналогии с методом выше) — и сравнивать все индексы (цикла), при их полной одинаковости — считать совпадающие атомы одним циклом ..
понятно что может можно и похэшить для оптимизации и т.д., но это уже другой вопрос .. я так понял человеку — надо для начала просто чтобы работало ..
вообщем я спать, код тот (выше) на скорую руки набацал ночью — но для понимания общей идеи думаю пойдёт ..
P.S.:
K>У меня возникла такая задача: определить в молекуле все циклы (точнее, ароматические циклы). Молекула – это набор атомов с декартовыми координатами и связей между ними. Например в этой молекуле два цикла по 6 атомов:
вкртаце, чтобы получить число наикратчайших замкнутых путей (циклов), (синтаксис приблизительный )
для начала надо разработать структуру хранения данных
Скрытый текст | |
| |
для начала найдём все атомы — присвоим каждому индекс и поместим в массив
Скрытый текст | |
| |
далее, напишем метод нахождения первого попавшегося кратчайшего замкнутого пути из атомов (для цикла)
Скрытый текст | |
| |
Скрытый текст | |
| |
щаз понял, что если как соты фигачится будут циклы с атомами — то надо будет дополнительно сохранять массив индексов атомов каждого цикла в каждый атом, и уже по каждому атому пробегаться (по аналогии с методом выше) — и сравнивать все индексы (цикла), при их полной одинаковости — считать совпадающие атомы одним циклом ..
понятно что может можно и похэшить для оптимизации и т.д., но это уже другой вопрос .. я так понял человеку — надо для начала просто чтобы работало ..
вообщем я спать, код тот (выше) на скорую руки набацал ночью — но для понимания общей идеи думаю пойдёт ..
P.S.:
Re: Перевод понимания из интуиции в логику
Здравствуйте, Khimik, Вы писали:
K>У меня возникла такая задача: определить в молекуле все циклы (точнее, ароматические циклы). Молекула – это набор атомов с декартовыми координатами и связей между ними. Например в этой молекуле два цикла по 6 атомов:
вкртаце, чтобы получить число наикратчайших замкнутых путей (циклов), (синтаксис приблизительный )
для начала надо разработать структуру хранения данных
для начала найдём все атомы — присвоим каждому индекс и поместим в массив
далее, напишем метод нахождения первого попавшегося кратчайшего замкнутого пути из атомов (для цикла)
щаз понял, что если как соты фигачится будут циклы с атомами — то надо будет дополнительно сохранять массив индексов атомов каждого цикла в каждый атом, и уже по каждому атому пробегаться (по аналогии с методом выше) — и сравнивать все индексы (цикла), при их полной одинаковости — считать совпадающие атомы одним циклом ..
понятно что может можно и похэшить для оптимизации и т.д., но это уже другой вопрос .. я так понял человеку — надо для начала просто чтобы работало ..
вообщем я спать, код тот (выше) на скорую руки набацал ночью — но для понимания общей идеи думаю пойдёт ..
P.S.: ну и сохранять дополнительно придётся — все одинаковые минимальные длины пути (циклы), а не только первый попавшийся минимальный цикл (/путь) — для каждого атома ..
K>У меня возникла такая задача: определить в молекуле все циклы (точнее, ароматические циклы). Молекула – это набор атомов с декартовыми координатами и связей между ними. Например в этой молекуле два цикла по 6 атомов:
вкртаце, чтобы получить число наикратчайших замкнутых путей (циклов), (синтаксис приблизительный )
для начала надо разработать структуру хранения данных
Скрытый текст | |
| |
для начала найдём все атомы — присвоим каждому индекс и поместим в массив
Скрытый текст | |
| |
далее, напишем метод нахождения первого попавшегося кратчайшего замкнутого пути из атомов (для цикла)
Скрытый текст | |
| |
Скрытый текст | |
| |
щаз понял, что если как соты фигачится будут циклы с атомами — то надо будет дополнительно сохранять массив индексов атомов каждого цикла в каждый атом, и уже по каждому атому пробегаться (по аналогии с методом выше) — и сравнивать все индексы (цикла), при их полной одинаковости — считать совпадающие атомы одним циклом ..
понятно что может можно и похэшить для оптимизации и т.д., но это уже другой вопрос .. я так понял человеку — надо для начала просто чтобы работало ..
вообщем я спать, код тот (выше) на скорую руки набацал ночью — но для понимания общей идеи думаю пойдёт ..
P.S.: ну и сохранять дополнительно придётся — все одинаковые минимальные длины пути (циклы), а не только первый попавшийся минимальный цикл (/путь) — для каждого атома ..