Пример #1
0
    def __init__(self, numpoints, dimension, k_n):

        self.Dimension = dimension  # dimension of vertex

        self.V = [Vertex(dimension, i)
                  for i in range(numpoints)]  # index range {0,1,2,...,V-1}

        self.num_V = numpoints
        self.num_E = 0  # number of edges in graph

        self.adj = {}  # adjacent list

        # initialize adjacent dictionary
        for i in range(self.num_V):
            self.adj[i] = []

        # if dimension = 0 -> assign weights randomly
        if self.Dimension == 0:
            for i in range(numpoints - 1):
                for j in range(i + 1, numpoints):
                    new_edge = Edge(self.V[i], self.V[j], 'random')
                    if new_edge.weight <= k_n:
                        self.adj[i].append(new_edge)
                        self.adj[j].append(new_edge)
                        self.num_E += 1

        else:
            # initialize edge for complete undirected graph
            for i in range(numpoints - 1):
                for j in range(i + 1, numpoints):
                    if Vertex.Euclidean_distance(self.V[i], self.V[j]) < k_n:
                        new_edge = Edge(self.V[i], self.V[j], 'Euclidean')
                        self.adj[i].append(new_edge)
                        self.adj[j].append(new_edge)
                        self.num_E += 1
Пример #2
0
    def __init__(self,verA,verB,weight_type):
        """generate edge from vertex A to B"""
        self.v = verA
        self.w = verB
        if weight_type == 'Euclidean':
            self.weight = Vertex.Euclidean_distance(verA,verB)
        else:
            # assign weight by choosing uniformly at random inside [0,1]

            self.weight = random.uniform(0,1)