本文整理汇总了Python中sage.graphs.graph.Graph.automorphism_group方法的典型用法代码示例。如果您正苦于以下问题:Python Graph.automorphism_group方法的具体用法?Python Graph.automorphism_group怎么用?Python Graph.automorphism_group使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sage.graphs.graph.Graph
的用法示例。
在下文中一共展示了Graph.automorphism_group方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: restricted_automorphism_group
# 需要导入模块: from sage.graphs.graph import Graph [as 别名]
# 或者: from sage.graphs.graph.Graph import automorphism_group [as 别名]
def restricted_automorphism_group(self, vertex_labels=None):
r"""
Return the restricted automorphism group.
First, let the linear automorphism group be the subgroup of
the Euclidean group `E(d) = GL(d,\RR) \ltimes \RR^d`
preserving the `d`-dimensional polyhedron. The Euclidean group
acts in the usual way `\vec{x}\mapsto A\vec{x}+b` on the
ambient space. The restricted automorphism group is the
subgroup of the linear automorphism group generated by
permutations of vertices. If the polytope is full-dimensional,
it is equal to the full (unrestricted) automorphism group.
INPUT:
- ``vertex_labels`` -- a tuple or ``None`` (default). The
labels of the vertices that will be used in the output
permutation group. By default, the vertices are used
themselves.
OUTPUT:
A
:class:`PermutationGroup<sage.groups.perm_gps.permgroup.PermutationGroup_generic>`
acting on the vertices (or the ``vertex_labels``, if
specified).
REFERENCES:
[BSS2009]_
EXAMPLES::
sage: from sage.geometry.polyhedron.ppl_lattice_polytope import LatticePolytope_PPL
sage: Z3square = LatticePolytope_PPL((0,0), (1,2), (2,1), (3,3))
sage: Z3square.restricted_automorphism_group(vertex_labels=(1,2,3,4))
Permutation Group with generators [(2,3), (1,2)(3,4), (1,4)]
sage: G = Z3square.restricted_automorphism_group(); G
Permutation Group with generators [((1,2),(2,1)),
((0,0),(1,2))((2,1),(3,3)), ((0,0),(3,3))]
sage: tuple(G.domain()) == Z3square.vertices()
True
sage: G.orbit(Z3square.vertices()[0])
((0, 0), (1, 2), (3, 3), (2, 1))
sage: cell24 = LatticePolytope_PPL(
....: (1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,0,1),(1,-1,-1,1),(0,0,-1,1),
....: (0,-1,0,1),(-1,0,0,1),(1,0,0,-1),(0,1,0,-1),(0,0,1,-1),(-1,1,1,-1),
....: (1,-1,-1,0),(0,0,-1,0),(0,-1,0,0),(-1,0,0,0),(1,-1,0,0),(1,0,-1,0),
....: (0,1,1,-1),(-1,1,1,0),(-1,1,0,0),(-1,0,1,0),(0,-1,-1,1),(0,0,0,-1))
sage: cell24.restricted_automorphism_group().cardinality()
1152
"""
if not self.is_full_dimensional():
return self.affine_lattice_polytope().\
restricted_automorphism_group(vertex_labels=vertex_labels)
if vertex_labels is None:
vertex_labels = self.vertices()
from sage.groups.perm_gps.permgroup import PermutationGroup
from sage.graphs.graph import Graph
# good coordinates for the vertices
v_list = []
for v in self.minimized_generators():
assert v.divisor().is_one()
v_coords = (1,) + v.coefficients()
v_list.append(vector(v_coords))
# Finally, construct the graph
Qinv = sum( v.column() * v.row() for v in v_list ).inverse()
G = Graph()
for i in range(0,len(v_list)):
for j in range(i+1,len(v_list)):
v_i = v_list[i]
v_j = v_list[j]
G.add_edge(vertex_labels[i], vertex_labels[j], v_i * Qinv * v_j)
return G.automorphism_group(edge_labels=True)