定义

  子模 (Submodular)、超模 (Supermodular)和模(Modular)函数是组合优化中用到的集合函数概念。函数定义域为某个有限集$\Omega$的幂集$2^\Omega$,值域通常为$R$,即$f:2^\Omega\to R$。

  子模函数:对于集合$A\subseteq B\subset \Omega$,元素$e\in \Omega-B$,子模函数$f(X)$满足

$f(A\cup\{e\})-f(A)\geq f(B\cup\{e\})-f(B)$

  直观上看,随着集合$X$元素的增加,在新增某个元素时$f(X)$值的变化量不变或降低。或者说函数$f(X)$的边际效应逐渐降低。需要注意的是,子模函数并没有限制$f(A\cup\{e\})\geq f(A)$,因此元素的加入既有可能使$f(X)$变大,也有可能使其变小。

  超模函数:对于集合$A\subseteq B\subset \Omega$,元素$e\in \Omega-B$,超模函数$f(X)$满足

$f(A\cup\{e\})-f(A)\leq f(B\cup\{e\})-f(B)$

  直观上看,随着集合$X$元素的增加,在新增某个元素时$f(X)$值的变化量不变或增加。或者说函数$f(X)$的边际效应逐渐增加。此外,对于超模函数$f(X)$,可以证明$-f(X)$为子模函数。

  模函数:对于集合$A\subseteq B\subset \Omega$,元素$e\in \Omega-B$,模函数$f(X)$满足

$f(A\cup\{e\})-f(A)=f(B\cup\{e\})-f(B)$

  直观上看,在集合$X$加入元素时,$f(X)$值的变化量与集合中原有的元素无关,而仅与新加入的元素相关,从而有上面的等号。根据定义可以看出,模函数既是超模函数,又是子模函数。

应用

  使用规则集举个例子,规则集$S\subseteq \Omega$中包含一系列的规则$R_i$,即$S=\{R_i\}_{i=1}^m, R_i\in \Omega$。每个规则都可以判断样本$x$是否满足该规则,如果规则集中有一个规则满足该样本,则说该规则集满足该样本。对于包含$n$个样本的数据集$X=\{x_i\}_{i=1}^n$,定义$X_{S}$为满足规则集$S$的样本的集合。

  则我们可以发现子模函数

$\displaystyle f(S)=|X_S|$

  这是因为,当我们不断向$S$中加入新的规则时,$S$能满足的样本数量逐渐趋向$n$而饱和,函数收益递减。

  还可以发现模函数

$\displaystyle g(S)=\sum\limits_{R_i\in S} |X_{\{R_i\}}|$

  这是因为,当我们不断向$S$中加入新的规则时,上式总是把新规则所满足的样本数量增加到函数值中,而与$S$中原有的规则无关。

子/次模 (Submodular)、超模 (Supermodular)和模(Modular)函数的更多相关文章

  1. (转)vivoxshot 精英版三模转五模模式切换操作方法

    https://yunpan.cn/cPUBWc8vtKpID (提取码:de92) 本帖最后由 韩爱峰 于 2016-3-29 23:00 编辑 碰到不少机友在使用过程中操作不成功,现将我的方法跟大 ...

  2. MySQL Execution Plan--IN子查询包含超多值引发的查询异常1

    ======================================================================= SQL语句: SELECT wave_no, SUM(I ...

  3. MySQL Execution Plan--IN子查询包含超多值引发的查询异常

    问题描述 版本:MySQL 5.7.24 SQL语句: SELECT wave_no, SUM(IF(picking_qty IS NULL, 0, picking_qty)) AS PICKED_Q ...

  4. SQL一对多取子表最新记录的所有字段(ROW_NUMBER()OVER()函数的应用)

    ROW_NUMBER()OVER() 参数1:分组字段 PARTITION BY   ..,..,....  可选 参数2:排序字段 ORDER BY .. DESC  必须 实例: 根据Confir ...

  5. 模块度与Louvain社区发现算法

    Louvain算法是基于模块度的社区发现算法,该算法在效率和效果上都表现较好,并且能够发现层次性的社区结构,其优化目标是最大化整个社区网络的模块度. 模块度(Modularity) 模块度是评估一个社 ...

  6. HDU1452Happy 2004(高次幂取模+积性函数+逆元)

    题目意思:2004^x的所有正因数的和(S)对29求余:输出结果: 原题链接 题目解析:解析参照来源:点击打开链接 因子和 6的因子是1,2,3,6; 6的因子和是s(6)=1+2+3+6=12; 2 ...

  7. poj_2115C Looooops(模线性方程)

    题目链接:http://poj.org/problem?id=2115 C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  8. HDU1013,1163 ,2035九余数定理 快速幂取模

    1.HDU1013求一个positive integer的digital root,即不停的求数位和,直到数位和为一位数即为数根. 一开始,以为integer嘛,指整型就行吧= =(too young ...

  9. 取模性质,快速幂,快速乘,gcd和最小公倍数

    一.取模运算 取模(取余)运算法则: 1. (a+b)%p=(a%p+b%p)%p; 2.(a-b)%p=(a%p-b%p)%p; 3.(a*b)%p=(a%p * b%p)%p; 4.(a^b)%p ...

  10. PAM 認 證 模 組

    作者:陳柏菁 E-mail 作用:限制哪些用户或者组可以从哪里登陆,或者可以建立/etc/nologin立即阻止一般用户登陆,限制 user可以使用的资源.例如cpu,文件,登陆数量,某些服务的登陆时 ...

随机推荐

  1. 基于PaddleNLP信息抽取,uie微调打造自己专属的信息抽取模型

    基于PaddleNLP信息抽取,uie微调打造自己专属的信息抽取模型 UIE模型简介 UIE优势 应用示例 UIE开箱即用 UIE适用抽取示例 命名实体识别(Named Entity Recognit ...

  2. sicp每日一题[2.3]

    Exercise 2.3 Implement a representation for rectangles in a plane. (Hint: You may want to make use o ...

  3. DOM – Web Components

    前言 Web Components 已经听过很多年了, 但在开发中用纯 DOM 来实现还是比较少见的. 通常我们是配搭 Angular, React, Vue, Lit 来使用. 这篇就来讲讲纯 We ...

  4. Java读取寄存器数据的方法

    在Java中直接读取硬件寄存器(如CPU寄存器.I/O端口等)通常不是一个直接的任务,因为Java设计之初就是为了跨平台的安全性和易用性,它并不直接提供访问底层硬件的API.不过,在嵌入式系统.工业控 ...

  5. JDBC——案例

    创建一个商品表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand( id int primary key auto ...

  6. 系统编程-进程-fork深度理解、vfork简介

    1. fork基本使用 #include <unistd.h> #include <stdio.h> int main(){ pid_t pid = fork(); if(pi ...

  7. 记一次 RabbitMQ 消费者莫名消失问题的排查

    开心一刻 今天好哥们找我借钱哥们:兄弟,我最近手头紧,能不能借我点...我:我手头也不宽裕,要不你试试银行贷款或者花呗?哥们:不行,那个借了要还的我:... 问题回顾 某天下午,生产监控告警:消息积压 ...

  8. acme+cloudflare生成免费证书(自动续期)

    acme DNSapi acme DNSapi的作用是在申请证书时使用dns交易,acme可以通过dnsapi在对应的dns管理平台提交对应的dns记录.玩过证书的朋友都知道,证书申请时有三种验证方式 ...

  9. 【赵渝强老师】使用Weblogic的WLST工具

    一.什么是Weblogic WLST? WebLogic 脚本工具 (WebLogic Scripting Tool , WLST) 是一种命令行脚本界面,系统管理员和操作员用它来监视和管理 WebL ...

  10. 【USB3.0协议学习】Topic2·USB3.0的LTSSM分析

    一.什么是LTSSM,处于USB层次中的哪个位置? LTSSM是链路训练状态机的简称,位于USB3.0协议的link layer,共有12种状态,在链路的两端,也就是Downstream port和U ...