Last active
October 16, 2020 16:46
-
-
Save RobertTalbert/dcabefb27f3d6c5c6ca8 to your computer and use it in GitHub Desktop.
Sage code for generating random weighted undirected graph
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Generates a random weighted undirected graph. | |
## n = number of nodes | |
## p = probability that two nodes are adjacent; must be between 0 and 1. | |
## lower_weight and upper_weight = lower and upper edge weights, respectively. If left out, the defaults are 1 and 100. | |
## | |
## Examples of usage: | |
## g = random_weighted_graph(20, 0.5) <-- Uses default lower and upper weights of 1 and 100. | |
## h = random_weighted_graph(10, 0.35, 5, 50) <-- Weights will be integers between 5 and 50. | |
## g.show(edge_labels = True) <-- Include the argument to display the weights | |
## h.show() <-- leave the argument out to hide the weights | |
def random_weighted_graph(n, p, lower_weight = 1, upper_weight = 100): | |
import random | |
g = graphs.RandomGNP(n,p) | |
m = g.num_edges() | |
weights = [random.randint(lower_weight, upper_weight) for r in xrange(m)] | |
uw_edges = g.edges() | |
# Create weighted graph edge list | |
w_edges = [(uw_edges[i][0], uw_edges[i][1], weights[i]) for i in xrange(m)] | |
return Graph(w_edges, weighted = True) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment