Poids Négatif Du Cycle De L'Algorithme De

Je pensais à propos de l'algorithme de recherche d'un poids négatif cycle dans un graphe orienté. Le Problème est que nous avons un graphe G(V,E), nous avons besoin de trouver un algorithme efficace pour trouver un cycle de poids négatif. Je comprends l'algorithme dans ce document PDF

Brièvement, l'algorithme est l'application de Bellman Ford par l'algorithme d'itération |V|-1 fois relaxations. Ensuite, il vérifie si il existe une arête qui peut être encore plus détendue, puis un cycle de poids négatif existe et on peut le faire remonter par la société mère de pointeurs et tout se passe bien, nous trouvons un cycle de poids négatif.

Cependant, je pensais à un autre algorithme de simplement en utilisant la profondeur de la première recherche (DFS) sur le graphique en gardant la trace de la somme de la distance parcourue, je marque tous les nœuds blancs au début et à la rendre gris quand je suis à la recherche d'un chemin, et de les marquer noir quand ils sont finis, je sais que je trouve un cycle si et seulement si je trouve un nœud visité et il est gris (mon chemin) , pas noir qui était déjà terminée par la Profondeur d'Abord de recherche, et donc pour mon algorithme, si j'atteins un gris nœud qui a déjà été visité, je vérifie qu'en serait-il de mise à jour (la distance) et si il est plus bas qu'avant, je sais que j'ai un cycle de poids négatif et peut remonter.

Est mon algorithme de mal? Si oui, pouvez-vous trouver un contre-exemple ? Si non pouvez-vous m'aider à le prouver?

Merci

Afin de trouver un -ve cycle, les algorithmes comme ce doit le traverser. Je soupçonne que, dans un grand graphe, il existe un très grand nombre de cycles. Dans un graphe connexe à N nœuds, il y aura N!/N cycles, à commencer par le premier nœud et de visiter chacun des autres nœuds. Donc je pense que votre algorithme doit prendre beaucoup plus de temps que de Bellman-Ford ou de manquer certains cycles dans certains graphiques.
faites-vous dfs à partir de chaque nœud? si non, quels sont les nœuds de commencer la recherche de?
mon dfs parcouru tous les nœuds, quand il est coincé, il trouve un autre nœud avec 0 en degrés et ne dfs de nouveau. Dans l'ensemble, mon DFS doit s'exécuter en O(V+ E) temps (linéaire)

OriginalL'auteur Saher Ahwal | 2011-04-04