DiagrammeR (version 0.9.2)

add_pa_graph: Add a preferential attachment graph

Description

To an existing graph object, add a graph built according to the Barabasi-Albert model, which uses preferential attachment in its stochastic algorithm.

Usage

add_pa_graph(graph, n, m = NULL, power = 1, out_dist = NULL,
  use_total_degree = FALSE, zero_appeal = 1, algo = "psumtree")

Arguments

graph

a graph object of class dgr_graph.

n

the number of nodes comprising the preferential attachment graph.

m

the number of edges to add in each time step.

power

the power of the preferential attachment. The default value of 1 indicates a linear preferential attachment.

out_dist

a numeric vector that provides the distribution of the number of edges to add in each time step.

use_total_degree

a logical value (default is TRUE) that governs whether the total degree should be used for calculating the citation probability. If FALSE, the indegree is used.

zero_appeal

a measure of the attractiveness of the nodes with no adjacent edges.

algo

the algorithm to use to generate the graph. The available options are psumtree, psumtree-multiple, and bag. With the psumtree algorithm, a partial prefix-sum tree is used to to create the graph. Any values for power and zero_appeal can be provided and this algorithm never generates multiple edges. The psumtree-multiple algorithm also uses a partial prefix-sum tree but the difference here is that multiple edges are allowed. The bag algorithm places the node IDs into a bag as many times as their in-degree (plus once more). The required number of cited nodes are drawn from the bag with replacement. Multiple edges may be produced using this method (it is not disallowed).

Examples

Run this code
# NOT RUN {
# Create an undirected PA
# graph with 100 nodes, adding
# 2 edges at every time step
pa_graph <-
  create_graph(
    directed = FALSE) %>%
  add_pa_graph(
    n = 100,
    m = 1)

# Get a count of nodes
pa_graph %>% node_count()
#> [1] 100

# Get a count of edges
pa_graph %>% edge_count()
#> [1] 99
# }

Run the code above in your browser using DataCamp Workspace