我实际上是一种cif格式的分子。我不认为这种格式非常重要,而是为那些感兴趣的人提供。这个文件里面有很多数据。最重要的是(因为这部分文件实际上将分子描述为图形)是这一部分:
017 N1 C2 SING N N 1
017 N1 H11 SING N N 2
017 N1 H12 SING N N 3
017 C2 C3 DOUB Y N 4
017 C2 C7 SING Y N 5
017 C3 C4 SING Y N 6
这不是整个文件,只是一个例子。该分子可含有许多环状结构。芳香的我可以通过6列中的Y标志来定义。但也有其他周期,可以是安静的不同:或类似于或类似:。甚至是这样的:
我需要的是以这样的方式提取所有周期,如果两个周期共享键,就像在第一个例子中那样,它们被认为是一个周期。 Tarjan的算法在这里不起作用,因为它只运行一次每个节点。那我该怎么办呢? 请提供尽可能详细的信息。我对OpenBabel等库并不是很感兴趣,因为我要在Swift中编写这个东西并使用cif文件中的图形描述。