From: Stefan Huber Date: Mon, 24 Nov 2014 17:54:15 +0000 (+0100) Subject: Add simplicial_complex::randomize_order() X-Git-Tag: v0.1~3 X-Git-Url: https://git.sthu.org/?a=commitdiff_plain;h=b8116d93868855d5a2ce01c14632d571ed4ec8e5;p=libstick.git Add simplicial_complex::randomize_order() --- 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());