#(离散化基础)知识扩展:利用离散化原理进行算法优化

(大量内容来自百度)

离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。
通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:
原数据:1,999,100000,15;处理后:1,3,4,2;
原数据:{100,200},{20,50000},{1,400};
处理后:{3,4},{2,6},{1,5};

 

离散化是程序设计中一个常用的技巧,它可以有效的降低时间复杂度。其基本思想就是在众多可能的情况中,只考虑需要用的值。离散化可以改进一个低效的算法,甚至实现根本不可能实现的算法。要掌握这个思想,必须从大量的题目中理解此方法的特点。例如,在建造线段树空间不够的情况下,可以考虑离散化。
 
 

例1

给定平面上n个点的坐标,求能够覆盖所有这些点的最小矩形面积。其中,矩形可以倾斜放置,边不必平行于 坐标轴
UVA10173 UVA10173 [2]
这里的 倾斜放置很不好处理,因为我们不知道这个矩形最终会倾斜多少度。假设我们知道这个矩形的 倾角是α,那么答案就很简单了:矩形面积最小时四条边一定都挨着某个点。也就是说,四条边的 斜率已经都知道了的话,只需要让这些边从外面不断逼近这个点集直到碰到了某个点。你不必知道这个具体应该怎么实现,只需要理解这可以通过某种方法计算出来,毕竟重点在下面的过程。
我们的算法很显然了: 枚举 矩形的倾角,对于每一个倾角,我们都能计算出最小的矩形面积,最后取一个最小值。
这个算法是否是正确的呢?我们不能说它是否正确,因为它根本不可能实现。矩形的倾角是一个 实数,它有无数种可能,你永远不可能枚举每一种情况。我们说,矩形的倾角是一个“连续的”变量,它是我们无法枚举这个倾角的根本原因。我们需要一种方法,把这个“连续的”变量变成一个一个的值,变成一个“离散的”变量。这个过程也就是所谓的离散化。
我们可以证明,最小面积的矩形不但要求四条边上都有一个点,而且还要求至少一条边上有两个或两个以上的点。试想,如果每条边上都只有一个点,则我们总可以把这个矩形旋转一点使得这个矩形变“松”,从而有余地得到更小的矩形。于是我们发现,矩形的某条边的斜率必然与某两点的连线相同。如果我们计算出了所有过两点的直线的倾角,那么α的取值只有可能是这些倾角或它减去90度后的角(直线按“\”方向倾斜时)这么C(n,2)种。我们说,这个“倾角”已经被我们“离散化”了。
 离散化链接:
https://blog.csdn.net/xiangaccepted/article/details/73276826
https://www.cnblogs.com/sun-of-Ice/p/9419857.html
实例代码:
int n, a[maxn], t[maxn]; //这里以下标1为序列的起点,一般情况下从0开始也可以 for(int i = 1;i <= n;i++) { scanf("%d", &a[i]); t[i] = a[i];//t是一个临时数组,用来得到离散化的映射关系 } //下面使用了STL中的sort(排序),unique(去重),lower_bound(查找)函数 sort(t + 1, t + n + 1);//排序 int m = unique(t + 1, t + 1 + n) - t - 1;//去重,并获得去重后的长度m for(int i = 1;i <= n;i++) { a[i] = lower_bound(t + 1, t + 1 + m, a[i]) - t;//通过二分查找,快速地把元素和映射对应起来 }

转载于:https://www.cnblogs.com/little-cute-hjr/p/11422380.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
离散行业的自动化方向(逻辑算法)系统实施与效能评估可以从以下几个方面进行考虑: 1. 系统实施:系统实施的关键是需求分析和方案设计。在需求分析阶段,需要明确系统的功能需求,包括自动化程度、控制精度、可扩展性、数据安全性等方面。在方案设计阶段,需要选择合适的逻辑算法和控制器,以及合适的传感器和执行器等硬件设备。 2. 系统效能评估:系统效能评估主要包括系统的控制精度、响应时间、可靠性等方面。可以通过实验测试来评估系统的性能,包括系统的稳定性、精度和可靠性等指标。同时,也可以通过数据分析来评估系统的效能,比如分析系统的运行数据、故障数据和维修数据等。 3. 系统优化:系统优化提高系统效能的关键。可以通过算法优化、控制器优化、传感器和执行器优化等方式来提高系统的性能。同时,也可以通过数据分析和反馈来不断优化系统的运行效果。 4. 系统维护:系统维护是保障系统长期稳定运行的关键。需要定期对系统进行维护和检修,包括对硬件设备的检查和换、对软件系统的新和升级等方面。同时,也需要建立健全的维修体系,及时对系统进行维修和保养。 综上所述,离散行业自动化方向(逻辑算法)系统的实施和效能评估需要综合考虑多个方面,包括系统实施、效能评估、系统优化和系统维护等。只有在每个方面都做好,才能保证系统的长期稳定运行和良好的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值