def color_graph(self): """ Metoda kolorujaca graf. """ # 1 - pokolorowanie grafu na kolejne kolory assignSeqColors(self.sim_nodes) # 1.5 - root koloruje sie na 0 root_node = self.sim_nodes[0] root_node.memory['color'] = 0 root_vertex = self.graph.vertex(0) # 2 - 6 rund: for counter in range(self.rounds_count): # 3 - przechodzenie po kazdym wezle z sim_nodes for sim_nd in self.sim_nodes: # 4 - odbieranie wiadomosci przychodzacych assert len(sim_nd.inbox) <= 1 # node moze nie dostac wiadomosci wcale albo dostac tylko jedna if sim_nd.inbox: msg = sim_nd.inbox.pop(0) self._process_message(sim_nd, msg) # 5 - dodaj odpowiednie komunikaty do swojej skrzynki nadawczej self._update_outbox(sim_nd) # faktyczne wysylanie informacji for sim_nd in self.sim_nodes: sim_nd.process_outbox()
def test_shift_down_v2(self): # konstrukcja grafu g = Graph(directed=False) sim_nodes = [] # 1 - dodanie pierwszego wierzcholka do grafu root_vertex = g.add_vertex() root_node = Node(root_vertex, sim_nodes) root_node.memory['parent_id'] = 0 sim_nodes.append(root_node) # root -> v1 # v1 -> v2 # v1 -> v3 v1 = g.add_vertex() v1_node = Node(v1, sim_nodes) v1_node.memory['parent_id'] = 0 sim_nodes.append(v1_node) g.add_edge(root_vertex, v1) v2 = g.add_vertex() v2_node = Node(v2, sim_nodes) v2_node.memory['parent_id'] = 1 sim_nodes.append(v2_node) g.add_edge(v2, v1) v3 = g.add_vertex() v3_node = Node(v3, sim_nodes) v3_node.memory['parent_id'] = 1 sim_nodes.append(v3_node) g.add_edge(v3, v1) assignSeqColors(sim_nodes) # kolory odpowiadaja numerom krawedzi six2three_instance = Six2three(g, sim_nodes) six2three_instance._shift_down_v2(0) self.failUnless(v1_node.memory['color'] == 0) self.failUnless(v2_node.memory['color'] == 1) self.failUnless(v3_node.memory['color'] == 1)