def test_extend(self):
    node = magicgraph.WeightedNode()
    self.assertEqual(node.weights, [])

    node.extend([1, 2, 3, 4], [1., 0.5, 0.25, 0.125])

    self.assertEqual(node, [1, 2, 3, 4])
    self.assertEqual(node.weights, [1., 0.5, 0.25, 0.125])
  def test_append(self):
    node = magicgraph.WeightedNode()
    self.assertEqual(node.weights, [])

    node.append(1, 1.0)

    self.assertEqual(node, [1])
    self.assertEqual(node.weight(0), 1.0)
  def test_pop(self):
    node = magicgraph.WeightedNode()
    node.extend([1, 2, 3, 4], [1., 0.5, 0.25, 0.125])

    dst_removed, weight_removed = node.pop(2)

    self.assertEqual(dst_removed, 3)
    self.assertEqual(weight_removed, 0.25)
    self.assertEqual(node, [1, 2, 4])
    self.assertEqual(node.weights, [1., 0.5, 0.125])
  def test_choice(self):
    node = magicgraph.WeightedNode()
    node.extend([1, 2, 3, 4], [1., 0.5, 0.25, 0.125])

    rand = random.Random(0)
    times_chose = {x: 0 for x in node}
    for x in range(0, 100):
      times_chose[node.choice(rand)] += 1

    self.assertLess(times_chose[2], times_chose[1])
    self.assertLess(times_chose[3], times_chose[2])
    self.assertLess(times_chose[4], times_chose[3])
示例#5
0
 def __init__(self, init_graph = None):
     super(WeightedDiGraph, self).__init__(node_class=WeightedNode)
     self.weighted_nodes = magicgraph.WeightedNode()
     if init_graph is not None:
         for node, adj_list in init_graph.adjacency_iter():
             if hasattr(adj_list, 'weights'):
                 self[node].extend(adj_list, adj_list.weights)
             else:
                 self[node].extend(adj_list, [1. for adj_node in adj_list])
         if hasattr(init_graph, 'weighted_nodes'):
             self.weighted_nodes.extend(init_graph.nodes(), init_graph.weighted_nodes.weights)
         else:
             self.weighted_nodes.extend(init_graph.nodes(), [1. for node in init_graph.nodes()])
     self.visited = {node: False for node in self.nodes()}