Professional Documents
Culture Documents
import time
import math
def generate_random_points(n):
return [(random.uniform(-10, 10), random.uniform(-10, 10)) for _ in
range(n)]
def closest_pair(points):
min_distance = float('inf')
closest_points = (None, None)
for i in range(len(points)):
for j in range(i+1, len(points)):
distance = euclidean_distance(points[i], points[j])
if distance < min_distance:
min_distance = distance
closest_points = (points[i], points[j])
def measure_time(n):
points = generate_random_points(n)
start_time = time.time()
result = closest_pair(points)
end_time = time.time()
elapsed_time = end_time - start_time
return n, result, elapsed_time
if __name__ == "__main__":
for n in [10, 100, 1000, 10000, 100000]:
print(measure_time(n))
import math
import random
mid = len(points_sorted_by_x) // 2
left_half_x = points_sorted_by_x[:mid]
right_half_x = points_sorted_by_x[mid:]
distance_right = closest_pair_recursive(right_half_x,
points_sorted_by_y)
d = min(distance_left, distance_right)
def closest_pair(points):
points_sorted_by_x = sorted(points, key=lambda p: p[0])
points_sorted_by_y = sorted(points, key=lambda p: p[1])
return closest_pair_recursive(points_sorted_by_x, points_sorted_by_y)
# Test
points = [(random.uniform(-10, 10), random.uniform(-10, 10)) for _ in
range(100)]
print(closest_pair(points))
Por lo tanto
T(n)= n log n
N Tiempo
10 0.0001
100 0.001
1000 0.02
10000 0.25
100000 3.5