J'ai présenté le problème suivant à l'Université:un arbre couvrant minimum lorsqu'un nouveau bord est inséré
Soit G = (V, E) un graphe (non orienté) avec des coûts c e> = 0 sur les bords e ∈ E. Supposons que vous obtenez un arbre recouvrant un coût minimal T dans G. Supposons maintenant qu'un nouveau bord est ajouté à G, reliant deux noeuds v, t v ∈ V avec coût c.
- Donnez un algorithme efficace pour tester si T reste l'arbre de recouvrement minimum coût avec le nouveau bord ajouté à G (mais pas à l'arbre T). Faites fonctionner votre algorithme dans le temps O (| E |). Pouvez-vous le faire en temps O (| V |)? Veuillez noter toutes les hypothèses que vous faites sur la structure de données utilisée pour représenter l'arbre T et le graphique G.
- Supposons que T ne soit plus l'arbre recouvrant le coût minimal. Donner un algorithme linéaire (temps O (| E |)) pour mettre à jour l'arbre T vers le nouvel arbre recouvrant le coût minimum.
Ceci est la solution que je trouve:
Let e1=(a,b) the new edge added
Find in T the shortest path from a to b (BFS)
if e1 is the most expensive edge in the cycle then T remains the MST
else T is not the MST
Il semble fonctionner, mais je peux facilement faire cette course en O (| V |) temps, alors que le problème demande O (| E |) temps. Est-ce que je manque quelque chose?
Par ailleurs, nous sommes autorisés à demander de l'aide de quelqu'un donc je ne triche pas: D
Peut-être qu'il me manque quelque chose - sûrement G est connecté donc | V | <= | E | + 1? Donc, votre algorithme O (| V |) est automatiquement O (| E |) aussi, alors où est le problème? Ou êtes-vous en train de dire: "Je suis surpris d'avoir été capable de le résoudre encore mieux que la question me l'a demandé"? –
Oui, quelque chose comme ça! Je suis surpris qu'il soit si simple à faire dans O (| V |) mais il demande qu'il soit dans O (| E |) dans les deux questions. Je crains qu'il y ait quelque chose que je ne vois pas. Aussi, je dois donner une preuve de ma solution et il est évident que si e1 est le bord le plus cher sur un cycle alors il ne peut pas être dans le MST, et que si e2 est plus cher de e1 alors e2 ne peut pas être dans le graphique, mais ne peut pas la possibilité d'un nouveau chemin à travers e1 créer un MST avec des bords qui étaient dans G, mais pas dans le précédent MST T? – Lynette
Sauf si on vous l'a dit, je ne pense pas que la propriété selon laquelle aucun bord MST ne peut être le bord le plus long d'un cycle est "évidente". Donc je ne pense pas que le problème soit "trop facile". Re votre question de preuve: supposons qu'un tel MST contenant e1 existait. Puis supprimer e1 laisse 2 composants connectés. Comme e1 faisait partie d'un cycle à l'origine, il doit y avoir un autre bord dans ce cycle qui relie ces deux composantes (preuve que cette partie est laissée comme un exercice: -P) et qui a un poids