¿Cuál es el algoritmo óptimo para llenar un conjunto de discos Blu-ray dado muchos cientos de gigabytes de activos de diferentes tamaños?¿cuál es el algoritmo para llenar de manera óptima un DVD para grabar
Estoy tratando de consolidar una gran cantidad de viejos CD-ROM, DVD y discos duros pequeños y poner todo en una base de datos indexada por la firma MD5. Una tarea desalentadora sin dudas.
Lo que hago actualmente es ordenar los tamaños de los activos (generalmente tamaños de directorio) en orden descendente, empiezo a insertar los activos más grandes en la lista de relleno omitiendo los que no se ajustan hasta que me quedo sin activos. Funciona de forma casi instantánea, pero no me importaría correr de la noche a la mañana si fuera necesario.
Por lo general, me da un 95% o más de utilización, pero estoy seguro de que hay una manera de usar otras combinaciones para dar una mayor eficiencia. Con elementos enormes como imágenes de disco, puedo obtener una utilización bastante baja con este método primitivo.
Mi idea es tomar todas las combinaciones de los activos tomados, 1 luego 2, luego 3, ... elementos a la vez y mantener un valor en funcionamiento para el conteo de bytes más alto < 25,025,314,816 bytes apuntando a la matriz que suma eso. Cuando llego al punto en el que tengo tantos activos a la vez que ninguna de las combinaciones se ajusta, detengo y uso la matriz apuntada por el contador más alto en funcionamiento.
¿Es este el mejor algoritmo posible?
Hay 2 módulos Perl que parecen estar a la altura de la tarea, Algoritmo-Combinatorio y Combinatorio matemático. ¿Algún consejo sobre cuál es más rápido, más estable, más frío?
Mi esquema consiste en escribir una secuencia de comandos para calcular los tamaños de una gran cantidad de directorios y mostrarme el contenido óptimo de las docenas de discos para grabar.
Y, no quiero simplemente llenar un archivo por archivo, ya que quiero directorios enteros en el mismo disco.
No. Knappsack tiene 2 variables. – Bytemain
¿Qué puede hacer para que todos los elementos tengan un "valor" de 1 por ejemplo – anttix
Claro, puede hacer esto. Pero, ¿funciona para la métrica de bytes y kilobytes? es algo virtual. – Bytemain