¿Es necesario llamar a la multiplicación de matrices


20

Una garra es un K1,3 . Un algoritmo trivial detectará una garra en el tiempo O(n4) . Se puede hacer en O(nω+1) , donde ω es el exponente de la multiplicación de matriz rápida, de la siguiente manera: tome el subgrafo inducido por N[v] para cada vértice v , y encuentre un triángulo en su complemento.

Hasta donde yo sé, estos algoritmos básicos solo se conocen. Spinrad enumeró en su libro "representaciones gráficas eficientes" la detección de una garra en el tiempo o(nω+1) como un problema abierto (8.3, página 103). Para el límite inferior, sabemos que un algoritmo de tiempo O(nc) implicará un algoritmo O(nmax(c,2)) tiempo máximo para encontrar un triángulo. Por lo tanto, podemos considerar Ω(nω) como un límite inferior.

Pregunta:

  1. Hay algún progreso en esto. ¿O algún progreso en demostrar que es imposible?
  2. ¿Existen otros problemas naturales con los algoritmos de tiempo O(nω+1) que son los mejores?

Observación:

  1. Estoy pidiendo explícitamente la detección de una garra, en lugar del reconocimiento de gráficos sin garras. Aunque un algoritmo generalmente resuelve ambos, hay pocas excepciones.
  2. Se afirma en el Manual de Algoritmos y Ciencias de la Computación Teórica que se puede encontrar en tiempo lineal, pero era solo un error tipográfico (ver "representaciones gráficas eficientes").

Puede usar el método de Alon et al. Para encontrar el triángulo en O(|E|1.41) , para cada nodo que termine en un O(|V||E|1.41) que es mejor que |V|ω+1 si el gráfico no es demasiado denso.
RB

@RB, gracias por señalar esto. La idea básica sigue siendo ejecutar el algoritmo de detección de triángulos lo n veces, que es lo que quiero evitar.
Yixin Cao

¿Cómo podemos esperar encontrar algún algoritmo que no esté relacionado con la búsqueda de triángulos? Porque cualquiera que sea el algoritmo debe verificar los vecinos de cada vértice. Quiero decir que la propiedad es una propiedad muy local, excepto que con una diferencia de factor constante se debe ver cada vértice. (O no puedo imaginar ningún algoritmo natural que evite esta localidad). ¿Tienes alguna idea vaga?
Saeed

2
Tal vez sea bueno mencionar que si podemos encontrar una garra en el tiempo f (n), también podemos encontrar un triángulo en el tiempo f (n + 1) (solo tome el complemento del gráfico y agregue un vértice más conectado a todos ), por lo que no debemos esperar encontrar nada mejor que . nω
domotorp

1
@domotorp, parece que la parte está clara, al revés no está clara, quiero decir por qué necesitamos una búsqueda lineal. Como también señaló Yixin, es posible que exista otro algoritmo que no utilice un algoritmo de búsqueda de triángulos y resuelva el problema en , que creo que es difícil de encontrar y probablemente sea más fácil. para mostrar que cualquier algoritmo utiliza la búsqueda de triángulos como subrutina (o se puede convertir) con búsqueda lineal en él. o(nω+1)
Saeed

Respuestas:


16

Creo que podemos hacer un poco mejor que para gráficos densos, usando la multiplicación de matriz rectangular. Eisenbrand y Grandoni utilizaron una idea similar ("Sobre la complejidad de la camarilla de parámetros fijos y el conjunto dominante", Theoretical Computer Science Volume 326 (2004) 57–67) para la detección de 4 camarillas.O(n1+ω)

Sea la gráfica en la que queremos detectar la existencia de una garra. Deje que sea el conjunto de pares de vértices en (ordenadas) . Considere la siguiente matriz booleana de tamaño: cada fila está indexada por alguna , cada columna está indexada por alguna , y la entrada correspondiente es una si y solo si , y . Considere el producto matriz booleana de y su transpuesta . El gráfico tiene una garra si y solo si existeG=(V,E)AVM|V|×|A|uV(v,w)A{u,v}E{v,w}E{u,w}EMMTG{u,v}E tal que la entrada de en la fila indexada por y la columna indexada por es una.MMTuv

La complejidad de este algoritmo es esencialmente la complejidad de calcular el producto booleano de una matriz por una matriz , donde denota el número de vértices en el gráfico. Se sabe que dicho producto matricial se puede calcular en el tiempo , que es mejor que para el límite superior más conocido en . Por supuesto, si (como se conjetura), entonces los dos enfoques dan la misma complejidad .n×n2n2×nnO(n3.3)O(n1+ω)ωω=2O(n3)


¡Excelente! Esto es exactamente lo que quiero para mi primera pregunta: solo una llamada de multiplicación de matrices, aunque una más grande. Esperaré más comentarios o respuestas sobre mi segunda pregunta antes de tomarla como respuesta.
Yixin Cao

15

No sé cómo evitar hacer multiplicaciones matriciales, pero puedes analizarlo de tal manera que el tiempo sea efectivamente el de un número menor de ellos. Este truco es den

Kloks, Ton; Kratsch, Dieter; Müller, Haiko (2000), "Encontrar y contar eficientemente pequeñas subgrafías inducidas", Information Processing Letters 74 (3–4): 115–121, doi: 10.1016 / S0020-0190 (00) 00047-8, MR 1761552.

La primera observación es que, cuando vas a multiplicar matrices, las matrices no son realmente , sino donde es el grado de cada vértice, porque lo que estás buscando es un co-triángulo en la vecindad de cada vértice.n×nd×dd

Segundo, en un gráfico sin garras, cada vértice debe tener vecinos . De lo contrario, el conjunto de vecinos tendría muy pocos bordes para evitar tener un triángulo en el complemento. Entonces, cuando estás haciendo multiplicaciones matriciales, solo necesitas hacerlo en matrices de tamaño lugar de .O(m)O(m)n

Además, cada borde puede contribuir al tamaño del problema de multiplicación de matrices para solo dos vértices, sus puntos finales. El peor de los casos ocurre cuando los para el tamaño total de estos problemas de multiplicación de matrices se distribuyen en subproblemas de tamaño cada uno, lo que da un límite de tiempo total de , una mejora para gráficos dispersos sobre el límite mencionado por R B.2mO(m)O(m ( 1 + ω ) / 2 )O(nm ω / 2 )O(m)O(m(1+ω)/2)O(nmω/2)


Wow, esa es una idea inteligente, estaba pensando si es posible hacer una búsqueda sublineal (en realidad refutando esto) y ni siquiera pensé en las propiedades intrínsecas del problema.
Saeed

Gracias David. Lo dejo abierto por un momento ya que mi segunda pregunta parece no haber sido notada todavía.
Yixin Cao
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.