2016-04-24 9 views
5

n-carbon алифатический алкан - это нетронутое дерево, состоящее из n узлов, где степень каждого узла составляет самое большое 4. Например, see this для списка перечислений некоторых низких значений п.Подсчет изомерных n-углеродных алифатических алканов

Я ищу алгоритм для вычисления числа таких n-углеродных алифатических алканов с учетом n.

У меня есть seen this в химии stackexchange уже. Я также подумал о динамическом программировании, т. Е. Построении больших графиков из меньших компонентов, но я не могу справиться с перечитанием одних и тех же изомеров.

Уточнение: Углеводы - это всего лишь метафора. Я не хочу учитывать неустойчивость C16 и C17, и мне не нужны стереоизомеры.

+0

Это очень крутая проблема с алгоритмом. Но здесь есть элемент, который будет проголосовать за ваш вопрос, потому что это не касается непосредственно кода, и вы не много сделали, чтобы объяснить, что вы уже пробовали. Вы должны также рассмотреть математический обмен. – Gene

+0

@Gene Это не о коде, а об алгоритмах. Я думал, что вопросы алгоритма приемлемы в StackOverflow. Как вы думаете, я бы выиграл, переместив это на cs.stackexchange? –

+2

Я согласен с вами в том, что алгоритмы имеют (большое) место здесь. Просто сказать, что в последнее время кажется, что это тенденция к алгоритму с правом голоса - только вопросы, которые не включают код. Посмотрите, что произойдет. Я отправлю что-нибудь, если я смогу придумать полезный ответ. – Gene

ответ

3

Таким образом, стандартный подход заключается в использовании Redfield–Pólya Theorem, также известного как теорема перечисления Pólya. Однако это не очень «алгоритмический» - у вас есть код like this (Mathematica, Haskell или одна из версий Python).

Страница rosettacode также описывает более прямой подход, используя canonical checking, чтобы избежать дублирования. Алгоритм является специализированной формой упорядоченного поколения (я думаю), который работает только для деревьев без вершин краев и максимальной валентности 4.

 Смежные вопросы

  • Нет связанных вопросов^_^