Re: Оптимизационная задача в комбинаторике
От: Khimik  
Дата: 10.06.24 16:16
Оценка:
Я уже писал что сделал отсеивание перегруппировочных ионов, но сейчас понял что мой алгоритм тоже не годится для больших молекул из-за плохой оптимизации.
Сейчас я сделал так. Предположим есть молекула:



У нас 12 атомов и мы можем перебрать все комбинации, когда каждый атом либо есть либо удалён. И для каждой комбинации можно посчитать, не является ли она не единой. Если убрать атом N12 — получится молекула C6H5, нормальная. Если убрать атом 1 — получатся две молекулы и это можно отбросить (вместе с атомом удаляются связи). Если убрать атомы 1 и 12 — снова получится нормальная связанная молекула C5H5.
Чтобы проверить, является ли молекула нормальной (единой), у меня выполняется как бы два вложенных цикла. Итого для N атомов общее время алгоритма пропорционально (2^N)*(N^2). Для больших молекул это много. Как ускорить алгоритм?
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Отредактировано 10.06.2024 16:22 Khimik . Предыдущая версия . Еще …
Отредактировано 10.06.2024 16:22 Khimik . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.