Est-il nécessaire d'appeler la multiplication matricielle

20

Une griffe est un K1,3 . Un algorithme trivial détectera une griffe en temps O(n4) . Cela peut être fait dans O(nω+1) , où ω est l'exposant de la multiplication matricielle rapide, comme suit: prendre le sous-graphe induit par N[v] pour chaque sommet v , et trouvez un triangle dans son complément.

o(nω+1)O(nc)O(nmax(c,2))Ω(nω) comme une borne inférieure.

Question:

  1. Y a-t-il des progrès à ce sujet. Ou tout progrès pour montrer que c'est impossible?
  2. Y a-t-il d'autres problèmes naturels avec les algorithmes O(nω+1) qui sont les meilleurs?

Remarque:

  1. Je demande explicitement la détection d'une griffe, au lieu de la reconnaissance de graphiques sans griffe. Bien qu'un algorithme résout généralement les deux, il existe quelques exceptions.
  2. Il est affirmé dans Handbook of Algorithms and Theoretical Computer Science qu'il peut être trouvé en temps linéaire, mais ce n'était qu'une faute de frappe (voir "Représentations de graphes efficaces").
Yixin Cao
la source
Vous pouvez utiliser la méthode d' Alon et al. Pour trouver un triangle dans O(|E|1.41) , pour chaque nœud qui se retrouve à un O(|V||E|1.41) qui est meilleur que |V|ω+1 si le graphique n'est pas trop dense.
RB
@RB, merci de l'avoir signalé. L'idée de base est toujours d'exécuter l'algorithme de détection de triangle quel que soit fois, ce que je veux éviter. n
Yixin Cao
Comment pouvons-nous nous attendre à trouver un algorithme qui n'est pas lié à la recherche de triangle? Parce que quel que soit l'algorithme, il faut vérifier les voisins de chaque sommet. Je veux dire que la propriété est une propriété très locale, sauf avec une différence de facteur constante, chaque sommet doit être vu. (Ou je ne peux imaginer aucun algorithme naturel qui évite cette localité). Avez-vous une idée encore vague?
Saeed
2
Peut-être qu'il est bon de mentionner que si nous pouvons trouver une griffe en temps f (n), nous pouvons également trouver un triangle en temps f (n + 1) (il suffit de prendre le complément du graphique et d'ajouter un sommet de plus connecté à tout le monde ), il ne faut donc pas espérer trouver mieux que . nω
domotorp
1
@domotorp, semble que la partie est claire, l'inverse n'est pas clair, je veux dire pourquoi nous avons besoin d'une recherche linéaire. Comme Yixin l'a également souligné, il existe peut-être un autre algorithme qui n'utilise pas d'algorithme de recherche de triangle et résout le problème dans , ce qui, à mon avis, est difficile à trouver un tel algorithme et il est probablement plus facile de montrer que tout L'algorithme utilise la recherche de triangle comme sous-programme (ou peut être converti) avec une recherche linéaire dessus. o(nω+1)
Saeed

Réponses:

16

Je pense que nous pouvons faire un peu mieux que pour les graphes denses, en utilisant la multiplication matricielle rectangulaire. Une idée similaire a été utilisée par Eisenbrand et Grandoni («Sur la complexité de la clique à paramètres fixes et de l'ensemble dominant», Theoretical Computer Science Volume 326 (2004) 57–67) pour la détection à 4 cliques.O(n1+ω)

Soit le graphe dans lequel on veut détecter l'existence d'une griffe. Soit A l'ensemble des (ordonnée) des paires de sommets dans V . Considérons la matrice booléenne M suivante de taille | V | × | A | : chaque ligne est indexée par certains u V , chaque colonne est indexée par certains ( v , w ) A , et l'entrée correspondante est une si et seulement si { u , v } G=(V,E)AVM|V|×|A|uV(v,w)A , { v , w } E et { u , w } E . Considérons le produit dematrice booléenne M et sa transposée M T . Le graphe G a une griffe si et seulement s'il existe { u , v } E tel que l'entrée de M M T dans la ligne indexée par u et la colonne indexée par v soit égale à un.{u,v}E{v,w}E{u,w}EMMTG{u,v}EMMTuv

La complexité de cet algorithme est essentiellement la complexité du calcul du produit booléen d'une matrice par une matrice n 2 × n , où n désigne le nombre de sommets dans le graphe. On sait qu'un tel produit matriciel peut être calculé dans le temps O ( n 3,3 ) , ce qui est meilleur que O ( n 1 + ω ) pour la borne supérieure la plus connue sur ω . Bien sûr, si ω = 2 (comme conjecturé) alors les deux approches donnent la même complexité On×n2n2×nnO(n3.3)O(n1+ω)ωω=2 .O(n3)

François Le Gall
la source
Génial! C'est exactement ce que je veux pour ma première question: un seul appel de multiplication matricielle, bien qu'un plus grand. J'attendrai d'autres commentaires ou réponses sur ma deuxième question avant de la prendre comme réponse.
Yixin Cao
15

Je ne sais pas comment éviter de faire multiplications matricielles, mais vous pouvez l'analyser de telle sorte que le temps soit effectivement celui d'un plus petit nombre d'entre elles. Cette astuce vient den

Kloks, Ton; Kratsch, Dieter; Müller, Haiko (2000), «Trouver et compter efficacement les petits sous-graphes induits», Information Processing Letters 74 (3-4): 115-121, doi: 10.1016 / S0020-0190 (00) 00047-8, MR 1761552.

La première observation est que, lorsque vous allez multiplier les matrices, les matrices ne sont pas vraiment , mais d × dd est le degré de chaque sommet, parce que ce que vous recherchez est un co-triangle dans le voisinage de chaque sommet.n×nd×dd

Deuxièmement, dans un graphique sans griffes, chaque sommet doit avoir voisins. Car sinon, l'ensemble des voisins aurait trop peu d'arêtes pour éviter d'avoir un triangle dans le complément. Donc, quand vous faites des multiplications matricielles, il vous suffit de le faire sur des matrices de tailleO(O(m)plutôt quen.O(m)n

De plus, chaque arête peut contribuer à la taille du problème de multiplication matricielle pour seulement deux sommets, ses extrémités. Le pire des cas se produit lorsque les de la taille totale de ces problèmes de multiplication matricielle sont répartis en O ( 2msous-problèmes de tailleO(O(m)chacun, ce qui donne une limite de temps totale deO(m ( 1 + ω ) / 2 ), une amélioration pour les graphes clairsemés par rapport à lalimite deO(nm ω / 2 )mentionnée par R B.O(m)O(m(1+ω)/2)O(nmω/2)

David Eppstein
la source
Wow, c'est une idée intelligente, je me demandais s'il était possible de faire une recherche sublinéaire (réfutant en fait cela) et je n'ai même pas pensé aux propriétés intrinsèques du problème.
Saeed
Merci David. Je la laisse ouverte un instant car ma deuxième question semble ne pas être encore remarquée.
Yixin Cao