From b8116d93868855d5a2ce01c14632d571ed4ec8e5 Mon Sep 17 00:00:00 2001 From: Stefan Huber Date: Mon, 24 Nov 2014 18:54:15 +0100 Subject: [PATCH] Add simplicial_complex::randomize_order() --- include/libstick-0.1/simplicialcomplex.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/include/libstick-0.1/simplicialcomplex.h b/include/libstick-0.1/simplicialcomplex.h index e83daa4..849bb22 100644 --- a/include/libstick-0.1/simplicialcomplex.h +++ b/include/libstick-0.1/simplicialcomplex.h @@ -149,13 +149,22 @@ class simplicial_complex { 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()); -- 2.30.2