Voici un accise:graphe - Comment obtenir le sous-ensemble avec poids minimum?
considérer le problème de trouver un sous-ensemble connecté poids minimum T d'arêtes d'un graphe connexe pondéré G. Le poids de T est la somme de tous les poids des arêtes dans une T.Give algorithme efficace pour calculer le poids minimum connecté sous T.
Voici ce que j'ai:
je dois assumer les poids sont mélangés par les deux positives et négatives. Seul le mélange des deux types de poids peut avoir un sens pour cette accise. Je vais trier les bords en premier, de sorte que les bords négatifs viendront en premier.
Je considère utiliser l'algorithme de Kruskal, mais devrait être avec quelques modifications
Parce que je salue les bords négatifs, je vais essayer d'ajouter autant de bords négatifs possible.
En outre, certains bords positifs peuvent être ajoutés au cas où tous les bords négatifs ne sont pas connectés et ils peuvent avoir besoin de certains bords positifs comme ponts.
Ok, au-dessus est ma façon de penser. Mais quand j'essaie de me salir les mains, je suis coincé.
Comment puis-je toujours enregistrer les poids minimums possibles?
Par exemple,
{0, 1} est un poids -20
{2, 3} est un poids -10
si {1, 3} a un poids de 11, alors bien sûr, je ne veux pas {1, 3}
ou si {1, 3} a un poids de 9, alors je veux
Avec quel type de structure de données, je peux toujours garder le poids minimum et les sommets pour que nous ça va?
Il convient de noter que le sous-ensemble cette accise cherche pour but à edges
.
Considérons le problème de trouver un poids minimum connecté sous-ensemble T de bords d'un graphe connexe pondéré G
Cela signifie que tous les sommets doivent encore être inclus.
Aussi, il est plus d'un MST. Considérons que si un sommet a deux bords, l'un est -1, l'autre est -2. Dans un algorithme MST normal, seul le front de -2 sera pris. Mais dans cette accise, -1 et -2 doivent être prises pour réduire davantage le poids global.
Vous pouvez le faire avec une petite variation sur la structure de données de jeu disjoint, voir ma réponse sur [algorithme de Kruskal] (http://stackoverflow.com/questions/9459938/testing-for-a-circuit-when-implementing- kruskalls-algorithme/9960713 # 9960713). –
@SaeedAmiri, je pense que c'est un peu plus que l'algorithme de Kruskal. Quelle variation proposez-vous? –
Si vous comprenez l'algorithme de Kruskal, la variation est facile, il vous suffit de garder les poids des forêts. –