J'essaie d'écrire un script qui génère des graphiques aléatoires et j'ai besoin de savoir si une arête d'un graphique pondéré peut avoir la valeur 0.
En fait, il est logique que 0 puisse être utilisé comme poids d’un bord, mais j’ai travaillé avec des graphiques ces derniers jours et je n’en ai jamais vu un exemple.
algorithms
graph-theory
graphs
weighted-graphs
Taxellool
la source
la source
Réponses:
Permis par qui ? Aucune administration graphique centralisée ne décide de ce que vous pouvez ou ne pouvez pas faire. Vous pouvez définir des objets de la manière qui vous convient, à condition de bien définir leur définition. Si les arêtes à pondération zéro vous sont utiles, utilisez-les; assurez-vous simplement que vos lecteurs savent que c'est ce que vous faites.
La raison pour laquelle vous ne voyez généralement pas les arêtes à pondération nulle est que, dans la plupart des contextes, une arête de poids zéro équivaut exactement à l'absence d'un bord. Par exemple, si votre graphique représente les pays et le volume des échanges effectués entre eux, un avantage égal à zéro signifie qu’il n’existe aucun échange, ce qui revient à ne pas avoir d’avantage du tout. Si votre graphique représente des distances, une arête de poids zéro correspondrait à deux emplacements distants de zéro, ce qui voudrait dire qu'ils seraient en fait au même endroit. Les deux doivent donc être représentés par le même sommet. Cependant, dans d'autres contextes, les arêtes de poids zéro pourraient avoir un sens. Par exemple, si votre graphique représente un réseau routier et que les poids de carre représentent la quantité de trafic, il y a une grande différence entre une route que personne n'utilise (bord sans poids) et aucune route (pas de bord).
la source
Ça dépend du contexte. En général oui, des arêtes de poids nul et même négatif peuvent être autorisées. Dans certains cas spécifiques, il peut être nécessaire que les pondérations des arêtes soient non négatives ou strictement positives (par exemple, l'algorithme de Dijkstra exige que les pondérations soient non négatives).
la source
Comme le notent les autres réponses, vous êtes parfaitement libre de prendre en compte (ou d’exclure de cela) les graphes pondérés avec des arêtes de poids nul.
Cela dit, selon mon expérience, la convention habituelle dans la plupart des applications de graphes pondérés est de ne faire aucune distinction entre un bord de poids nul et l'absence de bord. Cela s'explique notamment par le fait que les graphes pondérés sont généralement des généralisations de multigraphes , qui sont à leur tour des généralisations de graphes simples.
Spécifiquement, un multigraphe est un graphe qui (contrairement à un graphe simple ) permet plusieurs arêtes entre la même paire de nœuds. Alors que, dans un graphique simple, toute paire de nœuds est toujours connectée par 0 ou 1 arête, une paire de nœuds dans un multigraphe peut être connectée par 0, 1, 2, 3 ou plus (mais toujours par un nombre entier non négatif de ) bords.
Généraliser un multigraphe pour permettre un nombre fractionnaire d'arêtes entre une paire de nœuds amène naturellement à considérer les graphes pondérés, et de nombreux algorithmes travaillant sur des multigraphes arbitraires peuvent également être conçus pour fonctionner sur de tels graphes pondérés. Mais pour de tels algorithmes, le "poids" d'un bord dénote réellement sa multiplicité . Ainsi, étant donné cette interprétation, il ne peut y avoir de distinction significative entre "pas de bord" et "0 fronts" entre une paire de nœuds: les deux signifient exactement la même chose.
Bien sûr, un "graphe pondéré", par définition, n’est en réalité qu’un graphe avec un nombre associé à chaque arête, et il est parfaitement possible d’interpréter le poids comme autre chose que la multiplicité, auquel cas la distinction entre aucun arête et zéro bord peut en effet avoir un sens. Cependant, essayer d'appliquer des algorithmes multigraphes standard à de tels "graphes étrangement pondérés" ne donnera probablement pas de résultats significatifs du point de vue de l'interprétation alternative (non-multiplicité) de la pondération des arêtes.
la source
Pensez à un graphique du système routier de Cambridge UK, les notes sont partagées entre les cyclistes et les automobilistes, de même que la plupart des bords. Cela réduirait considérablement le coût de la maintenance des données.
Maintenant, si nous définissons le poids du bord comme étant le temps de parcours en secondes, chaque bord aura proprement deux poids, un pour les voitures et les vélos pour les vélos. Certains poids seront infinis car les voitures ne sont pas autorisées sur les pistes cyclables.
Examinons maintenant deux carrefours très proches l'un de l'autre si proches l'un de l'autre et qui ne sont bloqués que par quelques poteaux qui arrêtent les automobilistes. (Par exemple, une route transversale où les voitures roulent ne peuvent tourner que vers la gauche, mais les cyclistes peuvent aller dans n'importe quelle direction.) Nous obtenons alors des arêtes avec un poids infini de la part des automobilistes et un poids nul pour les cyclistes.
(Il est clair que le graphique pourrait ensuite être prétraité afin de créer un graphique plus simple pour l’acheminement des cyclistes, avant de déterminer les meilleurs itinéraires.)
la source
On dirait que vous utilisez le poids pour essayer de représenter deux aspects distincts du graphique. La première est de savoir si le graphique a réellement un bord représentable (dessiné) et la seconde est son poids réel.
Comme vous l'avez remarqué, vous tombez dans une situation confuse si vous avez utilisé le mot «non nul» comme indicateur de la présence d'une arête (et que vous deviez la tracer ou la répertorier), alors que vous avez simultanément trouvé une situation. où zéro poids est classé comme valide.
Vous aurez essentiellement besoin d’une autre façon de représenter la présence du bord (en supposant que vous en avez réellement besoin et que vous ne pouvez pas simplement créer un tableau de pondérations N ^ 2, mais vous tombez dans le piège de devoir décider quoi faire à propos de la boucle. bords arrières ...)
la source