#algorithm
#алгоритм
Вопрос:
Учитывая 3 максимальных значения (m1 m2 m3), я пытаюсь найти максимально возможную комбинацию из n объектов с одинаковыми значениями (m1, m2, m3), чтобы удовлетворить заданным максимумам. Если существует несколько решений, можно выбрать первое, и для решения можно использовать несколько экземпляров объекта.
Примером ввода может быть что-то вроде:
[A: {m1: 20, m2: 15, m3: 10}, B: {m1: 10, m2: 12, m3: 10}, C: {m1: 15, m2: 10,: m3: 30}]
Так, например, когда (m1 = 30, m2 = 17, m3 = 20) возможным решением будет [A, B]
Я изучал проблему с рюкзаком, и это варианты (например, с несколькими рюкзаками), однако после некоторых попыток я не могу понять, как изменить его, чтобы иметь несколько значений, которые можно поместить в несколько рюкзаков. Я на правильном пути? Или есть другой алгоритм, лучше подходящий для этой проблемы, который можно использовать / модифицировать? Спасибо
Комментарии:
1. Как здесь определяется «близость» 2 кортежей?
2. итак, что означает «близко к»?
3. Я, вероятно, буду считать m1 m2 m3 как x, y, z и использовать расстояние между двумя точками в формуле трехмерного пространства и выбирать минимальные результаты.
Ответ №1:
let space = { 'A':{m1: 20, m2: 15, m3: 10}, 'B': {m1: 10, m2: 12, m3: 10}, 'C': {m1: 15, m2: 10, m3: 30}}
let inp = {m1: 30, m2: 17, m3: 20}
Object.keys(space).forEach(key => {
console.log(key ' - ' JSON.stringify(space[key]) '- distance: ' distance(inp, space[key]))
})
function distance(A,B){
return Math.sqrt(Math.pow(A.m1 - B.m1,2) Math.pow(A.m2 - B.m2,2) Math.pow(A.m3 - B.m3,2))
}
Я попробовал простую реализацию на javascript. A и C более близки в трехмерном пространстве. что вы подразумеваете под закрытием?