¿Cómo resolver un problema de arreglo en el Archivo Nacional de Francia usando la teoría de grafos?

9

¡Buena noches! Realmente estoy haciendo una pasantía en los Archivos Nacionales de Francia y me encontré con una situación que quería resolver usando gráficos ...

I. La situación polvorienta

Queremos optimizar la disposición de los libros de mi biblioteca de acuerdo con su altura para minimizar su costo de archivo. La altura y el grosor de los libros son conocidos. Ya organizamos los libros en orden ascendente de altura (no sé si fue lo mejor, pero ... así fue como lo hicimos). Conociendo el grosor de cada libro, podemos determinar para cada clase de H i el grosor necesario para su disposición, llámelo L i (por ejemplo, los libros que son H i = 23H1,H2,,HnHiLi altura podría tener un espesor total L i = 300Hi=23cm ).Li=300cm

La biblioteca puede fabricar estanterías a medida, indicando la longitud y altura deseadas (no hay problema con la profundidad). Un estante de altura y longitud x i cuesta F i + C i x i , donde F i es un costo fijo y C i es el costo del estante por unidad de longitud.HixiFi+CixiFiCi

Tenga en cuenta que un estante de altura puede usarse para almacenar libros de altura H j con j i . Queremos minimizar el costo.HiHjji

Mi tutor me sugirió que modelara este problema como un problema de búsqueda de ruta. El modelo puede involucrar vértices indexados de 0 a n . Mi mentor me sugirió que resolviera las condiciones existentes, cada significado de borde y cómo calcular la valoración v ( i , j ) asociada al borde ( i , j ) . También estaría de acuerdo con otras soluciones, así como con ideas.n+10nv(i,j)(i,j)

Por ejemplo, tenemos para la Convención (un período oscuro de la historia de Francia) tal matriz:

i1234Hi12cm15cm18cm23cmLi100cm300cm200cm300cmFi1000120011001600Ci5/cm6/cm7/cm9/cm

II Las suposiciones de un ratón de biblioteca aprendiz

Creo que tengo que calcular un algoritmo entre Djikstra, Bellman o Bellman-Kalaba ... Estoy tratando de averiguar cuál en las siguientes subsecciones.

1.condiciones

Estamos aquí con un problema de pathfinding entre un vértice y un vértice n , n debe ser saliente desde 0 (es decir, debe existir un camino (o una caminata) entre 0 y n0nn00n

2.Qué calcular (actualizado (25/10/2015))

// Trabajar todavía en proceso hasta donde no sé a qué vértices y qué bordes modelar ...

Mi mejor conjetura

Creo que nos deshacemos de al menos un tipo de estantes cada vez que encontramos un camino más corto desde la matriz, pero eso es solo mi suposición ...;).

Creo que la mejor manera de modelar cómo comprar estanterías y almacenar nuestros libros debe parecerse al siguiente gráfico (pero, por favor, ¡no dude en criticar mi método!;))

de 0 gráfico

vértices:

  • son estantes que podemos usar para almacenar nuestros libros.i[1,4]
  • es el estado donde no se almacena ningún libro. El uso de este vértice me permite usar las fórmulas de cada costo (aristas).0

bordes: son el costo usando un tipo de estantería. por ejemplo: F 1 + C 1 x 1 fom 0 es el costo usando solo estantes tipo 1 para almacenar nuestros pergaminos, manuscritos ...Fi+Cixi,i[1,4]F1+C1x1

Sin embargo, desde aquí no sé cómo crear mi problema de ruta más corta.

De hecho, no sabría dónde habría guardado todos mis libros.

Esto me lleva a otra idea ...

otra idea...

a 0 gráfico

Aquí, estoy buscando la ruta más corta desde un vértice dado hasta el estado 0, es decir, sabiendo que el documento más alto es alto, estoy buscando la forma más barata de organizar mis documentos.type i

vértices:

  • son estantes que podemos usar para almacenar nuestros libros.i[1,4]
  • es el estado donde se almacenan todos los libros. El uso de este vértice me permite usar las fórmulas de cada costo (aristas).0

Fi+Cixi,i[1,4]F1+C1x1type 1type 3

F4+C4x4

3. Cómo calcular

Creo que tenemos que comenzar con los estantes más altos hasta donde podamos almacenar los libros más pequeños ...

Hacer

LnHi=nzHi=n1Hi=n1i=i1

Mientras yo> <0

Finalmente, no sé cómo hacer que x varíe ...

xi43

Revolución para Monica
fuente
O(n),O(nlogn)
55
No veo lo que esto tiene que ver con los gráficos: ¿por qué obligarse a hacer algo basado en gráficos cuando el problema en cuestión es algo así como el embalaje? Su modelo no tiene en cuenta los aspectos prácticos de la estantería. Por ejemplo, una unidad de estantería tiene estantes de cierta longitud: puede apilar estantes de cinco metros uno encima del otro, pero un estante de 99 cm, un estante de 172 cm, un estante de 128 cm, un estante de 83 cm y un estante de 18 cm (longitud total 5m) son completamente inútiles. Y, ¿por qué demonios cuesta 2500 € construir un metro de estantería de 23 cm de altura? Eso no parece remotamente realista. ¿Es esta biblioteca real?
David Richerby
3
1. No entiendo por qué te obligas a abordar esto como un problema de búsqueda de caminos. Si enfrenta esta situación en la práctica, no tiene sentido imponer una limitación tan innecesaria: ¿por qué rechazaría otras soluciones que resuelvan su problema con un enfoque diferente? Le recomiendo que edite la pregunta para eliminar ese requisito. 2. Aún no nos ha dicho cuántos libros hay. ¿Puedes darnos un número? ¿Algo más específico que "muuuucho", incluso si es solo una estimación de orden de magnitud?
DW
1
Parece que has pensado bastante en tu problema. ¡Eso es bueno! Sin embargo, almacenar una historia completa de sus pensamientos en una pregunta lo hace bastante difícil de manejar. SE funciona mucho mejor si publica una sola pregunta centrada y solo el fondo suficiente para que la pregunta responda.
Raphael
1
Con respecto a "Necesito expresarlo como un problema gráfico", ese es un ... requisito tonto. Si el problema está en P, escríbalo como LP y calcule una instancia de flujo máximo equivalente. Voila Si está en NP pero no sabe que está en P, escríbalo como IP y conviértalo a cualquier problema de gráfico NP-completo. Voila
Raphael

Respuestas:

5

Te veo preguntando: "Quiero resolver esto con el algoritmo de Dijkstra, pero no puedo configurar un buen gráfico para ejecutar", por lo tanto, te presentaré dicho gráfico.

Un dígrafo donde los vértices son conjuntos de libros archivados.

Hn, 1nNWn,

n,in0N

ij>i

Lij=Fj+Cj n=i+1jWn,
Fi+Cixiixi

N.

CR Drost
fuente
@ Christ Drost, ¡taaaaaaaaanks, mucho! Me tomó tiempo entender lo que intentabas crear sin ningún gráfico, ¡pero eso era exactamente lo que estaba buscando! Leí tu increíble perfil, encaja con tu respuesta jaja;)!
Revolución para Mónica
Me preguntaba si Bellman-Kalaba no era más apropiado que Djikstra, la única necesidad es no tener ningún cicruit (y nosotros no)
Revolución para Mónica el
Y es un algoritmo que establece definitivamente las longitudes de los bordes también. "el nodo n representa una solución que indica" todos los libros i≤n han sido archivados "." No podemos retroceder también con lo que usted proporcionó.
Revolución para Mónica el
No estoy seguro de lo que significa "retroceder", pero si quisiera "retroceder" probablemente tendría que considerar un gráfico más sofisticado donde un nodo es una lista de "número de libros archivados por este estante", un Intmayor que 1. Esto lleva a una gráfica de n^2vértices. Cuando está buscando una ruta entre A y B y todos los pesos de los bordes son positivos, entonces no hay diferencia entre Dijkstra y Bellman-Kalaba, excepto que Bellman-Kalaba siempre está tratando de actualizar los bordes que no necesitan actualización; Dijkstra simplemente almacena punteros a los vértices que le importan.
CR Drost
7

Creo que tengo una solución a tu problema. Espero no haber entendido mal algo en la definición de su problema. Aquí va:

O(n2)

n

ih1,h2,...,hih1<h2<...<hi

Probemos las siguientes dos cosas:

Ca>Ca1

Ba1a1cost=other,stuff+Ca1thickness(Ba1)

Ca<Ca1a1aha1<ha

cost=other,stuff+Cathickness(Ba)

Ca>Ca1

jaheight(j)>ha1

height(j)ha1a1

De las dos cosas que hemos probado, B es la significativa.

dp[a]1...aheight(a)dp[a]dp[1],dp[2],....dp[a1]

(a,b)

Por último, como dije antes, como los libros son grandes, no se puede usar el algoritmo para cada libro. Creo que representar su altura por la suma de su grosor debería ser el truco. (Creo que ya es así por tu declaración)

(Supongo que el número de alturas diferentes es mucho menor que el número de libros)


jjohn
fuente
¡Gracias por esta sólida ayuda! Primero tuve una pregunta para la parte A: ¿por qué tenemos una contradicción debido al problema de la optimización? Entiendo lógicamente que un costo más bajo cuando se almacenan libros de menor altura en estantes más altos es contradictorio, pero ¿qué optimidad asumimos? (¿Eso es quizás porque solo hago programación dinámica el próximo semestre ...?)
Revolución para Monica
Ca<Ca1
aCa>Ca+1aa+1aFa
jjohn
0

A veces, simplemente "acercarse" al "problema más cercano" en la literatura puede ayudar a comprender la teoría y los antecedentes detrás del problema, construir una abstracción y eliminar detalles espurios. El problema más cercano en la literatura al suyo parece ser lo que se conoce como "problema de empaque de contenedores de tamaño variable". Ejemplos de documentos se incluyen a continuación. Este problema está muy estudiado teóricamente y existe un software estándar que se muestra en la optimización de cajas de embalaje en, por ejemplo, contenedores de envío de camiones. También hay versiones en las que se puede ajustar el tamaño del contenedor. Hay muchos enfoques algorítmicos. por ejemplo, del 1er papel:

El problema abordado en este documento es el de empacar ortogonalmente un conjunto dado de artículos de forma rectangular en un número mínimo de contenedores rectangulares tridimensionales.

vzn
fuente