定义

  子模 (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. Windows 安装 OpenSSH

    使用命令行安装 安装 OpenSSH 服务端和客户端 在管理员终端下运行以下命令: # 检查 OpenSSH 可用性 Get-WindowsCapability -Online | Where-Obj ...

  2. Kubernetes-18:Dashboard安装及使用

    Helm安装Dashboard 简介 Dashboard 是 kubernetes 的图形化管理工具,可直观的看到k8s中各个类型控制器的当前运行情况,以及Pod的日志,另外也可直接在 dashboa ...

  3. 【YashanDB知识库】同时设置默认值和非空约束时报错YAS-02070

    [问题分类]功能使用 [关键字]YAS-02070 [问题描述] SQL create table test01(id int,name varchar(10)); insert into test0 ...

  4. Argo CD初体验

    什么是 Argo CD? Argo CD 是一个声明式的 GitOps 持续交付工具,用于 Kubernetes 集群.它通过持续监控 Git 仓库中的 Kubernetes 资源配置文件,将这些配置 ...

  5. Istio实现sidecar自动注入

    Istio实现sidecar自动注入 Sidecar模式 在Sidecar部署方式中,你会为每个应用的容器部署一个伴生容器.对于Service Mesh,Sidecar接管进出应用程序容器的所有网络流 ...

  6. 浅谈 C# 中的顶级语句

    前言 在C# 9版本中引入了一项新特性:顶级语句,这一特性允许在不显式定义 Main 方法的情况下直接编写代码. 传统的写法 namespace TestStatements{    internal ...

  7. JavaScript——案例-表单验证

    需求       <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  8. QT6窗口系统之QT底层窗口QWindow:QT框架中哪些常见窗口是基于QWindow的? 如何实现QT框架栅格窗口?如何实现QT框架OpenGL窗口?

    QT6窗口系统之QT底层窗口QWindow:QT框架中哪些常见窗口是基于QWindow的? 如何实现QT框架栅格窗口?如何实现QT框架OpenGL窗口? 简介 本文介绍了QT6窗口系统中的QT底层窗口 ...

  9. Docker数据共享与持久化(六)

    接下来介绍如何在 Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式: 数据卷(Data Volumes) 挂载主机目录 (Bind mounts) 一.数据卷 数据卷是一个可供一 ...

  10. Sealos Devbox 发布,珍爱生命,远离 CI/CD

    水滴攻击太阳系用的是最原始的攻击方式:撞击!却又如此有效率. 当我们搞了一堆容器.编排.CI/CD.DevOps,发明了一大堆没什么用的名词之后,最终发现这些操作都是花里胡哨,让开发者越陷越深. 最终 ...