#include <iostream>
-#include <libstick-0.1/booleanmatrix.h>
+#include "booleanmatrix.h"
namespace libstick {
class simplex_order {
public:
- typedef boolean_colrowmatrix<IT> boundary_matrix;
+ typedef boolean_colmatrix<IT> boundary_matrix;
/** Create a standard order of the complex c, i.e., the identity permutation. */
simplex_order(const simplcompltype &c) :
return c.simplices[order.at(i)];
}
+ const simplcompltype& get_complex() const {
+ return c;
+ }
+
/** Returns true iff the faces of simplex i are before i in this order. */
bool is_filtration() const {
assert(size() == c.size());
return is_filtration();
}
+ /** Randomize order. It has hardly any impact on runtime, but
+ * it makes cycles "nicer" when the simplice's function values
+ * are constant.
+ * */
+ void randomize_order() {
+ std::random_shuffle(order.begin(), order.end());
+ restore_revorder_from_order();
+ }
+
/** Sort simplices such that is_monotone() gives true. This
* requires that the complex's is_monotone() gave true
* beforehand.*/
void make_monotone_filtration() {
assert(c.is_monotone());
- sort(order.begin(), order.end(), cmp_monotone_filtration(c));
+ std::sort(order.begin(), order.end(), cmp_monotone_filtration(c));
restore_revorder_from_order();
assert(c.is_monotone());
add_simplex(simplex::create_minusonedim_simplex());
}
+ /** Remove all simplices except the dummy simplex */
+ void clear() {
+ simplices.resize(1);
+ }
+
/** Return number of simplices. */
size_t size() const {
return simplices.size();