Problema da árvore de Steiner: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
Caburu (discussão | contribs)
m →‎Generalização da árvore mínima de Steiner: correção do termo "gráfico" para "grafo".
reescrito partes do texto
Linha 1: Linha 1:
[[Ficheiro:Steiner_3_points.svg|miniaturadaimagem|Arvore de Steiner para três pontos ''A'', ''B'', e ''C'' (note que existem conexões diretas entre ''A'', ''B'', ''C''). O ponto de Steiner ''S'' está localizado no ponto de Fermat do [[triângulo]] ''ABC''.]]
[[Ficheiro:Steiner_3_points.svg|miniaturadaimagem|Arvore de Steiner para três pontos {{mvar|A}}, {{mvar|B}}, e {{mvar|C}} (note que existem conexões diretas entre {{mvar|A}}, {{mvar|B}}, {{mvar|C}}). O ponto de Steiner {{mvar|S}} está localizado no ponto de Fermat do [[triângulo]] {{mvar|ABC}}.]]
[[Ficheiro:Steiner_4_points.svg|miniaturadaimagem|Solução para quatro pontos—há dois pontos de Steiner, ''S''<sub>1</sub> e ''S''<sub>2</sub>]]
[[Ficheiro:Steiner_4_points.svg|miniaturadaimagem|Solução para quatro pontos — há dois pontos de Steiner, {{mvar|S<sub>1</sub>}} e {{mvar|S<sub>2</sub>}}]]
O problema da '''árvore de Steiner''', problema da '''auto-estrada''', ou '''problema da árvore mínima de Steiner''', denominado em referência a [[Jakob Steiner]], é um problema de [[otimização combinatória]], que pode ser formulado em uma série de configurações, com a parte comum, sendo que é necessário para encontrar a menor interconexão para um determinado conjunto de objetos.
Na [[Combinatória]], o '''problema da árvore de Steiner''', '''problema da autoestrada''', ou '''problema da árvore mínima de Steiner''', denominado em referência a [[Jakob Steiner]], é um [[Hiperônimo|termo genérico]] para uma classe de problemas na [[otimização combinatória]]. Uma variante bastante conhecida, que é geralmente utilizada como sinônimo do termo problema da árvore de Steiner, é o '''problema da árvore de Steiner em grafos'''. Dado um [[grafo simples]] com os pesos das arestas não negativas e um subconjunto de vértices, geralmente referidos como '''terminais''', o problema da árvore de Steiner em grafos requer uma [[Árvore (grafo)|árvore]] com menor peso que contenha todos os terminais (mas poderá incluir vértices adicionais) e minimiza o total dos pesos de suas arestas. Outras variantes bastante conhecidas são o ''problema da árvore de Steiner Euclidiana'' e o ''problema da árvore de Steiner [[Geometria do táxi|retilinear]]''.


O problema da árvore de Steiner em grafos pode ser visto como uma generalização de dois outros problemas: o [[problema do caminho mínimo]] (não negativo) e o [[Árvore de extensão mínima|problema da árvore de extensão mínima]]. Se um problema da árvore de Steiner em grafos contém exatamente dois terminais, a procura se restringe ao caminho mínimo. Se, por outro lado, todos os vértices são terminais, o problema da árvore de Steiner em grafos é equivalente à árvore de extensão mínima. No entanto, por mais que o problema do caminho mínimo não negativo e da árvore de extensão mínima são resolvidos em [[Complexidade de Tempo#Tempo Polinomial|tempo polinomial]], nenhuma solução do tipo é conhecida para o problema da árvore de Steiner em grafos. Sua [[Problema de decisão|variante de decisão]], em que se pergunta se uma determinada entrada tem uma árvore de peso menor que um determinado limite, é [[NP-completo|NP-completa]], o que implica que a variante de otimização, pedindo pela árvore de peso mínimo num dado grafo, é [[NP-difícil]]. Na verdade, um deles estava entre os [[21 problemas NP-completos de Karp|21 problemas originais NP-completos de Karp]]. O problema da árvore de Steiner em grafos tem aplicações em layout de [[Circuito elétrico|circuito]] ou em [[Planejamento e design de rede|design de rede]]. No entanto, aplicações práticas geralmente requerem variações, o que aumenta a quantidade de variantes do problema da árvore de Steiner.
O problema da árvore de Steiner é superficialmente semelhante ao problema da [[árvore de extensão mínima]]: dado um conjunto ''V'' de pontos (vértices), interligá-los através de uma rede ([[grafo]]) de menor tamanho, onde o comprimento é a soma dos comprimentos de todas as arestas. A diferença entre o problema da árvore de Steiner e o problema da arvore de extensão minima é que, na árvore de Steiner, vertices intermediários e arestas intermediárias podem ser adicionados ao grafo, a fim de reduzir o comprimento da árvore de expansão. Esses novos vértices introduzidos para diminuir o comprimento total da ligação são conhecidos como '''pontos de Steiner''' ou '''vértices de Steiner'''. Foi provado que a ligação resultante é uma [[Árvore (grafo)|árvore]], conhecida como a '''árvore de Steiner'''. Podem existir várias árvores de Steiner para um determinado conjunto de vértices iniciais.


A maioria das versões do problema da árvore de Steiner são [[NP-difícil|NP-difíceis]], mas alguns casos restritos podem ser resolvidos em tempo polinomial. Apesar do pessimismo da [[complexidade de pior caso]], diversas variantes do problema da árvore de Steiner, incluindo o problema da árvore de Steiner em grafos e problema da árvore de Steiner retilinear, podem ser resolvidos eficientemente na prática, mesmo para problemas do mundo real em larga escala.{{sfnp|Rehfeldt|Koch|2023}}{{sfnp|Juhl|Warme|Winter|Zachariasen|2018}}
O problema da árvore de Steiner tem aplicações em layout de [[Circuito elétrico|circuito]] ou em projeto de rede. A maioria das versões do problema da árvore de Steiner são [[NP-completo|NP-completos]]. Na verdade, um deles estava entre os [[21 problemas NP-completos de Karp|21 problemas originais NP-completos de Karp]] . Alguns casos restritos podem ser resolvidos em [[Complexidade de Tempo|tempo polinomial]]. Na prática, são utilizadas [[Heurística|heurísticas]].


== Árvore de Steiner Euclideana ==
== Árvore de Steiner euclidiano ==
[[Imagem:Regular polygon Euclidean Steiner tree.svg|thumb|right|Árvores de Steiner mínimas de vértices de polígonos regulares com {{nowrap|{{mvar|N}} &equals; 3 a 8}} lados. O menor comprimento de rede {{mvar|L}} para {{nowrap|{{mvar|N}} &gt; 5}} é o perímetro menos um lado. Os quadrados representam os pontos de Steiner]]
O problema original foi enunciado na forma em que se tornou conhecido como o '''problema da árvore de Steiner Euclideana''' ou '''problema geométrico da árvore de Steiner: '''Dados ''N'' pontos em um [[Plano (geometria)|plano]], o objetivo é conectá-los por linhas de comprimento total mínimo de tal forma que quaisquer dois pontos podem ser interligados por [[Reta|segmentos de reta]] diretamente ou através de outros [[Ponto (matemática)|pontos]] e segmentos de reta.
O problema original foi enunciado na forma em que se tornou conhecido como o '''problema da árvore de Steiner euclidiana''' ou '''problema geométrico da árvore de Steiner: '''Dados {{mvar|N}} pontos em um [[Plano (geometria)|plano]], o objetivo é conectá-los por linhas de comprimento total mínimo de tal forma que quaisquer dois pontos podem ser interligados por [[Reta|segmentos de reta]] diretamente ou através de outros [[Ponto (matemática)|pontos]] e segmentos de reta. Pode ser mostrado que os segmentos de reta não se cruzam uns aos outros, exceto nas extremidades e formam uma árvore, daí o nome do problema.


O problema para {{nowrap|{{mvar|N}} &equals; 3}} tem sido estudado há muito tempo e rapidamente se estendeu ao problema de encontrar uma [[Estrela (teoria dos grafos)|rede estelar]] com um único centro conectando todos os {{mvar|N}} pontos dados, com o comprimento total mínimo. No entanto, embora o problema completo da árvore de Steiner tenha sido formulado em uma carta por [[Gauss]], seu primeiro tratamento sério foi em um artigo de 1934 escrito em tcheco por [[Vojtěch Jarník]] e [[Miloš Kössler]]. Este artigo foi muito ignorado, mas já continha "virtualmente todas as propriedades gerais das árvores de Steiner" posteriormente atribuídas a outros pesquisadores, incluindo a generalização do problema do plano para dimensões maiores.<ref>{{citar periódico |ultimo1=Korte |primeiro1=Bernhard |autorlink1=Bernhard Korte |ultimo2=Nešetřil |primeiro2=Jaroslav |autorlink2=Jaroslav Nešetřil |doi=10.1016/S0012-365X(00)00256-9 |numero=1–3 |periódico=Discrete Mathematics |mr=1829832 |páginas=1–17 |titulo=Vojtěch Jarnik's work in combinatorial optimization |volume=235 |ano=2001 |hdl=10338.dmlcz/500662 |hdl-access=free}}</ref>
Pode ser mostrado que os segmentos de reta não se cruzam uns aos outros, exceto nas extremidades e formam uma árvore, daí o nome do problema.


Para o problema da árvore de Steiner Euclideana, pontos adicionados ao grafo (pontos de Steiner) devem ter um grau 3, e as três arestas incidentes ao ponto devem formar 3 ângulos de 120 graus (ver [[ponto de Fermat]]). Segue que o número máximo de pontos que uma árvore de Steiner pode ter  é ''N - 2'', onde ''N'' é o número inicial de pontos inicialmente dados.
Para o problema da árvore de Steiner euclidiana, pontos adicionados ao grafo (pontos de Steiner) devem ter um grau 3, e as três arestas incidentes ao ponto devem formar 3 ângulos de 120 graus (ver [[ponto de Fermat]]). Segue que o número máximo de pontos que uma árvore de Steiner pode ter é {{nowrap|{{mvar|N}} - 2}}, em que {{mvar|N}} é o número de pontos inicialmente dados.


Para ''N = 3'', existem dois casos possíveis: se o triângulo formado pelos pontos dados tem todos os ângulos que são menores do que 120 graus, a solução é dada por um ponto de Steiner localizado no ponto de Fermat; caso contrário, a solução é dada pelos dois lados do triângulo, que se encontram no ângulo de 120 graus ou mais.
Para {{nowrap|{{mvar|N}} &equals; 3}}, existem dois casos possíveis: se o triângulo formado pelos pontos dados tem todos os ângulos que são menores do que 120 graus, a solução é dada por um ponto de Steiner localizado no ponto de Fermat; caso contrário, a solução é dada pelos dois lados do triângulo, que se encontram no ângulo igual ou maior que 120 graus.


Para N geral, o problema da árvore euclidiana de Steiner é [[NP-difícil]], e portanto, não se sabe se uma [[solução ótima]] pode ser encontrada por meio de um [[Complexidade de Tempo|algoritmo de tempo polinomial]]. No entanto, existe um [[Esquema de aproximação de tempo Polinomial|esquema de aproximação de tempo polinomial]] (PTAS) para árvores de Steiner euclideana, isto é, uma solução quase ótima pode ser encontrada em tempo polinomial.{{Sfnp|Crescenzi|Kann|Halldórsson|Karpinski|2000}} Não se sabe se o problema da árvore de Steiner euclideana é NP-completo, uma vez que a sua pertinência à classe de complexidade NP não é conhecida.
Para {{mvar|N}} geral, o problema da árvore euclidiana de Steiner é [[NP-difícil]], e, portanto, não se sabe se uma [[solução ótima]] pode ser encontrada por meio de um [[Complexidade de Tempo|algoritmo de tempo polinomial]]. No entanto, existe um [[esquema de aproximação de tempo polinomial]] (PTAS) para árvores de Steiner euclidiana, isto é, uma solução quase ótima pode ser encontrada em tempo polinomial.{{Sfnp|Crescenzi|Kann|Halldórsson|Karpinski|2000}} Não se sabe se o problema da árvore de Steiner euclidiana é NP-completo, uma vez que a sua pertinência à classe de complexidade NP não é conhecida.


== Árvore retilínea de Steiner ==
== Árvore de Steiner retilinear ==
O problema mínimo da árvore retilínea de Steiner (MRST) é uma variante do problema geométrico da árvore de Steiner no plano, no qual a [[distância Euclidiana|distância Euclideana]] é substituído pela [[Geometria do táxi|distância retilínea]]. O problema surge na concepção física de [[automação de design eletrônico]]. Em circuitos VLSI, a distribuição de fios é realizada por fios que são muitas vezes restringidos pelas regras de design para percorrer somente em direções verticais e horizontais, de modo que o problema da árvore retilínea de Steiner pode ser utilizado para modelar o roteamento de redes com mais do que dois terminais.{{Sfnp|Sherwani|1993|p=228}}
O problema mínimo da árvore de Steiner retilinear é uma variante do problema geométrico da árvore de Steiner no plano, no qual a [[distância Euclidiana|distância euclidiana]] é substituído pela [[Geometria do táxi|distância retilínea]]. O problema surge na concepção física de [[automação de design eletrônico]]. Em circuitos de {{ill|en|VLSI}}, a distribuição de fios é realizada por fios que são muitas vezes restringidos pelas regras de design para percorrer somente em direções verticais e horizontais, de modo que o problema da árvore retilínea de Steiner pode ser utilizado para modelar o roteamento de redes com mais do que dois terminais.{{Sfnp|Sherwani|1993|p=228}}


== Árvore de Steiner em grafos e variantes ==
== Generalização da árvore mínima de Steiner ==
As árvores de Steiner também foram estudadas no contexto de grafos com pesos. No '''problema da árvore geral de Steiner''' ('''árvore de Steiner em grafos'''), dado um grafo com pesos de ponta G = (V, E, W) e um subconjunto S ⊆ V de vértices requeridos. Uma árvore de Steiner é uma árvore no grafo G que abrange todos os vértices de S. Existem duas versões do problema: no problema de otimização associado com árvores de Steiner, a tarefa é encontrar uma árvore de peso mínimo de Steiner; no problema de decisão, é dado um valor de k e a tarefa é determinar se uma árvore de Steiner de peso total no máximo k existe. O problema da decisão foi um dos [[21 problemas NP-completos de Karp]]; daí o problema de otimização é [[NP-difícil]].
As árvores de Steiner também foram estudadas no contexto de [[Grafo valorado|grafos com peso]]. O protótipo é, sem dúvida, o '''problema da árvore de Steiner em grafos'''. Seja {{nowrap|{{mvar|G}} &equals; ({{mvar|V}}, {{mvar|E}})}} um grafo não direcionado como vértices não negativos de peso {{mvar|c}} e um subconjunto {{nowrap|{{mvar|S}}{{mvar|V}} }} de vértices, chamados de '''terminais'''. Uma '''árvore de Steiner''' é uma árvore no grafo {{mvar|G}} que abrange todos os vértices de {{mvar|S}}. Existem duas versões do problema: no [[problema de otimização]] associado com árvores de Steiner, a tarefa é encontrar uma árvore de Steiner de peso mínimo; no [[problema de decisão]], os pesos das arestas são inteiros e a tarefa é determinar se exite uma árvore de Steiner que de peso total no máximo k existe. O problema da decisão foi um dos [[21 problemas NP-completos de Karp]]; daí o problema de otimização é [[NP-difícil]]. Os problemas da árvore de Steiner em grafos são aplicadoa a varios problemas de empresa e industria,<ref>{{citar periódico|último=Ljubić|primeiro=Ivana|data=2021|título=Solving Steiner trees: Recent advances, challenges, and perspectives|url=https://onlinelibrary.wiley.com/doi/abs/10.1002/net.22005|periódico=Networks|língua=en|volume=77|número=2|páginas=177–204|doi=10.1002/net.22005|s2cid=229458488 |issn=1097-0037}}</ref> incluindo roteamento multicast<ref>{{citar periódico|último1=Novak|primeiro1=Roman|último2=Rugelj|primeiro2=Joz̆e|último3=Kandus|primeiro3=Gorazd|data=2001-10-01|título=A note on distributed multicast routing in point-to-point networks|url=https://www.sciencedirect.com/science/article/pii/S0305054800000290|periódico=Computers & Operations Research|língua=en|volume=28|número=12|páginas=1149–1164|doi=10.1016/S0305-0548(00)00029-0|issn=0305-0548}}</ref> e bioinformática.<ref>{{citar periódico|último1=Klimm|primeiro1=Florian|último2=Toledo|primeiro2=Enrique M.|último3=Monfeuga|primeiro3=Thomas|último4=Zhang|primeiro4=Fang|último5=Deane|primeiro5=Charlotte M.|último6=Reinert|primeiro6=Gesine|data=2020-11-02|título=Functional module detection through integration of single-cell RNA sequencing data with protein–protein interaction networks|url=https://doi.org/10.1186/s12864-020-07144-2|periódico=BMC Genomics|volume=21|número=1|páginas=756|doi=10.1186/s12864-020-07144-2|issn=1471-2164|pmc=7607865|pmid=33138772}}</ref>


Um caso especial deste problema é quando G é um grafo completo, cada vértice v ∈ V corresponde a um ponto em um espaço métrico, e os pesos das arestas W (e) para cada e ∈ E correspondem às distâncias no espaço. Em outras palavras, os pesos das arestas satisfazem a desigualdade triangular. Esta variante é conhecida como o problema métrico da árvore de Steiner. Dada uma instância (não-métrica) do problema da árvore de Steiner, podemos transformá-la em tempo polinomial em uma instância equivalente do problema métrico da árvore de Steiner; a transformação preserva o fator de aproximação.{{Sfnp|Vazirani|2003|pp=27–28}}
Um caso especial deste problema é quando {{mvar|G}} é um [[grafo completo]], cada vértice {{nowrap|{{mvar|v}}{{mvar|V}} }} corresponde a um ponto em um [[espaço métrico]], e os pesos das arestas {{mvar|w}}({{mvar|e}}) para cada {{nowrap|{{mvar|e}}{{mvar|E}} }}correspondem às distâncias no espaço. Em outras palavras, os pesos das arestas satisfazem a [[desigualdade triangular]]. Esta variante é conhecida como o '''problema da árvore de Steiner métrico'''. Dada uma instância (não-métrica) do problema da árvore de Steiner, podemos transformá-la em tempo polinomial em uma instância equivalente do problema métrico da árvore de Steiner; a transformação preserva o fator de aproximação.{{Sfnp|Vazirani|2003|pp=27–28}}


Embora a versão euclideana admita uma PTAS, sabe-se que o problema métrico da árvore de Steiner é [[Apx completude|APX-completo]], isto é, a menos que [[P versus NP|P = NP]], é impossível de alcançar proporções de aproximação que são arbitrariamente próximas de 1 em tempo polinomial. Há um algoritmo de tempo polinomial que aproxima a árvore mínima de Steiner dentro de um fator de <math>\ln(4) + \epsilon\approx1.386</math>;{{Sfnp|Byrka|Grandoni|Rothvoß|Sanita|2010}}
Embora a versão euclidiana admita um PTAS, sabe-se que o problema métrico da árvore de Steiner é [[APX-completude|APX-completo]], isto é, a menos que [[P versus NP|P = NP]], é impossível de alcançar proporções de aproximação que são arbitrariamente próximas de 1 em tempo polinomial. Há um algoritmo de tempo polinomial que aproxima a árvore mínima de Steiner dentro de um fator de <math>\ln(4) + \epsilon\approx1.386</math>;{{Sfnp|Byrka|Grandoni|Rothvoß|Sanita|2010}} No entanto, a aproximação dentro de um fator de <math>96/95\approx 1.0105</math> é NP-difícil.{{Sfnp|Chlebík|Chlebíková|2008}} Para o caso restrito do problema da árvore de Steiner com distâncias 1 e 2, um algoritmo de aproximação com fator 1,25 é conhecido.{{Sfnp|Berman|Karpinski|Zelikovsky|2009}} Karpinski e Alexander Zelikovsky construiram um PTAS para as instâncias densas do problema da árvore de Steiner.{{sfnp|Karpinski|Zelikovsky|1998}}
No entanto, a aproximação dentro de um fator de <math>96/95\approx 1.0105</math> é NP-difícil.{{Sfnp|Chlebík|Chlebíková|2008}} Para o caso restrito do problema da árvore de Steiner com distâncias 1 e 2, um algoritmo de aproximação com fator 1,25 é conhecido.{{Sfnp|Berman|Karpinski|Zelikovsky|2009}}


Em um caso especial do problema de grafo, o problema da árvore de Steiner para gratos quais-bipartidos, S tem que incluir pelo menos uma extremidade de cada aresta de G.
Em um caso especial do problema de grafo, o problema da árvore de Steiner para gratos quase-bipartidos, {{mvar|S}} tem que incluir pelo menos uma extremidade de cada aresta de {{mvar|G}}.


O problema da árvore de Steiner também tem sido investigado em dimensões mais elevadas e em várias superfícies. Algoritmos para encontrar a árvore mínima de Steiner tem sido encontrados na esfera, toro, [[Plano projectivo|plano projetivo]], cones largos e estreitos, e outros.{{Sfnp|Smith|Winter|1995|p=361}}
O problema da árvore de Steiner também tem sido investigado em dimensões mais elevadas e em várias superfícies. Algoritmos para encontrar a árvore mínima de Steiner tem sido encontrados na esfera, [[Toro (topologia)|toro]], [[plano projetivo]], cones largos e estreitos, e outros.{{Sfnp|Smith|Winter|1995|p=361}}


Outras generalizações do problema da árvore de Steiner são os '''problema de k arestas conectadas da rede de Steiner''' e o '''problema de k vertices conectados da rede de Steiner''', onde o objetivo é encontrar um gráfico conexo de k arestas ou um gráfico conexo de k vértices em vez do que qualquer grafo conexo.
Outras generalizações do problema da árvore de Steiner são o '''problema de k-arestas-conexo da rede de Steiner''' e o '''problema de k-vértices-conexos da rede de Steiner''', no qual o objetivo é encontrar um [[grafo k-aresta-conexo]] ou um [[grafo k-vértice-conexo]] em vez do que grafo conexo qualquer. Outra generalização bastante estudada é o '''problema de projeto de redes sobrevivível''', em que o objetivo é conectar cada par de vértices com um dado número (possivelmente 0) de caminhos de arestas ou vértices disjuntos.<ref>{{citar periódico|último1=Kerivin |primeiro1=Hervé |último2=Mahjoub |primeiro2=A. Ridha |data=2005 |título=Design of Survivable Networks: A survey |url=https://onlinelibrary.wiley.com/doi/10.1002/net.20072 |periódico=Networks |língua=en |volume=46 |número=1 |páginas=1–21 |doi=10.1002/net.20072 |s2cid=8165318 |issn=0028-3045}}</ref>


O problema de Steiner também foi enunciado na definição geral dos espaços métricos e possivelmente para uma quantidade infinita de pontos.{{Sfnp|Paolini|Stepanov|2012}}
O problema de Steiner também foi enunciado na definição geral dos espaços métricos e possivelmente para uma quantidade infinita de pontos.{{Sfnp|Paolini|Stepanov|2012}}


== Aproximando a árvore de Steiner ==
== Aproximando a árvore de Steiner ==
O problema geral de grafo da árvore de Steiner pode ser aproximado computando a árvore geradora mínima (MST) do fecho métrico do grafo induzido pelos vértices terminais. O fecho métrico de um grafo <math>G</math> é o grafo completo no qual cada aresta é ponderada pela distância do caminho mais curto entre os nós em G. Esse algoritmo produz uma árvore cujo peso está dentro de um fator de 2 - 2 / ''t'' do peso da árvore del Steiner ótima; isso pode ser provado considerando uma viagem de um caixeiro viajante na árvore de Steiner ótima. Uma solução aproximada é computável em tempo polinomial primeiro resolvendo o problema dos caminhos mais curtos de todos os pares para computar o fecho métrico, e depois resolvendo o problema da árvore geradora mínima.
O problema geral de grafo da árvore de Steiner pode ser aproximado computando a árvore geradora mínima do subgrafo do fecho métrico do grafo induzido pelos vértices terminais, conforme publicado pela primeira vez por Kou et al. em 1981.{{Sfnp|Kou|Markowsky|Berman|1981}} O fecho métrico de um grafo {{mvar|G}} é o grafo completo no qual cada aresta é ponderada pela distância do caminho mais curto entre os nós em {{mvar|G}}. Esse algoritmo produz uma árvore cujo peso está dentro de um fator de <math>2 - \frac2t</math> do peso da árvore de Steiner ótima em que {{mvar|t}} é o número de folhas na árvore de Steiner ótima; isso pode ser provado considerando o passeio do caixeiro-viajante na árvore de Steiner ótima. Uma solução aproximada é computável em [[Complexidade de Tempo#Tempo Polinomial|tempo polinomial]] <math>O(|S| |V|^2)</math> ao resolver primeiramente o problema dos caminhos mais curtos de todos os pares para computar o fecho métrico, e depois resolvendo o problema da [[árvore de extensão mínima]].


Outro algoritmo popular para aproximar a árvore de Steiner em grafos foi publicado por Takahashi e Matsuyama em 1980.{{sfnp|Takahashi|Matsuyama|1980}} A solução deles constrói incrementalmente a árvore de Steiner, começando a partir de um vértice arbitrário e adicionando repetidamente o caminho mais curto da árvore para o vértice mais próximo em S que ainda não foi adicionado. Esse algoritmo também tem um tempo de execução de <math>O(|S| |V|^2)</math> e produz uma árvore cujo peso está dentro de <math>2 - \frac{2}{|S|}</math> do ótimo.
Uma série de artigos forneceu algoritmos de aproximação para o problema da árvore de Steiner mínima com taxas de aproximação que melhorou a taxa de 2 - 2 / ''t''. A sequencia culminou com o algoritmo de Robins e Zelikovsky em 2000 que melhorou esta taxa para 1,55, melhorando de forma iterativa a árvore geradora terminal de custo mínimo. Mais recentemente, entretanto, Jaroslaw Byrka et al. provou uma aproximação de <math>\ln(4) + \epsilon \le 1.39</math> usando um relaxamento da programação linear e uma técnica chamada de arredondamento randomizado, iterativo, usando uma relação linear e uma técnica chamada arredondamento randomizado, iterativo.{{Sfnp|Byrka|Grandoni|Rothvoß|Sanita|2010}}


Em 1986, Wu et al.{{sfnp|Wu|Widmayer|Wong|1986}} melhoraram drasticamente o tempo de execução, evitando o pré-cálculo dos caminhos mais curtos entre todos os pares de vértices. Em vez disso, eles adotaram uma abordagem semelhante à do [[algoritmo de Kruskal]] para calcular uma árvore geradora mínima, começando com uma floresta de |S| árvores disjuntas e "crescendo" simultaneamente usando uma busca em largura que se assemelha ao [[algoritmo de Dijkstra]], mas começando a partir de múltiplos vértices iniciais. Quando a busca encontra um vértice que não pertence à árvore atual, as duas árvores são mescladas em uma. Esse processo é repetido até que reste apenas uma árvore. Usando uma estrutura de [[heap]] para implementar a fila de prioridade e uma [[União-busca|estrutura de dados união-busca]] para rastrear a qual árvore pertence cada vértice visitado, esse algoritmo alcança um tempo de execução de <math>O(|E| \log |V|)</math>, embora não melhore a proporção de custo <math>2 - \frac2t</math> de Kou et al.
== Relação de Steiner ==
A '''proporção Steiner''' é o [[supremo]] da razão entre o tamanho total da árvore geradora mínima para a árvore mínima de Steiner de um conjunto de pontos no plano euclideano.{{Sfnp|Ganley|2004}}


Uma série de artigos forneceu algoritmos de aproximação para o problema da árvore de Steiner mínima com proporções de aproximação que melhorou a proporção de <math>2 - \frac2t</math>. A sequência culminou com o algoritmo de Robins e Zelikovsky em 2000, que melhorou esta proporção para 1,55 ao melhorar iterativamente a árvore geradora terminal de custo mínimo.{{Sfnp|Robins|Zelikovsky|2000}} Mais recentemente, entretanto, Byrka et al. provou uma aproximação de <math>\ln(4) + \varepsilon \le 1.39</math> usando um relaxamento da programação linear e uma técnica chamada de arredondamento randomizado, iterativo.{{Sfnp|Byrka|Grandoni|Rothvoß|Sanita|2010}}
No problema da árvore euclideana de Steiner, a relação de Steiner conjectura-se ser <math>\frac{2}{\sqrt{3}}</math>. Apesar das alegações anteriores de uma prova,<ref>The New York Times, Oct 30, 1990, reported that a proof had been found, and that [[Ronald Graham]], who had offered $500 for a proof, was about to mail a check to the authors.</ref> a conjectura ainda está em aberto.{{Sfnp|Ivanov|Tuzhilin|2012}}

No problema da árvore linear de Steiner, a relação de Steiner é<math>\frac{3}{2}</math>.{{Sfnp|Hwang|1976}}
== Complexidade parametrizada da árvore de Steiner ==
O problema geral da árvore de Steiner em grafos é conhecido por ser [[Complexidade parametrizada#FTP|tratável em parâmetro fixo]], com o número de terminais como um parâmetro, pelo algoritmo de Dreyfus-Wagner.{{sfnp|Dreyfus|Wagner|1971}}{{sfnp|Levin|1971}} O tempo de execução do algoritmo de Dreyfus-Wagner é <math>3^{|S|} \text{poly}(n)</math>, em que <math>n</math> é o número de vértices do grafo e <math>S</math> o conjunto de terminais. Algoritmos mais rápidos existem, executando em tempo <math>c^{|S|} \text{poly}(n)</math> para qualquer <math>c > 2</math> ou, no caso de pesos baixos, tempo <math>2^{|S|} \text{poly}(n) W</math>, em que <math>W</math> é o peso máximo de qualquer aresta.{{sfnp|Fuchs|Kern|Mölle|Richter|2007}}{{sfnp|Björklund|Husfeldt|Kaski|Koivisto|2007}} Uma desvantagem dos algoritmos mencionados anteriormente é que eles usam {{ill|en|Complexidade espacial|Space complexity|espaço exponencial}}; existem algoritmos em espaço polinomial, que executa em tempo <math>2^{|S|} \text{poly}(n) W</math> e tempo <math>(7.97)^{|S|} \text{poly}(n) \log W</math>.{{sfnp|Lokshtanov|Nederlof|2010}}{{sfnp|Fomin|Kaski|Lokshtanov|Panolan|2015}}

Sabe-se que o problema geral da árvore de Steiner em grafos não tem um algoritmo parametrizado que execute em tempo <math>2^{\epsilon t} \text{poly}(n)</math> para qualquer <math>\epsilon < 1</math>, em que <math>t</math> é o número de arestas da árvore de Steiner ótima, exceto se o [[problema de cobertura de conjuntos]] tenha um algoritmo que execute em tempo <math>2^{\epsilon n} \text{poly}(m)</math> para algum <math>\epsilon < 1</math>, em que <math>n</math> é o número de elementos e <math>m</math> o número de conjuntos da instância do problema de cobertura de conjuntos.{{sfnp|Cygan|Dell|Lokshtanov|Marx|2016}} Além disso, sabe-se que o problema não admite um núcleo polinomial, exceto se <math>\text{coNP} \subseteq \text{NP/poly}</math>, mesmo parametrizado pelo número de arestas de uma árvore de Steiner ótima e o peso de todas as arestas seja 1.{{sfnp|Dom|Lokshtanov|Saurabh|2014}}

== Proporção de Steiner ==
A '''proporção de Steiner''' é o [[Supremo e ínfimo|supremo]] da razão entre o tamanho total da árvore geradora mínima para a árvore mínima de Steiner de um conjunto de pontos no plano euclidiano.{{Sfnp|Ganley|2004}}

No problema da árvore euclidiana de Steiner, a proporção de Steiner é conjecturada a ser <math>\frac{2}{\sqrt{3} }</math>. Apesar das alegações anteriores de uma prova,<ref>''The New York Times'', 30 de outubro de 1990, reportou que uma prova foi encontrada, e que [[Ronald Graham]], quem ofereceu 500 dólares pela prova, estava prestes a enviar um cheque aos autores.</ref> a conjectura ainda está em aberto.{{Sfnp|Ivanov|Tuzhilin|2012}} O limite superior mais amplamente aceito para o problema é 1,2134, por Chung e Graham em 1985.{{sfnp|Chung|Graham|1985}}

No problema da árvore de Steiner retilinear, a proporção de Steiner é exatamente <math>\frac{3}{2}</math>.{{Sfnp|Hwang|1976}}, a proporção que é a obtida por quatro pontos em um quadrado com uma árvore que utiliza 3 lados do quadrado e uma arvore de Steiner que conecta pelo centro do quadrado.{{sfnp|Hwang|1976}} Mais precisamente, para a distância <math>L_1</math> o quadrado deveria ser rotacionado <math>45^{\circ}</math> a respeito dos eixos de coordenada, enquanto que para a distância <math>L_{\infty}</math> o quadrado deveria ser alinhado com o eixo.


==Outros arquivos==
==Outros arquivos==
Linha 52: Linha 62:
File:Árvores de Steiner.pdf|Árvores de Steiner
File:Árvores de Steiner.pdf|Árvores de Steiner
</gallery>
</gallery>



== Veja também ==
== Veja também ==
* [[Problema do caixeiro-viajante]]
* Opaque forest problem


{{Referências}}
== Notas ==
{{Reflist|30em}}


== Referencias ==
== Bibliografia ==
{{Refbegin|30em}}

*{{citar conferência
|último1= Berman |primeiro1= Piotr
|último2= Karpinski |primeiro2= Marek
|último3= Zelikovsky |primeiro3= Alexander
|ano= 2009
|contribuição= 1.25-approximation algorithm for Steiner tree problem with distances 1 and 2
|series= Lecture Notes in Computer Science
|título=Algorithms and Data Structures: 11th International Symposium, WADS 2009, Banff, Canada, August 21–23, 2009, Proceedings
|volume= 5664
|páginas= 86–97
|doi=10.1007/978-3-642-03367-4_8
|arxiv= 0810.1851
|ref=harv
}}
*{{citar periódico
|último1= Bern
|primeiro1= Marshall W.
|último2= Graham
|primeiro2= Ronald L. |autorlink2= Ronald Graham
|ano= 1989
|título= The shortest-network problem
|periódico= Scientific American
|volume= 260
|páginas= 84–89
|doi=10.1038/scientificamerican0189-84
|número=1
|bibcode= 1989SciAm.260a..84B
|ref=harv
}}
*{{citar conferência
|último1=Björklund |primeiro1=Andreas
|último2=Husfeldt |primeiro2=Thore
|último3=Kaski |primeiro3=Petteri
|último4=Koivisto |primeiro4=Mikko
|ano=2007
|contribuição=Fourier Meets Möbius: Fast Subset Convolution
|título=[[Simpósio da Teoria da Computação|Anais do 39º Simpósio ACM sobre Teoria da Computação]]
|páginas=67–74
|doi=10.1145/1250790.1250801
|arxiv=cs/0611101
|ref=harv}}
*{{citar conferência|último1=Byrka|primeiro1=J.|último2=Grandoni|primeiro2=F.|último3=Rothvoß|primeiro3=T.|último4=Sanita|primeiro4=L.|ano=2010|contribuição=An improved LP-based approximation for Steiner tree|doi=10.1145/1806689.1806769|título= [[Simpósio da Teoria da Computação|Anais do 42º Simpósio ACM sobre Teoria da Computação]]|páginas= 583–592 |citeseerx=10.1.1.177.3565|ref=harv}}
*{{citar periódico|último1=Chlebík|primeiro1=Miroslav|último2=Chlebíková|primeiro2=Janka|ano=2008|título=The Steiner tree problem on graphs: Inapproximability results|doi=10.1016/j.tcs.2008.06.046|periódico=Theoretical Computer Science|volume=406|número=3|páginas=207–214|doi-access=free|ref=harv}}
*{{citar conferência
|último1= Chung |primeiro1= F. R. K. |autorlink1= Fan Chung
|último2= Graham |primeiro2= R. L. |autorlink2= Ronald Graham
|contribuição= A new bound for Euclidean Steiner minimal trees
| doi = 10.1111/j.1749-6632.1985.tb14564.x
| mr = 809217
|páginas= 328–346
|publicado= New York Academy of Science |local= New York
| series = Annals of the New York Academy of Science
|título= Discrete geometry and convexity (New York, 1982)
| volume = 440
|ano= 1985
| bibcode = 1985NYASA.440..328C
|ref=harv}}
*{{citar livro|primeiro=Dietmar|último=Cieslik |título=Steiner Minimal Trees |ano=1998 |isbn=0-7923-4983-0 |páginas=319|publicado=Springer |ref=harv}}
*{{citar web
|último1=Crescenzi |primeiro1=Pierluigi
|último2=Kann |primeiro2=Viggo
|último3=Halldórsson |primeiro3=Magnús
|último4=Karpinski |primeiro4=Marek
|último5=Woeginger |primeiro5=Gerhard
|obra=A Compendium of NP Optimization Problems
|título=Minimum geometric Steiner tree
| url=https://www.csc.kth.se/~viggo/wwwcompendium/node79.html
|ano=2000
|ref=harv
}}
*{{citar periódico
|último1=Cygan |primeiro1=Marek
|último2=Dell |primeiro2=Holger
|último3=Lokshtanov |primeiro3=Daniel
|último4=Marx |primeiro4=Dániel
|último5=Nederlof |primeiro5=Jesper
|último6=Okamoto |primeiro6=Yoshio
|último7=Paturi |primeiro7=Ramamohan
|último8=Saurabh |primeiro8=Saket
|último9=Wahlström |primeiro9=Magnus
|título=On Problems as Hard as CNF-SAT
|periódico=ACM Transactions on Algorithms
|ano=2016
|volume=12
|número=3
|páginas=41:1–41:24
|doi=10.1145/2925416| s2cid=7320634
|url=http://eprints.sztaki.hu/9047/
|ref=harv
}}
*{{citar periódico
|último1=Dom |primeiro1=Michael
|último2=Lokshtanov |primeiro2=Daniel
|último3=Saurabh |primeiro3=Saket
|título=Kernelization Lower Bounds Through Colors and IDs
|periódico=ACM Transactions on Algorithms
|ano=2014
|volume=11
|número=2
|páginas=13:1–13:20
|doi=10.1145/2650261| s2cid=13570734
|ref=harv
}}
*{{citar periódico
|último1=Dreyfus |primeiro1= S.E.
|último2=Wagner |primeiro2= R.A.
|ano=1971
|título=The Steiner problem in graphs
|periódico=Networks
|volume=1
|número=3
|páginas=195–207
|doi=10.1002/net.3230010302
|ref=harv}}
*{{citar conferência
|último1=Fomin |primeiro1=Fedor V.
|último2=Kaski |primeiro2=Petteri
|último3=Lokshtanov |primeiro3=Daniel
|último4=Panolan |primeiro4=Fahad
|último5=Saurabh |primeiro5=Saket
|ano=2015
|título=Automata, Languages, and Programming – 42nd International Colloquium, ICALP 2015, Proceedings, Part I
|contribuição=Parameterized Single-Exponential Time Polynomial Space Algorithm for Steiner Tree
|páginas=494–505
|doi=10.1007/978-3-662-47672-7_40
|ref=harv}}
*{{citar periódico
|último1=Fuchs |primeiro1=Benjamin
|último2=Kern |primeiro2=Walter
|último3=Mölle |primeiro3=Daniel
|último4=Richter |primeiro4=Stefan
|último5=Rossmanith |primeiro5=Peter
|último6=Wang |primeiro6=Xinhui
|título=Dynamic Programming for Minimum Steiner Trees
|periódico=Theory of Computing Systems
|ano=2007
|volume=41
|número=3
|páginas=493–500
|doi=10.1007/s00224-007-1324-4| s2cid=7478978
|url=http://e-archive.informatik.uni-koeln.de/492/2/zaik2005-492.pdf
|ref=harv
}}
*{{citar livro|primeiro=Joseph L. |último=Ganley | url=https://xlinux.nist.gov/dads/HTML/steinerratio.html |contribuição=Steiner ratio |título=Dictionary of Algorithms and Data Structures |editor-nome=Paul E. |editor-sobrenome=Black |publicado=U.S. National Institute of Standards and Technology |ano=2004 |acessodata=2012-05-24 |ref=harv}}
* {{citation
|último1=Garey |primeiro1=Michael R. |author-link1=Michael Garey
|último2=Johnson |primeiro2=David S. |author-link2=David S. Johnson
|ano=1979
|título=[[Computers and Intractability|Computers and Intractability: A Guide to the Theory of NP-Completeness]]
|publicado=[[W. H. Freeman and Company|W.&nbsp;H.&nbsp;Freeman]]
|isbn=0-7167-1045-5
|páginas= 208–209
|ref=harv
}}
*{{citar periódico
|último= Hwang |primeiro= F. K.
| doi = 10.1137/0130013
|número= 1
|periódico= SIAM Journal on Applied Mathematics
|páginas= 104–114
|título= On Steiner minimal trees with rectilinear distance
|volume = 30
|ano= 1976
|ref=harv
}}
* {{citar livro|primeiro1=F. K.|último1=Hwang|primeiro2=D. S.|último2=Richards|primeiro3=P.|último3=Winter |título=The Steiner Tree Problem |publicado=[[Elsevier]] |local=North-Holland |ano=1992 |isbn=0-444-89098-X |series=Annals of Discrete Mathematics |volume=53 |ref=harv}}
* {{citar livro
|último1= Ivanov |primeiro1= Alexander
|último2= Tuzhilin |primeiro2= Alexey
|título=Minimal Networks: The Steiner Problem and Its Generalizations |url= https://archive.org/details/minimalnetworkss0000ivan |registo=s |publicado=[[CRC Press]] |local=N.W., Boca Raton, Florida |ano=1994 |isbn=978-0-8493-8642-8 |ref=harv}}
* {{citar livro
|último1= Ivanov |primeiro1= Alexander
|último2= Tuzhilin |primeiro2= Alexey
|título=Branching solutions to one-dimensional variational problems |publicado=[[World Scientific]] |local=Singapore-New Jersey-London-Hong Kong |ano=2000 |isbn=978-981-02-4060-8 |ref=harv}}
* {{citar livro
|último1= Ivanov |primeiro1= Alexander
|último2= Tuzhilin |primeiro2= Alexey
|título=Extreme Networks Theory |local=Moscow-Izhevsk |publicado=Institute of Computer Investigations |ano=2003 |língua=Russian |isbn=5-93972-292-X |ref=harv}}
*{{citar periódico
|último1= Ivanov |primeiro1= Alexander
|último2= Tuzhilin |primeiro2= Alexey
|título=The Steiner ratio Gilbert–Pollak conjecture is still open: Clarification statement|periódico=Algorithmica|ano=2012|volume=62|número=1–2|páginas=630–632|doi=10.1007/s00453-011-9508-3|s2cid= 7486839 |ref=harv
}}
*{{citar periódico
|último1= Ivanov |primeiro1= Alexander
|último2= Tuzhilin |primeiro2= Alexey
|ano= 2015
|título= Branched coverings and Steiner ratio
|periódico= International Transactions in Operational Research
|volume= 23
|número= 5
|páginas= 875–882
|doi=10.1111/itor.12182
|arxiv=1412.5433|s2cid= 3386263
|ref=harv
}}
*{{citar periódico|último1=Juhl|primeiro1=D.|último2=Warme|primeiro2=D.M.|último3=Winter |primeiro3=P.|último4=Zachariasen|primeiro4=M.|título=The GeoSteiner Software Package for computing Steiner trees in the plane: an updated computational study|periódico= Mathematical Programming Computation|data=janeiro de 2018 |volume=10 |número=4 |páginas=487–532|doi=10.1007/s12532-018-0135-8|s2cid=255616114 |url=https://curis.ku.dk/portal/da/publications/the-geosteiner-software-package-for-computing-steiner-trees-in-the-plane(33ef119c-99c9-4511-9455-296ff28ee2eb).html |ref=harv}}
*{{citar periódico|último1=Rehfeldt|primeiro1=D.|último2=Koch|primeiro2=T.|título=Implications, conflicts, and reductions for Steiner trees|periódico= Mathematical Programming|data=fevereiro de 2023 |volume=197|número=2|páginas=903–966|doi=10.1007/s10107-021-01757-5|s2cid=231842568 |doi-access=free |ref=harv}}
* {{citar conferência
|primeiro1=Marek |último1=Karpinski
|primeiro2=Alexander |último2=Zelikovsky
|contribuição=Approximating dense cases of covering problems
|páginas=169–178
|ano=1998
| contribution-url=https://books.google.com/books?id=IMmuF0RZk1MC&pg=PA169
|título=Proceedings of the DIMACS Workshop on Network Design: Connectivity and Facilities Location
|publicado=American Mathematical Society
|series=DIMACS Series in Discrete Mathematics and Theoretical Computer Science
|volume=40
|ref=harv
}}
*{{citar livro
|último1=Korte |primeiro1=Bernhard |autorlink1= Bernhard Korte
|último2=Vygen |primeiro2=Jens
|título=Combinatorial Optimization: Theory and Algorithms
|publicado=[[Springer Science+Business Media|Springer]]
|ano=2006
|edição=3rd
| isbn=3-540-25684-9
|capítulo=Section 20.1
|ref=harv
}}
*{{citar periódico|último1=Kou |primeiro1=L. |último2=Markowsky |primeiro2=G. |último3=Berman |primeiro3=L. |título=A fast algorithm for Steiner trees |periódico=Acta Informatica |data=1 de junho de 1981 |volume=15 |número=2 |páginas=141–145 |doi=10.1007/BF00288961|s2cid=21057232 |ref=harv}}
*{{citar periódico
|último1=Levin |primeiro1=A. Yu.
|ano=1971
|título=Algorithm for the shortest connection of a group of graph vertices
|periódico=Soviet Mathematics Doklady
|volume=12
|páginas=1477–1481 |ref=harv}}
*{{citar conferência
|último1= Lokshtanov |primeiro1=Daniel
|último2= Nederlof |primeiro2=Jesper
|contribuição= Saving space by algebraization
|título=[[Simpósio da Teoria da Computação|Anais do 42º Simpósio ACM sobre Teoria da Computação]]
|ano=2010
|páginas=321–330
|doi=10.1145/1806689.1806735
|ref=harv}}
*{{citar periódico|último1=Paolini|primeiro1=E. |último2=Stepanov|primeiro2=E.|título=Existence and regularity results for the Steiner problem|periódico=Calc. Var. Partial Diff. Equations|ano=2012|volume=46 |número=3–4 |páginas=837–860 |doi=10.1007/s00526-012-0505-4|hdl=2158/600141 |s2cid=55793499 |url=https://flore.unifi.it/bitstream/2158/600141/1/final-for-CalcVar.pdf|hdl-access=free|ref=harv}}
*{{citar conferência
|último1= Robins
|primeiro1= Gabriel
|último2= Zelikovsky
|primeiro2= Alexander
|contribuição= Improved Steiner Tree Approximation in Graphs
| contribution-url = http://dl.acm.org/citation.cfm?id=338219.338638
| isbn = 0-89871-453-2
|local= Philadelphia, PA, USA
|páginas= [https://archive.org/details/proceedingsofele0000acms/page/770 770–779]
|publicado= Society for Industrial and Applied Mathematics
|título= Proceedings of the Eleventh Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '00)
|ano=2000
|url = https://archive.org/details/proceedingsofele0000acms/page/770
|ref=harv
}}
*{{citar livro|título=Algorithms for VLSI Physical Design Automation|primeiro=Naveed A.|último=Sherwani
|publicado= Kluwer Academic Publishers |ano= 1993 | isbn = 9781475722192 |ref=harv}}
*{{citar livro|editor-nome1=Ding-Zhu|editor-sobrenome1=Du|editor-nome2=Frank|editor-sobrenome2=Hwang |título=Computing in Euclidean geometry |publicado=World Scientific Publishing Co |local=River Edge, NJ |ano=1995 |isbn=981-02-1876-1 |series=Lecture Notes Series on Computing |volume=4 |edição=2nd|contribuição=Computational geometry and topological network design|primeiro1=J. M.|último1=Smith|primeiro2=P.|último2=Winter|páginas=351–451|ref=harv}}
*{{citar periódico|último1=Takahashi |primeiro1=Hiromitsu |último2=Matsuyama |primeiro2=Akira |título=An approximate solution for the Steiner problem in graphs |periódico=Math. Japonica |data=1980 |volume=24 |número=6 |páginas=573–577|ref=harv}}
*{{citar livro
|último= Vazirani |primeiro= Vijay V.
|título= Approximation Algorithms
|publicado= Springer
|ano= 2003
|local= Berlin
|isbn = 3-540-65367-8
|ref=harv
}}
*{{citar livro
|último1=Wu |primeiro1=Bang Ye
|último2=Chao |primeiro2=Kun-Mao
|título=Spanning Trees and Optimization Problems
|publicado=Chapman & Hall/CRC
|ano=2004
|isbn=1-58488-436-3
|capítulo=Capítulo 7
|ref=harv
}}
*{{citar periódico|último1=Wu |primeiro1=Y. F. |último2=Widmayer |primeiro2=P. |último3=Wong |primeiro3=C. K. |título=A faster approximation algorithm for the Steiner problem in graphs |periódico=Acta Informatica |data=maio de 1986 |volume=23 |número=2 |páginas=223–229 |doi=10.1007/bf00289500 |s2cid=7772232 |ref=harv}}

{{Refend}}


== Links Externos ==
== Links Externos ==
* {{SpringerEOM|title=Steiner tree problem|id=s/s110270|last=Hazewinkel|first=M.}}
{{Commons category|Steiner tree problem}}
*[http://www.geosteiner.com/ GeoSteiner] (Software para resolver problema da árvore de Steiner euclidiana e retilinear; código fonte disponível, gratuito para uso não comercial)
* [http://theory.cs.uni-bonn.de/info5/steinerkompendium/ M. Hauptmann, M. Karpinski (2013): A Compendium on Steiner Tree Problems]
*[https://scipjack.zib.de/ SCIP-Jack] (Software para resolver o problema da árvore de Steiner em grafos e 14 variantes, por exemplo, problema da árvore de Steiner para coleta de prêmios; gratuito para uso não comercial)
* [http://www.cs.sunysb.edu/~algorith/implement/geosteiner/implement.shtml GeoSteiner] (Steiner tree solver, Source available, for non commercial use)
* [http://nuclear.llnl.gov/CNP/apt/apt/aptsver.html Fortran subroutine] para encontrar o vértice de Steiner de um triângulo (isto é, [[Ponto de Fermat]]), suas distâncias dos vértices do triângulo e os pesos relativos dos vértices.
* [[iarchive:RonaldLG1988|https://archive.org/details/RonaldLG1988]] (Movie: Ronald L Graham: The Shortest Network Problem (1988)
* [http://phylomurka.sf.net Phylomurka] (Solucionador para o problema da árvore de Steiner em redes)
* [http://nuclear.llnl.gov/CNP/apt/apt/aptsver.html Fortran subroutine] for finding the Steiner vertex of a triangle (i.e., [[Ponto de Fermat|Fermat point]]), its distances from the triangle vertices, and the relative vertex weights.
* {{Citation | url = https://www.researchgate.net/publication/316921061 |título= DCCast: Efficient Point to Multipoint Transfers Across Datacenters |contribuição= Using Steiner Trees to Minimize Average Completion Times of Bulk Data Transfers |publicado= USENIX Association|último1= Noormohammadpour |primeiro1= Mohammad |último2= Raghavendra |primeiro2= Cauligi S. |último3= Rao |primeiro3= Sriram |último4= Kandula |primeiro4= Srikanth |ano= 2017 | arxiv = 1707.02096 }}
* [http://phylomurka.sf.net Phylomurka] (Solver for the Steiner tree problem in networks)
* [http://theory.cs.uni-bonn.de/info5/steinerkompendium/ M. Hauptmann, M. Karpinski (2013): A Compendium on Steiner Tree Problems]

[[Categoria:Algoritmos geométricos]]
[[Categoria:Árvores (teoria dos grafos)]]
[[Categoria:Árvores (teoria dos grafos)]]
[[Categoria:Problemas NP-completos]]

Revisão das 19h45min de 19 de outubro de 2023

Arvore de Steiner para três pontos A, B, e C (note que existem conexões diretas entre A, B, C). O ponto de Steiner S está localizado no ponto de Fermat do triângulo ABC.
Solução para quatro pontos — há dois pontos de Steiner, S1 e S2

Na Combinatória, o problema da árvore de Steiner, problema da autoestrada, ou problema da árvore mínima de Steiner, denominado em referência a Jakob Steiner, é um termo genérico para uma classe de problemas na otimização combinatória. Uma variante bastante conhecida, que é geralmente utilizada como sinônimo do termo problema da árvore de Steiner, é o problema da árvore de Steiner em grafos. Dado um grafo simples com os pesos das arestas não negativas e um subconjunto de vértices, geralmente referidos como terminais, o problema da árvore de Steiner em grafos requer uma árvore com menor peso que contenha todos os terminais (mas poderá incluir vértices adicionais) e minimiza o total dos pesos de suas arestas. Outras variantes bastante conhecidas são o problema da árvore de Steiner Euclidiana e o problema da árvore de Steiner retilinear.

O problema da árvore de Steiner em grafos pode ser visto como uma generalização de dois outros problemas: o problema do caminho mínimo (não negativo) e o problema da árvore de extensão mínima. Se um problema da árvore de Steiner em grafos contém exatamente dois terminais, a procura se restringe ao caminho mínimo. Se, por outro lado, todos os vértices são terminais, o problema da árvore de Steiner em grafos é equivalente à árvore de extensão mínima. No entanto, por mais que o problema do caminho mínimo não negativo e da árvore de extensão mínima são resolvidos em tempo polinomial, nenhuma solução do tipo é conhecida para o problema da árvore de Steiner em grafos. Sua variante de decisão, em que se pergunta se uma determinada entrada tem uma árvore de peso menor que um determinado limite, é NP-completa, o que implica que a variante de otimização, pedindo pela árvore de peso mínimo num dado grafo, é NP-difícil. Na verdade, um deles estava entre os 21 problemas originais NP-completos de Karp. O problema da árvore de Steiner em grafos tem aplicações em layout de circuito ou em design de rede. No entanto, aplicações práticas geralmente requerem variações, o que aumenta a quantidade de variantes do problema da árvore de Steiner.

A maioria das versões do problema da árvore de Steiner são NP-difíceis, mas alguns casos restritos podem ser resolvidos em tempo polinomial. Apesar do pessimismo da complexidade de pior caso, diversas variantes do problema da árvore de Steiner, incluindo o problema da árvore de Steiner em grafos e problema da árvore de Steiner retilinear, podem ser resolvidos eficientemente na prática, mesmo para problemas do mundo real em larga escala.[1][2]

Árvore de Steiner euclidiano

Árvores de Steiner mínimas de vértices de polígonos regulares com N = 3 a 8 lados. O menor comprimento de rede L para N > 5 é o perímetro menos um lado. Os quadrados representam os pontos de Steiner

O problema original foi enunciado na forma em que se tornou conhecido como o problema da árvore de Steiner euclidiana ou problema geométrico da árvore de Steiner: Dados N pontos em um plano, o objetivo é conectá-los por linhas de comprimento total mínimo de tal forma que quaisquer dois pontos podem ser interligados por segmentos de reta diretamente ou através de outros pontos e segmentos de reta. Pode ser mostrado que os segmentos de reta não se cruzam uns aos outros, exceto nas extremidades e formam uma árvore, daí o nome do problema.

O problema para N = 3 tem sido estudado há muito tempo e rapidamente se estendeu ao problema de encontrar uma rede estelar com um único centro conectando todos os N pontos dados, com o comprimento total mínimo. No entanto, embora o problema completo da árvore de Steiner tenha sido formulado em uma carta por Gauss, seu primeiro tratamento sério foi em um artigo de 1934 escrito em tcheco por Vojtěch Jarník e Miloš Kössler. Este artigo foi muito ignorado, mas já continha "virtualmente todas as propriedades gerais das árvores de Steiner" posteriormente atribuídas a outros pesquisadores, incluindo a generalização do problema do plano para dimensões maiores.[3]

Para o problema da árvore de Steiner euclidiana, pontos adicionados ao grafo (pontos de Steiner) devem ter um grau 3, e as três arestas incidentes ao ponto devem formar 3 ângulos de 120 graus (ver ponto de Fermat). Segue que o número máximo de pontos que uma árvore de Steiner pode ter é N - 2, em que N é o número de pontos inicialmente dados.

Para N = 3, existem dois casos possíveis: se o triângulo formado pelos pontos dados tem todos os ângulos que são menores do que 120 graus, a solução é dada por um ponto de Steiner localizado no ponto de Fermat; caso contrário, a solução é dada pelos dois lados do triângulo, que se encontram no ângulo igual ou maior que 120 graus.

Para N geral, o problema da árvore euclidiana de Steiner é NP-difícil, e, portanto, não se sabe se uma solução ótima pode ser encontrada por meio de um algoritmo de tempo polinomial. No entanto, existe um esquema de aproximação de tempo polinomial (PTAS) para árvores de Steiner euclidiana, isto é, uma solução quase ótima pode ser encontrada em tempo polinomial.[4] Não se sabe se o problema da árvore de Steiner euclidiana é NP-completo, uma vez que a sua pertinência à classe de complexidade NP não é conhecida.

Árvore de Steiner retilinear

O problema mínimo da árvore de Steiner retilinear é uma variante do problema geométrico da árvore de Steiner no plano, no qual a distância euclidiana é substituído pela distância retilínea. O problema surge na concepção física de automação de design eletrônico. Em circuitos de VLSI [en], a distribuição de fios é realizada por fios que são muitas vezes restringidos pelas regras de design para percorrer somente em direções verticais e horizontais, de modo que o problema da árvore retilínea de Steiner pode ser utilizado para modelar o roteamento de redes com mais do que dois terminais.[5]

Árvore de Steiner em grafos e variantes

As árvores de Steiner também foram estudadas no contexto de grafos com peso. O protótipo é, sem dúvida, o problema da árvore de Steiner em grafos. Seja G = (V, E) um grafo não direcionado como vértices não negativos de peso c e um subconjunto SV de vértices, chamados de terminais. Uma árvore de Steiner é uma árvore no grafo G que abrange todos os vértices de S. Existem duas versões do problema: no problema de otimização associado com árvores de Steiner, a tarefa é encontrar uma árvore de Steiner de peso mínimo; no problema de decisão, os pesos das arestas são inteiros e a tarefa é determinar se exite uma árvore de Steiner que de peso total no máximo k existe. O problema da decisão foi um dos 21 problemas NP-completos de Karp; daí o problema de otimização é NP-difícil. Os problemas da árvore de Steiner em grafos são aplicadoa a varios problemas de empresa e industria,[6] incluindo roteamento multicast[7] e bioinformática.[8]

Um caso especial deste problema é quando G é um grafo completo, cada vértice vV corresponde a um ponto em um espaço métrico, e os pesos das arestas w(e) para cada eE correspondem às distâncias no espaço. Em outras palavras, os pesos das arestas satisfazem a desigualdade triangular. Esta variante é conhecida como o problema da árvore de Steiner métrico. Dada uma instância (não-métrica) do problema da árvore de Steiner, podemos transformá-la em tempo polinomial em uma instância equivalente do problema métrico da árvore de Steiner; a transformação preserva o fator de aproximação.[9]

Embora a versão euclidiana admita um PTAS, sabe-se que o problema métrico da árvore de Steiner é APX-completo, isto é, a menos que P = NP, é impossível de alcançar proporções de aproximação que são arbitrariamente próximas de 1 em tempo polinomial. Há um algoritmo de tempo polinomial que aproxima a árvore mínima de Steiner dentro de um fator de ;[10] No entanto, a aproximação dentro de um fator de é NP-difícil.[11] Para o caso restrito do problema da árvore de Steiner com distâncias 1 e 2, um algoritmo de aproximação com fator 1,25 é conhecido.[12] Karpinski e Alexander Zelikovsky construiram um PTAS para as instâncias densas do problema da árvore de Steiner.[13]

Em um caso especial do problema de grafo, o problema da árvore de Steiner para gratos quase-bipartidos, S tem que incluir pelo menos uma extremidade de cada aresta de G.

O problema da árvore de Steiner também tem sido investigado em dimensões mais elevadas e em várias superfícies. Algoritmos para encontrar a árvore mínima de Steiner tem sido encontrados na esfera, toro, plano projetivo, cones largos e estreitos, e outros.[14]

Outras generalizações do problema da árvore de Steiner são o problema de k-arestas-conexo da rede de Steiner e o problema de k-vértices-conexos da rede de Steiner, no qual o objetivo é encontrar um grafo k-aresta-conexo ou um grafo k-vértice-conexo em vez do que grafo conexo qualquer. Outra generalização bastante estudada é o problema de projeto de redes sobrevivível, em que o objetivo é conectar cada par de vértices com um dado número (possivelmente 0) de caminhos de arestas ou vértices disjuntos.[15]

O problema de Steiner também foi enunciado na definição geral dos espaços métricos e possivelmente para uma quantidade infinita de pontos.[16]

Aproximando a árvore de Steiner

O problema geral de grafo da árvore de Steiner pode ser aproximado computando a árvore geradora mínima do subgrafo do fecho métrico do grafo induzido pelos vértices terminais, conforme publicado pela primeira vez por Kou et al. em 1981.[17] O fecho métrico de um grafo G é o grafo completo no qual cada aresta é ponderada pela distância do caminho mais curto entre os nós em G. Esse algoritmo produz uma árvore cujo peso está dentro de um fator de do peso da árvore de Steiner ótima em que t é o número de folhas na árvore de Steiner ótima; isso pode ser provado considerando o passeio do caixeiro-viajante na árvore de Steiner ótima. Uma solução aproximada é computável em tempo polinomial ao resolver primeiramente o problema dos caminhos mais curtos de todos os pares para computar o fecho métrico, e depois resolvendo o problema da árvore de extensão mínima.

Outro algoritmo popular para aproximar a árvore de Steiner em grafos foi publicado por Takahashi e Matsuyama em 1980.[18] A solução deles constrói incrementalmente a árvore de Steiner, começando a partir de um vértice arbitrário e adicionando repetidamente o caminho mais curto da árvore para o vértice mais próximo em S que ainda não foi adicionado. Esse algoritmo também tem um tempo de execução de e produz uma árvore cujo peso está dentro de do ótimo.

Em 1986, Wu et al.[19] melhoraram drasticamente o tempo de execução, evitando o pré-cálculo dos caminhos mais curtos entre todos os pares de vértices. Em vez disso, eles adotaram uma abordagem semelhante à do algoritmo de Kruskal para calcular uma árvore geradora mínima, começando com uma floresta de |S| árvores disjuntas e "crescendo" simultaneamente usando uma busca em largura que se assemelha ao algoritmo de Dijkstra, mas começando a partir de múltiplos vértices iniciais. Quando a busca encontra um vértice que não pertence à árvore atual, as duas árvores são mescladas em uma. Esse processo é repetido até que reste apenas uma árvore. Usando uma estrutura de heap para implementar a fila de prioridade e uma estrutura de dados união-busca para rastrear a qual árvore pertence cada vértice visitado, esse algoritmo alcança um tempo de execução de , embora não melhore a proporção de custo de Kou et al.

Uma série de artigos forneceu algoritmos de aproximação para o problema da árvore de Steiner mínima com proporções de aproximação que melhorou a proporção de . A sequência culminou com o algoritmo de Robins e Zelikovsky em 2000, que melhorou esta proporção para 1,55 ao melhorar iterativamente a árvore geradora terminal de custo mínimo.[20] Mais recentemente, entretanto, Byrka et al. provou uma aproximação de usando um relaxamento da programação linear e uma técnica chamada de arredondamento randomizado, iterativo.[10]

Complexidade parametrizada da árvore de Steiner

O problema geral da árvore de Steiner em grafos é conhecido por ser tratável em parâmetro fixo, com o número de terminais como um parâmetro, pelo algoritmo de Dreyfus-Wagner.[21][22] O tempo de execução do algoritmo de Dreyfus-Wagner é , em que é o número de vértices do grafo e o conjunto de terminais. Algoritmos mais rápidos existem, executando em tempo para qualquer ou, no caso de pesos baixos, tempo , em que é o peso máximo de qualquer aresta.[23][24] Uma desvantagem dos algoritmos mencionados anteriormente é que eles usam espaço exponencial [en]; existem algoritmos em espaço polinomial, que executa em tempo e tempo .[25][26]

Sabe-se que o problema geral da árvore de Steiner em grafos não tem um algoritmo parametrizado que execute em tempo para qualquer , em que é o número de arestas da árvore de Steiner ótima, exceto se o problema de cobertura de conjuntos tenha um algoritmo que execute em tempo para algum , em que é o número de elementos e o número de conjuntos da instância do problema de cobertura de conjuntos.[27] Além disso, sabe-se que o problema não admite um núcleo polinomial, exceto se , mesmo parametrizado pelo número de arestas de uma árvore de Steiner ótima e o peso de todas as arestas seja 1.[28]

Proporção de Steiner

A proporção de Steiner é o supremo da razão entre o tamanho total da árvore geradora mínima para a árvore mínima de Steiner de um conjunto de pontos no plano euclidiano.[29]

No problema da árvore euclidiana de Steiner, a proporção de Steiner é conjecturada a ser . Apesar das alegações anteriores de uma prova,[30] a conjectura ainda está em aberto.[31] O limite superior mais amplamente aceito para o problema é 1,2134, por Chung e Graham em 1985.[32]

No problema da árvore de Steiner retilinear, a proporção de Steiner é exatamente .[33], a proporção que é a obtida por quatro pontos em um quadrado com uma árvore que utiliza 3 lados do quadrado e uma arvore de Steiner que conecta pelo centro do quadrado.[33] Mais precisamente, para a distância o quadrado deveria ser rotacionado a respeito dos eixos de coordenada, enquanto que para a distância o quadrado deveria ser alinhado com o eixo.

Outros arquivos

Veja também

Referências

  1. Rehfeldt & Koch (2023).
  2. Juhl et al. (2018).
  3. Korte, Bernhard; Nešetřil, Jaroslav (2001). «Vojtěch Jarnik's work in combinatorial optimization». Discrete Mathematics. 235 (1–3): 1–17. MR 1829832. doi:10.1016/S0012-365X(00)00256-9. hdl:10338.dmlcz/500662Acessível livremente 
  4. Crescenzi et al. (2000).
  5. Sherwani (1993), p. 228.
  6. Ljubić, Ivana (2021). «Solving Steiner trees: Recent advances, challenges, and perspectives». Networks (em inglês). 77 (2): 177–204. ISSN 1097-0037. doi:10.1002/net.22005 
  7. Novak, Roman; Rugelj, Joz̆e; Kandus, Gorazd (1 de outubro de 2001). «A note on distributed multicast routing in point-to-point networks». Computers & Operations Research (em inglês). 28 (12): 1149–1164. ISSN 0305-0548. doi:10.1016/S0305-0548(00)00029-0 
  8. Klimm, Florian; Toledo, Enrique M.; Monfeuga, Thomas; Zhang, Fang; Deane, Charlotte M.; Reinert, Gesine (2 de novembro de 2020). «Functional module detection through integration of single-cell RNA sequencing data with protein–protein interaction networks». BMC Genomics. 21 (1). 756 páginas. ISSN 1471-2164. PMC 7607865Acessível livremente. PMID 33138772. doi:10.1186/s12864-020-07144-2 
  9. Vazirani (2003), pp. 27–28.
  10. a b Byrka et al. (2010).
  11. Chlebík & Chlebíková (2008).
  12. Berman, Karpinski & Zelikovsky (2009).
  13. Karpinski & Zelikovsky (1998).
  14. Smith & Winter (1995), p. 361.
  15. Kerivin, Hervé; Mahjoub, A. Ridha (2005). «Design of Survivable Networks: A survey». Networks (em inglês). 46 (1): 1–21. ISSN 0028-3045. doi:10.1002/net.20072 
  16. Paolini & Stepanov (2012).
  17. Kou, Markowsky & Berman (1981).
  18. Takahashi & Matsuyama (1980).
  19. Wu, Widmayer & Wong (1986).
  20. Robins & Zelikovsky (2000).
  21. Dreyfus & Wagner (1971).
  22. Levin (1971).
  23. Fuchs et al. (2007).
  24. Björklund et al. (2007).
  25. Lokshtanov & Nederlof (2010).
  26. Fomin et al. (2015).
  27. Cygan et al. (2016).
  28. Dom, Lokshtanov & Saurabh (2014).
  29. Ganley (2004).
  30. The New York Times, 30 de outubro de 1990, reportou que uma prova foi encontrada, e que Ronald Graham, quem ofereceu 500 dólares pela prova, estava prestes a enviar um cheque aos autores.
  31. Ivanov & Tuzhilin (2012).
  32. Chung & Graham (1985).
  33. a b Hwang (1976).

Bibliografia

Links Externos

O Commons possui uma categoria com imagens e outros ficheiros sobre Problema da árvore de Steiner