计数复杂性

news/2024/12/23 4:28:40/文章来源:https://www.cnblogs.com/qixingzhi/p/18622873

离散概率本质是计数问题。所以如果想要进一步研究由概率图灵机定义的复杂性类(比如\(\text{PP}\)),一个很自然的角度是研究计数问题的复杂性类。

到目前为止,我们讨论的都是判定问题。判定问题的输出只能是\(0\)\(1\),也就是说判定问题可以看作一类特殊的计数问题。然而直观上就可以接受,计数问题的难度可能远超判定问题的难度。下面我们通过有向图的简单环计数问题为例来说明这一点。

有向图的简单环计数(\(\sharp\texttt{CYCLE}\))

有向图上一个不包含重复点的环称为简单环(simple cycle,这里不考虑自环)。有向图的简单环判定问题是多项式可解的(比如,我们只需要在DFS的过程中记录时间戳就可以求解强连通分量,从而通过强连通分量的大小判定是否存在简单环),然而有向图的简单环计数问题(\(\sharp\texttt{CYCLE}\))是难的。我们证明,假设有向图的简单环计数问题(\(\sharp\texttt{CYCLE}\))有多项式图灵机可解,那么\(\text{P}=\text{NP}\)

关键的观察是,哈密顿回路判定问题(一个\(\text{NP}\)-complete问题)可以归约到\(\sharp\texttt{CYCLE}\)。对于一个给定的有向图\(G\),我们可以构造有向图\(G'\),其中对\(G\)的每条边\(u\to v\)做拆分使得单看\(u\to v\)恰好有\(2^m\)条不同路径(交叉构造,此过程是多项式的)。取\(m=n\log n\),我们可以做如下分析:如果\(G\)存在哈密顿回路,那么\(G'\)上简单环的个数至少为\((2^m)^n=2^{n^2\log n}=n^{n^2}\);如果\(G\)不存在哈密顿回路,那么\(G\)上简单环的个数至多\(n^{n-1}\)个,所以\(G'\)上简单环的个数至多\(n^{n-1}\cdot (2^m)^{n-1}=n^{n^2-1}\)个。所以如果调用多项式的\(\sharp\texttt{CYCLE}\)计数程序统计\(G'\)上简单环的个数,就可以通过环的个数是否超过\(n^{n^2}\)判定\(G\)上是否存在哈密顿回路,整个过程是多项式的。那么我们就可以多项式解决\(\text{NP}\)-complete问题,所以\(\text{P}=\text{NP}\)\(\newcommand{\SP}{\sharp\text{P}}\)\(\newcommand{\FP}{\text{FP}}\)

计数复杂性类

\(\FP\)\(\SP\)

多项式时间可解的计数问题类可以用确定性图灵机定义,记为\(\text{FP}\)(函数多项式时间复杂性类,Function Polynomial time complexity class)。具体的,如果存在一个确定性图灵机计算函数\(f:\{0,1\}^*\to \N\),就令\(f\in \text{FP}\)

容易发现,如果我们承认\(\text{P}\neq \text{NP}\),那么上一节中提到的\(\sharp\texttt{CYCLE}\)并不在\(\text{FP}\)内。我们关心这样的计数问题,尽管它本身不是多项式可解的,但是它的解都是多项式可验证的。这类问题也应当构成一个复杂性类,这个类和\(\text{FP}\)的关系就好像\(\text{NP}\)\(\text{P}\)的关系一样。我们把这个类称为\(\sharp\text{P}\)。和\(\text{NP}\)类一样,这个复杂性类可以用确定性图灵机定义,也可以用非确定性图灵机定义。用确定性图灵机定义:\(f\in \sharp\text{P}\)当且仅当存在确定性图灵机\(\mathbb{M}\)满足\(f(x)=|\{y\in \{0,1\}^{p(|x|)}\}\mid \mathbb{M}(x,y)=1|\),这里的\(y\)相当于一个用来验证的解;用非确定性图灵机定义:\(\forall L\in \text{NP}\),存在非确定性图灵机\(\N\)判定\(L\),如果在\(\N\)上输入\(x\)时多项式时间内恰好有\(f(x)\)条路径停机输出\(1\),就称函数\(f\in \sharp\text{P}\)

自然地,有\(\text{FP}\subseteq \sharp\text{P}\),并且\(\sharp\text{P}=\text{FP}\implies \text{NP}=\text{P}\)。因为判定问题是一类特殊的计数问题,如果\(\sharp \text{P}\subseteq \text{FP}\),也即一切非确定性图灵机多项式可计算的计数问题都存在确定性图灵机在多项式时间计算,那么一切非确定性图灵机多项式可判定的判定问题都存在确定性图灵机在多项式时间内判定,因此\(\text{NP}\subseteq \text{P}\),所以\(\text{NP}=\text{P}\)

还可以证明,\(\text{P}=\text{PSPACE}\implies \sharp\text{P}=\text{FP}\)。对于任何\(f\in \sharp\text{P}\),我们要证明\(f\in \text{FP}\)。因为\(f\in \sharp\text{P}\),存在一台确定性图灵机\(\mathbb{M}\)使得\(f(x)=|\{y\in\{0,1\}^{p(|x|)}\mid \mathbb{M}(x,y)=1\}|\)。于是我们可以构造一台确定性图灵机枚举\(y\),这样就能以多项式空间求出\(f(x)\)。具体的,由于\(\text{PSPACE}\)是定义在判定问题上的,我们可以构造一系列\(\text{PSPACE}\)的图灵机用来判定\(f(x)\)的各个二进制位是否为\(1\)。既然\(\text{P}=\text{PSPACE}\),这一系列图灵机都是\(\text{P}\)的。因此计算\(f(x)\)的图灵机自然是\(\text{FP}\)的。

注意到,\(\text{PP}\)类可以看作\(\sharp\text{P}\)类的判定版本,后者是数满足某一性质的解的个数,前者是判定满足某一性质的解是否超过一半。那么如果\(\FP=\SP\),也即如果计数是多项式时间的,那么\(\text{PP}\)也一定是多项式时间的。所以\(\FP=\SP\implies \text{P}=\text{PP}\)。由二分法可证\(\text{PP}=\text{P}\implies \FP=\SP\)也成立。所以我们得到\(\text{PP}=\text{P}\iff \FP=\SP\)

\(\SP\)-completeness

一个自然的问题是,如何定义\(\SP\)中最难的问题?也就是问,如何定义计数问题之间的(多项式)归约?我们依然可以通过oracle来定义:函数\(f\)能多项式归约到\(g\)的含义是,通过带有oracle \(g\)的确定性图灵机计算多项式时间能够计算\(f\)。也即\(f\in \FP^g\)。由此,\(f\)\(\SP\)-hard问题当且仅当\(\forall g\in \SP\)\(g \in \FP^f\)。如果进一步满足\(f\in\SP\),则称\(f\)\(\SP\)-complete问题。

\(\sharp\texttt{SAT}\)问题是\(\SP\)-complete的。顾名思义,\(\sharp\texttt{SAT}\)问题中这样一个函数,输入一个CNF(对应的二进制串),输出满足这个CNF的可满足赋值个数。(和证明\(\texttt{SAT}\)\(\text{NP}\)-complete的过程很相似)

01矩阵的permanant(积和式)计算是\(\SP\)-complete的。这是为Valiant定理。矩阵\(A\)的permanant定义为\(\texttt{perm}(A)=\sum\limits_{\sigma\in P_n}\prod\limits_{i=1}^n A_{i,\sigma(i)}\)。注意到矩阵的行列式定义为\(\det(A)=\sum\limits_{\sigma\in P_n}(-1)^{sw(\sigma)}\prod\limits_{i=1}^n A_{i,\sigma(i)}\)\(,sw(\sigma)\)表示permutation \(\sigma\)的逆序对个数。行列式可以在高斯消元的过程中顺带算出,因此由多项式时间算法。而Valiant定理告诉我们,作为计数问题的permanant问题尽管和行列式相比只差了一个逆序对的系数,却没有多项式时间算法(在\(\text{P}\neq\text{NP}\)的假设下)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/857256.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用ollama+llama3.1+open-webui搭一个本地的模型

1、先安装我们的ollama 1.1、官网地址:https://ollama.com/ 选择合适的版本,我的是window版本,点击下载,不用填邮箱。1.2、开始安装,选择默认就可以1.3、安装完毕:cmd输入:ollama2、安装模型:llama3.1 2.1:找到模型 2.2复制下载2.3、命令行下载: 2.4、下载完毕就进入对…

windows修改mac 地址

参考 https://blog.csdn.net/u012559967/article/details/134768073 win11确认可行 (另外一种修改注册表,暂未确认) 网络适配器中配置 网络适配器中配置的方式适用于能够在网络适配器中找到物理地址(NetworkAddress)的情况。 1、打开控制面板 > 网络和共享中心 > 更改…

MADDPG算法

MADDPG算法 论文名称:《Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments》 一、基本问题 MADDPG是一篇经典的多智能体强化学习算法。在MADDPG以前,多智能体强化学习算法主要为独立学习技术。独立学习技术 独立学习技术就是在环境中对于每一个智能体…

ble广播和连接

蓝牙BLE设备的状态:从机处于待机,广播,连接状态中的一种,主机处于待机,扫描,连接状态的一种。 在BLE通讯中,数据收发都是通过连接事件触发的。连接事件的发生始终位于一个频率,这个频率由连接参数决定。连接参数是主机决定的,从机可以向主机发起连接参数请求,但是最终…

ble基础

一、蓝牙基础 蓝牙标准profile bluez linux tools 一文读懂BLE 1.1 蓝牙分类 蓝牙分为经典蓝牙(BT-Bluetooth)和低功耗蓝牙(BLE-Bluetooth Low Energy)。这两套原理和实现都不一样,也无法实现互通。 Basic Rate(BR)/EDR/AMP 最初的蓝牙技术,包括可选的EDR(Enhanced Da…

爬取小说案例-BeautifulSoup教学篇

@目录前言导航BeautifulSoupBeautifulSoup介绍BeautifulSoup的使用1. 导入库2. 实例化对象3. 提取数据成果共勉博客 前言 当我们进行爬取各种资源,拿到源码进行解析数据的时候,会用到各种解析方式,本文介绍的爬取小说的一个案例,使用比较受欢迎的python第三方库BeautifuSou…

vue基础指令示例

1、vue基础示例<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>基础指令</title><script src="../vu/js/vue.js"></script><style>.box1{width: 150px;height: 1…

楚慧杯Misc—复现

gza_CrackerCrack_me 追踪tcp流量找到字典保存字典,上流量一把梭base64解密特殊流量2 一把梭出个www.zip打开,是个RSA <?php $cmd = @$_POST[ant]; $pk = <<<EOF -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCfhiyoPdM6svJZ+QlYywklwVcx…

INFINI Labs 产品更新 | Console/Gateway/Agent 等产品开源发布首个版本

INFINI Labs 产品又更新啦~,包括 Easysearch v1.9.0、Gateway、Console、Agent、Loadgen v1.27.0。本次各产品更新了很多亮点功能,如 Easysearch 优化了多版本兼容配置;Console/Gateway/Agent/Loadgen 及 Framework 开源后,发布首个重大更新版本,支持过期元数据删除,指标…

JVM简介—1.Java内存区域

大纲 1.运行时数据区的介绍 2.运行时数据区各区域的作用 3.各个版本内存区域的变化 4.直接内存的使用和作用 5.站在线程的角度看Java内存区域 6.深入分析堆和栈的区别 7.方法的出入栈和栈上分配、逃逸分析及TLAB 8.虚拟机中的对象创建步骤 9.对象的内存布局 10.对象的访问定位 …

鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】

鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析 万物智联,打造无缝智能生态 在科技不断迭代更新的今天,每一次技术的飞跃都是对未来的深刻探索。华为,这个始终站在科技前沿的企业,再次以HarmonyOS 5.0(Next)这一操作系统的新篇章,向我们展示了科技如…