Um de meus amigos me pergunta o seguinte problema de agendamento na árvore. Eu acho que é muito limpo e interessante. Existe alguma referência para isso?
Problema: existe uma árvore , cada aresta tem um custo de deslocamento simétrico de 1 . Para cada vértice , há uma tarefa que precisa ser executada antes do prazo . A tarefa também é indicada como . Cada tarefa possui o valor uniforme 1. O tempo de processamento é 0 para cada tarefa , ou seja, visitar uma tarefa antes que seu prazo seja igual ao seu término. Sem perda de generalidade, deixe denotar a raiz e assumindo que não há tarefa localizada em . Existe um veículo na no tempo 0. Além disso, assumimos que para cada vértice ,representa a profundidade de . Isso é evidente, o vértice com prazo inferior à sua profundidade deve ser considerado um erro. O problema pede para encontrar um agendamento que conclua o maior número possível de tarefas.
Progresso:
- Se a árvore estiver restrita a um caminho, será em através de programação dinâmica.
- Se a árvore for generalizada para um gráfico, ela estará em concluída.
- Eu tenho um algoritmo ganancioso muito simples, que é acreditado por 3 fatores. Eu não provei isso completamente. Agora, estou mais interessado nos resultados difíceis de NP. :-)
Obrigada pelo Conselho.
fonte
Respostas:
Não tenho certeza se esta é sua resposta (veja abaixo), mas um pouco demais para os comentários.
Eu pensei que seu problema era algo como: , onde:(P|tree;pi=1|ΣTi)
Se for esse o caso, seu problema é difícil: você pode vê-lo como uma generalização de Minimizando o atraso total em uma única máquina com restrições de precedência . De fato, este documento afirma que, para várias cadeias lineares, é NP-hard em um único processador. A transformação fácil é levar as árvores da forma uma raiz e cadeias lineares a partir da raiz.
No entanto, estou surpreso porque você parece dizer que, no caso de uma única cadeia linear, você usaria a Programação Dinâmica. Não vejo por que você precisaria de DP, pois me parece que, ao programar uma única cadeia linear, você não tem muita escolha devido às restrições de precedência: apenas uma única opção. Talvez eu tenha entendido mal o seu problema.
fonte
Para que isso seja verdade, temos que fazer algumas suposições. Veja os comentários abaixo
Para o caso em árvore, acredito que exista um algoritmo de programação dinâmica recursiva em tempo polinomial parametrizado pelo tempo máximo de prazo. Os subproblemas são: se uma subárvore no tempo e da subárvore no tempo , qual é o número máximo de tarefas que podemos concluir na subárvore? Os casos básicos nas folhas são fáceis e memorizamos de baixo para cima.ta tb
Se realmente parametrizamos pelo prazo máximo de prazo, o algoritmo não seria realmente polinomial no tamanho da árvore. No entanto, o comprimento do caminho mais longo que visita todos os nós da árvore é apenas polinomial em, e nunca precisamos verificar os prazos até depois disso.|V|
fonte
O problema de obter uma aproximação constante para este caso ou provar que o NP-Hard ainda está aberto e qualquer resultado seria uma boa publicação. Alguns casos especiais foram resolvidos. Eu, juntamente com outros, tenho alguns resultados parciais que resolvem casos especiais como aranhas, árvores de altura constante. Mas, o problema geral das árvores não está resolvido.
fonte