У меня есть два 3D-графика, которые содержат координаты точек на 3D-графике и связи между точками. Теперь я хочу оценить, являются ли они одинаковыми. Так называемые «одинаковые» означают, что они имеют одинаковую связь и одинаковое расстояние между разными точками в разных координатных пространствах.
Сначала я создал двухмерные графы с данными соединения, а затем использовал изоморфный алгоритм в networkx, чтобы определить, являются ли эти два графа изоморфными. Если 2D-графики являются изоморфизмом, я использую данные координат для вычисления расстояния между двумя точками на графике, чтобы определить, совпадают ли 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 и другие точки на двух фигурах имеют одинаковое евклидово расстояние, моя программа оценивает два графика быть таким же.
(Я изменил свое описание)