Je vais suggérer la façon suivante. Ici, je suppose que G est connecté. Supprimez d'abord v du graphique, trouvez l'arbre recouvrant pour chacun des composants restants. Maintenant, vous pouvez avoir un seul Spanning Tree ou une forêt en fonction du graphe, vous pouvez rajouter v et utiliser les arêtes pour connecter v et chacun de Spanning Tree.
Ensuite, vous aurez un arbre couvrant de G, et il y aura trois cas.
cas 1: degré v> k, dans ce cas, la tâche est impossible
Cas n ° 2: degré v = k, vous avez la réponse.
cas 3:. Degré v < k, alors vous suffit d'ajouter des bords inutilisés de v Chaque fois que vous ajoutez un bord, vous allez créer un cycle, alors vous pouvez juste choisir un bord qui ne touche pas v et retirez-le . Vous continuez à ajouter des arêtes jusqu'à ce que vous ayez votre réponse ou que toutes les arêtes soient épuisées. Cependant, je ne peux pas penser à un moyen rapide d'interroger un cycle en plus de faire bfs/dfs.
Mise à jour: Il existe un moyen plus rapide pour cas 3 par Matt, après la connexion v à k voisins appropriés, utiliser l'algorithme de Kruskal ou Prim de remplir le reste de l'arbre couvrant, en commençant par les bords de v que vous avez déjà.
est-ce l'énoncé de l'exercice que vous ne comprenez pas ou comment le résoudre? – Derlin
non j'ai examen aujourd'hui et cette question de l'ancien examen que je ne peux pas lire la réponse parce que l'écriture de la main est nul, je sais que vous devez exécuter dfs et si d (v)> k vous devez remplacer bord d'arbre avec bord arrière ou quelque chose comme ça je ne pouvais pas entièrement comprendre ce qui écrit :( –