请教一个算法!

idAnts 2002-03-20 08:50:58
要求是这样的:在一个四边形内,给n个点(比如4),这些点分布在四边形的边上,要求所有点之间连线后使得将四边形切割的块最多。(比如4个点就每条边上放一点,将四边型切成8块最多)
...全文
50 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mathe 2002-03-23
  • 打赏
  • 举报
回复
只要证明在每一次添加新点时,可以在指定边上找到一个点,使新点添加的线不会经过已经存在的交点就行了。
这很简单。所有已经添加到边上的点和四边形内部已经出现的交点(都是有限个点)的两两连线同四条边的交点总共是有限个,所以只要新取的点不是那些交点,那么它同其它边上的点的连线就不会经过已经存在的交点了(当然可以选择的方案也是无穷的),其实这个命题也说明了,只要每一次你在边上选择的点不要太特殊了(最好是随机选择),那么就不会出现三线共点的情况。而在计算机上实际计算中如果出现了三线共点,那也只是计算的舍入误差引起。
wkoji 2002-03-23
  • 打赏
  • 举报
回复
这个算法好象都是在用数学归纳法证明,
还有其他的方法吗?
bjay 2002-03-21
  • 打赏
  • 举报
回复
是不是每边为n/4个点如果有剩余再分在各边上,反正每条边上的点个数之差不大于1。

没有细想:-)
bjay 2002-03-21
  • 打赏
  • 举报
回复
不好!!!乱套了!!!
一个矩形被两条中线分成四个区,1为左上,2为右上,3为右下。
bjay 2002-03-21
  • 打赏
  • 举报
回复
对于你的这个问题我也有一个简单方法,就是限定增加点的方法
|--------|
|1 | 2 |
|-------|-------|
| | 3 |
|---------------|

上图只是个示意图。在1的左边,2的上边和右边,3的下边增加点就应该没问题了。
idAnts 2002-03-21
  • 打赏
  • 举报
回复
谢谢你的回答!
但是现在有一个问题,就是说新增加的这个点,由于其在边线上的位置选择不当,和已经存在的某点连线的时候,这条线有可能会在四边形内经过已经存在的某两条连线的交点。这样的话,就导致了对四边形切割的块数少了。
这怎么办?就是说如何确定点在线上的位置?



再次感谢你的回答!过段时间加分。
bjay 2002-03-21
  • 打赏
  • 举报
回复
我想我的答案是正确的。大概的证明如下(数学归纳法)
1、当k=2时,只要这两点不在同一边上都是分四边形为2个结论成立。
2、假设k<n时结论成立。
3、当k=n时,
  A、n%4=1时,增加的这个点只要不在顶点随意在哪都一样。
  B、n%4=2时,增加的这个点不能和上一个增加的点在同一边上。
  C、n%4=3时,增加的这个点只要不破坏规则,就能保证增加的线(除了和边重合)最多。
  D、同理。
综上所述,结论成立。

这里最大特点是增加的一个点要保证增加的线(除了和边重合)最多。
idAnts 2002-03-21
  • 打赏
  • 举报
回复
不不不,每边的点是不限的。

33,010

社区成员

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

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