当前位置: 首页 > news >正文

最小链覆盖 - Dilworth 定理 小记

最小链覆盖 - Dilworth 定理 小记

内容 & 证明

Dilworth定理,一言以蔽之,偏序集能划分成的最少的全序集个数等于最大反链的元素个数。——litble。

即最小链覆盖数等于最长反链的长度。

例子:求一个序列最少划分成多少个最长不下降子序列,等价于求序列的最长下降子序列长度。

不严谨证明(仅讨论二维偏序):

假设最小链覆盖等于 \(N\),最大反链等于 \(M\)

证明 \(N\ge M\):最大反链中任意两个点都是不可比的,因此反链上每个点都各属于不同的链覆盖中,则 \(N\ge M\)

证明 \(N\le M\):求出每个点开始的最长反链长度 \(f(x)\),我们按 \(f(x)\) 相同的点分层。可以知道同一层的任意两个点都是可比的,不然如果存在同一层两个点 \(x,y\) 不可比,则 \(f(x)\gets f(y)+1\),则与同一层矛盾。于是,同一层的点可以划分为一个链覆盖, 于是 \(N\le M\)

例题 1:P3974 [TJOI2015] 组合数学 - 洛谷

网格图路径可以看做选一条不上升子序列,要求选出最少的不上升子序列使得覆盖所有点。

利用 Dilworth 定理转化为求最长上升子序列。

例题 2:P14394 [JOISC 2016] 俄罗斯套娃 / Matryoshka - 洛谷

开始读错题了,始终不会算,注意:

其中所有底面直径不小于 A cm 且高度不超过 B cm 的套娃将提前交付。

所以每次加入一层 \(y\),然后用树状数组维护每个点开始的 LDS 即可。

例题 3:P10938 Vani和Cl2捉迷藏 - 洛谷

题目即要求最长反链,转化为求最小链覆盖(注意这里的链是一个点集而不是路径)。

用 Floyd 跑一次传递闭包转化为最小路径覆盖。

至于最小路径覆盖就是考虑 \(u\to v\) 化成二分图上的左部点 \(u\) 向右部点 \(v\) 连一条边,一开始每个点单独成路径,每次二分图上匹配一条边就表示两点所在路径首尾相连,于是最小路径覆盖就等于点数减去最大匹配

http://www.gsyq.cn/news/63316.html

相关文章:

  • 有种人
  • re笔记3
  • [题解]2024CCPC郑州站——Z-order Curve
  • 关于字符串的小记
  • 机器人设备端AI技术实现突破
  • 251127今天是学习的一天
  • 金融科技中网络安全的关键作用
  • 否定之否定的辩证法,谁会不承认?但又有多少人说的透?
  • Windows Update - Part 5: Timeline [discarded draft]
  • 工业4.0新范式:MCP服务器如何重构智能制造数据流 - 详解
  • MySQL性能分析(六)之PS监控SQL性能
  • Go语言设计模式:适配器模式详解 - 实践
  • 【第一周:Python 测试开发核心错题集 避坑指南】
  • 20251127周四日记
  • 题解:P13266 [GCJ 2014 Finals] Symmetric Trees
  • python---深拷贝浅拷贝
  • Codeforces Round 1066 (Div. 1 + Div. 2) 比赛总结
  • 解决VirtualBox - Error In supR3HardenedWinReSpawn报错
  • 1127随笔
  • gradle的各个环境依赖jar包的同一个版本导致的严重后果
  • 20251127
  • Day26字体图标--上传矢量图
  • 【机器学习】突破分类瓶颈:用逻辑回归与Softmax回归解锁多分类世界 - 指南
  • 双特异性抗体:抗癌 “双面手”,两种模式精准杀伤癌细胞
  • 2025.11.27
  • windows和linux下jar包graalvm打包生native程序 - yebinghuai-qq
  • P31_完整的模型验证套路
  • 赋能第一期 新员工角色转换主题培训
  • DS优化建图
  • 深入解析:Leetcode 43