У меня возникла такая задача: определить в молекуле все циклы (точнее, ароматические циклы). Молекула – это набор атомов с декартовыми координатами и связей между ними. Например в этой молекуле два цикла по 6 атомов:
В этой молекуле четыре цикла по 6 атомов; если в ней удалить два центральных атома, останется один большой цикл из 14 атомов:
Я корпел несколько недель над алгоритмом, и то он получился несовершенным. А вы могли бы быстро что-то придумать?
Когда я писал этот алгоритм, возникли такие мысли. С одной стороны, достаточно мельком взглянуть на молекулу и сразу видно, где в ней циклы. В то же время формализовать это “видно” – задача на порядки более трудная. Судя по всему, понимание – штука сложная и понимание бывает на разных уровнях: одно дело – когда смотришь на молекулу и сразу понятно где в ней циклы, а другое дело – когда понятно с точки зрения алгоритма, что такое цикл и как его распознать.
Полагаю, такие же мысли приходят в голову разработчикам переводчиков. Когда мы видим текст на языке который мы знаем, нам он понятен и мы можем перевести его на другой язык; но в то же время формализовать это “понятно”, написать алгоритм который переводит текст – задача неимоверно сложная, особенно если не использовать нейросети.
Возникает вопрос: можно ли разработать эвристические приёмы, которые переводят “интуитивно-понятное” в “формализованно-понятное”? Например большой список универсальных вопросов.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.