- 请参考教材98页,算法6.6,先来个常规算法,复杂度为n的平方,结合Python的优势,代码整短点,顺便绘制下图形,算法思路简单,不多说了,注意陷阱。
- 上代码了:
#coding=utf-8
import math
import matplotlib.pyplot as plt
def closestpair_simple(X, n):
#对于n个数据点,计算n(n-1)/2个数就可以了
dist = [[distance(X[i], X[j]), i, j] for i in range(len(X)) for j in range(i+1,len(X))]
return min(dist)[0], [min(dist)[1], min(dist)[2]]
def distance(a, b):
return math.sqrt(math.pow(a[0]-b[0], 2)+math.pow(a[1]-b[1], 2))
if __name__ == "__main__":
points = [(2,3), (10, 1), (3, 25), (23,15), (18,3), (8,9), (12,30), (25,30), (9,2),
(13,10), (3,4), (5,6), (22,32), (5,32), (23,9), (19,25), (14,1), (11,25), (26,26),
(12,9), (18,9), (27,13), (32,13)]
print (closestpair_simple(points, len(points)))
#绘制这些点
x = [points[i][0] for i in range(len(points)) ]
y = [points[j][1] for j in r
今天的文章空间最小长度_python训练题[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/84765.html