Problema de cobertura de conjuntos

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa

O problema de cobertura de conjuntos é uma questão clássica em combinatória, ciência da computação, pesquisa operacional e teoria da complexidade computacional . É um dos 21 problemas NP-completos de Karp mostrado ser NP-completo em 1972.

É um problema "cujo estudo levou ao desenvolvimento de técnicas fundamentais para todo o campo" dos algoritmos de aproximação .[1]

Dado um conjunto universo {1,2,...,n} e uma coleção S de m conjuntos cuja união é igual ao conjunto universo, o problema de cobertura de conjunto é identificar a menor sub-coleção de S cuja união é igual ao conjunto universo. Por exemplo, considere o conjunto universo U={1,2,3,4,5} e a coleção de conjuntos S={{1,2,3},{2,4},{3,4},{4,5}} . Claramente a união de S é U . No entanto, podemos cobrir todos os elementos com o mínimo número de conjuntos a seguir : {{1,2,3},{4,5}} .

Mais formalmente, dado um conjunto universo U e uma família S de subconjuntos de U, uma capa é uma subfamília CS de conjuntos cuja união é U . No conjunto que cumpre o problema de decisão, a entrada é um par (U,S) e um inteiro k ; a questão é se há uma cobertura de conjuntos de tamanho k ou menos. No conjunto que cumpre o problema de otimização, a entrada é um par (U,S), e a tarefa é encontrar uma cobertura de conjuntos que use o menor número de conjuntos.

A versão de decisão da cobertura do conjunto é NP-completa, e a versão de otimização / busca da cobertura do conjunto é NP-difícil . Predefinição:HarvRef

Se cada conjunto tiver um custo atribuído, ele se tornará um problema de cobertura de conjuntos ponderado .

Formulação do programa linear inteiro

O problema de cobertura mínima de conjuntos pode ser formulado como a seguinte programação inteira (PI).[2]

minimizar S𝒮xS (minimizar o número de conjuntos)
sujeito a S:eSxS1 para todos e𝒰 (cubra todos os elementos do universo)
xS{0,1} para todos S𝒮 . (cada conjunto está na capa ou não)

Essa PI pertence à classe mais geral de PIs para problemas de cobertura . A lacuna de integralidade deste PI é no máximo logn, então seu relaxamento dá um fator logn no algoritmo de aproximação para o problema de problema de cobertura mínima de conjuntos mínimo definida (onde n é o tamanho do universo).[3]

Na cobertura de conjuntos ponderados, os conjuntos recebem pesos. Denota o peso do conjunto S𝒮 de wS . Então, o programa linear inteiro que descreve a cobertura do conjunto ponderado é idêntico ao fornecido acima, exceto que a função objetivo para minimizar é S𝒮wSxS .

Formulação do conjunto de acerto

A cobertura de conjuntos é equivalente ao problema do conjunto de acerto . Isso é visto ao observar que uma instância de cobertura de conjunto pode ser vista como um grafo bipartido arbitrário, com conjuntos representados por vértices à esquerda, o universo representado por vértices à direita e arestas representando a inclusão de elementos em conjuntos. A tarefa é então encontrar um subconjunto de cardinalidade mínima de vértices esquerdos que cubra todos os vértices direitos. No problema do conjunto de acertos, o objetivo é cobrir os vértices esquerdos usando um subconjunto mínimo dos vértices direitos. A conversão de um problema para o outro é, portanto, alcançada trocando os dois conjuntos de vértices.

Algoritmo guloso

Existe um algoritmo guloso para aproximação de tempo polinomial de cobertura de conjunto que escolhe conjuntos de acordo com uma regra: em cada estágio, escolha o conjunto que contém o maior número de elementos descobertos. Pode ser provado [4] que este algoritmo atinge uma razão de aproximação de H(s), Onde s é o tamanho do conjunto a ser coberto. Em outras palavras, ele encontra uma cobertura que pode ser H(n) vezes tão grande quanto o mínimo, onde H(n) é o n -ésimo número harmônico :

H(n)=k=1n1klnn+1

Este algoritmo guloso realmente atinge uma proporção de aproximação de H(s) Onde s é o conjunto de cardinalidade máxima de S . Para δ instâncias densas, no entanto, existe um clnm - algoritmo de aproximação para cada c>0 .[5]

Exemplo resumido para o algoritmo guloso com k = 3

Há um exemplo padrão no qual o algoritmo guloso atinge uma proporção de aproximação de log2(n)/2 . O universo consiste em n=2(k+1)2 elementos O sistema definido consiste em k conjuntos disjuntos em pares S1,,Sk com tamanhos 2,4,8,,2k respectivamente, bem como dois conjuntos adicionais separados T0,T1, cada um dos quais contém metade dos elementos de cada Si . Nesta entrada, o algoritmo guloso pega os conjuntos Sk,,S1, nessa ordem, enquanto a solução ótima consiste apenas em T0 e T1 . Um exemplo de uma entrada para k=3 é ilustrado à direita.

Os resultados de incompatibilidade mostram que o algoritmo guloso é essencialmente o melhor algoritmo de aproximação de tempo polinomial possível para definir cobertura até termos de ordem inferior (consulte Resultados de incompatibilidade abaixo), sob suposições de complexidade plausíveis. Uma análise mais rigorosa do algoritmo guloso mostra que a razão de aproximação é exatamente lnnlnlnn+Θ(1) .[6]

Sistemas de baixa frequência

Se cada elemento ocorre em no máximo Predefinição:Var conjuntos, então uma solução pode ser encontrada no tempo polinomial que aproxima o ótimo dentro de um fator de Predefinição:Var usando relaxação LP .

Se a restrição xS{0,1} é substituído por xS0 para todos Predefinição:Var em 𝒮 no programa linear inteiro mostrado acima, então ele se torna um programa linear Predefinição:Var (não inteiro). O algoritmo pode ser descrito da seguinte maneira:

  1. Encontre uma solução ótima Predefinição:Var para o programa Predefinição:Var usando algum método de tempo polinomial para resolver programas lineares.
  2. Escolha todos os conjuntos Predefinição:Var para os quais a variável correspondente Predefinição:Var Predefinição:Var tem valor pelo menos 1 / Predefinição:Var na solução Predefinição:Var [3]

Resultados de inadequação

Quando n refere-se ao tamanho do universo, Predefinição:Harvtxt mostraram que a cobertura do conjunto não pode ser aproximada em tempo polinomial dentro de um fator de 12log2n0.72lnn, a menos que NP tenha algoritmos de tempo quase polinomial . Feige (1998) melhorou este limite inferior para (1o(1))lnn sob as mesmas suposições, o que essencialmente corresponde à razão de aproximação alcançada pelo algoritmo guloso. Predefinição:Harvtxt estabeleceram um limite inferior de clnn, Onde c é uma certa constante, sob a suposição mais fraca de que P = NP . Um resultado semelhante com um valor mais alto de c foi recentemente comprovado por Predefinição:Harvtxt . Predefinição:Harvtxt mostraram inadequação ideal, provando que não pode ser aproximado de (1o(1))lnn a menos que P = NP .

Cobertura de conjuntos ponderada

Relaxando o programa linear inteiro para cobertura de conjunto ponderado declarado acima, pode-se usar o arredondamento aleatório para obter um O(logn) - aproximação de fator. A análise correspondente para cobertura de conjunto não ponderada é delineada em Arredondamento aleatório # Algoritmo de arredondamento aleatório para cobertura de conjunto e pode ser adaptada ao caso ponderado.[3]

Problemas relacionados

  • Conjunto de acerto é uma reformulação equivalente do Set Cover.
  • A cobertura do vértice é um caso especial de conjunto de acerto.
  • A cobertura de arestas é um caso especial de capa de conjunto.
  • A cobertura geométrica do conjunto é um caso especial de cobertura do conjunto quando o universo é um conjunto de pontos em d e os conjuntos são induzidos pela interseção do universo e formas geométricas (por exemplo, discos, retângulos).
  • Definir embalagem
  • O problema de cobertura máxima é escolher no máximo k conjuntos para cobrir o máximo de elementos possível.
  • Conjunto dominante é o problema de selecionar um conjunto de vértices (o conjunto dominante) em um gráfico de forma que todos os outros vértices sejam adjacentes a pelo menos um vértice no conjunto dominante. O problema do conjunto dominante foi mostrado como NP completo por meio de uma redução da cobertura do conjunto.
  • O problema exato da cobertura é escolher uma cobertura de conjunto sem nenhum elemento incluído em mais de um conjunto de cobertura.

Notas

Predefinição:Referências

Predefinição:Referências

Ligações externas