Ordenação topológica positiva


45

Suponha que eu tenha um gráfico acíclico direcionado com pesos em número real em seus vértices. Quero encontrar uma ordem topológica do DAG em que, para cada prefixo da ordem topológica, a soma dos pesos não seja negativa. Ou, se você preferir a terminologia teórica da ordem, tenho uma ordem parcial ponderada e desejo uma extensão linear de modo que cada prefixo tenha um peso não negativo. O que se sabe sobre esse problema? É NP completo ou solucionável em tempo polinomial?


4
Experimente o algoritmo guloso neste gráfico: 1 -> 2 -> 3, 1 -> 4 -> 5, os pesos dos vértices são 1: +2, 2: -2, 3: +3, 4: -1 , 5: -2. O algoritmo ganancioso começaria com v1, depois escolheria v4 e, em seguida, ficaria preso. A ordem correta é v1, v2, v3, v4, v5.
Robin Kothari

2
"alguns dos problemas de distância da Frechet que JeffE e outros estão analisando" - Boa abstração! Para benefício de outras pessoas, eis uma versão: suponha que você receba um gráfico de plano ponderado pela aresta G e dois vértices s e t na face externa. Você deseja transformar um caminho de limite de s para t em outro por uma sequência de movimentos elementares. Cada movimento substitui o caminho atual por sua diferença simétrica por algum limite de face. Com que rapidez podemos encontrar a sequência mve que minimiza o comprimento máximo do caminho em evolução?
Jeffε

3
Tsuyoshi, desculpe por isso, tentei adicionar uma nova linha enquanto comentava e isso fez com que meu comentário fosse cortado. Portanto, a idéia é que você tem uma corda amarrada firmemente ao redor do pulso e deseja saber se é possível contorná-la. Seu pulso é representado como uma malha poligonal, cujas células são elementos de uma ordem parcial (mais perto da corda anterior, mais próximo da corda mais tarde na ordem). O peso de uma célula é a diferença de comprimentos entre seus limites interno e externo.
David Eppstein

1
@ David: Obrigado pela explicação. Desta vez, eu posso entender como isso está relacionado à questão atual, e é interessante!
Tsuyoshi Ito

3
Uma observação não tão útil, mas divertida: Esse problema é equivalente ao problema de seqüenciamento de uma máquina com prazos e restrições de precedência em que o tempo de processamento de cada trabalho pode ser negativo . Com o tempo de processamento não negativo, esse problema está em P (Lawler e Mooer 1969 jstor.org/stable/2628367 ) e, se existe uma solução, existe uma solução independente do tempo de processamento. Isso é claramente interrompido se alguns trabalhos tiverem tempo de processamento negativo.
Tsuyoshi Ito

Respostas:


18

Esse problema parece ser muito semelhante ao SEQUENCING PARA MINIMIZAR O CUSTO CUMULATIVO MÁXIMO, problema [SS7] na Garey & Johnson . A saber:

INSTÂNCIA: Defina de tarefas, ordem parcial em , um "custo" para cada (se , pode ser visto como um "lucro") , e uma constante .TTc(t)ZtTc(t)<0KZ

PERGUNTA: Existe uma programação um processador para que obedece às restrições de precedência e que possui a propriedade de que, para cada tarefa , a soma dos custos de todas as tarefas com é no máximo ?σTtTtσ(t)σ(t)K

Estou incerto se o problema permanece NP-completo quando é fixado a 0. G & J menção de que o problema permanece NP-completo se para todos os .Kc(t){1,0,1}tT


7
Este parece ser bom. Então acho que se pode aceitar sem perda de generalidade; caso contrário, adicione um trabalho irrestrito com -value (ou jobs de -value ). K=0cKKc1
Daveagp

@mhum: Estou trabalhando em um relatório técnico sobre resultados relacionados e gostaria de citar você. Você me daria seu nome verdadeiro? Se quiser, você pode enviá-lo para mim, ou simplesmente ficar Anon ...
domotorp

9

Bem, minha resposta é minha pergunta, da qual se conclui que se você pudesse resolver esse problema em P, também poderia resolver outro problema em aberto: ordenação topológica positiva, faça 3

Editar: esse problema também se mostrou NP-completo, portanto seu problema já está NP-completo se o seu DAG tiver apenas dois níveis, ou seja, se não houver caminhos direcionados com duas arestas.


3

Se eu entendi o problema corretamente, acho que o problema de planejamento de máquina única com restrição de precedência para minimizar a soma ponderada dos tempos de conclusão (1 | prec | \ sum wc) pode ser reduzido ao problema que você está interessado. No problema 1 | prec | \ sum wc, temos n trabalhos, cada um com um peso não negativo e um tempo de processamento, um poset nos trabalhos e queremos uma extensão linear dos trabalhos, de modo que a soma ponderada dos tempos de conclusão dos trabalhos seja minimizado. O problema é NP-completo, apesar de assumirmos que o tempo de processamento de cada trabalho é igual a 1. Faz algum sentido?


É definitivamente uma possibilidade interessante. Mas como você faz a redução de forma que o critério de otimização (minimize a soma dos tempos de conclusão) seja transformado em restrições (prefixos não negativos)?
David Eppstein

Não conheço esse resultado de completude de PN do problema de agendamento, mas acho que se refere ao problema de decisão de decidir se existe uma extensão linear, de modo que a soma ponderada dos tempos de conclusão do trabalho seja no máximo K, portanto, não acho que a distinção entre um critério de otimização e uma restrição é importante aqui. No entanto, não entendi como representar a restrição na soma ponderada dos tempos de conclusão no problema atual.
Tsuyoshi Ito

Eu acho que a redução não é tão fácil quanto eu pensava no começo. Não tenho mais certeza da minha resposta.
monaldo 16/09/10

Acabei de perceber um erro no meu comentário anterior. Quando publiquei, pensei que representar uma restrição à soma não ponderada era fácil (daí a ênfase na ponderação ), mas isso estava completamente errado.
Tsuyoshi Ito

2

E se sempre pegarmos o elemento máximo (na ordem parcial) com o menor peso. Depois de esgotarmos os elementos, devolvemos-os em ordem inversa à saída.


O problema é invariante sob a transformação de reverter a ordem parcial e negar todos os pesos. Portanto, não vejo como isso possa ser diferente do algoritmo de avanço ganancioso que Robin K deu um contra-exemplo nos comentários.
David Eppstein

Mas esse método funciona para o seu exemplo: primeiro, o vértice 5 seria escolhido, depois o vértice 4, depois o 3, 2 e finalmente 1. Portanto, a ordem final seria 1, 2, 3, 4, 5. Na verdade, eu não acho que é difícil provar que esse método funciona. Suponha que você tenha uma solução que não tenha um elemento máximo (afundamento) de peso mínimo na última posição. Em seguida, você poderá encontrar outra solução que possua essa propriedade, simplesmente alterando a posição de um elemento para durar e preservando o restante. Prossiga por indução sobre o que resta e você obtém uma prova formal.
Daniel Martin

Sim ... não funciona ... 1 -> 2 -> 3, 1 -> 4 com pesos 4, -7, 6, 3, respectivamente.
Daniel Martin

1

Esse problema me lembra muitas árvores de decisão. Eu consideraria esse tipo de solução, que tenta sempre escolher o caminho mais promissor, mas olhando para todo o subgráfico:

A partir dos nós do coletor, trabalhe em direção às fontes, um nível de cada vez. Enquanto você faz isso, dê um peso a cada borda. Esse peso deve representar o valor mínimo que você terá que "pagar" ou "ganhará" atravessando o subgráfico a partir do nó para o qual a borda aponta. Suponha que estejamos no nível i + 1 e subamos para o nível i. Isto é o que eu faria para atribuir um peso para uma borda apontando para um nó do nível i:

  1. edge_weight = apontar_nome_peso.
  2. Encontre a borda começando no "nó apontador" com o peso máximo. Deixe esse peso ser next_edge_weight.
  3. edge_weight + = next_edge_weight

Em seguida, crie a ordem da seguinte maneira:

  1. Seja S a fronteira da pesquisa, ou seja, o conjunto de nós para selecionar a seguir.
  2. Selecione o nó para que (node_weight + maximum_edge_weight) seja maximizado.
  3. Remova o nó do gráfico e S. Adicione os "filhos" do nó a S.
  4. Se o gráfico não estiver vazio, vá para a etapa 1.
  5. Pare.

A idéia é atravessar os subgráficos que darão o maior ganho possível primeiro, para poder suportar o custo dos subgráficos de peso negativo posteriormente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.