Java-программа, использующая массив 4D - PullRequest
11 голосов
/ 04 апреля 2011

Я студент первого курса по компьютерной инженерии, и я здесь новичок. Я изучаю Java в течение последних трех с половиной месяцев и C ++ за шесть месяцев до этого. Мои знания Java ограничены определением и использованием собственных методов, абсолютных основ объектно-ориентированного программирования, таких как использование статических элементов данных и видимость членов.

Сегодня мой профессор по компьютерному программированию рассказал нам о многомерных массивах в Java. О многомерных массивах - это просто массивы массивов и так далее. Он упомянул, что в номинальном образовательном программировании массивы за пределами двух измерений практически никогда не используются. Даже трехмерные массивы используются только там, где это абсолютно необходимо, например, для выполнения научных функций. Это оставляет почти нулевое использование для 4D-массивов, поскольку их использование показывает, что «вы используете неправильный тип данных» в словах моего профессора.

Однако я хотел бы написать программу, в которой использование 4D-массива любого типа данных, примитивного или иного, оправдано. Программа не должна быть такой же тривиальной, как печать элементов массива.

Я понятия не имею, с чего начать, поэтому я публикую это здесь. Я хотел бы ваши предложения. Соответствующие формулировки проблемы, алгоритмы, а также фрагменты кода также приветствуются.

Спасибо.

Редактировать: Забыл упомянуть, я абсолютно не имею представления о работе с GUI в Java, поэтому, пожалуйста, не публикуйте идеи, которые реализуют GUI.

Ответы [ 6 ]

6 голосов
/ 04 апреля 2011

Идеи:

- Матричное умножение и его приложения, такие как поиск кратчайшего пути в графах - решение систем уравнений - Криптография - многие криптопротоколы представляют данные или ключи или их внутренние структуры в виде матриц. - Любой алгоритм на графиках, представленных в виде матриц

Должно быть, у меня какая-то фиксация на матрицах, извините:)

Для 4D-массивов одна очевидная вещь, о которой я могу подумать, это представление 3D-среды, изменяющейся во времени, поэтому 4-е измерение представляет масштаб времени. Или любое представление 3D, которое имеет дополнительное связанное свойство, помещенное в 4-е измерение массива.

4 голосов
/ 12 января 2012

Просто чтобы поддержать его, .. твой проф вполне прав.Боюсь, что я могу быть физически жестоким к любому, кто использует 4D + массив в производственном коде.

* * * * * * * * * * * * * * * * круто иметь возможность пройти более 3-х измерений в качестве учебного упражнения, но для реальной работы это делает вещи способ слишком сложными, потому что мы не делаемдействительно много понимания структур с более чем 3 измерениями.

Причина, по которой трудно придумать практическое использование массивов 4D +, заключается в том, что в реальном мире (почти) нет ничего сложного для моделирования.

Вы можете взглянуть на моделирование чего-то вроде tesseract , который (в терминах непрофессионала) представляет собой 4D-куб или, как Виктор предлагает использовать 4-е измерение для моделирования постоянного времени.

НТН

4 голосов
/ 04 апреля 2011

Вы можете создать гиперкуб Sodoku с четырьмя измерениями и хранить числа, которые пользователь вводит в 4-мерный массив int.

3 голосов
/ 04 апреля 2011

Одним из применений может быть применение динамического программирования к функции, которая принимает 4 целочисленных параметра f(int x,int y,int z,int w). Чтобы не вызывать эту дорогую функцию снова и снова, вы можете кэшировать результаты в массиве 4D, results[x][y][z][w]=f(x,y,z,w);.

Теперь вам просто нужно найти дорогую целочисленную функцию с арностью 4, о, и нужно часто ее вычислять ...

2 голосов
/ 22 июня 2015

Есть много возможных применений.Как уже говорили другие, вы можете моделировать гиперкуб или что-то, что использует гиперкуб, а также моделирует изменения во времени.Однако есть много других возможных применений.

Например, одна из теоретических имитационных моделей нашей вселенной использует физику 11-го измерения.Вы можете написать программу для моделирования того, как будет выглядеть эта предполагаемая физика.Пользователь сможет видеть только 3-мерное пространство, которое определенно ограничивает удобство использования, но 4-мерная координата может действовать как изменение канала, позволяя пользователю изменять свою перспективу.Например, если происходит взрыв в 4-м измерении, вам может даже потребоваться массив 5-го измерения, чтобы вы могли смоделировать, как он выглядит в каждом подключенном 3-мерном пространстве, а также как он выглядит в каждом кадре времени.

Чтобы отойти от науки, подумайте о MMORPG.Сегодня во многих из этих игр используются «инстансированные» локации, что означает, что копия данной зоны создается исключительно для использования данной группой игроков, чтобы предотвратить отставание.Если бы этой «инстансированной» концепции была дана 4-мерная координата, и она позволяла игрокам смещать свои позиции между экземплярами, она могла бы эффективно объединить все серверные миры, в то же время предоставляя игрокам большой контроль над тем, куда они идут, при одновременном снижении стоимости.

Конечно, ваш вопрос хочет знать об идеях без использования графического интерфейса.Это немного сложнее, потому что вы работаете в 2D-среде.Одним из реальных приложений будет исчисление.У нас есть 3D-калькуляторы, но для больших размеров вам придется делать это вручную.Программа, которая предназначена для решения этих расчетов за вас, может быть не в состоянии правильно отобразить информацию, но вы, безусловно, можете рассчитать ее.Кроме того, когда голографические интерфейсы становятся широко распространенной реальностью, возможно, можно представить граф гиперкуба в 3D, сделав такую ​​программу полезной.

Вы можете написать текстовую настольную игру, в которой представлено положение фигур.с текстом.Вы можете добавить измерения и правила игры, чтобы использовать их.

Самая простая идея, которую я могу вам дать, - это система сохранения состояний.В каждом интервале программа в памяти копируется и сохраняется в файл.Это координата, это позиция во времени.По номинальной стоимости вам может не понадобиться массив 4D, чтобы справиться с этим, но предположим, что программа, в которой вы сохраняли состояния, использовала трехмерный массив.Вы можете настроить его так, чтобы каждое сохраненное состояние представляло собой позицию во времени, которую вы можете использовать, а затем просматривать изменение во времени.

1 голос
/ 04 апреля 2011

Я не уверен, что конкретно вы могли бы сделать с этим, потому что я только начал думать об этом.Но вы могли бы использовать массив 4D для какого-то базового физического моделирования, например, для моделирования полета снаряда, включающего некоторые значения ветра, а что нет.Это просто пришло в голову, потому что термин 4D всегда напоминает, что «позиция» любого объекта - это 4 значения со временем как 4-е.

...