Skip to content
Snippets Groups Projects
Commit a5b4c95f authored by Valtteri Virta's avatar Valtteri Virta
Browse files

added simple GraphGenerator

parent bdfe7fa9
No related branches found
No related tags found
No related merge requests found
import random
from typing import Tuple
from graph import Graph
from node import Node
class GraphGenerator:
"""
Generates random graphs based on specified parameters.
"""
@staticmethod
def generate(num_nodes: int,
density: float,
weight_range: Tuple[int, int]) -> Graph:
"""
Generate a random undirected graph.
"""
# Check values
if not 0.0 <= density <= 1.0:
raise ValueError("Density must be between 0.0 and 1.0")
min_w, max_w = weight_range
if min_w > max_w:
raise ValueError("weight_range must be (min_w, max_w) with min_w <= max_w")
graph = Graph()
# Add all nodes
nodes = []
for node_id in range(num_nodes):
node = Node(node_id)
graph.add_node(node)
nodes.append(node)
# Add edges based on density
for i in range(num_nodes):
for j in range(i + 1, num_nodes):
if random.random() < density:
weight = random.randint(min_w, max_w)
graph.add_edge(nodes[i], nodes[j], weight)
return graph
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment