Générer une Matrice de Contiguïté pour un Graphe Pondéré
Je suis en train de mettre en œuvre De Floyd-Warshall Algorithme. Pour ce faire, il me demande de configurer un adjacency matrix
d'un graphe pondéré. Comment pourrais-je aller sur le faire? Je sais que les valeurs et les avons joint une photo du graphe pondéré. J'ai essayé de regarder pour certains en ligne des exemples de cela, mais je n'arrive pas à trouver quoi que ce soit. Je comprends Floyd-Warshall algorithme j'ai juste besoin d'aide pour le configurer donc je suis en mesure de la mettre en œuvre. Voici celle que j'ai construite avant, mais je n'ai pas eu à utiliser des valeurs spécifiques.
Code:
public static void buildAdjMatrix()
{
for (int i = 0; i < 100; i++)
{
for (int j = 0; j < 100; j++)
{
if (directionAllowed(i, j) == true)
{
adjMatrix[i, j] = 1;
}
else
{
adjMatrix[i, j] = 50;
}
}
}
}
Voici le Graphique spécifique à portée de main:
Voici une photo de la matrice j'ai besoin de créer.. Désolé pour l'horrible qualité...
Node
et Arc
classesJe ne suis pas exactement sûr de ce que vous voulez dire par là. Désolé 🙁
qu'entendez-vous par "valeurs spécifiques"?
Ajout d'une image de la matrice.
OriginalL'auteur JLott | 2013-03-09
Vous devez vous connecter pour publier un commentaire.
Donc, vous semblez ne pas être familiarisés avec Graphiques, jetez un oeil à Wikipedia. Aussi parcourir pour certaines images, il devient plus facile à comprendre.
Peu de concept
Votre image peut être représentée comme une
Graph
. Généralement, les graphiques sont mis en œuvre à l'aide de 2 types d'éléments,Nodes
etLinks
(parfois appeléArcs
).Un
Node
représenter les lettres à votre image, ils seraient A, B, C, etc.Un
Arc
ouLink
, est la ligne qui connecte deux nœuds, si vous regardez la connexion entre H à L, avoir un lien entre les deux, dans un graphe pondéré, de liens différents, ont des poids différents.La résolution de votre problème - Partie 1
Ce que nous avons à faire est de représenter votre image sous forme de graphique dans le code, donc, nous allons commencer à créer les éléments de base
Node
etArc
:Nœud
Un nœud a un
Name
, afin que nous puissions identifier le nœud. Et un nœud peut être connecté à d'autres nœuds, nous pourrions utiliser une collection de Noeuds, mais le vôtre est un graphe pondéré, donc, chacune des connexions doit être représentée par le nœud lié et c'est le poids. Par conséquent, nous utilisons une collection d'Arcs.Arc
Vraiment simple de la classe, il contient les nœuds liés, et le poids de la connexion:
Graphique
Graphique est une sorte de classe wrapper, pour l'organisation fins. J'ai aussi déclaré une Racine pour le graphique, nous ne sommes pas à l'utiliser, mais il est utile dans plusieurs cas:
La résolution de votre problème - Partie 2
Maintenant, nous avons tous la structure de données pour la tenue de la graphique, nous allons le remplir avec des données. Voici un code qui initialise un graphique similaire à votre cube image. C'est ennuyeux et terne, mais dans la vraie vie les cas, le graphique est créée dynamiquement:
La résolution de votre problème - Partie 3
Donc, nous avons un completelly initialisé graphique, nous allons créer la matrice. La méthode suivante crée une matrice à deux dimensions, n par n, où n est le nombre de nœud de nous obtenir à partir du graphique de la classe. Foreach des nœuds, on recherche s'ils ont un lien, si elles ont un lien, un rempli la matrice dans la position appropriée. Regarder qui dans votre matrice de contiguïté exemple, vous n'avez
1
s, ici j'ai mis le poids de la le lien, j'ai mis de cette façon, donc il n'y a aucun sens à avoir une pondéré graphique!Fait
Que cela est fait, vous avez votre pondérée de la matrice de contiguïté, d'une certaine façon à imprimer:
De quoi nous donner le résultat suivant:
J'ai eu un problème.. Sur votre CreateAdjMatrix, il dit qu'il est impossible de code dans la boucle avec le compteur de "je"
Mmmm, dans le pour ligne en particulier? Le mien est de travailler ici. PS: Le CreateAdjMatrix méthode doit être à l'intérieur de la classe Graphique
Ouais c'est là que je l'ai... étrange... Où en êtes-vous de mettre la structure du graphe? Comme lorsque vous ajoutez le nouveau graphe.
Génial. Je viens d'avoir ma parenthèse hors de l'ordre... bien sûr lol. Merci encore!
OriginalL'auteur RMalke