Denis Koroskin wrote:
On Fri, 13 Feb 2009 19:04:54 +0300, Andrei Alexandrescu <seewebsiteforem...@erdani.org> wrote:

bearophile wrote:
Andrei Alexandrescu>The quest for finding a random cover of an array
with as little extra memory consumed and with good complexity is on!<
  This thread is very long and complex, I am unable to understand where
to start reading, etc. So can someone explain the problem to me, so I
may be able to suggest some idea/code?

Given an array of length m, return a range that iterates the array in random order such that the entire array is visited without going through the same element more than once. Consume minimal amounts of memory and time. Baseline solution: allocate an array of indices, shuffle it, then follow indices stored in the array.


Andrei

In ideal world I'd like to see the following permutations generator in std library, instead:

auto range = [0, 1, 2, 3, 4, 5];
auto perms = permutations(range); // a random-access range that returns lazy permutation generators.
auto permutation = perms[0]; // get first permutation out of range.length!
// auto permutation = perms(uniform(0, perms.length)); // get random permutation

That can be done easily if you settle for forward iteration. The problem is that there are N! permutations of N objects, so reaching any interesting permutation will take a long time.


Andrei

Reply via email to