Если бы вы еще изложили то, откуда возникла эта задача, возможно, было бы полезнее. Количество правильных многогранников в пространстве размерности
конечно, как следствие, для произвольной пары
задача решения не имеет (что, собственно, уже писали ранее), однако есть подозрение, что вам на самом деле это и не нужно - подобная задача часто возникает в ситуациях, когда критерии "равномерности" можно существенно смягчить (или вообще поменять).
Попробую объяснить
но в двух словах не получится)
Недавно заболел нейросетями — пока просто скачиваю разные репозитории с гитхаба и играюсь с ними, не вдаваясь в теорию.
Нашел в частности "Progressive growing of gans" (авторы — из Nvidia).
Они взяли большой датасет с лицами знаменитостей (celebA) и создали нейросеть, которая генерирует новые лица, и многие из них очень сложно отличить от реальных. По крайней мере в плане генерации лица, я больше нигде не встречал программы с такой же реалистичностью.
Впечатляет. И в перспективе может быть полезно как минимум, например, для создания реалистичных 3D игр.
То есть, есть модель нейросети, pkl файл.
Ее можно запускать в Python'е и генерировать лица. Можно рандомно, а можно вбить конкретное значение из всех возможных для данной сети.
Я нашел в коде переменную-вектор, которая отвечает за выбор лица из всего пространства лиц. Этот вектор — массив с количеством чисел 512.
Затем заметил, что если например менять одно из 512 чисел небольшими шагами, то одно лицо плавно переходит в другое.
И у меня просто для интереса появилось желание
просмотреть весь диапазон вариантов в общих чертах.
Одна из причин — просто хочется проверить, действительно ли так многообразна эта сеть и не потеряла ли она в результате тренировки чего-нибудь полезного (полагаю, что всё-таки потеряла)
То есть у меня есть небольшой набор разных типов лиц, на которых эта сеть обучалась. Если я не найду похожих лиц среди генерируемых, то это не будет хорошим знаком.
А если найду и останусь доволен многообразием вариантов, то, возможно, возьму архитектуру этой сети в качестве основы и буду тренировать свои датасеты на ней.
То есть очевидно, что все варианты лиц просматривать нереально долго, поэтому было выбрано решение двигаться с определенным шагом, по возможности равномерно.
И вот я здесь)
А дальше уже стало понятно — чтобы решить мою задачу, мне надо определенное число таких векторов, которые будут распределены как-то равномерно.
И если, например, мне понравился определенный тип лица у данного вектора и я хочу добавить такого персонажа в свою игру, то очень вероятно рядом с этим вектором есть еще множество векторов, которые тоже соответствуют моим предпочтениям.
И тогда достаточно просто "увеличить разрешение сетки"
То есть если было 1000 равномерно распределенных векторов, то заменяем их например на 100000, а затем перебираем лица только из той области, в которой на предыдущем разрешении был найден устраивающий нас вектор.
Точно так же поступают например, при создании скульптуры в Z-Brush — хорошим тоном считается "лепить" сначала в низкополигональной сетке, а потом оттачивать более мелкие детали, постепенно увеличивая разрешение сетки, при этом изначально отсекая огромное количество заведомо неприемлемых вариантов.
Нейросеть с лицами — только один из примеров. Владея этим алгоритмом, можно использовать его для всех подобных сетей.
Возможно уже есть какое-то готовое решение, думаю стоит задать вопрос программистам.