IndependenceSplitter.h
Go to the documentation of this file.
/* Frobby: Software for monomial ideal computations.
Copyright (C) 2007 Bjarke Hammersholt Roune (www.broune.com)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
*/
#ifndef INDEPENDENCE_SPLITTER_GUARD
#define INDEPENDENCE_SPLITTER_GUARD
#include "Partition.h"
#include "Projection.h"
#include "Ideal.h"
#include <vector>
#include "MsmSlice.h"
class Ideal;
class Term;
class IndependenceSplitter {
public:
// Returns true if there are independent subsets of variables. The
// other methods should only be called when the most recent call to
// analyze returned true.
bool analyze(const Slice& slice);
size_t getVarCount() const;
size_t getOneVarCount() const {return _oneVarCount;}
size_t getTwoVarCount() const {return _twoVarCount;}
size_t getMoreThanTwoCount() const {return _moreThanTwoVarCount;}
// Get the projection to the biggest independent subset of variables.
void getBigProjection(Projection& projection) const;
// Get the projection to the rest of the variables.
void getRestProjection(Projection& projection) const;
private:
Partition _partition;
size_t _oneVarCount;
size_t _twoVarCount;
size_t _moreThanTwoVarCount;
size_t _bigSet;
};
#endif
Ideal.h
MsmSlice.h
Partition.h
Projection.h
Ideal
Represents a monomial ideal with int exponents.
Definition Ideal.h:27
IndependenceSplitter
Definition IndependenceSplitter.h:29
IndependenceSplitter::_bigSet
size_t _bigSet
Definition IndependenceSplitter.h:55
IndependenceSplitter::getRestProjection
void getRestProjection(Projection &projection) const
Definition IndependenceSplitter.cpp:28
IndependenceSplitter::getVarCount
size_t getVarCount() const
Definition IndependenceSplitter.cpp:97
IndependenceSplitter::getOneVarCount
size_t getOneVarCount() const
Definition IndependenceSplitter.h:38
IndependenceSplitter::_partition
Partition _partition
Definition IndependenceSplitter.h:49
IndependenceSplitter::_oneVarCount
size_t _oneVarCount
Definition IndependenceSplitter.h:51
IndependenceSplitter::getTwoVarCount
size_t getTwoVarCount() const
Definition IndependenceSplitter.h:39
IndependenceSplitter::getBigProjection
void getBigProjection(Projection &projection) const
Definition IndependenceSplitter.cpp:24
IndependenceSplitter::getMoreThanTwoCount
size_t getMoreThanTwoCount() const
Definition IndependenceSplitter.h:40
IndependenceSplitter::analyze
bool analyze(const Slice &slice)
Definition IndependenceSplitter.cpp:32
IndependenceSplitter::_twoVarCount
size_t _twoVarCount
Definition IndependenceSplitter.h:52
IndependenceSplitter::_moreThanTwoVarCount
size_t _moreThanTwoVarCount
Definition IndependenceSplitter.h:53
Partition
Definition Partition.h:20
Projection
Definition Projection.h:29
Slice
This class represents a slice, which is the central data structure of the Slice Algorithm.
Definition Slice.h:77
Term
Term represents a product of variables which does not include a coefficient.
Definition Term.h:49