É necessário chamar multiplicação de matrizes


20

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 ] vK1,3O(n4)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 ω )o(nω+1)O(nc)O(nmax(c,2))Ω(nω)

Questão:

  1. Existe algum progresso nisso? Ou algum progresso em mostrar que é impossível?
  2. Existem outros problemas naturais com os algoritmos de tempo O(nω+1) que são os melhores?

Observação:

  1. 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.
  2. 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").

Você pode usar o método de Alon et al. Para encontrar triângulo em , para cada nó que termina em um que é melhor que se o gráfico não for muito denso. O(|E|1.41)O(|V||E|1.41)|V|ω+1
RB

@RB, obrigado por apontar isso. A idéia básica ainda é executar o algoritmo de detecção de qualquer triângulo vezes, que é o que eu quero evitar. n
Yixin Cao

Como podemos esperar encontrar algum algoritmo que não esteja relacionado à descoberta de triângulos? Porque qualquer que seja o algoritmo, verifique os vizinhos de cada vértice. Quero dizer que a propriedade é uma propriedade muito local, exceto com a constante diferença de fator que todo vértice deve ser visto. (Ou não consigo imaginar nenhum algoritmo natural que evite essa localidade). Você tem alguma idéia vaga?
Saeed

2
Talvez seja bom mencionar que, se pudermos encontrar uma garra no tempo f (n), também podemos encontrar um triângulo no tempo f (n + 1) (basta pegar o complemento do gráfico e adicionar mais um vértice conectado a todos ), portanto, não devemos esperar encontrar algo melhor que . nω
Domotorp

1
@domotorp, parece que parte é clara, o contrário não é claro, quero dizer por que precisamos de pesquisa linear. Como Yixin também apontou, pode haver outro algoritmo que não usa um algoritmo de busca de triângulo e resolve o problema em , o que eu acho difícil encontrar esse algoritmo e provavelmente é mais fácil mostrar que qualquer O algoritmo usa a descoberta de triângulo como sub-rotina (ou pode ser convertida) com pesquisa linear nela. o(nω+1)
Saeed

Respostas:


16

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)AVM|V|×|A|uV(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}EMMTG{u,v}EMMTuv

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×n2n2×nnO(n3.3)O(n1+ω)ωω=2 .O(n3)


Ótimo! É exatamente isso que eu quero para a minha primeira pergunta: apenas uma chamada de multiplicação de matrizes, embora seja maior. Vou esperar por mais comentários ou respostas na minha segunda pergunta antes de tomá-la como resposta.
Yixin Cao

15

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×nd×dd

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 ( 2msubproblemas 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)


Uau, essa é uma ideia inteligente, eu estava pensando se é possível fazer uma pesquisa sublinear (na verdade, refutando isso) e nem sequer pensei nas propriedades intrínsecas do problema.
Saeed

Obrigado David. Deixo em aberto por um momento, pois minha segunda pergunta ainda não foi percebida.
Yixin Cao
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.