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 (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 = 23L i = 300
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 et de longueur coûte , où est un coût fixe et et est le coût de l'étagère par unité de longueur.
Notez qu'une étagère de hauteur peut être utilisée pour stocker des livres de hauteur avec . 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.
Par exemple, nous avons pour la Convention (une période sombre de l'histoire de France) un tel tableau:
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 n
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!;))
sommets:
- sont des étagères que nous pouvons utiliser pour ranger nos livres.
- 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).
arêtes: 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 ...
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...
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.
sommets:
- sont des étagères que nous pouvons utiliser pour ranger nos livres.
- 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).
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 utilisation pour stocker nos parchemins, manuscrits ...
Pourtant, je ne sais pas où mettre .
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 je
Alors que i> <0
Enfin, je ne sais pas faire varier x ...
Soit comment choisir de mettre documents en 4 ou par exemple.
la source
Réponses:
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, 1≤n≤N Wn,
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, i≤n 0 N 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.i j>i
L'algorithme de Dijkstra nous donnera alors un chemin de longueur la plus courte au noeudN.
la source
Int
supérieur à1
. Cela conduit à un graphe den^2
sommets. 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.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:
Prouvons les deux choses suivantes:
Des deux choses que nous avons prouvées, B est la plus importante.
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( a , 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)
la source
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:
OPTIMISATION DE L'EMBALLAGE DE BACS EN TROIS DIMENSIONS PAR SIMULATION / Dube, Kanavathy
Problème d'emballage avec des volumes et des capacités incertains / Peng, Zhang
Algorithmes d'emballage de bacs 3D , stackoverflow
la source