`
zh_harry
  • 浏览: 102522 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
877aca81-daac-33c8-8bf9-3a886cebc6c3
自己动手写java 框架
浏览量:28431
社区版块
存档分类
最新评论

Sparrow 算法篇 由日期取交集到思维模式

    博客分类:
  • JAVA
阅读更多

日期交集

早在13年左右的时侯,做过一个系统,功能很简单,做一个日程管理功能,这里边涉及到一个小知识点,就是日期取交集。今天跟大家分享的是从这个点展开的,时间段取交集的话题。

业务逻辑

逻辑很简单,就是一两个日期段取交集,可如果按正常思维去实现,其实日期交集的场景我们可以穷举出来,大概有4种情况

    s1--------------e1
        s2-----------------e2
        s1--------------e1
    s2-----------e2
        
    s1-----------------e1
        s2-------e2
         s1-------e1
    s2-----------------------e2

如果按这种逻辑实现我们的表达式可能至少要写4种,逻辑复杂,且可读性差

逆向思维

这是软件开发中非常重要的思维模式,在程序员数学中有重点介绍。 这里提到的程序员数学,是一套书,包括程序学基础数学,概率论和线性代码,同时也是进入机器学习的基础理论,有兴趣的朋友可以买回来读一读。 我们通过个例子,来实践一下逆向思维。 其实如果按交集的逻辑来看,上面穷举出来有4 种情况。 但我们反过来想 没有交集的情况只有两种可能

                s1-------------e1
    s2------e2
    s1------e1
                s2--------------e2

我们设 两个时间段的日期为s1(start)-e1(end) 和s2-e2 通过逆向推导可以推出出列表达式

这里我们假定

s1<e1 & s2<e2

=>

e2<s1||e1<s2

说明满足该条件是不可能产生交集 上述表达式翻译成业务语言即

第一个时间段已经结束,第二个时间段还没未开始

通过对表达式取非即所有存在交集的情况

!(e2<s1||e1<s2)

=>

e2>=s1&&e1>=s2

这个就可以做为时间取交集的最终表达式

这里有一点非常重要,这个时间段我们有条件的

s1<e1 & s2<e2

这是表达式成立的充分条件

问题

这里我们只是把时间交集的表达式推导出来,我们把该命题扩展一下,目前我们只是取两个时间段的交集,如果取n个时间段的交集呢?

      ---------   ---------------
   ---------    ---   ---
      -------------   -------
    ------     -----------
       ---------    ------------
  • 这样的时间段有成百上千条该如何处理?
  • 如果我们需要根据具有日期交集的时间段分组呢?
  • 如果我们的业务不是日期,而是其他数据类型呢?如何抽象出计算模型?非日期型数据也可以进行分组?

请关注下一篇博客

1
0
分享到:
评论

相关推荐

    麻雀搜索算法(Sparrow Search Algorithm,python简洁明了,含详细解释)

    麻雀搜索算法(Sparrow Search Algorithm,SSA)是一种基于生物行为的优化算法,源自于麻雀在寻找食物过程中的行为模式。该算法在解决复杂优化问题时表现出优秀的性能,尤其是在工程应用和多模态优化问题上。SSA的...

    麻雀算法优化Sparrow-Search-Algorithm-Matlab-main.zip

    麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种基于生物行为的优化算法,灵感来源于麻雀群体的行为特征,如觅食、避险和集体防御等。这种算法在解决复杂优化问题时展现出强大的能力,特别是在工程领域和数据...

    麻雀搜索算法(Sparrow Search Algorithm,python)(简洁明了,含详细解释)

    麻雀搜索算法(Sparrow Search Algorithm,SSA)是一种新兴的优化算法,灵感来源于麻雀群体的行为。这种算法在解决复杂优化问题时表现出色,尤其适用于全局优化和多模态函数。Python作为一门广泛应用于科学计算和...

    麻雀搜索算法(Sparrow Search Algorithm , SSA)的python实现_python_代码_下载

    麻雀搜索算法(Sparrow Search Algorithm,SSA)是一种基于生物行为的全局优化方法,由研究人员在2020年提出。该算法模仿了麻雀群体的行为模式,包括觅食策略和对抗捕食者的防御机制,以解决复杂的优化问题。在实际...

    SPARROW

    标题“SPARROW”可能指的是一个特定的字体或者与之相关的设计项目,但提供的信息过于简洁,无法直接确定其具体含义。不过,我们可以基于“字体”这个标签来深入探讨字体设计、字体类型以及它们在IT领域的应用。 ...

    进销存管理程序 Sparrow

    1. 成本效益:相比传统的手工管理方式,Sparrow能显著降低人力成本,提高工作效率。 2. 可扩展性:随着企业的发展,Sparrow可以轻松扩展功能,适应企业的变化。 3. 数据安全性:采用先进的数据加密技术,保护企业...

    Sparrow-Framework官网源代码

    Sparrow-Framework,作为一个知名的iOS游戏开发框架,由Gamua公司创建,后来被Google以2500万美元的价格收购,其重要性和价值可见一斑。这款框架以其高效、易用的特点,深受开发者喜爱,尤其在移动游戏开发领域有着...

    Sparrow Search algorithm (SSA).zip

    在19个基准函数上进行了实验,测试了SSA算法的性能,并与其他算法如灰狼优化算法(GWO)、引力搜索算法(GSA)和粒子群优化算法(PSO)进行了比较。仿真结果表明,该算法在精度、收敛速度、稳定性和鲁棒性等方面优于...

    麻雀_sparrowsearch_麻雀优化_麻雀优化算法_麻雀算法matlab_麻雀搜索

    麻雀搜索算法(Sparrow Search Algorithm,SSA)在解决工程中的优化问题时表现出高效性和鲁棒性。 麻雀优化算法的核心在于其群体行为模型。在麻雀群体中,个体麻雀的行为可以分为两种主要模式:觅食和防御。觅食...

    麻雀搜索算法(SSA)可以很好对算法进行解读

    麻雀搜索算法(Sparrow Search Algorithm,SSA)是一种基于生物行为的优化算法,源自对麻雀群体觅食行为的模拟。麻雀在寻找食物的过程中展现出的智能和协作特性,为解决复杂优化问题提供了灵感。SSA的核心在于其动态...

    SSA_麻雀算法_麻雀搜索算法_SSA_麻雀_麻雀寻优算法_

    麻雀搜索算法(Sparrow Search Algorithm,简称SSA)是一种新型的优化算法,灵感来源于麻雀群体的行为特征。在自然界中,麻雀以其灵活、快速的反应和集体协作的能力而闻名,这些特性被巧妙地融入到算法设计中,使其...

    麻雀搜索算法优化支持向量机python

    麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新兴的优化算法,灵感来源于麻雀群体的行为模式。这种算法模拟了麻雀在觅食过程中的搜索、分享信息和逃避捕食者的行为,从而在全球搜索空间中寻找最优解。麻雀...

    Python 麻雀搜索算法(SSA)优化函数示例代码 matplotlib可视化收敛曲线

    麻雀搜索算法(Sparrow Search Algorithm,SSA)是一种受到自然界麻雀觅食行为启发的优化算法。该算法模拟了麻雀在觅食过程中的策略,通过在解空间中寻找最优解来解决优化问题。SSA算法的设计灵感来源于麻雀的觅食...

    iOS游戏引擎 Sparrow Framework.zip

    iOS游戏引擎 Sparrow Framework ,Sparrow是一个基于Objective-C的开源的游戏引擎,完全为iOS设备构建。该项目可以让开...

    【优化算法】多目标麻雀搜索优化算法(MSSA)【含Matlab源码 1366期】.zip

    多目标麻雀搜索优化算法(MSSA,Multiple Objective Sparrow Search Algorithm)是一种现代的优化技术,灵感来源于麻雀群体的行为。在自然界中,麻雀群体具有高度的智慧和协作能力,这种特性被巧妙地应用到解决复杂...

    麻雀优化算法及其对应原文

    麻雀优化算法(Sparrow Search Algorithm,SSA)是一种新兴的智能优化算法,源于对麻雀群体行为的模拟。麻雀,作为一种小型鸟类,以其独特的觅食和防御策略展示了群体智慧,这为解决复杂优化问题提供了灵感。该算法...

    前端基础库Sparrow.js.zip

    Sparrow.js是一个短小精悍的前端基础库,它包含对DOM、CSS基本操作、多平台浏览器移动设备判断、Cookies操作、事件的绑定、日期、数字、字符串相关判断、以及浏览器自身函数不足所扩展的一系列功能。开发技术说明...

    麻雀搜算算法(SSA)优化核极限学习机(KELM)分类MATLAB程序

    麻雀搜索算法( sparrow search algorithm, SSA)在2020年,是受麻雀觅食行为和反捕食行为启发而由Xue等[提出的一种新型群体智能优化算法。搜索过程可抽象为发现者-加入者-警戒者模型。发现者拥有更广阔的搜索范围,...

    基于麻雀搜索算法整定PID参数

    标题中的“基于麻雀搜索算法整定PID参数”是指利用麻雀搜索算法(Sparrow Search Algorithm, SSA)来优化PID控制器的参数设定。PID(比例-积分-微分)控制器是工业自动化中最常见的控制策略,它通过调整P、I、D三个...

    Sparrow是一款针对移动webapp开发的前端轻量级框架

    在压缩包文件"sparrow-master"中,我们可以预见到包含以下内容:源代码文件(如JavaScript、CSS和HTML),可能的示例项目或者文档,以及可能的构建脚本和配置文件。通过这些文件,开发者可以深入了解Sparrow的架构和...

Global site tag (gtag.js) - Google Analytics