É 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|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}∉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.