def virtual_move_to(self, path):
    'virtual_move_to simulates moving but does not change the state of the graph'
    temp_state = self.state
    temp_data = self.data
    temp_current_node = self.current_node
    temp_node_names = self.node_names
    for (index, edge) in enumerate(path):
        edge_pattern = 'edge_(?P<begin_node>\\w+)_(?P<end_node>\\w+)_(?P<iterator>\\w+)'
        match = re.match(edge_pattern, edge)
        begin_node = match.groupdict()['begin_node']
        end_node = match.groupdict()['end_node']
        temp_data = self.__dict__[edge](temp_data)
        temp_current_node = match.groupdict()['end_node']
        temp_state = [0 for i in range(len(temp_node_names))]
        position = temp_node_names.index(temp_current_node)
        temp_state[position] = 1
virtual_move_to simulates moving but does not change the state of the graph
def virtual_move_to(self, path):
    
    temp_state = self.state
    temp_data = self.data
    temp_current_node = self.current_node
    temp_node_names = self.node_names
    for (index, edge) in enumerate(path):
        edge_pattern = 'edge_(?P<begin_node>\\w+)_(?P<end_node>\\w+)_(?P<iterator>\\w+)'
        match = re.match(edge_pattern, edge)
        begin_node = match.groupdict()['begin_node']
        end_node = match.groupdict()['end_node']
        temp_data = self.__dict__[edge](temp_data)
        temp_current_node = match.groupdict()['end_node']
        temp_state = [0 for i in range(len(temp_node_names))]
        position = temp_node_names.index(temp_current_node)
        temp_state[position] = 1