La complexité temporelle de la recherche du diamètre d'un graphique


27

Quelle est la complexité temporelle de la recherche du diamètre d'un graphe ?G=(V,E)

  • O(|V|2)
  • O(|V|2+|V||E|)
  • O(|V|2|E|)
  • O(|V||E|2)

Le diamètre d'un graphe est le maximum de l'ensemble des distances de trajet les plus courtes entre toutes les paires de sommets d'un graphe.G

Je ne sais pas quoi faire à ce sujet, j'ai besoin d'une analyse complète sur la façon de résoudre un problème comme celui-ci.


4
Veuillez élaborer un peu. Pourquoi ce problème vous intéresse-t-il? Besoin d'un indice, d'une analyse complète ou d'une référence? Êtes-vous intéressé par le pire ou le temps moyen? est-il dirigé? G
Raphael

@Raphael: Évidemment, je n'ai pas besoin d'un indice, j'ai besoin d'une analyse complète. J'ai quand même édité ma question.
Gigili

1
@Gigili Vous voulez dire dans tous les cas, non? Sinon, tous sont subsumés par la dernière possibilité (qui se trouve sur des graphes généraux égaux à ) qui en fait une réponse correcte, en supposant qu'au moins une réponse est supposée être correcte. Une préoccupation supplémentaire est que dans un graphique avec des cycles, il n'y a pas de chemin le plus long. Qu'entend-on par «distance la plus longue»? ΘO(|V|5)
Raphael

@Gigili D'où viennent les quatre choix?
uli

Réponses:


5

Mise à jour:

Cette solution n'est pas correcte.

La solution n'est malheureusement vraie (et simple) que pour les arbres! Trouver le diamètre d'un arbre n'a même pas besoin de cela. Voici un contre-exemple pour les graphiques (le diamètre est 4, l'algorithme renvoie 3 si vous choisissez ce ):v

entrez la description de l'image ici


Si le graphique est orienté, c'est plutôt complexe, voici un article prétendant des résultats plus rapides dans le cas dense que d'utiliser des algorithmes pour les chemins les plus courts toutes paires.

Cependant, mon point principal concerne le cas où le graphique n'est pas dirigé et avec des poids non négatifs, j'ai entendu plusieurs fois une astuce intéressante:

  1. Choisissez un sommetv
  2. Trouvez tel que est maximumud(v,u)
  3. Trouver tel que est maximumwd(u,w)
  4. Retourd(u,w)

Sa complexité est la même que deux premières recherches successives d'ampleur¹, soit si le graphe est connecté².O(|E|)

Cela semblait du folklore mais en ce moment, j'ai encore du mal à obtenir une référence ou à prouver sa correction. Je mettrai à jour lorsque j'atteindrai l'un de ces objectifs. Cela semble si simple que je poste ma réponse en ce moment, peut-être que quelqu'un l'obtiendra plus rapidement.

¹ si le graphique est pondéré, wikipedia semble dire mais je ne suis sûr que de .O(|E|+|V|log|V|)O(|E|log|V|)

² Si le graphique n'est pas connecté, vous obtenez mais vous devrez peut-être ajouter pour choisir un élément de chaque composant connecté. Je ne sais pas si c'est nécessaire et de toute façon, vous pouvez décider que le diamètre est infini dans ce cas.O(|V|+|E|)O(α(|V|))


Pour que mkae Dijsktra travaille dans les délais spécifiés, vous devez utiliser des tas de Fibonacci, pas l'implémentation habituelle.
Suresh

8
C'est une fausse réponse, cet algorithme est du folklore mais pas des graphiques généraux dans les arbres. PS: Je peux voir votre contre-exemple, mais ce n'est pas une bonne réponse d'être marqué comme réponse.

J'ai deux questions sur la mauvaise solution. 1. Cela donnerait-il au moins une plage dans laquelle la bonne réponse doit être? Par exemple, si la méthode trouve le diamètre d , la solution correcte se situera-t-elle entre d et 2d ? 2. Que se passe-t-il si nous ajoutons une autre indirection et considérons tous les nœuds trouvés par une indirection (pas un seul)? Le contre-exemple donné dans le post fonctionnerait alors, car les vrais sommets périphériques sont parmi les nœuds trouvés par la deuxième indirection.
mafu

32

Je suppose que vous voulez dire que le diamètre de qui est le plus long chemin le plus court trouvée dans .GG

La recherche du diamètre peut être effectuée en recherchant d'abord toutes les paires de chemins les plus courts et en déterminant la longueur maximale trouvée. L'algorithme de Floyd-Warshall le fait en temps . L'algorithme de Johnson peut être implémenté pour atteindre le temps .Θ(|V|3)O(|V|2log|V|+|V||E|)

Une limite d'exécution plus petite dans le pire des cas semble difficile à atteindre car il y a des distances à considérer et calculer ces distances en temps sublinéaire (amorti) chacune sera difficile; voir ici pour une borne connexe. Notez cet article qui utilise une approche différente et obtient un algorithme (légèrement) plus rapide.O(|V|2)


2
Si vous obtenez un mur payant sur ces papiers, consultez Google Scholar.
Raphael

En outre, cette exception vaut la peine d'être notée pour les arbres non dirigés , où vous pouvez obtenir le diamètre. avec une seule traversée DFS.
azam

15

Vous pouvez également envisager une approche théorique des graphes algébriques. Le diamètre est le plus petit entier st la matrice a la propriété que toutes les entrées de sont non nulles. Vous pouvez trouver par itérations de multiplication matricielle. L'algorithme de diamètre nécessite alors un temps , où est la limite de la multiplication matricielle. Par exemple, avec la généralisation de l'algorithme Coppersmith-Winograd par Vassilevska Williams, l'algorithme de diamètre s'exécuterait en . Pour une introduction rapide, voir le chapitre 3 du livre de Fan Chung ici .diam(G)tM=I+AMttO(logn)O(M(n)logn)M(n)O(n2.3727logn)

Si vous limitez votre attention à une classe de graphe appropriée, vous pouvez résoudre le problème APSP en un temps optimal . Ces classes comprennent au moins des graphes d'intervalle, des graphes d'arc de cercle, des graphes de permutation, des graphes de permutation bipartite, des graphes fortement cordés, des graphes bipartis cordés, des graphes héréditaires à distance et des graphes à deux cordes. Par exemple, voir Dragan, FF (2005). Estimation de toutes les paires de chemins les plus courts dans des familles de graphes restreintes: une approche unifiée. Journal of Algorithms, 57 (1), 1-21 et les références qu'il contient.O(n2)


2
Il convient de noter que cet algorithme ne fonctionne que dans le cas non pondéré.
GMB

-2

Hypothèses:
1. Le graphique n'est pas pondéré
2. Le graphique est dirigé

O (| V || E |) complexité temporelle.

Algorithme:

ComputeDiameter(G(V,E)):
  if ( isCycle( G(v,E) ) ) then
     return INFINITY
  if ( not isConnected( G(V,E) )) then
     return INFINITY
  diameter = 0
  for each vertex u in G(V,E):
     temp = BFS(G,u)
     diameter = max( temp , diameter )
  return diameter

Explication:
Nous vérifions le cycle. si le graphe contient un cycle, alors nous continuons à nous déplacer dans la boucle, nous aurons donc une distance infinie. Nous vérifions la connexion. Si le graphe n'est pas connecté, cela signifie le sommet u de G1 au sommet v dans G2. Où G1 et G2 sont deux sous-graphes non connectés. Nous aurons donc à nouveau une distance infinie. Nous utiliserons BFS pour calculer la distance maximale entre un nœud donné (u) et tous les autres nœuds (v) accessibles depuis u. Ensuite, nous prendrons le maximum du diamètre précédemment calculé et le résultat sera renvoyé par BFS. Nous aurons donc un diamètre maximum actuel.

Analyse du temps d'exécution:

  1. O (| E |) à l'aide de DFS
  2. O (| E |) à l'aide de DFS
  3. BFS s'exécute en temps O (| E |).
  4. Nous devons appeler la fonction BFS pour chaque sommet, si bien que cela prendra O (| V || E |) temps.

Temps total = O (| v || E |) + O (| E |) + O (| E |)
Depuis | V || E | > | E |
nous avons donc le temps d'exécution comme O (| v || E |).

BFS
DFS

Remarque: Ce n'est pas une solution élégante à ce problème.


Les graphes connectés acycliques sont des arbres, pour lesquels le problème est plus facile (car le diamètre est alors donné par le chemin le plus long). Il a été traité ici et ici , où des algorithmes plus rapides sont donnés. (Une traversée récursive ou, alternativement, deux BFS suffisent.)
Raphael

1
@Raphael Non, les graphiques acycliques non dirigés sont des arbres. Les DAG sont des DAG.
David Richerby du

@DavidRicherby Right. (Bien que, techniquement, la réponse ne dit pas si elle exclut les cycles dirigés ou non dirigés.;)) Quoi qu'il en soit, ce n'est rien d'autre que la résolution de l'APSPP (l'approche naïve), qui a déjà été couverte pour le cas général par les réponses précédentes.
Raphael

@Raphael Êtes-vous sûr que les graphiques acycliques sont des arbres? Le graphique est acyclique ne signifie pas que le graphique sera toujours un arbre. L'arbre est juste un cas particulier de cela, c'est aussi un algorithme simple et la complexité temporelle est O (| V || E |).
sonus21

Oui, je suis sûr. (Peut-être que vous pensez aux arbres enracinés , qui sont d'une saveur différente.)
Raphael
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.