分治法求一个平面点集里的最大点

GmAmeise 2010-05-20 04:46:05
题目如上,比如一个点P1(x1,y1),P2(x2.y2)必须满足x1>x2&&y1>y2才能说P1是最大点,要求必须用分治法,高手给个稍微详细的伪代码就好了!大家谁会的帮个忙!嘿嘿!
...全文
247 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
GmAmeise 2010-05-20
  • 打赏
  • 举报
回复
结贴了。呵呵!新手新手,大家见谅!规则环视不太清楚,多谢各位热心解答!
GmAmeise 2010-05-20
  • 打赏
  • 举报
回复
呵呵!mysword 和 technic_tec理解对了,万分感谢!实在不好意思,这怪我,没弄明白就跑上来问.今天专门去问导师了,是我理解错了,原意就是求极大点集。。汗死了!以后问问题前我会注意的!感谢所有回答我问题的各位,第一次得到这么理想的答案!
icansaymyabc 2010-05-20
  • 打赏
  • 举报
回复
还不简单吗?按照你的“最大点”定义,分别求出 x 中的最大值 Xmax 和 y 中的 Ymax (这就算“分治法”了吧?)然后看看 P(Xmax, Ymax) 这个点是否存在, 存在就找到了最大点,不存在就说明没有最大点


再不改善你的结贴率,可能就没人回答你的问题了
technic_tec 2010-05-20
  • 打赏
  • 举报
回复
求极大点集,也可以不用对x排序,只需要保持每一步返回的结果有序。

Maximal_Points(points)
1. 如果只有一个点,则返回这个点
2. 将所有点分为两半A和B,递归处理A和B,分别得到部分结果Ra和Rb
3. 将Ra,Rb中的点依次加入结果点集R:
a)若Ra,Rb的第一个点的x坐标相同,取y较大的为P,y较小的从部分集中删除;
b)若Ra,Rb的第一个点的x坐标不同,取x较小的为P;
c)若Ra,Rb之一为空,取非空集的第一个点为P
d)从R中删除y坐标不大于P的点,将P从部分集中删除,并添加到R的末尾。

这个算法实际上是对x坐标作归并排序,同时删除非极大点,保持R对x的严格升序和对y的严格降序。

第三步合并算法,每个点最多被添加到R和从R中删除各1次,复杂度O(N);
因此整个算法复杂度与归并排序相同,O(NlogN)

要求最大点,若以上算法求出的极大点集仅含一个点,则这个点就是最大点;否则无最大点。

PS. 纠结于楼主结帖率的诸位,请先看一看详情(将鼠标移到结帖率数字上查看)。
michael122 2010-05-20
  • 打赏
  • 举报
回复
ls说的不错,你定义的最大点可能不存在
充其量叫“极大点”
gnefuil 2010-05-20
  • 打赏
  • 举报
回复
求极大点集吧?
按x排序,前一半的点和后一半的点分治处理,然后把前一半点分治处理的结果中 y值小于后一半点分治处理结果中的最大y 的点去掉
heartraid86 2010-05-20
  • 打赏
  • 举报
回复
绝对题目有问题,平面点集里面如果出现了P1(X1,Y1), P3(X3,Y3) 满足X1>X3 && Y1<Y3, 那么P1和P3到底谁大。如果平面点集中有些点不能相互比较,那么如何能够求出最大点??? 不理解?

哥,看到你的结贴率,俺心寒。
heartraid86 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gmameise 的回复:]

额,主要题目是德文的,估计我翻译有误。哎,,德语太烂了。这个问题先放下吧!还有个问题1楼的同学,什么是结贴率啊?
[/Quote]

如果你发布了10个帖子,但一个都没有结贴给分,那么结贴率就是0% 。
donkey301 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gmameise 的回复:]

额,主要题目是德文的,估计我翻译有误。哎,,德语太烂了。这个问题先放下吧!还有个问题1楼的同学,什么是结贴率啊?
[/Quote]
是不是先比较x,如果x相同再比较y
GmAmeise 2010-05-20
  • 打赏
  • 举报
回复
额,主要题目是德文的,估计我翻译有误。哎,,德语太烂了。这个问题先放下吧!还有个问题1楼的同学,什么是结贴率啊?

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧