Module fera_graph::builder
[−]
[src]
Builder to create user defined, standard and random graphs.
This module offers an abstract way (independent of the graph type) to create graphs. To support
graph building a graph type must implement the WithBuilder
trait, which requires defining a
type that implements the Builder
trait. Each graph type has its own vertex and edge
representation, but the Builder
trait works with numeric vertices.
Examples
Creating a literal graph:
use fera_graph::prelude::*; // Creates a graph builder for a graph with 4 vertices and initial capacity for 5 edges let mut builder = StaticGraph::builder(4, 5); builder.add_edge(0, 1); builder.add_edge(1, 2); builder.add_edge(1, 3); builder.add_edge(2, 3); builder.add_edge(3, 0); // Note that we can add more than 5 edges builder.add_edge(2, 0); let g = builder.finalize(); assert_eq!(4, g.num_vertices()); assert_eq!(6, g.num_edges());
The graph!
macro can be used to simplify the creation of literal graphs.
Creating standard graphs (see also Complete
):
use fera_graph::prelude::*; // Creates a complete graph with 4 vertices let g = StaticGraph::new_complete(4); assert_eq!(4, g.num_vertices()); assert_eq!(6, g.num_edges()); let edges = [(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]; assert!(edges.iter().all(|&(u, v)| g.get_edge_by_ends(u, v).is_some()));
Creating random graphs:
extern crate rand; extern crate fera_graph; use fera_graph::prelude::*; use fera_graph::algs::{Components, Trees}; let mut rng = rand::weak_rng(); // Creates a connected graph with 10 vertices let g = StaticGraph::new_gn_connected(10, &mut rng); assert!(g.is_connected()); // Creates a graph with 7 vertices that is a tree. let g = StaticGraph::new_random_tree(7, &mut rng); assert!(g.is_tree());
See WithBuilder
for other methods to create standard and random graphs.
Traits
Builder |
A builder used to build graphs. |
WithBuilder |
A graph that has a |