zoukankan      html  css  js  c++  java
  • 2021/10/3(偏序)

    引言

    信息学竞赛中有个很经典的问题——偏序问题。

    可能很多人并没有听说过什么是偏序问题,但大多应该都听说过逆序对和最长上升子序列问题。这两个问题都是偏序问题的一种。

    先来理解下偏序关系的定义。

    定义

    偏序关系

    设R是集合A上的一个二元关系,若R满足:

    1. 自反性:对任意xA,有xRx
    2. 反对称性(即反对称关系):对任意x,yA,若xRy,且yRx,则x=y
    3. 传递性:对任意xy,zA,若xRy,且yRz,则xRz。

    则称R为A上的偏序关系,通常记作≼。

     

    这一系列数学定义可能比较难懂,但如果你把小于等于号带入这个R就容易明白了,这个定义就是诞生在小于等于号上的,当然他不仅是代表小于等于号,数学将这些概念抽象化就是为了提炼出更加普适性的概念。比如集合的包含关系也是一种偏序关系,带入这3个定义,显然都可以满足。
    同理,我们给小于号也下一个定义。它和小于等于相似但又有不同,我们称之为严格的偏序关系,相对应上面的称之为非严格的偏序关系。
     

    给定集合S,“<”是S上的二元关系,若“<”满足:

    1. 反自反性:∀a∈S,有a≮a;

    2. 非对称性:∀a,b∈S,a<b ⇒ b≮a;

    3. 传递性:∀a,b,c∈S,a<b且b<c,则a<c;

    则称“<”是S上的严格偏序或反自反偏序。

    与非严格的偏序关系不同的地方就是没有反对称性,取而代之的是非对称性。上面写的包含关系是一种偏序关系,更准确的说,包含关系是非严格的偏序关系,而真包含是严格的偏序关系。

    全序关系

    偏序和全序是公里集合论中的概念,全序关系是偏序关系的一个子集,如果是全序关系那必然是偏序关系,全序关系在全序关系上增加了一个完全性。

    设R是集合A上的一个二元关系,若R满足:
    1. R是集合A上的一个偏序关系。
    2. 完全性:对任意x∈A,y∈A,存在 (x,y)∈R或(y,x)∈R

     在实数集上的大于小于号等大小关系,更准确的说应该属于一种全序关系,因为实数集上所有的数都能比较。但如果将数域扩展到复数域,复数域中的部分数是不能比较的,所以复数域中的大于小于号等大小关系是偏序关系而不是全序关系。同样的,集合之间的包含关系也不是全序关系,因为两集合可以处于不包含也不被包含的互相独立的状态。

    正文

    偏序问题

    定序列A,其中有序对(Ai,Aj),满足 i<j 且 Ai<Aj这样的有序对我们称之为逆序对

    信息学竞赛中的逆序对问题,一般是要我们计数给出序列的逆序对个数的总和。

    其实可以把它看成一个特殊的二维偏序问题,或者说是离散化x坐标的二维偏序问题。

    我们把给定的序列A ,加上一个编号,变成一个二元组,即A1-->(A1,1) ,A2-->(A2,2) Ai-->(Ai,i)。存在两个二元组(a,b),(c,d),满足 a > c 且 b < d 的个数。我们将二元组放在一个二维空间中,二元组(x,y)表示坐标为(x,y)的点,此时我们就会发现实际上逆序对问题,就是一种二维偏序问题。

    何为二维偏序问题? 在二元组中定义一种偏序关系R,统计R集合中元素的个数。

    比如逆序对问题,定义的关系就是:两个二元组(a,b),(c,d),满足 a > c 且 b < d 。易知它满足偏序关系的3个定义,并且任意的两个二元组也不都有关系,所以就不是全序,当然由于逆序对问题一般不会出现重复的数字,所以前两个定义需要特别判断,但它可以满足最后的也是最重要的一条性质——传递性。也正是因为传递性我们才能使用各种算法来解决它们。

    在信息学竞赛中我们解决逆序对使用的是,线段树或归并排序,实际上这里的归并排序就是cdq分治,实际上都是使用的分治法。

    这两种方法本质上相同,都是通过排序解决一个维度的问题,然后再使用分治快速处理另外一个维度的问题。

    特别的最长上升子序列问题也是一种偏序问题,实际上可以转换为,给出n个元素的二元组集合S,其中有二元组(A1,1),(A2,2)...(An,n),在二元组中有关系R,定义为 二元组A (a,b)R B(c,d)当且仅当b<d 且 a<c,求集合S的一个最大子集满足,子集中的关系R为全序关系。

     

     
  • 相关阅读:
    解决vue空格换行报错问题
    基本的项目开发流程(前后端开发)
    whl包构建
    Python虚拟环境创建
    页面适配 JS
    SpringBoot整合Ehcache3
    SpringBoot文件分片上传
    SpringBoot访问jar包静态文件
    SpringBoot整合Minio文件存储
    SpringBoot多环境配置文件打包
  • 原文地址:https://www.cnblogs.com/komet/p/15365063.html
Copyright © 2011-2022 走看看