Remove duplicates in an efficient way
This commit is contained in:
		
							parent
							
								
									75c3a94fbe
								
							
						
					
					
						commit
						bf7ca7f520
					
				@ -39,6 +39,13 @@ def explore_solutions(solutions, data):
 | 
				
			|||||||
    return closest_elements.iloc[furthest_index]
 | 
					    return closest_elements.iloc[furthest_index]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def remove_duplicates(current, previous, data):
 | 
				
			||||||
 | 
					    data = data.query(
 | 
				
			||||||
 | 
					        f"(source != {current} or destination not in @previous) and (source not in @previous or destination != {current})"
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    return data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def greedy_algorithm(n, m, data):
 | 
					def greedy_algorithm(n, m, data):
 | 
				
			||||||
    solutions = DataFrame(columns=["point", "distance"])
 | 
					    solutions = DataFrame(columns=["point", "distance"])
 | 
				
			||||||
    first_solution = get_first_solution(n, data)
 | 
					    first_solution = get_first_solution(n, data)
 | 
				
			||||||
@ -46,6 +53,9 @@ def greedy_algorithm(n, m, data):
 | 
				
			|||||||
    for _ in range(m):
 | 
					    for _ in range(m):
 | 
				
			||||||
        element = explore_solutions(solutions, data)
 | 
					        element = explore_solutions(solutions, data)
 | 
				
			||||||
        solutions = solutions.append(element)
 | 
					        solutions = solutions.append(element)
 | 
				
			||||||
 | 
					        data = remove_duplicates(
 | 
				
			||||||
 | 
					            current=element["point"], previous=solutions["point"], data=data
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
    return solutions
 | 
					    return solutions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user