Сообщение Re[3]: Перевод понимания из интуиции в логику от 22.11.2020 15:52
Изменено 22.11.2020 15:53 xma
Re[3]: Перевод понимания из интуиции в логику
Здравствуйте, Khimik, Вы писали:
K>Дело в том что я упростил задачу — предложил определять вообще любые циклы. Такого вещества с 14-членным циклом конечно не существует, а вообще ароматические циклы могут быть разных размеров, например в азулене есть два смежных цикла из 5 и 7 атомов.
короче, если считать что в молекулах циклы разноколичественные могут быть (образовывая в т.ч. и произвольные невыпуклые многоугольники из атомов) и быть при этом составе сот, то алгоритм следующий :
1) отбраковываем все атомы имеющие не более одной связи, а также направления из других атомов — которые к ним (одиночным атомам) ведут
2) проходим по каждому оставшемуся атому в массиве,
2.1) находим для текущего атома — все циклы в которые он входит, сохраняя для каждого атома (этих циклов) — полный список всех индексов входящих в них атомов
3) по новой проходим по атомам в массиве (исключая атомы из п.1.),
3.1) и проверяем количество и совпадение номеров атомов (в любом порядке) для полученных циклов из п.2.1 — и когда если эти данные совпадают, то сохраняем эти данные (каждый раз — с новым нормальным индексом цикла, а старые данные удаляем)
вуаля !!
п.2.1.1) находить циклы при этом придётся отсечением тех многоугольников (возможно и невыпуклых) где внутри есть другие атомы, по координатам .. (другого решения сходу не видать — разве что нейросети смогли бы как то обобщить решение/поиск , но по мне так — это не особо и надёжно)
на самом деле — на словах мне кажется понять тоже не просто, но если человек — не понимает ни на словах ни на C/C++, то сложно представить как ему это вообще объяснять можно ..
дискасс ?
K>Дело в том что я упростил задачу — предложил определять вообще любые циклы. Такого вещества с 14-членным циклом конечно не существует, а вообще ароматические циклы могут быть разных размеров, например в азулене есть два смежных цикла из 5 и 7 атомов.
короче, если считать что в молекулах циклы разноколичественные могут быть (образовывая в т.ч. и произвольные невыпуклые многоугольники из атомов) и быть при этом составе сот, то алгоритм следующий :
1) отбраковываем все атомы имеющие не более одной связи, а также направления из других атомов — которые к ним (одиночным атомам) ведут
2) проходим по каждому оставшемуся атому в массиве,
2.1) находим для текущего атома — все циклы в которые он входит, сохраняя для каждого атома (этих циклов) — полный список всех индексов входящих в них атомов
3) по новой проходим по атомам в массиве (исключая атомы из п.1.),
3.1) и проверяем количество и совпадение номеров атомов (в любом порядке) для полученных циклов из п.2.1 — и когда если эти данные совпадают, то сохраняем эти данные (каждый раз — с новым нормальным индексом цикла, а старые данные удаляем)
вуаля !!
п.2.1.1) находить циклы при этом придётся отсечением тех многоугольников (возможно и невыпуклых) где внутри есть другие атомы, по координатам .. (другого решения сходу не видать — разве что нейросети смогли бы как то обобщить решение/поиск , но по мне так — это не особо и надёжно)
на самом деле — на словах мне кажется понять тоже не просто, но если человек — не понимает ни на словах ни на C/C++, то сложно представить как ему это вообще объяснять можно ..
дискасс ?
Re[3]: Перевод понимания из интуиции в логику
Здравствуйте, Khimik, Вы писали:
K>Дело в том что я упростил задачу — предложил определять вообще любые циклы. Такого вещества с 14-членным циклом конечно не существует, а вообще ароматические циклы могут быть разных размеров, например в азулене есть два смежных цикла из 5 и 7 атомов.
короче, если считать что в молекулах циклы разноколичественные могут быть (образовывая в т.ч. и произвольные невыпуклые многоугольники из атомов) и быть при этом составе сот, то алгоритм следующий :
1) отбраковываем все атомы имеющие не более одной связи, а также направления из других атомов — которые к ним (одиночным атомам) ведут
2) проходим по каждому оставшемуся атому в массиве,
2.1) находим для текущего атома — все циклы в которые он входит, сохраняя для каждого атома (этих циклов) — полный список всех индексов входящих в них индексов (/номеров) атомов
3) по новой проходим по атомам в массиве (исключая атомы из п.1.),
3.1) и проверяем количество и совпадение номеров атомов (в любом порядке) для полученных циклов из п.2.1 — и когда если эти данные совпадают, то сохраняем эти данные (каждый раз — с новым нормальным индексом цикла, а старые данные удаляем)
вуаля !!
п.2.1.1) находить циклы при этом придётся отсечением тех многоугольников (возможно и невыпуклых) где внутри есть другие атомы, по координатам .. (другого решения сходу не видать — разве что нейросети смогли бы как то обобщить решение/поиск , но по мне так — это не особо и надёжно)
на самом деле — на словах мне кажется понять тоже не просто, но если человек — не понимает ни на словах ни на C/C++, то сложно представить как ему это вообще объяснять можно ..
дискасс ?
K>Дело в том что я упростил задачу — предложил определять вообще любые циклы. Такого вещества с 14-членным циклом конечно не существует, а вообще ароматические циклы могут быть разных размеров, например в азулене есть два смежных цикла из 5 и 7 атомов.
короче, если считать что в молекулах циклы разноколичественные могут быть (образовывая в т.ч. и произвольные невыпуклые многоугольники из атомов) и быть при этом составе сот, то алгоритм следующий :
1) отбраковываем все атомы имеющие не более одной связи, а также направления из других атомов — которые к ним (одиночным атомам) ведут
2) проходим по каждому оставшемуся атому в массиве,
2.1) находим для текущего атома — все циклы в которые он входит, сохраняя для каждого атома (этих циклов) — полный список всех индексов входящих в них индексов (/номеров) атомов
3) по новой проходим по атомам в массиве (исключая атомы из п.1.),
3.1) и проверяем количество и совпадение номеров атомов (в любом порядке) для полученных циклов из п.2.1 — и когда если эти данные совпадают, то сохраняем эти данные (каждый раз — с новым нормальным индексом цикла, а старые данные удаляем)
вуаля !!
п.2.1.1) находить циклы при этом придётся отсечением тех многоугольников (возможно и невыпуклых) где внутри есть другие атомы, по координатам .. (другого решения сходу не видать — разве что нейросети смогли бы как то обобщить решение/поиск , но по мне так — это не особо и надёжно)
на самом деле — на словах мне кажется понять тоже не просто, но если человек — не понимает ни на словах ни на C/C++, то сложно представить как ему это вообще объяснять можно ..
дискасс ?