Требуется исправление ошибок Knapsack Code. ⇐ JAVA
-
Anonymous
Требуется исправление ошибок Knapsack Code.
Этот код представляет собой программу на Java, предназначенную для решения задачи о рюкзаке 0/1, которая является классической задачей оптимизации. Проблема заключается в выборе подмножества предметов с заданными значениями и весами для максимизации общей стоимости с учетом ограничения на общий вес (вместимость рюкзака). Давайте разберем основные компоненты кода и объясним их роль:
Класс предмета:
Класс Item представляет отдельные элементы с атрибутами: name: Имя элемента. стоимость: стоимость или ценность предмета. вес: вес предмета. Этот класс используется для создания и установки атрибутов для каждого элемента. Класс KSP_Solution:
Класс KSP_Solution представляет собой решение проблемы о рюкзаке. Он содержит следующие поля: selectedItems: ArrayList для хранения выбранных элементов в решении. totalValue: общая стоимость выбранных элементов. TotalWeight: общий вес выбранных предметов. Этот класс используется для представления результата задачи о рюкзаке. Класс Knapsack01:
Класс Knapsack01 предоставляет необходимые функциональные возможности для решения задачи о рюкзаке. Он включает переменные-члены: items: Массив для хранения элементов. емкость: целое число, обозначающее вместимость рюкзака. Этот класс инициализирует массив предметов и вместимость рюкзака, а также содержит методы для решения проблемы. Конструктор класса Knapsack01:
Конструктор класса Knapsack01 инициализирует емкость и массив элементов. Метод BruteForce_KP01:
Метод BruteForce_KP01() решает задачу о рюкзаке 0/1, используя метод грубой силы. Он генерирует все возможные подмножества элементов и выбирает подмножество с максимальным значением. Этот метод использует грубую силу для решения проблемы. Метод DynKSP_BottomUp:
Метод DynKSP_BottomUp() использует динамическое программирование (снизу вверх) для решения задачи о рюкзаке 0/1. Он создает таблицу динамического программирования и вычисляет оптимальное решение. Этот метод использует динамическое программирование для решения проблемы. Класс App_KnapsackProblem01:
За выполнение программы отвечает класс App_KnapsackProblem01. Он считывает информацию о предмете из файла, инициализирует класс Knapsack01 и решает проблему с рюкзаком, используя различные методы. Основной метод:
Основной метод является точкой входа в программу и инициирует ее выполнение. Он считывает информацию об элементе из файла, инициализирует класс Knapsack01 и решает задачу о рюкзаке, используя как методы грубой силы, так и методы динамического программирования. После выполнения программы она печатает результаты. Последовательность выполнения программы:
Считывает информацию об элементе из файла, инициализирует класс Knapsack01. Использует метод BruteForce_KP01 для решения задачи о рюкзаке методом грубой силы и печатает результат. Использует метод DynKSP_BottomUp для решения задачи о рюкзаке с помощью динамического программирования и печатает результат. После выполнения программы она печатает все результаты.
публичный класс Item { Строковое имя; целое значение; внутренний вес; public Item(String nm, int val, int wt) { this.name = нм; это.значение = значение; this.weight = вес; } публичная строка toString() { Строка ул; str = String.format("(%s, %d, %d)", this.name, this.value, this.weight); вернуть ул; } } импортировать java.util.ArrayList; public class KSP_Solution { // Решение задачи о рюкзаке ArrayList selectedItems; ИНТ TotalValue; int общий вес; } import java.util.ArrayList; общественный класс Knapsack01 { Элемент[] элементы; // Массив элементов внутренняя емкость; // Вместимость ранца // Конструктор класса Knapsack01 public Knapsack01(Item[] items, int вместимость) { this.items = предметы; // Инициализируем массив элементов this.capacity = емкость; // Инициализируем вместимость рюкзака } // Метод решения задачи о рюкзаке 0/1 с использованием грубой силы общественный KSP_Solution BruteForce_KP01 () { ArrayList powerSet = новый ArrayList(); // Список для хранения всех подмножеств ArrayList subSet_items; // Список для представления подмножества Строка binStr; // Переменная для хранения двоичных строк int num_items = this.items.length; // Количество предметов // Генерируем все возможные подмножества for (int i = 0; i < Math.pow(2, num_items); i++) { binStr = Integer.toBinaryString(i); // Корректируем длину двоичной строки если (binStr.length() > num_items) { System.out.printf("getBinaryRepr::num_digits недостаточно!!"); } int binStr_length = binStr.length(); for (int j = 0; j < (num_items - binStr_length); j++) { binStr = "0" + binStr; // Заполняем спереди '0' } subSet_items = новый ArrayList(); for (int j = 0; j
Этот код представляет собой программу на Java, предназначенную для решения задачи о рюкзаке 0/1, которая является классической задачей оптимизации. Проблема заключается в выборе подмножества предметов с заданными значениями и весами для максимизации общей стоимости с учетом ограничения на общий вес (вместимость рюкзака). Давайте разберем основные компоненты кода и объясним их роль:
Класс предмета:
Класс Item представляет отдельные элементы с атрибутами: name: Имя элемента. стоимость: стоимость или ценность предмета. вес: вес предмета. Этот класс используется для создания и установки атрибутов для каждого элемента. Класс KSP_Solution:
Класс KSP_Solution представляет собой решение проблемы о рюкзаке. Он содержит следующие поля: selectedItems: ArrayList для хранения выбранных элементов в решении. totalValue: общая стоимость выбранных элементов. TotalWeight: общий вес выбранных предметов. Этот класс используется для представления результата задачи о рюкзаке. Класс Knapsack01:
Класс Knapsack01 предоставляет необходимые функциональные возможности для решения задачи о рюкзаке. Он включает переменные-члены: items: Массив для хранения элементов. емкость: целое число, обозначающее вместимость рюкзака. Этот класс инициализирует массив предметов и вместимость рюкзака, а также содержит методы для решения проблемы. Конструктор класса Knapsack01:
Конструктор класса Knapsack01 инициализирует емкость и массив элементов. Метод BruteForce_KP01:
Метод BruteForce_KP01() решает задачу о рюкзаке 0/1, используя метод грубой силы. Он генерирует все возможные подмножества элементов и выбирает подмножество с максимальным значением. Этот метод использует грубую силу для решения проблемы. Метод DynKSP_BottomUp:
Метод DynKSP_BottomUp() использует динамическое программирование (снизу вверх) для решения задачи о рюкзаке 0/1. Он создает таблицу динамического программирования и вычисляет оптимальное решение. Этот метод использует динамическое программирование для решения проблемы. Класс App_KnapsackProblem01:
За выполнение программы отвечает класс App_KnapsackProblem01. Он считывает информацию о предмете из файла, инициализирует класс Knapsack01 и решает проблему с рюкзаком, используя различные методы. Основной метод:
Основной метод является точкой входа в программу и инициирует ее выполнение. Он считывает информацию об элементе из файла, инициализирует класс Knapsack01 и решает задачу о рюкзаке, используя как методы грубой силы, так и методы динамического программирования. После выполнения программы она печатает результаты. Последовательность выполнения программы:
Считывает информацию об элементе из файла, инициализирует класс Knapsack01. Использует метод BruteForce_KP01 для решения задачи о рюкзаке методом грубой силы и печатает результат. Использует метод DynKSP_BottomUp для решения задачи о рюкзаке с помощью динамического программирования и печатает результат. После выполнения программы она печатает все результаты.
публичный класс Item { Строковое имя; целое значение; внутренний вес; public Item(String nm, int val, int wt) { this.name = нм; это.значение = значение; this.weight = вес; } публичная строка toString() { Строка ул; str = String.format("(%s, %d, %d)", this.name, this.value, this.weight); вернуть ул; } } импортировать java.util.ArrayList; public class KSP_Solution { // Решение задачи о рюкзаке ArrayList selectedItems; ИНТ TotalValue; int общий вес; } import java.util.ArrayList; общественный класс Knapsack01 { Элемент[] элементы; // Массив элементов внутренняя емкость; // Вместимость ранца // Конструктор класса Knapsack01 public Knapsack01(Item[] items, int вместимость) { this.items = предметы; // Инициализируем массив элементов this.capacity = емкость; // Инициализируем вместимость рюкзака } // Метод решения задачи о рюкзаке 0/1 с использованием грубой силы общественный KSP_Solution BruteForce_KP01 () { ArrayList powerSet = новый ArrayList(); // Список для хранения всех подмножеств ArrayList subSet_items; // Список для представления подмножества Строка binStr; // Переменная для хранения двоичных строк int num_items = this.items.length; // Количество предметов // Генерируем все возможные подмножества for (int i = 0; i < Math.pow(2, num_items); i++) { binStr = Integer.toBinaryString(i); // Корректируем длину двоичной строки если (binStr.length() > num_items) { System.out.printf("getBinaryRepr::num_digits недостаточно!!"); } int binStr_length = binStr.length(); for (int j = 0; j < (num_items - binStr_length); j++) { binStr = "0" + binStr; // Заполняем спереди '0' } subSet_items = новый ArrayList(); for (int j = 0; j
Мобильная версия