如何判断两个3D对称图在python中是否相同?

时间:2019-04-25 12:41:53

标签: python coordinates networkx symmetric isomorphism

我有两个3D图,其中包含3D图上各点的坐标以及这些点之间的连接。现在我要判断它们是否相同。所谓“相同”意味着它们在不同坐标空间中的不同点之间具有相同的连通性和相同的距离。

首先,我用连接数据创建了2D图形,然后在networkx中使用同构算法来确定两个图形是否同构。如果2D图是同构的,我将使用坐标数据来计算图中两点之间的距离,以确定3D图是否相同。

现在出现了问题:我发现,当3D图形在旋转和平移后相对于一个平面对称时,该算法认为两个图形仍然相同。我应该怎么处理这种情况?

以下是一些数据示例:

 Graph1
 A                -3.64950879    3.09461182    0.00000000
 B                -3.29285437    2.08580182    0.00000000
 C                -3.01283111    3.99498616    1.55950876
 D                -5.40950879    3.09463351    0.00000000
 E                -3.19950100    3.73100206   -1.10227059

connections:A-B A-C A-D A-E


Graph2
 A                -3.35227281    2.97727268    0.00000000
 B                -4.42227281    2.97728587    0.00000000
 D                -2.76559599    3.80693700   -1.43703425
 C                -2.71562799    1.17649969    0.00000000
 E                -2.90226502    3.61366292    1.10227059

connections:A-B A-C A-D A-E

(A \ B \ C \ D \ E是带有不同标签的点)

示例数据中的Graph1和Graph2是镜像对称的,应该是不同的,但是由于两个图中的EB,AC,AD,AE和其他点具有相同的欧几里德距离,因此我的程序会判断两个图一样。 (我更改了描述)

0 个答案:

没有答案