# Obtaining the minimum spanning tree of a graph test_that("the MST algorithm is functional", { # Create a random graph and obtain Jaccard # similarity values for each pair of nodes # as a square matrix j_sim_matrix <- create_graph() %>% add_gnm_graph( n = 10, m = 22, set_seed = 23) %>% get_jaccard_similarity() # Create a weighted, undirected graph from the # resultant matrix (effectively treating that # matrix as an adjacency matrix) graph <- j_sim_matrix %>% from_adj_matrix(weighted = TRUE) # The graph in this case is a fully connected graph # with loops, where jaccard similarity values are # assigned as edge weights (edge attribute `weight`); # The minimum spanning tree for this graph is the # connected subgraph where the edges retained have # the lowest similarity values possible min_spanning_tree_graph <- graph %>% transform_to_min_spanning_tree() # Expect no loops in `min_spanning_tree_graph` expect_true( all(get_node_info(min_spanning_tree_graph)$loops == 0)) # Expect that all nodes are connected expect_true( is_graph_connected(min_spanning_tree_graph)) })