permlib
0.2.9
Library for permutation computations
Toggle main menu visibility
Loading...
Searching...
No Matches
include
permlib
construct
known_bsgs_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 KNOWNBSGSCONSTRUCTION_H_
34
#define KNOWNBSGSCONSTRUCTION_H_
35
36
#include <permlib/construct/base_construction.h>
37
#include <permlib/bsgs.h>
38
39
namespace
permlib {
40
42
template
<
class
PERM,
class
TRANS>
43
class
KnownBSGSConstruction
:
public
BaseConstruction
<PERM, TRANS> {
44
public
:
46
49
KnownBSGSConstruction
(
unsigned
int
n);
50
52
58
template
<
class
ForwardIterator,
class
InputIterator>
59
BSGS<PERM, TRANS>
construct
(ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, InputIterator knownBaseBegin, InputIterator knownBaseEnd)
const
;
60
};
61
62
//
63
// ---- IMPLEMENTATION
64
//
65
66
template
<
class
PERM,
class
TRANS>
67
KnownBSGSConstruction<PERM,TRANS>::KnownBSGSConstruction
(
unsigned
int
n)
68
:
BaseConstruction
<
PERM
,
TRANS
>(n)
69
{ }
70
71
72
template
<
class
PERM,
class
TRANS>
73
template
<
class
ForwardIterator,
class
InputIterator>
74
BSGS<PERM, TRANS>
KnownBSGSConstruction<PERM, TRANS>
75
::construct
(ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, InputIterator knownBaseBegin, InputIterator knownBaseEnd)
const
76
{
77
const
unsigned
int
&n = this->
m_n
;
78
BSGS<PERM, TRANS>
ret(n);
79
std::vector<std::list<typename PERM::ptr> > S;
80
this->
setup
(generatorsBegin, generatorsEnd, knownBaseBegin, knownBaseEnd, ret, S);
81
BOOST_ASSERT( S.size() > 0 );
82
// the strong generating set of the group is the
83
// stabilizer of the empty set of the given generators
84
ret.
S
.insert(ret.
S
.end(), S[0].begin(), S[0].end());
85
return
ret;
86
}
87
88
}
89
90
#endif
// -- KNOWNBSGSCONSTRUCTION_H_
permlib::BaseConstruction::BaseConstruction
BaseConstruction(dom_int n)
constructor
Definition
base_construction.h:85
permlib::BaseConstruction::m_n
dom_int m_n
cardinality of the set the group is acting on
Definition
base_construction.h:55
permlib::BaseConstruction::setup
void setup(ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, InputIterator prescribedBaseBegin, InputIterator prescribedBaseEnd, BSGS< PERM, TRANS > &bsgs, std::vector< std::list< typename PERM::ptr > > &S) const
initializes BSGS object
Definition
base_construction.h:91
permlib::PERM
permlib::KnownBSGSConstruction
BSGS construction from a known base and strong generating set.
Definition
known_bsgs_construction.h:43
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::KnownBSGSConstruction
KnownBSGSConstruction(unsigned int n)
constructor
Definition
known_bsgs_construction.h:67
permlib::BSGSCore::S
PERMlist S
strong generating set
Definition
bsgs_core.h:57
permlib::BSGS
Represents a base and strong generating set (BSGS).
Definition
bsgs.h:89
Generated on
for permlib by
1.17.0