Uma garra é um . Um algoritmo trivial detectará uma garra em . Isso pode ser feito em , onde é o expoente da multiplicação rápida de matrizes, como segue: pegue o subgrafo induzido por para cada vértice e encontre um triângulo em seu complemento. O ( n 4 ) O ( n ω + 1 ) ω N [ v ] v
Tanto quanto eu sei, esses algoritmos básicos são conhecidos apenas. Spinrad listou em seu livro "representações gráficas eficientes" a detecção de uma garra no tempo como um problema em aberto (8.3, página 103). Para o limite inferior, sabemos que um algoritmo de tempo implicará um algoritmo de tempo para encontrar um triângulo. Portanto, podemos considerar \ Omega (n ^ \ omega) como um limite inferior.O ( n c ) O ( n máx ( c , 2 ) ) Ω ( n ω )
Questão:
- Existe algum progresso nisso? Ou algum progresso em mostrar que é impossível?
- Existem outros problemas naturais com os algoritmos de tempo que são os melhores?
Observação:
- Estou pedindo explicitamente a detecção de uma garra, em vez do reconhecimento de gráficos sem garras. Embora um algoritmo geralmente resolva os dois, existem poucas exceções.
- Alega-se no Manual de Algoritmos e Ciência da Computação Teórica que ele pode ser encontrado em tempo linear, mas foi apenas um erro de digitação (consulte "representações gráficas eficientes").
graph-theory
graph-algorithms
graph-classes
Yixin Cao
fonte
fonte
Respostas:
Penso que podemos fazer um pouco melhor que para gráficos densos, usando multiplicação de matriz retangular. Uma idéia semelhante foi usada por Eisenbrand e Grandoni ("Sobre a complexidade da camarilha de parâmetro fixo e do conjunto dominante", Theoretical Computer Science Volume 326 (2004) 57-67) para detecção de 4 camaradas.O(n1+ω)
Seja o gráfico no qual queremos detectar a existência de uma garra. Vamos Uma ser o conjunto de (ordenadas) em pares de vértices V . Considere a seguinte matriz booleana M de tamanho | V | × | Um | : cada linha é indexada por alguns u ∈ V , cada coluna é indexada por alguns ( v , w ) ∈ A , e a entrada correspondente é uma se e somente se { u , v } ∈G=(V,E) A V M |V|×|A| u∈V (v,w)∈A , { v , w } ∈ E e { u , w } ∉ E . Considere o produto matriz booleano de H e sua transposta M t . O gráfico G tem uma garra, se e somente se existir { u , v } ∉ E, de
modo que a entrada de M M T na linha indexada por u e a coluna indexada por v seja uma.{u,v}∈E {v,w}∈E {u,w}∉E M MT G {u,v}∉E MMT u v
A complexidade desse algoritmo é essencialmente a complexidade de calcular o produto booleano de uma matriz por uma matriz n 2 × n , em que n indica o número de vértices no gráfico. Sabe-se que esse produto de matriz pode ser calculado no tempo O ( n 3,3 ) , o que é melhor que O ( n 1 + ω ) para o limite superior mais conhecido em ω . Obviamente, se ω = 2 (como conjecturado), então as duas abordagens apresentam a mesma complexidade On×n2 n2×n n O(n3.3) O(n1+ω) ω ω=2 .O(n3)
fonte
Não sei como evitar a multiplicação de matrizes, mas você pode analisá-las de maneira que o tempo seja efetivamente o de um número menor. Esse truque é den
Kloks, Ton; Kratsch, Dieter; Müller, Haiko (2000), "Localizando e contando pequenos subgráficos induzidos eficientemente", Information Processing Letters 74 (3–4): 115-121, doi: 10.1016 / S0020-0190 (00) 00047-8, MR 1761552.
A primeira observação é que, quando você vai multiplicar matrizes, as matrizes não são realmente , mas d × d onde d é o grau de cada vértice, porque o que você está procurando é um co-triângulo na vizinhança de cada vértice.n×n d×d d
Segundo, em um gráfico sem garras, todo vértice deve ter vizinhos. Pois, caso contrário, o conjunto de vizinhos teria poucas arestas para evitar ter um triângulo no complemento. Então, quando você está fazendo multiplicações de matrizes, você só precisa fazer isso em matrizes de tamanhoO( √O(m−−√) ao invés den.O(m−−√) n
Além disso, cada aresta pode contribuir para o tamanho do problema de multiplicação de matrizes para apenas dois vértices, seus pontos finais. O pior caso ocorre quando os para o tamanho total desses problemas de multiplicação da matriz são espalhados em O ( √2m subproblemas do tamanhoO( √O(m−−√) cada um, o que fornece um limite de tempo total deO(m ( 1 + ω ) / 2 ), uma melhoria para gráficos esparsos sobre olimite deO(nm ω / 2 )mencionado por R B.O(m−−√) O(m(1+ω)/2) O(nmω/2)
fonte