C++ Генерация и сохранение координат n-куба

Я хочу написать функцию для генерации и хранения координат n-куба, и я понятия не имею, с чего начать. В частности, я хочу сгенерировать координаты для равномерно или случайным образом распределенного облака точек для этого n-куба и сохранить их. Что было бы хорошим способом начать с этого или, если возможно, быстрого решения?


person Ben    schedule 18.06.2010    source источник
comment
И что мотивирует вас написать эту функцию? Случайно не домашнее задание?   -  person    schedule 18.06.2010
comment
Что понимаете вы в этой проблеме? Кроме того, какие ограничения, если они были наложены на вас, и какие ограничения вы можете просто выбрать? Например, вы можете произвольно решить выровнять предмет в системе координат, тогда это станет очень просто...   -  person dmckee --- ex-moderator kitten    schedule 18.06.2010
comment
Если это домашнее задание, пожалуйста, отметьте его соответствующим образом.   -  person Francesco    schedule 18.06.2010
comment
Возможный обман/соответствие: stackoverflow.com/questions/3070425 /c-функция-вызов-себя/   -  person rubenvb    schedule 18.06.2010
comment
@ Нил Баттерворт Ты тоже так думал в прошлый раз. Возможно, мне просто любопытно и нравится исследовать новые математические концепции, и у меня будет невинный мотив. Он не помечен ненадлежащим образом. РЕДАКТИРОВАТЬ: Кроме того. Какой-нибудь запутавшийся учитель задал бы такую ​​бесполезную хрень в качестве домашнего задания. Создание конкретных решений было бы достаточно практически для любого приложения. Это мой программный эквивалент доказательства, общее решение.   -  person Ben    schedule 18.06.2010
comment
@Ben Нет, так как я редактировал теги. Однако это не сайт математических концепций.   -  person    schedule 18.06.2010
comment
@Ben: Нейл озабочен не тем, что домашние задания — это плохо. Они в порядке. Это связано с тем, что педагогические вопросы должны рассматриваться несколько иначе, чем другие: они требуют как подхода обучения рыбе, так и исследования всех вариантов. Это сильно отличается от того, что я пытаюсь сделать это. вопрос. Я пытаюсь узнать что-то новое и застрял здесь... в значительной степени находится в той же лодке, что и формальное домашнее задание.   -  person dmckee --- ex-moderator kitten    schedule 18.06.2010
comment
@Neil Butterworth Однако я бы не согласился с тем, что это вопрос о том, как реализовать математическую концепцию в программировании, отсюда и тег c ++. В частности, о структуре данных C++ для хранения объекта переменного размера в удобном для доступа и понятном виде, а также о том, как сгенерировать координаты для этого объекта с помощью C++ и заполнить структуру, используемую для его хранения.   -  person Ben    schedule 18.06.2010
comment
@dmckee Мне бы понравилось видеть решение не только само по себе, но и для побуждения к дальнейшим размышлениям и исследованиям того, почему и как оно было реализовано таким образом, и какими другими способами оно могло быть реализовано. Даже почему они были отброшены по текущему методу. Я вижу достоинство в том, чтобы создать собственное решение, не видя чужой работы.   -  person Ben    schedule 18.06.2010
comment
@Ben Так вот почему ты только что принял ответ, который не охватывает ни одну из этих вещей?   -  person    schedule 18.06.2010


Ответы (1)


Я не хочу приводить исходный код C++ для этой задачи, однако вот мысль, как вы могли бы его сгенерировать.

Гиперкуб содержит все битовые строки длины n. Таким образом, всего имеется 2^n возможностей для координат.

Теперь, как вы можете сделать это рекурсивно:

  • если вы хотите сгенерировать координаты для n=1, просто верните 0 и 1

  • если вы хотите сгенерировать координаты для n>1, возьмите 0 и соедините его со всеми возможными координатами для n'=n-1, затем возьмите 1 и соедините его со всеми возможными координатами для n'=n-1

person phimuemue    schedule 18.06.2010
comment
Исправьте, если ось n-куба совпадает с основанием системы координат. Учет поворотов в декартовом n-пространстве немного сложнее. Учет недекартова пространства гораздо сложнее. - person dmckee --- ex-moderator kitten; 18.06.2010
comment
Спасибо. Вы ответили и на другой мой вопрос. Это также отвечает на комментарий о том, что этот тип генерации требует экспоненциального времени выполнения с увеличением размеров. Пора заняться математикой. Я вернусь, если застряну на чем-то конкретном. - person Ben; 18.06.2010