Comment résoudre un problème d'arrangement à l'Archive Nationale de France en utilisant la théorie des graphes?


9

Bonsoir! Je fais actuellement un stage aux Archives Nationales de France et j'ai rencontré une situation que je voulais résoudre à l'aide de graphiques ...

I. La situation poussiéreuse

Nous souhaitons optimiser la disposition des livres de ma bibliothèque en fonction de leur hauteur afin de minimiser leur coût d'archivage. La hauteur et l'épaisseur des livres sont connues. Nous avons déjà organisé les livres par ordre croissant de hauteur H1,H2,,Hn (je ne sais pas si c'était la meilleure chose mais ... c'est ainsi que nous l'avons fait). Connaissant l'épaisseur de chaque livre, nous pouvons déterminer pour chaque classe l'épaisseur nécessaire pour leur arrangement, appelez-la (par exemple, les livres qui sont peuvent avoir une épaisseur totale ).L i H i = 23HiLiL i = 300Hi=23cmLi=300cm

La bibliothèque peut fabriquer des étagères sur mesure, en indiquant la longueur et la hauteur souhaitées (pas de problème de profondeur). Une étagère de hauteur Hi et de longueur xi coûte Fi+Cixi , où Fi est un coût fixe et et Ci est le coût de l'étagère par unité de longueur.

Notez qu'une étagère de hauteur Hi peut être utilisée pour stocker des livres de hauteur Hj avec ji . Nous voulons minimiser le coût.

Mon tuteur m'a suggéré de modéliser ce problème comme un problème de recherche de chemin. Le modèle peut impliquer sommets indexés de 0 à n . Mon mentor m'a suggéré de déterminer les conditions existantes, chaque signification de bord et comment calculer la valeur v ( i , j ) associée au bord ( i , j ) . Je serais également d'accord avec d'autres solutions ainsi que des idées.n+10nv(i,j)(i,j)

Par exemple, nous avons pour la Convention (une période sombre de l'histoire de France) un tel tableau:

je1234Hje12cm15cm18cm23cmLje100cm300cm200cm300cmFje1000120011001600Cje5/cm6/cm7/cm9/cm

II. Les hypothèses d'un rat de bibliothèque stagiaire

Je pense que je dois calculer un algorithme entre Djikstra, Bellman ou Bellman-Kalaba ... J'essaie de trouver lequel dans les sous-sections suivantes.

1.Conditions

Nous sommes ici avec un problème de pathfinding entre un sommet et un sommet n , n doit être sortant de 0 (c'est-à-dire qu'un chemin (ou une marche) doit exister entre 0 et n0nn00n

2.Que calculer (mis à jour (25/10/2015))

// Travail encore en cours pour autant que je ne sache pas vers quels sommets et quelles arêtes modéliser ...

Ma meilleure supposition

Je pense que nous nous débarrassons d'au moins un type d'étagères à chaque fois que nous trouvons un chemin le plus court à partir du tableau, mais ce n'est que mon hypothèse ...;).

Je pense que la meilleure façon de modéliser comment acheter des étagères et stocker nos livres doit ressembler au graphique suivant, (mais, n'hésitez pas à critiquer ma méthode!;))

à partir de 0 graphique

sommets:

  • sont des étagères que nous pouvons utiliser pour ranger nos livres.je[1,4]
  • est l'état dans lequel aucun livre n'est stocké. L'utilisation de ce sommet me permet d'utiliser chaque formule de coût (arêtes).0

arêtes: Fje+CjeXje,je[1,4] sont le coût en utilisant un type d'étagère. par exemple: fom 0 est le coût en utilisant uniquement des étagères de type 1 pour stocker nos parchemins, manuscrits ...F1+C1X1

Pourtant, d'ici je ne sais pas comment créer mon problème de chemin le plus court.

En effet, je ne saurais pas où j'aurais rangé tous mes livres.

Cela m'amène à une autre idée ...

une autre idée...

à 0 graphique

Ici, je recherche le chemin le plus court d'un sommet donné à l'état 0, c'est-à-dire sachant que le document le plus élevé est tall, je cherche le moyen le moins cher d'organiser mes documents.type je

sommets:

  • sont des étagères que nous pouvons utiliser pour ranger nos livres.je[1,4]
  • est l'état dans lequel tous les livres sont stockés. L'utilisation de ce sommet me permet d'utiliser chaque formule de coût (arêtes).0

arêtes: sont le coût en utilisant un type d'étagère. par exemple: F 1 + C 1 x 1 de 3 est le coût d'utilisation des étagères t y p e 1 après utilisationFje+CjeXje,je[1,4]F1+C1X1type 1 pour stocker nos parchemins, manuscrits ...type 3

Pourtant, je ne sais pas où mettre .F4+C4x4

3.Comment calculer

Je pense que nous devons commencer par les étagères les plus hautes dans la mesure où nous pouvons ensuite stocker les petits livres ...

Faire

On prend cm de avec la hauteur H i = n dans une étagère de leur hauteur + z cm d'une hauteur H i = n - 1 jusqu'à ce qu'il devienne plus cher que de prendre la étagère H i = n - 1 . alors jeLnHi=nzHi=n1Hi=n1i=i1

Alors que i> <0

Enfin, je ne sais pas faire varier x ...

Soit comment choisir de mettre documents en 4 ouxi4 par exemple.3


Combien y a-t-il de livres ici? c'est-à-dire que les algorithmes les seuls qui soient acceptables? O(n),O(nlogn)
jjohn

5
Je ne vois pas ce que cela a à voir avec les graphiques: pourquoi vous forcer à faire quelque chose basé sur des graphiques alors que le problème est quelque chose comme le bin-packing? Votre modèle ne prend pas en compte les aspects pratiques des étagères. Par exemple, une étagère a des étagères d'une certaine longueur: vous pouvez empiler des étagères de cinq mètres de long l'une sur l'autre, mais une étagère de 99 cm, une étagère de 172 cm, une étagère de 128 cm, une étagère de 83 cm et une étagère de 18 cm (longueur totale 5m) sont complètement inutiles. Et pourquoi diable cela coûte-t-il 2500 € pour construire un mètre de rayonnage de 23 cm de haut? Cela ne semble pas du tout réaliste. Cette bibliothèque est-elle réelle?
David Richerby

3
1. Je ne comprends pas pourquoi vous vous forcez à aborder cela comme un problème d'orientation. Si vous êtes confronté à cette situation dans la pratique, cela n'a aucun sens d'imposer une limitation aussi inutile - pourquoi rejetteriez-vous d'autres solutions qui résolvent votre problème en utilisant une approche différente? Je vous recommande de modifier la question pour supprimer cette exigence. 2. Vous ne nous avez toujours pas dit combien il y a de livres. Pouvez-vous nous donner un chiffre? Quelque chose de plus spécifique qu'un "loooot", même s'il ne s'agit que d'une estimation d'ordre de grandeur?
DW

1
Il semble que vous ayez réfléchi à votre problème. C'est bon! Cependant, le stockage d'un historique complet de vos pensées dans une question le rend plutôt difficile à manier. SE fonctionne beaucoup mieux si vous postez une seule question ciblée et juste assez de fond pour rendre la question répondable.
Raphael

1
En ce qui concerne "J'ai besoin de l'exprimer comme un problème de graphique" - c'est une ... exigence stupide. Si le problème est dans P, écrivez-le comme LP et calculez une instance max-flow équivalente. Voila. Si c'est en NP mais que vous ne savez pas qu'il est en P, écrivez-le en IP et convertissez-le en n'importe quel problème graphique NP-complet. Voila.
Raphael

Réponses:


5

Je vous vois comme demandant: «Je veux résoudre ce problème avec l'algorithme de Dijkstra mais je ne peux pas configurer un bon graphique pour fonctionner», donc je vais vous présenter un tel graphique.

Un digraphe où les sommets sont des ensembles de livres étagères.

D'accord, nous avons des livres avec des hauteurs 1 n N et des largeurs W n , avec des hauteurs dans l'ordre croissant pour chaque livre, et nous voulons les regrouper en étagères.Hn, 1nNWn,

Réutilisez ces nombres pour les nœuds de solution où ce nœud représente un état de solution «tous les livres i n ont été mis de côté». Nous allons donc commencer au nœud 0 et chercher à arriver au nœud Nn,in0N par le chemin le plus court avec l'algorithme de Dijkstra. Ces nœuds sont les sommets de notre graphe.

Nous tirons ensuite du nœud à tout nœud j > i un bord dirigé qui suppose que tous ces livres intermédiaires seront étagères avec une seule étagère, c'est-à-dire que la longueur de ce bord est L i j = F j + C j j n = i + 1 W n , où j'ai supposé que lorsque vous disiez que le coût de la somme était F i + C i x i, l'indice i sur le x i était totalement dénué de sens.ij>i

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

L'algorithme de Dijkstra nous donnera alors un chemin de longueur la plus courte au noeud N.


@Christ Drost, thaaaaaaaaanks, beaucoup! Il a fallu du temps pour comprendre ce que vous essayez de créer sans aucun graphique, mais c'est exactement ce que je cherchais! J'ai lu ton profil étonnant, il correspond à ta réponse haha;)!
Revolucion pour Monica du

Je me demandais si Bellman-Kalaba n'était pas plus approprié que Djikstra, le seul besoin est de ne pas avoir de cicruit (et nous n'en avons pas)
Revolucion for Monica

Et c'est un algorthm qui définit définitivement les longueurs des bords également. "le nœud n représente une solution indiquant" tous les livres i≤n ont été mis de côté. "" Nous ne pouvons pas revenir en arrière aussi avec ce que vous avez fourni.
Revolucion pour Monica

Je ne sais pas ce que signifie "revenir en arrière", mais si vous vouliez "revenir en arrière", vous devriez probablement envisager un graphique plus sophistiqué où un nœud est une liste de "nombre de livres mis en attente par cette étagère", un Intsupérieur à 1. Cela conduit à un graphe de n^2sommets. Lorsque vous recherchez un chemin entre A et B et que tous les poids de bord sont positifs, il n'y a pas de différence entre Dijkstra et Bellman-Kalaba, sauf que Bellman-Kalaba essaie toujours de mettre à jour les bords qui n'ont pas besoin d'être mis à jour; Dijkstra stocke simplement des pointeurs vers les sommets qui lui tiennent à cœur.
CR Drost

7

Je pense que j'ai une solution à votre problème. J'espère que je n'ai pas mal compris quelque chose dans la définition de votre problème. Ça y est:

O(n2)

n

jeh1,h2,...,hjeh1<h2<...<hje

Prouvons les deux choses suivantes:

Cune>Cune-1

Bune-1une-1cost=other,stuFF+Cune-1thjeckness(Bune-1)

Cune<Cune-1une-1unehune-1<hune

cost=other,stuFF+Cunethjeckness(Bune)

Cune>Cune-1

junehejeght(j)>hune-1

hejeght(j)hune-1une-1

Des deux choses que nous avons prouvées, B est la plus importante.

p[une]1...unehejeght(une)p[une]p[1],p[2],....p[une-1]

Je vais m'arrêter ici. Si vous connaissez la programmation dynamique, en utilisant le fait B, vous arriverez facilement à la récurrence. Sinon, demandez :). Comme je l'ai dit, cela peut être transformé en un problème DAG. Connaissant la relation ci-dessus, il est facile de réaliser ce que le bord(une,b)

Dernier point mais non le moindre, comme je l'ai dit ci-dessus, comme les livres sont grands, vous ne pouvez pas utiliser l'algorithme pour chaque livre. Je pense que représenter sa hauteur par la somme de son épaisseur devrait faire l'affaire. (Je pense que c'est déjà comme ça d'après votre déclaration)

(Je suppose que le nombre de hauteurs différentes est beaucoup moins que le nombre de livres)



merci pour cette aide solide! J'avais d'abord une question pour la partie A: pourquoi avons-nous une contradiction en raison du problème d'optimalité? Je comprends logiquement qu'un coût inférieur lors du stockage de livres d'une hauteur inférieure dans des étagères supérieures est contradictoire, mais quelle optimalité supposons-nous? (C'est peut-être parce que je ne fais que de la programmation dynamique le semestre prochain ...?)
Revolucion pour Monica

Cune<Cune-1

uneCune>Cune+1uneune+1uneFune ). Mais dans notre hypothèse, nous avons déjà l'algorithme optimal, donc cela ne peut pas tenir. J'espère que cela vous rend un peu plus clair!

0

Parfois, un simple "zoom avant" sur le "problème le plus proche" dans la littérature peut aider à comprendre la théorie et le contexte du problème, à construire une abstraction et à éliminer les détails parasites. Le problème le plus proche dans la littérature du vôtre semble être ce qui est connu sous le nom de «problème d'emballage de bacs de taille variable». Des exemples d'articles sont inclus ci-dessous. Ce problème est très étudié en théorie et certains logiciels disponibles sur le marché existent, il apparaît dans l'optimisation des boîtes d'emballage, par exemple dans les camions expédiant des conteneurs. Il existe également des versions où l'on peut ajuster la taille du conteneur. Il existe de nombreuses approches algorithmiques. par exemple, à partir du 1 er papier:

Le problème abordé dans cet article est celui de l'emballage orthogonal d'un ensemble donné d'articles de forme rectangulaire dans un nombre minimum de bacs rectangulaires tridimensionnels.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.