Допустим, у меня есть набор чисел от [0, , 499] . Комбинации в настоящее время генерируются последовательно с использованием C++ std::next_permutation . Для справки, размер каждого кортежа, который я вытаскиваю, равен 3, поэтому я возвращаю последовательные результаты, такие как [0,1,2], [0,1,3], [0,1,4], ... [497,498,499] .
Теперь я хочу распараллелить код, в котором это находится, так что последовательная генерация этих комбинаций больше не будет работать. Существуют ли какие-либо существующие алгоритмы для вычисления комбинации ith из 3 из 500 чисел?
Я хочу убедиться, что каждый поток, независимо от итераций цикла, который он получает, может вычислить автономную комбинацию, основанную на i , с которым он итерирует. Поэтому, если мне нужна комбинация для i=38 в потоке 1, я могу вычислить [1,2,5] , одновременно вычисляя i=0 в потоке 2 как [0,1,2] .
Допустим, у меня есть набор чисел от [0, , 499] . Комбинации в настоящее время генерируются последовательно с использованием C++ std::next_permutation . Для справки, размер каждого кортежа, который я вытаскиваю, равен 3, поэтому я возвращаю последовательные результаты, такие как [0,1,2], [0,1,3], [0,1,4], ... [497,498,499] .
Теперь я хочу распараллелить код, в котором это находится, так что последовательная генерация этих комбинаций больше не будет работать. Существуют ли какие-либо существующие алгоритмы для вычисления комбинации ith из 3 из 500 чисел?
Я хочу убедиться, что каждый поток, независимо от итераций цикла, который он получает, может вычислить автономную комбинацию, основанную на i , с которым он итерирует. Поэтому, если мне нужна комбинация для i=38 в потоке 1, я могу вычислить [1,2,5] , одновременно вычисляя i=0 в потоке 2 как [0,1,2] .
Объяснение:вроде оно