实验一:分治算法
-
实验目的
1、掌握分治算法的设计思想与方法,
2、熟练使用高级编程语言实现分治算法,
3、通过对比简单算法以及不同的分治求解思想,理解算法复杂度。 -
实验学时
4 学时。 -
实验问题
求解凸包问题:输入是平面上 n 个点的集合 Q,凸包问题是要输出一个 Q 的凸包。其中,Q 的凸包是一个凸多边形 P,Q 中的点或者在 P 上或者在 P 中。(详情请见课件)。
首先,实现点类并覆写方法,作为实验的基本支持工具。代表一个具有x和y坐标的二维点。 属性: x (int): 点的x坐标。 y (int): 点的y坐标。 方法: __init__(self, x, y): 使用给定的x和y坐标初始化Point对象。 __str__(self): 返回点的字符串表示形式,形如'(x, y)'。 __hash__(self): 根据点的坐标计算哈希值。 __lt__(self, other): 根据x坐标比较两个点的大小。X相同时,比较y。 __eq__(self, other): 根据它们的x和y坐标比较两个点是否相等。 __sub__(self, other): 计算两个点之间的欧氏距离。 """ class point: x, y = 0, 0 def __init__(self, x, y): self.x, self.y = x, y def __str__(self): return '(' + str(self.x) + ',' + str(self.y) + ')' def __hash__(self): return int(str(self.x) + str(self.y)) def __lt__(self, other): return self.y < other.y if self.x == other.x else self.x < other.x def __eq__(self, other): return self.x == other.x and self.y == other.y def