Clear["Global`*"]
add[list_, n_] := Module[{data},
data = First /@ Select[Tally@Flatten[list], Last
@# < 4 &];
Append[list, {#, n}] & /@ data
];
AddOneCarbon[lists_, n_] := add[#, n] & /@ lists;
toGraph := Graph@(UndirectedEdge
@@@ #) &;
deleteIsomorphic[list_] :=
DeleteDuplicates[list, IsomorphicGraphQ[toGraph@#1, toGraph@#2] &];
all[2] = {{{1, 2}}};
all[n_?(# > 2 &)] :=
all[n] = deleteIsomorphic@Flatten[AddOneCarbon[all[n - 1], n], 1];
Flatten@{#, Reverse@Timing[Length@all@#]} & /@ Range[4, 10] // TableForm
暴力枚举法。
{{1,2},{2,3}}表示1号C原子连接到2号碳原子,2号碳原子连接到3号碳原子。
数据与oeis相同。但是你要求的时树状的,所以应该再加个判断是否是环状的条件。
n>10的时候时间就不行了。