Я пытаюсь вычислить n-куб по субкоду C. Например, для куба 3 я бы вычислил субкод (0,0,0), (0,0,1).Другими словами, я хочу взять точки / вершины моего куба, и если они отличаются на 001 (я работаю в двоичном коде, поэтому, если я могу добавить 001 к вершине и получить другую), то я рассматриваю эти точки как одинаковыевершина моего нового фактор-пространства.Например, если бы у меня были точки 110 и 111, поскольку я могу добавить 001 к 110 и получить 111, я бы отнесся к 111 и 110 как к эквивалентным, и они были бы представлены точкой 110 в моем новом пространстве.Я пытаюсь сделать это вообще для любого куба в n-м измерении, но я не уверен, как начать это.
У меня есть код для моего 3-куба:
def dist(u,v):
h = [(u[i]+v[i])%2 for i in range(len(u))]
return sum(h)
def cube(n):
G = Graph(2**n)
vertices = Tuples([0,1],n)
for i in range(2**n):
for j in range(2**n):
if dist(vertices[i],vertices[j]) == 1:
G.add_edge(i,j)
return G
cube(3).plot()
Я пытался использовать алгоритм quotient_graph, но я застрял на том, как определить node_relation иedge_relation.