graphique - Comment trouver le Minimum Dirigé Cycle (minimum de poids total)?

Voici un accise:

Soit G un graphe orienté pondéré avec n sommets et m arêtes, où tous les côtés positifs de poids. Un tel cycle est un chemin orienté qui commence et se termine à la même sommet, et contient au moins une arête. Donner un O(n^3) l'algorithme pour trouver un dirigé cycle dans G de minimum de poids total. Partielle de crédit ne sera accordé pour une O (n^2)*m) de l'algorithme.


Voici mon algorithme.

Je fais un DFS. Chaque fois quand je trouve un back edge, je sais que j'ai dirigé cycle.

Alors je vais passer temporairement en arrière le long de la parent array (jusqu'à ce que je voyage à travers tous les sommets dans le cycle) et de calculer les total weights.

Puis-je comparer les total weight de ce cycle avec min. min prend toujours le minimum de poids total. Après le DFS finitions, notre minimum dirigé cycle est également constaté.


Ok, puis sur la complexité du temps.

Pour être honnête, je ne sais pas la complexité du temps de mon algorithme.

Pour DFS, la traversée prend O(m+n) (si m est le nombre d'arêtes, et n est le nombre de sommets). Pour chaque sommet, il pourrait point de retour pour l'un de ses ancêtres et constitue ainsi un cycle. Lorsqu'un cycle est trouvé, il faut O(n) pour résumer le poids total.

Donc je pense que le temps total est O(m+n*n). Mais c'est évidemment faux, comme indiqué dans l'accise, le moment optimal est de O(n^3) et le temps normal est de O(m*n^2).


Quelqu'un peut m'aider avec:

  1. Est mon algorithme correct?
  2. Qu'est-ce que la complexité du temps si mon algorithme est correct?
  3. Est-il un meilleur algorithme pour résoudre ce problème?
  • Il n'est pas clair ce que vous demandez de l'aide avec. Êtes-vous poser pour vous aider à déterminer votre temps de la complexité?
  • Ok, j'ai édité ma question
  • Votre algorithme est incomplète. Que faites-vous si vous rencontrez un sommet qui vous l'avez déjà vu?
  • 3in1 question 🙂
InformationsquelleAutor Jackson Tale | 2012-05-04