Boa noite! Na verdade, estou fazendo um estágio no Archives Nationales da França e encontrei uma situação que queria resolver usando gráficos ...
I. A situação empoeirada
Queremos otimizar a organização dos livros da minha biblioteca de acordo com a altura deles, a fim de minimizar o custo do arquivo. A altura e a espessura dos livros são conhecidas. Já organizamos os livros em ordem crescente de altura (não sei se foi a melhor coisa, mas ... foi assim que fizemos). Sabendo espessura de cada livro, podemos determinar para cada classe a espessura necessária para o seu arranjo, chamá-lo (por exemplo, os livros que são de altura pode ter espessura totalH i = 23L i = 300 ).
A biblioteca pode fabricar prateleiras personalizadas, indicando o comprimento e a altura desejados (sem problemas com a profundidade). Uma prateleira de altura e comprimento custa F_i + C_ix_i , onde F_i é um custo fixo e C_i é o custo da prateleira por unidade de comprimento.x i F i + C i x i F i C i
Observe que uma prateleira da altura pode ser usada para armazenar livros da altura com . Queremos minimizar o custo.
Meu tutor sugeriu que eu modelasse esse problema como um problema de localização de caminhos. O modelo pode envolver vértices indexados de a . Meu mentor sugeriu que eu elaborasse as condições existentes, cada significação de borda e como calcular a avaliação associada à borda0 n v ( i , j ) ( i , j ) . Eu também ficaria bem com outras soluções e insights.
Por exemplo, temos para a Convenção (um período sombrio da história francesa) uma matriz assim:
II As suposições de um leitor estagiário
Acho que tenho que calcular um algoritmo entre Djikstra, Bellman ou Bellman-Kalaba ... Estou tentando descobrir qual das subseções a seguir.
1. Condições
Estamos aqui com um problema de busca de caminho entre um vértice e um vértice , deve sair de (ou seja, um caminho (ou uma caminhada) deve existir entre en n 0 0 n
2.O que calcular (atualizado em 25/10/2015)
// Trabalho ainda em processo, até onde eu não sei quais vértices e quais arestas modelar ...
Meu melhor palpite
Acho que nos livramos de pelo menos um tipo de prateleira toda vez que encontramos um caminho mais curto da matriz, mas essa é apenas minha suposição ...;).
Acho que a melhor maneira de modelar como comprar prateleiras e armazenar nossos livros deve ser semelhante ao gráfico a seguir (mas, por favor, sinta-se à vontade para criticar meu método!;))
vértices:
- são prateleiras que podemos usar para guardar nossos livros.
- é o estado em que nenhum livro está armazenado. O uso desse vértice permite que eu use cada fórmula de custo (arestas).
arestas: são o custo usando um tipo de prateleira. por exemplo: fom 0 é o custo usando apenas prateleiras do tipo 1 para armazenar nossos pergaminhos, manuscritos ...
No entanto, daqui em diante não sei como criar o meu problema de caminho mais curto.
Na verdade, eu não saberia onde guardaria todos os meus livros.
Isso me leva a outra ideia ...
outra ideia...
Aqui, estou procurando o caminho mais curto de um determinado vértice para o estado 0, ou seja, sabendo que o documento mais alto é do altura, estou procurando a maneira mais barata de organizar meus documentos.
vértices:
- são prateleiras que podemos usar para guardar nossos livros.
- é o estado em que todos os livros estão armazenados. O uso desse vértice permite que eu use cada fórmula de custo (arestas).
arestas: são o custo usando um tipo de prateleira. por exemplo: de 3 é o custo usando prateleiras depois de usar prateleiras para armazenar nossos pergaminhos, manuscritos ...F 1 + C 1 x 1 T y p e um T y p e três
No entanto, não sei onde colocar .
3.Como calcular
Penso que temos de começar pelas prateleiras mais altas, na medida em que possamos guardar os livros mais pequenos ...
Faz
Tomamos cm com a altura H i = n em uma prateleira de sua altura + z cm de uma altura H i = n - 1 até que se torne mais caro do que pegar a prateleira H i = n - 1 . então i = i - 1
Enquanto i> <0
Finalmente, eu não sei como fazer x variar ...
Isto é como escolher a colocar documentos em 4 ou 3 , por exemplo.
fonte
Respostas:
Vejo você perguntando: "Quero resolver isso com o algoritmo de Dijkstra, mas não consigo configurar um bom gráfico para rodar", portanto, apresentarei esse gráfico.
Um dígrafo em que os vértices são conjuntos de livros arquivados.
Ok, temos livros com alturas 1 ≤ n ≤ N e larguras W n , com alturas em ordem ascendente de cada livro, e queremos reuni-las em prateleiras.Hn, 1≤n≤N Wn,
Reutilize esses números para os nós de solução em que esse nó representa um estado de solução "todos os livros i ≤ n foram arquivados". Portanto, iniciaremos no nó 0 e procuraremos chegar ao nó N pelo caminho mais curto com o algoritmo de Dijkstra. Esses nós são os vértices do nosso gráfico.n, i≤n 0 N
Em seguida, traçamos do nó para qualquer nó j > i uma aresta direcionada que assume que todos esses livros intermediários serão arquivados com uma prateleira, ou seja, o comprimento dessa aresta é L i j = F j + C j j ∑ n = i + 1 W n , onde assumi que, quando você dizia que o custo da soma era F i + C i x i, o índice i no x i era totalmente sem sentido.i j>i
O algoritmo de Dijkstra, então, dar-nos um caminho mais curto de comprimento ao nóN.
fonte
Int
maior que1
. Isso leva a um gráfico den^2
vértices. Quando você está procurando um caminho entre A e B e todos os pesos das arestas são positivos, não há diferença entre Dijkstra e Bellman-Kalaba, exceto que a Bellman-Kalaba está sempre tentando atualizar arestas que não precisam ser atualizadas; Dijkstra apenas armazena ponteiros para os vértices com os quais se importa.Eu acho que tenho uma solução para o seu problema. Espero não ter entendido algo errado na definição do seu problema. Aqui vai:
Vamos provar as duas coisas a seguir:
Das duas coisas que provamos, B é a mais significativa.
Por último, mas não menos importante, como eu disse acima, como os livros são grandes, você não pode usar o algoritmo para cada livro. Penso que representar a sua altura pela soma da sua espessura deve funcionar. (Eu acho que já é assim na sua declaração)
(Suponho que o número de alturas diferentes seja muito menor que o número de livros)
fonte
Às vezes, apenas "ampliar" o "problema mais próximo" na literatura pode ajudar a entender a teoria e os antecedentes por trás do problema, criar uma abstração e eliminar detalhes espúrios. O problema mais próximo na literatura do seu parece ser o que é conhecido como "problema de empacotamento de compartimento de tamanho variável". Papéis de amostra estão incluídos abaixo. Esse problema é altamente estudado teoricamente e existe algum software pronto para uso, ele aparece na otimização de caixas de embalagem em, por exemplo, caminhões que enviam contêineres. Existem também versões em que é possível ajustar o tamanho do contêiner. Existem muitas abordagens algorítmicas. por exemplo, do 1º artigo:
OTIMIZANDO A EMBALAGEM TRIDIMENSIONAL EM LIXAS ATRAVÉS DA SIMULAÇÃO / Dube, Kanavathy
Problema na embalagem do caixote com volumes e capacidades incertos / Peng, Zhang
Algoritmos de embalagem bin 3d , stackoverflow
fonte