Using library you can easily generate networks using commonly used models.
Generator creates simple ring network with given number of node.
import ml.sparkling.graph.generators.ring.{RingGenerator, RingGeneratorConfiguration}
import org.apache.spark.SparkContext
import org.apache.spark.graphx.Graph
implicit ctx:SparkContext=???
// initialize your SparkContext as implicit value
val graph =RingGenerator.generate(RingGeneratorConfiguration(numberOfNodes=5))
// do operations on graph
Network can be also created in undirected version:
import ml.sparkling.graph.generators.ring.{RingGenerator, RingGeneratorConfiguration}
import org.apache.spark.SparkContext
import org.apache.spark.graphx.Graph
implicit ctx:SparkContext=???
// initialize your SparkContext as implicit value
val graph =RingGenerator.generate(RingGeneratorConfiguration(numberOfNodes=5,undirected = true))
// do operations on graph
Model accepts three parameters:
- n - number of nodes
- k - mean degree
- \beta - probability of rewiring
Generation is done in two steps:
- Ring network with n nodes is created, each of nodes is connected to \frac{k}{2} nodes on left and right
- Each edge is rewired with probability \beta, where new destination node is seleted randomly from all possible not exsisting connections
For further informations please refer to [Watts]
import ml.sparkling.graph.generators.wattsandstrogatz.{WattsAndStrogatzGenerator, WattsAndStrogatzGeneratorConfiguration}
import org.apache.spark.SparkContext
import org.apache.spark.graphx.Graph
implicit ctx:SparkContext=???
// initialize your SparkContext as implicit value
val graph =WattsAndStrogatzGenerator.generate(WattsAndStrogatzGeneratorConfiguration(numberOfNodes = 10,meanDegree = 2,rewiringProbability = 0.5))
// do operations on graph
References:
[Watts] | Watts, D. J., & Strogatz, S. H. (1998). Collective dynamics of ‘small-world’networks. nature, 393(6684), 440-442. Nature |