def testDegreeDistribution(self):
        #We want to see how the degree distribution changes with kronecker powers

        
        numVertices = 3
        numFeatures = 0

        vList = VertexList(numVertices, numFeatures)
        initialGraph = SparseGraph(vList)
        initialGraph.addEdge(0, 1)
        initialGraph.addEdge(1, 2)

        for i in range(numVertices):
            initialGraph.addEdge(i, i)

        logging.debug((initialGraph.outDegreeSequence()))
        logging.debug((initialGraph.degreeDistribution()))

        k = 2
        generator = KroneckerGenerator(initialGraph, k)
        graph = generator.generate()

        logging.debug((graph.outDegreeSequence()))
        logging.debug((graph.degreeDistribution()))

        k = 3
        generator = KroneckerGenerator(initialGraph, k)
        graph = generator.generate()

        logging.debug((graph.degreeDistribution()))
Пример #2
0
def KroneckerEdgeList(n):
    init = SparseGraph(4)
    init[0, 1] = 1
    init[0, 2] = 1
    init[0, 3] = 1
    for i in range(4):
        init[i, i] = 1
    k = int(log(n, 4)) + 1
    generator = KroneckerGenerator(init, k)
    graph = generator.generate()
    l, _ = graph.adjacencyList()
    return convertAdjListToEdgeList(l)
Пример #3
0
def KroneckerEdgeList(n):
    init = SparseGraph(4)
    init[0, 1] = 1
    init[0, 2] = 1
    init[0, 3] = 1
    for i in range(4):
        init[i, i] = 1
    k = int(log(n, 4)) + 1
    generator = KroneckerGenerator(init, k)
    graph = generator.generate()
    l, _ = graph.adjacencyList()
    return convertAdjListToEdgeList(l)
   def testGenerate(self):
       k = 2
       numVertices = 1000
       numFeatures = 0
 
       vList = VertexList(numVertices, numFeatures)
       initialGraph = SparseGraph(vList)
       initialGraph.addEdge(0, 1)
       initialGraph.addEdge(1, 2)
 
       for i in range(numVertices):
           initialGraph.addEdge(i, i)
 
       generator = KroneckerGenerator(initialGraph, k)
 
       graph = generator.generate()
       print (graph.size)
    def testGenerate(self):
        k = 2
        numVertices = 3
        numFeatures = 0

        vList = VertexList(numVertices, numFeatures)
        initialGraph = SparseGraph(vList)
        initialGraph.addEdge(0, 1)
        initialGraph.addEdge(1, 2)

        for i in range(numVertices):
            initialGraph.addEdge(i, i)

        d = initialGraph.diameter()
        degreeSequence = initialGraph.outDegreeSequence()
        generator = KroneckerGenerator(initialGraph, k)

        graph = generator.generate()
        d2 = graph.diameter()
        degreeSequence2 = graph.outDegreeSequence()

        self.assertTrue((numpy.kron(degreeSequence, degreeSequence) == degreeSequence2).all())
        self.assertTrue(graph.getNumVertices() == numVertices**k)
        self.assertTrue(graph.getNumDirEdges() == initialGraph.getNumDirEdges()**k)
        self.assertEquals(d, d2)

        #Try different k
        k = 3
        generator.setK(k)
        graph = generator.generate()
        d3 = graph.diameter()
        degreeSequence3 = graph.outDegreeSequence()

        self.assertTrue((numpy.kron(degreeSequence, degreeSequence2) == degreeSequence3).all())
        self.assertTrue(graph.getNumVertices() == numVertices**k)
        self.assertTrue(graph.getNumDirEdges() == initialGraph.getNumDirEdges()**k)
        self.assertEquals(d, d3)

        #Test the multinomial degree distribution
        logging.debug(degreeSequence)
        logging.debug(degreeSequence2)
        logging.debug(degreeSequence3)
Пример #6
0
    def testDegreeDistribution(self):
        #We want to see how the degree distribution changes with kronecker powers

        numVertices = 3
        numFeatures = 0

        vList = VertexList(numVertices, numFeatures)
        initialGraph = SparseGraph(vList)
        initialGraph.addEdge(0, 1)
        initialGraph.addEdge(1, 2)

        for i in range(numVertices):
            initialGraph.addEdge(i, i)

        logging.debug((initialGraph.outDegreeSequence()))
        logging.debug((initialGraph.degreeDistribution()))

        k = 2
        generator = KroneckerGenerator(initialGraph, k)
        graph = generator.generate()

        logging.debug((graph.outDegreeSequence()))
        logging.debug((graph.degreeDistribution()))

        k = 3
        generator = KroneckerGenerator(initialGraph, k)
        graph = generator.generate()

        logging.debug((graph.degreeDistribution()))
Пример #7
0
    def testGenerate(self):
        k = 2
        numVertices = 3
        numFeatures = 0

        vList = VertexList(numVertices, numFeatures)
        initialGraph = SparseGraph(vList)
        initialGraph.addEdge(0, 1)
        initialGraph.addEdge(1, 2)

        for i in range(numVertices):
            initialGraph.addEdge(i, i)

        d = initialGraph.diameter()
        degreeSequence = initialGraph.outDegreeSequence()
        generator = KroneckerGenerator(initialGraph, k)

        graph = generator.generate()
        d2 = graph.diameter()
        degreeSequence2 = graph.outDegreeSequence()

        self.assertTrue((numpy.kron(degreeSequence,
                                    degreeSequence) == degreeSequence2).all())
        self.assertTrue(graph.getNumVertices() == numVertices**k)
        self.assertTrue(
            graph.getNumDirEdges() == initialGraph.getNumDirEdges()**k)
        self.assertEquals(d, d2)

        #Try different k
        k = 3
        generator.setK(k)
        graph = generator.generate()
        d3 = graph.diameter()
        degreeSequence3 = graph.outDegreeSequence()

        self.assertTrue((numpy.kron(degreeSequence,
                                    degreeSequence2) == degreeSequence3).all())
        self.assertTrue(graph.getNumVertices() == numVertices**k)
        self.assertTrue(
            graph.getNumDirEdges() == initialGraph.getNumDirEdges()**k)
        self.assertEquals(d, d3)

        #Test the multinomial degree distribution
        logging.debug(degreeSequence)
        logging.debug(degreeSequence2)
        logging.debug(degreeSequence3)
initialGraph = SparseGraph(VertexList(5, 1))
initialGraph.addEdge(1, 2)
initialGraph.addEdge(2, 3)
initialGraph.addEdge(1, 4)
initialGraph.addEdge(2, 4)
initialGraph.addEdge(1, 3)
initialGraph.addEdge(0, 1)

for i in range(5):
        initialGraph.addEdge(i, i)

        
## Now we are using the seed graph to recrusively generate a kronecker graph that has
## 5^5 = 3125 vertexes
k = 6
generator = KroneckerGenerator(initialGraph, k)
graph = generator.generate()

## Number of runs
runs = 10000

# In[3]:

x = graph.adjacencyMatrix()


# In[4]:

# plt.figure(figsize=(12,12))
# plt.matshow(x,cmap=plt.cm.gray)
# plt.show()
Пример #9
0
# -*- coding: utf-8 -*-
"""
Created on Thu Oct 29 12:45:00 2015

@author: Pankaj
"""
import numpy as np
import matplotlib.pyplot as plt
import scipy.sparse
import scipy as sp
from scipy import linalg
from scipy import sparse as sps
from scipy.sparse import linalg as spla
from apgl.graph import *
from apgl.generator.KroneckerGenerator import KroneckerGenerator

initialGraph = SparseGraph(VertexList(5, 1))
initialGraph.addEdge(1, 2)
initialGraph.addEdge(2, 3)
for i in range(5):
    initialGraph.addEdge(i,i)
    k=2
    generator = KroneckerGenerator(initialGraph, k)
    graph = generator.generate()