Exemple #1
0
def randomTree(G):
    # assumption: nodes labelled 0 to n-1
    n = len(G)
    nodes = np.arange(n)
    visited = np.zeros(n, dtype=np.bool)
    hitTime = np.zeros(n, dtype=np.int)
    x = [np.random.choice(nodes)]
    visited[x[0]] = True
    hitTime[x[0]] = 0

    # random walk
    i = 0
    while (visited.sum() < n):
        nbh = G.GetNeighbours(x[i])
        r = np.random.choice(nbh)
        if (not visited[r]):
            hitTime[r] = i + 1
            visited[r] = True
            # end if
        x = x + [r]
        i = i + 1
    # end random walk

    T = Graph(n)
    for i in range(n):
        if (i == x[0]):
            continue
        p, q = hitTime[i] - 1, hitTime[i]
        T.AddEdge(x[p], x[q])
    return T
Exemple #2
0
 def Sample(self):
     p = np.random.permutation(self._n)
     T = Graph(self._n)
     for i in range(self._n - 1):
         T.AddEdge(p[i], p[i + 1])
     return T