Est-ce que quelqu'un connaît un algorithme efficace pour calculer un digramme de ligne à partir d'un digramme? . Voir http://en.wikipedia.org/wiki/Line_graph (l'article de Wikipedia mentionne le cas digraph près du fond (dans les sections Généralisations) Idéalement, je voudrais le faire dans le temps linéaireUn algorithme efficace pour calculer un digramme de ligne à partir d'un digramme
A partir de cette section:.
- Si G est un dirigé graphique, son graphe linéaire ou son digramme linéaire a un sommet pour chaque arête de G.
- Deux sommets représentant des arêtes dirigées de u à v et de w à x dans G sont reliés par un front de uv à wx dans le digramme linéaire lorsque v =
Soit G le graphe orienté Soit L (G) le graphe linéaire dirigé
L'algorithme Je peux venir avec de production de L (G) donnée G est:
- Itérer à travers tous les bords de G pour produire les noeuds de L (G)
- Itérer à travers toutes les paires de noeuds (uv, wx) à L (G) et connecter si v = w
Ceci est un O (n^2) algorithme.
On dirait qu'il devrait y avoir un moyen de réduire cette durée à O (n). Je vais y réfléchir, mais j'ai pensé que je demanderais un débordement de pile juste au cas où il y aurait un algorithme célèbre (ou pas si célèbre) pour faire ça que je ne connais pas.
Je devine que la meilleure façon de s'y prendre est de changer la deuxième étape « itérer toutes les paires de noeuds (uv, wc) à L (G) ...) "de sorte qu'à la place" itérer à travers tous les nœuds v dans G ". – stonea
Ensuite, pour chaque front entrant uv et front sortant vx, il y aura un front dans L (G) (entre les nœuds uv et vx). Bien que cela ressemble toujours à un algorithme O (n^2). Peut-être qu'il y a une sorte d'analyse amortie pour cela? – stonea