es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Coloca los artículos más valiosos en una caja.

Estoy haciendo un ejercicio de programación de la siguiente manera:
Hay una caja y una lista de artículos.
La caja tiene un tamaño fijo. Cada artículo tiene su propio tamaño y precio.
Podemos poner tantos artículos como queramos en la caja si la suma del tamaño de los artículos es menor que el tamaño de la caja. (Cada artículo solo se puede poner una vez).
Encuentra la combinación de artículos que se pueden poner en la caja con el precio más alto.

p.ej.
caja: tamaño = 10

artículo tamaño precio
1 8 4
2 10 5
3 1 2

En este caso, la respuesta será 6 porque se seleccionan los artículos 1 y 3, precio 4 + 2 = 6 (la suma de los tamaños es 8, que está por debajo de 10).

Mi enfoque es realizar un retroceso para encontrar todas las posibles combinaciones y registrar el precio más alto, pero no estoy seguro de si es lo suficientemente eficiente si hay una gran cantidad de artículos en la lista.

¿Existe algún enfoque más eficiente?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en algoritmos y combinaciones, existen varios enfoques que pueden ser más eficientes que la técnica de backtracking para encontrar la combinación de artículos que puedan ser colocados en una caja con el precio más alto.

    Uno de esos enfoques es la programación dinámica, específicamente el problema de la mochila 0/1. Este problema es muy similar al escenario presentado, donde se tienen un conjunto de artículos con pesos y valores, y una mochila con una capacidad de peso. El objetivo es encontrar el subconjunto de artículos que caben en la mochila y tienen el valor máximo.

    La idea básica es crear una matriz donde cada fila representa un artículo y cada columna representa la capacidad de peso restante de la mochila. Las entradas de la matriz son el valor máximo que se puede obtener considerando los artículos hasta esa fila y la capacidad de peso restante de la mochila. Llenamos la matriz de abajo hacia arriba y utilizamos las entradas para determinar el subconjunto óptimo de artículos que caben en la mochila.

    Este enfoque tiene una complejidad temporal de O(nW), donde n es el número de artículos y W es la capacidad de peso de la mochila, lo cual es mucho más eficiente que el backtracking, especialmente para entradas grandes.

    Por lo tanto, utilizar el problema de la mochila 0/1 con programación dinámica sería un enfoque más eficiente y efectivo para resolver este ejercicio de programación.

Comments are closed.