问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

离散化的举例解释

发布网友 发布时间:2022-05-01 02:57

我来回答

1个回答

热心网友 时间:2022-06-22 23:19

如果说OIBH问得最多的问题是二分图,那么“现在”问得最多的算是离散化了。对于“什么是离散化”,搜索帖子你会发现有各种说法,比如“排序后处理”、“对坐标的近似处理”等等。哪个是对的呢?哪个都对。关键在于,这需要一些例子和不少的讲解才能完全解释清楚 。
离散化是程序设计中一个非常常用的技巧,它可以有效的降低时间和空间复杂度。其基本思想就是在众多可能的情况中“只考虑我需要用的值”。下面我将用三个例子说明,如何运用离散化改进一个低效的,甚至根本不可能实现的算法。
《算法艺术与信息学竞赛》中的计算几何部分,黄亮举了一个经典的例子,我认为很适合用来介绍离散化思想。这个问题是UVA10173题目意思很简单,给定平面上n个点的坐标,求能够覆盖所有这些点的最小矩形面积。这个问题难就难在,这个矩形可以倾斜放置(边不必平行于坐标轴)。
这里的倾斜放置很不好处理,因为我们不知道这个矩形最终会倾斜多少度。假设我们知道这个矩形的倾角是α,那么答案就很简单了:矩形面积最小时四条边一定都挨着某个点。也就是说,四条边的斜率已经都知道了的话,只需要让这些边从外面不断*近这个点集直到碰到了某个点。你不必知道这个具体应该怎么实现,只需要理解这可以通过某种方法计算出来,毕竟我们的重点在下面的过程。
我们的算法很显然了:枚举矩形的倾角,对于每一个倾角,我们都能计算出最小的矩形面积,最后取一个最小值。
这个算法是否是正确的呢?我们不能说它是否正确,因为它根本不可能实现。矩形的倾角是一个实数,它有无数种可能,你永远不可能枚举每一种情况。我们说,矩形的倾角是一个“连续的”变量,它是我们无法枚举这个倾角的根本原因。我们需要一种方法,把这个“连续的”变量变成一个一个的值,变成一个“离散的”变量。这个过程也就是所谓的离散化。
我们可以证明,最小面积的矩形不但要求四条边上都有一个点,而且还要求至少一条边上有两个或两个以上的点。试想,如果每条边上都只有一个点,则我们总可以把这个矩形旋转一点使得这个矩形变“松”,从而有余地得到更小的矩形。于是我们发现,矩形的某条边的斜率必然与某两点的连线相同。如果我们计算出了所有过两点的直线的倾角,那么α的取值只有可能是这些倾角或它减去90度后的角(直线按“\”方向倾斜时)这么C(n,2)种。我们说,这个“倾角”已经被我们“离散化”了。虽然这个算法仍然有优化的余地,但此时我们已经达到了本文开头所说的目的。
对于某些坐标虽然已经是整数(已经是离散的了)但范围极大的问题,我们也可以用离散化的思想缩小这个规模。搞模拟赛Vijos似乎火了一把,我就拿两道Vijos的题开刀。
VOJ1056 永远是离散化的经典问题。大意是给定平面上的n个矩形(坐标为整数,矩形与矩形之间可能有重叠的部分),求其覆盖的总面积。平常的想法就是开一个与二维坐标规模相当的二维Boolean数组模拟矩形的“覆盖”(把矩形所在的位置填上True)。可惜这个想法在这里有些问题,因为这个题目中坐标范围相当大(坐标范围为-10^8到10^8之间的整数)。但我们发现,矩形的数量n<=100远远小于坐标范围。每个矩形会在横纵坐标上各“使用”两个值,100个矩形的坐标也不过用了-10^8到10^8之间的200个值。也就是说,实际有用的值其实只有这么几个。这些值将作为新的坐标值重新划分整个平面,省去中间的若干坐标值没有影响。我们可以将坐标范围“离散化”到1到200之间的数,于是一个200*200的二维数组就足够了。实现方法正如本文开头所说的“排序后处理”。对横坐标(或纵坐标)进行一次排序并映射为1到2n的整数,同时记录新坐标的每两个相邻坐标之间在离散化前实际的距离是多少。这道题同样有优化的余地。
最后简单讲一下计算几何以外的一个运用实例(实质仍然是坐标的离散)。VOJ1238 中,标程开了一个与时间范围一样大的数组来储存时间段的位置。这种方法在空间上来看十分危险。一旦时间取值范围再大一点,盲目的空间开销将导致Memory Limit Exceeded。我们完全可以采用离散化避免这种情况。我们对所有给出的时间坐标进行一次排序,然后同样用时间段的开始点和结束点来计算每个时刻的游戏数,只是一次性加的经验值数将乘以排序后这两个相邻时间点的实际差。这样,一个1..n的数组就足够了。
离散化的应用相当广泛,以后你会看到还有很多其它的用途。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
qq农场七夕情人节活动礼包怎么 天津金钟大街麦当劳鸡腿吃完拉肚子怎么办? 昨晚吃了一个放了一下午的鸡腿,四点过就拉肚子了。全部便的水,上午又... 手机对手机怎么发信息 没有手机在网上能给手机发短信吗? 大理石如何做结晶 如何做大理石结晶 【大理石结晶】大理石结晶工艺流程是什么 大理石结晶粉的作用 韭菜割了为什么会长 司法考试 刑法 请问间接正犯之间成立共犯吗?还是只有一方适用共犯关系... nova5pro尾插怎么换 芭斯罗缤的冰淇淋多少钱一个?还有芭斯罗缤冰淇淋的种类有多少?EXO-M吃的是什么口味的? 芭斯罗缤的价格是多少?贵吗? 芭斯罗缤和DQ哪个好吃?哪个划算一些?有木有美食达人记得50块大概分别能买到什么样的冰激凌~3Q! 华为手机怎样修改解锁密码 安卓手机如何下载BT文件(有种子)? 有什么手机软件可以下载bt种子,不要迅雷和百度云,而且是手机软件? 那些手机软件可以下BT文件 三甲医院的标准 民营医院增设口腔科有什么条件 二级医院设置皮肤科和口腔科的验收标准? 二级口腔医院基本标准 为什么QQ添加好友时没反应 请问考资料员需要什么条件? 开牙科需要什么手续和器材? 基本医保口腔诊疗项目有哪些?收费标准是多少? QQ加人加不进是怎么回事? 我的QQ加人加不上 了? 二级口腔门诊部基本标准有哪些? uc有深色模式吗? nova5pro换后盖多少钱? 煤层底板突水危险性评价的BN 建模 煤层顶板突水危险性评价的BN 建模 除了哈根达斯外,还有什么知名品牌的冰激淋 “连续变量离散化,为了分析方便有时又将离散变量视为连续”这是动态规划里面的一句话如何去理解,比如? 芭斯罗缤 赛特奥莱店怎么样 阐述ID3算法处理连续型变量必须离散化的原因? MATLAB中怎样把连续曲线(连续函数)离散化成点 iPhone6怎么删除通讯录重复联系人 请问威海有BR(芭斯罗缤)冰激凌吗 两年前好像见过 现在不知哪里去了 谢谢 你好,请教一个问题:已知连续型随机变量X的概率密度函数,现将X离散化为Xi,则P(X=Xi)怎么求啊 如何在iphone中批量删除通讯录 数学建模之连续模型与离散模型有什么区别 哈根达斯和芭斯罗缤冰激凌蛋糕哪家好吃 iphone手机通讯录怎么删除联系人 如何将离散的序列映射到连续的序列 python 英语作文:珍惜眼睛 保护视力对中学生很重要 如何保护视力英语作文 方差分析需要将数据离散化吗 如何保护视力的英语作文。急用。