2016-04-24 15 views
5

Un alcano alifatico n-carbonio è un albero senza radici costituito da n nodi in cui il grado di ciascun nodo è maggiore 4. Ad esempio, see this per un elenco dell'enumerazione di alcuni valori bassi di n.Conteggio di alcani alifatici isomeri e n-carbonio

Sto cercando un algoritmo per calcolare il numero di tali alcani alifatici n-carbonio, dato un n.

Ho già seen this in stackexchange di chimica. Ho anche pensato alla programmazione dinamica, cioè alla costruzione di grafici più grandi da componenti più piccoli, ma non riesco a gestire il conteggio degli stessi isomeri.

Precisazione: I Carboni sono solo una metafora. Non desidero prendere in considerazione l'instabilità di C16 e C17, né mi preoccupo degli stereoisomeri

+0

Questo è un problema di algoritmo molto interessante. Ma qui c'è un elemento che farà scendere la votazione della tua domanda perché non riguarda direttamente il codice e non hai fatto molto per spiegare ciò che hai già provato. Dovresti considerare anche lo scambio di matematica. – Gene

+0

@Gene Non si tratta di codice ma di algoritmi. Ho pensato che le domande sugli algoritmi sono accettabili in StackOverflow. Pensi che mi piacerebbe spostarlo in cs.stackexchange? –

+2

Sono d'accordo con te che gli algoritmi hanno un (grande) posto qui. Solo dicendo che di recente sembra esserci una tendenza al solo voto dell'algoritmo che non include il codice. Guarda cosa succede. Pubblicherò qualcosa se riesco a trovare una risposta utile. – Gene

risposta

3

Quindi l'approccio standard è usare il Redfield–Pólya Theorem noto anche come teorema di enumerazione di Pólya. Tuttavia non è molto 'algoritmico' - hai il codice like this (Mathematica, Haskell o una delle versioni di Python).

La pagina rosettacode descrive anche un approccio più diretto utilizzando canonical checking per evitare duplicati. L'algoritmo è una forma specializzata di generazione ordinata (credo) che funziona solo per gli alberi senza vertice di colori dei bordi e una valenza massima di 4.