Как я могу программно определить, как вместить меньшие поля в больший пакет? [закрытый]

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

48
задан marcog 25 December 2010 в 23:26
поделиться

4 ответа

Это Мусорное ведро, Упаковывающее проблема, и это является NP-трудным. Для небольшого количества объектов и пакетов, Вы могли бы быть в состоянии просто использовать метод грубой силы попытки каждой возможности. Кроме того, необходимо будет использовать какую-то эвристику. Статья Wikipedia имеет некоторые детали, наряду со ссылками на бумаги, которые Вы, вероятно, хотите проверить.

альтернатива, конечно, должна запуститься с действительно простого алгоритма (такого как простая 'укладка' объектов) и вычислить разумную верхнюю границу на поставку использования, что, тогда если Ваши упаковщики - люди могут добиться большего успеха, Вы получаете небольшую прибыль. Или обесценьте свои расчетные цены немного при условии, что Ваша упаковка не идеальна.

58
ответ дан Nick Johnson 26 November 2019 в 18:43
поделиться

Вы пытаетесь видеть, сколько из единственного типа вписывается в конкретный размерный пакет, или Вы пытаетесь смешать типы также?

Кажется, что Вы пытаетесь решить проблема Ранца . Вы могли бы быть в состоянии найти некоторые алгоритмы для того, что могло быть адаптировано к Вашим конкретным требованиям. Просто поймите, что будет трудно найти эффективный алгоритм, поскольку проблемой является завершенный NP (хотя в зависимости от Ваших конкретных требований можно быть в состоянии найти эффективное приближение, или исходные данные могут быть достаточно маленькими, что это не имеет значения).

6
ответ дан Herms 26 November 2019 в 18:43
поделиться

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

Это могло бы тогда привести к Вашим упаковщикам - людям, приезжающим в НАСТОЛЬКО спрашивающий относительно того, как к программно тренировке, как упаковать n объекты в m поля.:-P (Они могли бы также попросить Вы делать это, просить у Вас инструкции, и т.д.).

, пока Ваш алгоритм делает то, что сделал бы разумный человек, я лично приму его оценку поставки.

4
ответ дан freespace 26 November 2019 в 18:43
поделиться

Возможно, это будет звучать очевидным, но это могло бы стоить к memoize проблема, затем сделать некоторых из них вручную. Нахождение самого эффективного решения для произвольных исходных данных и окружает NP-трудный, но путем ограничения пространства задач и принятия некоторой неэффективности, тот размер NP мог бы быть чем-то разумным, и memoizing, Вы могли бы быть в состоянии снизить время "общего падежа" существенно.

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

2
ответ дан Gregg Lind 26 November 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: