permlib
0.2.9
Library for permutation computations
Toggle main menu visibility
Loading...
Searching...
No Matches
include
permlib
construct
cyclic_group_construction.h
1
// ---------------------------------------------------------------------------
2
//
3
// This file is part of PermLib.
4
//
5
// Copyright (c) 2009-2011 Thomas Rehn <thomas@carmen76.de>
6
// All rights reserved.
7
//
8
// Redistribution and use in source and binary forms, with or without
9
// modification, are permitted provided that the following conditions
10
// are met:
11
// 1. Redistributions of source code must retain the above copyright
12
// notice, this list of conditions and the following disclaimer.
13
// 2. Redistributions in binary form must reproduce the above copyright
14
// notice, this list of conditions and the following disclaimer in the
15
// documentation and/or other materials provided with the distribution.
16
// 3. The name of the author may not be used to endorse or promote products
17
// derived from this software without specific prior written permission.
18
//
19
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22
// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24
// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
//
30
// ---------------------------------------------------------------------------
31
32
33
#ifndef CYCLIC_GROUP_CONSTRUCTION_H_
34
#define CYCLIC_GROUP_CONSTRUCTION_H_
35
36
#include <permlib/construct/known_bsgs_construction.h>
37
38
namespace
permlib {
39
41
template
<
class
TRANS>
42
class
CyclicGroupConstruction
:
public
KnownBSGSConstruction
<typename TRANS::PERMtype, TRANS> {
43
public
:
45
48
CyclicGroupConstruction
(
unsigned
int
n);
49
51
BSGS<typename TRANS::PERMtype, TRANS>
construct
()
const
;
52
};
53
54
//
55
// ---- IMPLEMENTATION
56
//
57
58
template
<
class
TRANS>
59
CyclicGroupConstruction<TRANS>::CyclicGroupConstruction
(
unsigned
int
n)
60
:
KnownBSGSConstruction
<typename
TRANS
::PERMtype,
TRANS
>(n)
61
{ }
62
63
64
template
<
class
TRANS>
65
BSGS<typename TRANS::PERMtype, TRANS>
CyclicGroupConstruction<TRANS>
66
::construct
()
const
67
{
68
typedef
typename
TRANS::PERMtype
PERM
;
69
const
unsigned
int
&n = this->
m_n
;
70
typename
PERM::perm genPerm(n);
71
for
(
unsigned
int
i = 0; i < n; ++i)
72
genPerm[i] = (i + 1) % n;
73
std::list<typename PERM::ptr> cyclicGenerators;
74
cyclicGenerators.push_back(
typename
PERM::ptr(
new
PERM
(genPerm)));
75
const
dom_int knownBase[1] = { 0 };
76
77
return
KnownBSGSConstruction<PERM, TRANS>::construct
(cyclicGenerators.begin(), cyclicGenerators.end(), knownBase, knownBase + 1);
78
}
79
80
}
81
82
#endif
// -- KNOWNBSGSCONSTRUCTION_H_
permlib::BaseConstruction< TRANS::PERMtype, TRANS >::m_n
dom_int m_n
Definition
base_construction.h:55
permlib::TRANS
permlib::CyclicGroupConstruction
BSGS construction for a cyclic group of given order.
Definition
cyclic_group_construction.h:42
permlib::CyclicGroupConstruction::CyclicGroupConstruction
CyclicGroupConstruction(unsigned int n)
constructor
Definition
cyclic_group_construction.h:59
permlib::CyclicGroupConstruction::construct
BSGS< typename TRANS::PERMtype, TRANS > construct() const
sets up a BSGS data structure for a cyclic group
Definition
cyclic_group_construction.h:66
permlib::KnownBSGSConstruction::construct
BSGS< PERM, TRANS > construct(ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, InputIterator knownBaseBegin, InputIterator knownBaseEnd) const
sets up a BSGS data structure for a known base and strong generating set
Definition
known_bsgs_construction.h:75
permlib::KnownBSGSConstruction< TRANS::PERMtype, TRANS >::KnownBSGSConstruction
KnownBSGSConstruction(unsigned int n)
Definition
known_bsgs_construction.h:67
permlib::BSGS
Represents a base and strong generating set (BSGS).
Definition
bsgs.h:89
Generated on
for permlib by
1.17.0