Simon算法详解

0.0 Intro

相关的算法:
Deutsh-Jozsa算法:
    第一个量子算法对经典算法取得指数级加速的算法
    美中不足在于只能确定函数是平衡的还是非平衡的,无法确定函数具体的内容,即无法直接解出函数
Bernstein-Vazirani算法:
    在Deutsh-Jozsa算法基础上进一步提出,能够直接解出算法本身
    同样存在问题,即没有实现指数级的加速

Simon算法 在上述两个算法的基础上更进一步,体现在两个方面
一方面,Simon算法可以在Simon问题中,直接解出目标函数
另一方面,Simon问题的经典解法是指数级复杂度,而Simon算法相较经典算法也是取得了指数级的加速。

1.1 Simon问题(Simon’s Problem)

现有一未知数,其作用域和值域都是n位的二进制数据: f : { 0 , 1 } n → { 0 , 1 } n f:\left \{ 0,1\right \}^{n} \to \left \{ 0,1\right \}^{n} f:{0,1}n{0,1}n
该函数是单射或对称函数中的一种。当函数为对称时,有: x 1 + x 2 = s , f ( x 1 ) = f ( x 2 ) x_{1}+ x_{2}=s,f(x_{1})=f(x_{2}) x1+x2=sf(x1)=f(x2)现需确定函数的属性,若属于对称函数需进一步确定 s

小贴士:

  • 单射函数即作用域上每一个输入都有唯一输出的函数,常见的有实数域上所有的线性函数,例如f(x)=x、f(x)=lnx等都是单射函数
  • 对称函数的性质在上面已经说明,其中s其实是x1和x2的对称轴,常见的对称函数即二次函数,例如f(x)=x^2,其对称轴s=0

1.2 Simon问题分析与经典解法的思路

1.2.1 Simon问题分析

需要注意的是,Simon问题中提到的值域和作用域始终都是n位二进制数,进行的加法严格意义上说是模二加法, 在模二加法中两个二进制数相加为0即表示这两个二进制数是相等的,因此可对Simon问题进行如下简化:

  • 对于单射函数,显然有:在x1=x2时, x 1 + x 2 = 0 , f ( x 1 ) = f ( x 2 ) x_{1}+ x_{2}=0,f(x_{1})=f(x_{2}) x1+x2=0f(x1)=f(x2)因此,s=0即为在单射函数情况下的解
  • 对于对称函数,除了s=0这一个解之外,显然还有另一个非平凡解,即为对称函数对称轴的位置

小贴士

  • 平凡解就是显而易见的解、没有讨论的必要但是为了结果的完整性仍需要考虑的结果,比如Ax=0中的零解,即x=0,即为平凡解
  • 非平凡解(nontrivial solution)是齐次方程或齐次方程组的非零解。

1.2.2 Simon问题的经典解法(暴力解法)

可以通过将作用域取值不断带入进行验证的方法进行求解,考虑到单射函数与对称函数的区别,不必将整个作用域带入,只需要带入作用域的一半+1次即可完成验证。
作用域是n位二进制数,因此需要进行验证的次数为: 2 n − 1 + 1 2^{n-1}+1 2n1+1
这里解释一下验证一半作用域后额外再验证一次的原因。最坏的情况下,验证一半作用域后会发现每一个输出都是唯一的,那么就需要额外再进行一次,将额外的一次结果与前面一半作用域产生的值进行比对:

  • 如果仍然是新的唯一输出,则表明这是一个单射函数;
  • 如果能与之前某个输出值匹配,则表明这是一个对称函数,该输出对应的输入值和这额外的一次输入值就可以确定对称轴的位置。

因而,Simon问题经典解法的时间复杂度是 O ( 2 n ) O(2^n) O(2n)

2.1 Simon算法详解

2024.1.15 待续…

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

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

相关文章

Linux 内核指令动态替换

文章目录 前言ftraceStatic KeysStatic Calls 前言 Linux Kernel可以在运行时动态的(即不需要重启)替换内核指令,主要有以下三种方式。 ftrace linux 动态替换内核动态补丁(kpatch)及kpatch pushsection popsection…

C++面试合集问题之堆、栈

1.堆和栈的区别 分配方式: 堆:堆是由程序员手动分配和释放的一块内存区域。在堆上分配内存需要使用动态内存分配的方式,如malloc()、calloc()或new操作符,在不需要时需要手动释放内存,否则可能出现内存泄漏。堆上分配的…

恐龙岛如何正确的选择服务器

恐龙岛服务器的价格因配置和运营模式等因素而异。一般来说,BGP线路成本更高但更稳定,适用于全球分布广泛的玩家,适合高品质画面游戏。在选择合适的配置时,需要考虑运营模式、游戏玩家地区分布和游戏特性等因素。具体价格需要参考具…

外汇天眼:做交易要不要预测行情? 趋势交易最重要的三个核心概念!

对一个(量化)技术分析派来说,趋势是非常重要的,大家一般的想法都是通过趋势跟踪来挣钱的,无趋势时会有小的损耗,趋势来时用仓位来弥补损失并盈利,用盈亏比而不用胜率。 就趋势交易最重要的三个…

3D scanner with DLPC3478

https://www.bilibili.com/video/BV1vJ411J7ih?p3&vd_source109fb20ee1f39e5212cd7a443a0286c5 因数: 分别率波长pattern速度 DMD 与 DLPC匹配 3D scanner是结构光的概念走的 Internal pattern, 是DLPC内部提供图像给DMD External Pattern, 外部FPGA /MCU…

【Vue技巧】vue 阻止a链接跳转事件的两种方法

ChatGPT4.0国内站点&#xff0c;支持设计稿转代码&#xff1a;https://www.atalk-ai.com/ 在Vue中&#xff0c;如果你想阻止<a>链接的默认跳转事件&#xff0c;你可以使用click.prevent或者click配合.prevent修饰符。这样做可以阻止链接的默认行为&#xff0c;即不会跳转…

每日算法打卡:地宫取宝 day 16

文章目录 原题链接题目描述输入格式输出格式数据范围输入样例1&#xff1a;输出样例1&#xff1a;输入样例2&#xff1a;输出样例2&#xff1a; 题目分析示例代码 原题链接 1212. 地宫取宝 题目难度&#xff1a;中等 题目来源&#xff1a;第五届蓝桥杯省赛C A/B/C组,第五届蓝…

Spring基于AOP(面向切面编程)开发

概述 AOP为Aspect Oriented Programming的缩写&#xff0c;意为&#xff1a;面向切面编程&#xff0c;通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续&#xff0c;是软件开发中的一个热点&#xff0c;也是Spring框架中的一个重要内容&…

鸿蒙开发之手势Pan

Entry Component struct OfficialPanGesturePage {State message: string 默认只左右移动State offsetX: number 0State offsetY: number 0State positionX: number 0State positionY: number 0//默认pan的参数&#xff0c;1根手指&#xff0c;左右方向private panOption:…

Audio Precision SYS-2722音频分析仪

181/2461/8938产品概述&#xff1a; 2700系列专为需要最高性能的音频工程师而设计&#xff0c; 最低的失真和最大的灵活性。 2722的真正双域架构实现了以下方面的无与伦比的测量 模拟和数字信号:模拟发生器和分析仪性能超过 任何基于数字转换器的设计&#xff0c;而数字分析技…

三、基础篇 vue Class与Style绑定

操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attribute&#xff0c;所以我们可以用 v-bind 处理它们&#xff1a;只需要通过表达式计算出字符串结果即可。不过&#xff0c;字符串拼接麻烦且易错。因此&#xff0c;在将 v-bind 用于 class 和 style…

【面试突击】计算级网络面试实战(上)

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理…

2024年美赛美国大学生数学建模竞赛ABCDEF题思路资料汇总贴

下文包含&#xff1a;2024年美国大学生数学建模竞赛&#xff08;美赛&#xff09;A- F题思路解析、选题建议、代码可视化及如何准备数学建模竞赛&#xff08;2号发&#xff09; C君将会第一时间发布选题建议、所有题目的思路解析、相关代码、参考文献、参考论文等多项资料&…

关于跨域引用界面cookie不支持的处理

缘由&#xff1a;项目上与其他公司做对接&#xff0c;对方使用iframe引用我方项目&#xff0c;不使用nginx做代理&#xff0c;设置了老三样跨域请求头&#xff08;Access-Control-Allow&#xff09;&#xff0c;发现跨域cookie不识别&#xff0c;每次请求时返回头都携带新cooki…

docker filebeat 将日志多级目录和多维json数据日志同步到es

注 使用的时候先调试调试配置,调试成功在尝试写入es,如果es写入失败就是es账户.密码/白名单.和index未创建的问题,细节可以留言 setup.template.priority 模板优先级 调整这个可以配置一台机器多个filebeat 容器启动 多级目录日志和多维josn日志结构 filebeat.inputs:- typ…

如何使用ThinkPHP框架(thinkphp8.0)创建定时任务?

1、安装定时任务composer包 composer require easy-task/easy-task 2、创建命令行处理类文件 php think make:command Task task 会生成文件&#xff1a;app\command\Task.php 将Task.php文件内容修改如下&#xff1a; <?php declare (strict_types1);namespace app…

Jira REST API_检索多选自定义字段的可用选项

文章目录 背景解决方案背景 Jira Server/Data Center REST API不提供简单检索多选项自定义字段可用的所有选项的方法,只有 rest/api/2/customFieldOption/{id} API 获取指定的id的option值。 本文提供一种解决方法,,用于在通过 REST API 创建或编辑问题之前检索所有自定义字…

Linux:为什么要打包和压缩?

我们在Linux中已经学习了zip/unzip和tar两种方式来打包压缩文件&#xff0c;那么为什么要打包和压缩呢&#xff1f; 最直接的目的就是为了便于网络传输&#xff0c;防止传输过程中的数据丢失 举例实践 我们做个示例演示一下 我们创建一百个文件 我们将文件都放到dir里面来&…

UDP传输总丢包?常用的解决方式在这里!

UDP是一种无连接的协议&#xff0c;传输数据时不建立连接&#xff0c;因此可能导致数据包丢失。UDP丢包是指在传输过程中由于各种原因导致数据包未能到达目的地。UDP丢包会影响传输的质量和效率&#xff0c;导致数据损失、延迟&#xff0c;甚至导致传输失败。本文将分析UDP丢包…

上门按摩APP系统公众号H5搭建能为客户带来哪些便捷。

大家好&#xff01;今天我来给大家介绍一下上门按摩系统H5搭建。你有没有曾经因为工作疲劳、肌肉酸痛而感到身体不适&#xff1f;或者是因为长时间坐在电脑前&#xff0c;感觉脖子和肩膀快要僵硬了&#xff1f;如果你有这样的困扰&#xff0c;那么上门按摩系统公众号绝对是你的…