Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 27.07.2017, 22:06
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

https://ru.wikipedia.org/wiki/Задача_о_ранце
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #12 (permalink)  
Старый 28.07.2017, 09:14
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от nerv_ Посмотреть сообщение
https://ru.wikipedia.org/wiki/Задача_о_ранце
+1

причем, тут "ранцем" будет разница между ценой предмета и суммарной стоимостью всех имеющихся акций, а "весом" и "ценностью" каждой акции - её стоимость. Тогда решение - набор тех акций, которые не используем при покупке.

если каждой акции по одной штуке, то это "Рюкзак 0-1", и можно сказать, повезло
Ответить с цитированием
  #13 (permalink)  
Старый 28.07.2017, 10:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

nerv_,
Alexandroppolus,
ничего не понимаю, ни википедию, ни вас, а код существует для такого?
P.S. пробовал написать полный перебор, комп не справляется, видимо не слишком оптимально или где ошибка.

Последний раз редактировалось рони, 28.07.2017 в 10:42.
Ответить с цитированием
  #14 (permalink)  
Старый 28.07.2017, 12:13
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от рони
пробовал написать полный перебор, комп не справляется, видимо не слишком оптимально или где ошибка.
полный перебор дает сложность O(2^N), и если N порядка 200-300, то смысла писать код вообще нет - всё равно будет выполняться целую вечность.

"Рюкзак 0-1" разруливается за полиномиальное время (на подобных объемах отработает мгновенно).
Код надо поискать, должен быть )
Ответить с цитированием
  #15 (permalink)  
Старый 28.07.2017, 12:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Alexandroppolus,
спасибо, ещё бы понять что такое
Сообщение от Alexandroppolus
"Рюкзак 0-1"
Ответить с цитированием
  #16 (permalink)  
Старый 28.07.2017, 12:56
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от рони
ещё бы понять что такое
https://ru.wikipedia.org/wiki/Задача_о_ранце#.D0.97.D0.B0.D0.B4.D0.B 0.D1.87.D0.B0_.D0.BE_.D1.80.D1.8E.D0.BA.D0.B7.D0.B 0.D0.BA.D0.B5_0-1

https://ru.wikipedia.org/wiki/Задача_о_ранце#.D0.92.D0.B0.D1.80.D0.B 8.D0.B0.D0.BD.D1.82.D1.8B_.D0.B7.D0.B0.D0.B4.D0.B0 .D1.87.D0.B8_.D0.BE_.D1.80.D0.B0.D0.BD.D1.86.D0.B5
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #17 (permalink)  
Старый 28.07.2017, 15:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

nerv_,
спасибо, но я не понимаю что там написано, особенно математические формулы.
Цитата:
Решение задачи о рюкзаке 0-1 близко к решению предыдущей задачи, но необходимо учесть тот факт, что каждый предмет имеется в единственном экземпляре.
например тут написано в единственнном почему??? у меня получилось 2.06 * 49 + 5.76 * 2 + 5.01 -- 49 экзепляров одного предмета, другого 2, третьего один.
Ответить с цитированием
  #18 (permalink)  
Старый 29.07.2017, 10:18
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

рони,

Сообщение от рони
например тут написано в единственнном почему???
потому, что существует ряд формулировок (вариантов) задач о рюкзаке. Формулировка, готорая гласит
Цитата:
не более одного экземпляра каждого предмета
носит название Рюкзак 0-1

Что я сделал:
1. взял N-первых весов из первого поста
2. домножил их на 100, чтобы получить целые числа
3. задал цель равную 247
4. взял алгоритм из википедии для рюкзака 0-1

результат см. ниже

const costs = [67, 84, 86, 86, 89, 170, 180, 187, 199, 200, 201, 206, 209]
const capacity = 247

/**
 * @see [url]https://ru.wikipedia.org/wiki/Задача_о_ранце[/url]
 * @param {Array.<Number>} v Ценности предметов (загруженные в массив v)
 * @param {Array.<Number>} w Веса предметов (загруженные в массив w)
 * @param {Number} n Количество предметов (n)
 * @param {Number} W Грузоподъемность (W)
 * @return {Array.<Number>}
 */
function solveKnapsack01(v, w, n, W) {
  let m = new Array(n)

  for (let i = 0; i <= n; i++) {
    m[i] = new Array(W + 1).fill(0)
  }

  for (let i = 1; i < n; i++) {
    for (let j = 0; j <= W; j++) {
      if (w[i] > j) {
        m[i][j] = m[i - 1][j]
      } else {
        m[i][j] = Math.max(m[i - 1][j], m[i - 1][j - w[i]] + v[i])
      }
    }
  }

  return m
}


console.log(solveKnapsack01(costs, costs, costs.length, capacity))


Но это еще не все решение:
Цитата:
Таким образом, любому решению задачи соответствует некоторый путь в построенном дереве. Задача сводится к нахождению пути максимальной длины[
Т.е. нужно в получившемся массиве (дереве) найти путь максимальной длинны.

---

Также обращаю внимание на пост Alexandroppolus:
Сообщение от Alexandroppolus
причем, тут "ранцем" будет разница между ценой предмета и суммарной стоимостью всех имеющихся акций, а "весом" и "ценностью" каждой акции - её стоимость. Тогда решение - набор тех акций, которые не используем при покупке.
Понятно почему?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #19 (permalink)  
Старый 29.07.2017, 10:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

nerv_,
спасибо за попытку, но бесполезно - не понимаю как строится дерево, не понимаю что за результат в строке 33, и уж тем более почему надо искать набор акций которые не используем при покупке.
то что такой вариант называется Рюкзак 0-1, пусть, но мне это ни очём не говорит.

как там говорится: нельзя обьять необьятное, но зато мы поём и пляшем.
Ответить с цитированием
  #20 (permalink)  
Старый 29.07.2017, 11:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от nerv_
задал цель равную 247
[67,180] вот что ожидал увидеть в строке 33 пост №18
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересная задачка с пробелами hhh Общие вопросы Javascript 6 29.09.2015 11:42
Есть интересная идея! allonemoon Оффтопик 2 08.04.2015 17:12
Задачка: Хром / Мозилла? eirnvn Opera, Safari и др. 0 09.07.2013 13:18
flash media server интересная все таки штука.... Sadist_dead Flash 4 07.12.2011 21:17
Небольшая задачка Maksim jQuery 4 30.09.2009 19:43