Итак, проблема равномерного распределения точек решается с помощью некоторых хорошо известных алгоритмов (Хаммерсли, Монте-Карло и т. Д.). Однако моя ситуация немного отличается: допустим, у меня есть набор a значений (2, 8, 1, 5, 4, 7, 3, 6). Эти значения доступны последовательно по индексу (начиная с 2). Если они отображаются на оси x (по схеме доступа, т. Е. В 0 - 2, в 1 - 8), я должен найти соответствующее значение y, такое, что:
- весь набор точек (рассматриваемые координаты x и y) не последовательность с низким расхождением;
- любая пара значений x (входной набор) должна иметь соответствующие значения y с максимальным расстоянием между ними;
Результатом является другой набор b со смешанными целыми [1..8] в качестве первого, поэтому каждый кортеж (ai, bi) следует двум приведенным выше правилам.
Подводя итог: у меня есть распределение по одной оси (независимо от того, какая), и мне нужно найти распределение по другой, чтобы последовательные точки при обращении находились далеко друг от друга, но в целом, образуя равномерное распределение на всей площади.
Пример дела
Учитывая входной набор из 4 элементов (3,1,4,2), хорошим набором результатов является (слияние xy): ((3,1), (1,4), (4,2), ( 2,3)) и это хорошо, потому что когда вы получаете доступ к точкам (от 3,1 до конца), с каждой новой точкой вы делаете большой скачок по обеим осям, что является целью с общим равным распределением. Плохой результат для того же входного набора: ((3,1), (1,2), (4,3), (2,4)), так как теперь мы получаем доступ к значениям y последовательно (хотя значения x в порядке) .
Все это необходимо для заполнения предварительно вычисленной таблицы, которая будет использоваться для выборки, поэтому скорость любого возможного алгоритма не имеет значения (если, конечно, это не займет 2 года). Любая помощь приветствуется.
Спасибо