多项式时间

关于卷积的血腥实例、本质及物理意义

柔情痞子 提交于 2019-12-28 15:41:07
作为一名苦逼工科生,《信号与系统》+《数字信号处理》是绕不过去的坎,各种让人头疼的概念与数学公式:傅里叶变化、拉普拉斯变化、Z变换、卷积、循环卷积、自相关、互相关、离散傅里叶变化、离散傅里叶时间变化…… 前一段时间在知乎发现一个有趣例子,生动形象地解释了卷积的物理意义,且解释的较为准确,下面,正文来了: 比如说你的老板命令你干活,你却到楼下打台球去了,后来被老板发现,他非常气愤,扇了你一巴掌(注意,这就是输入信号,脉冲),于是你的脸上会渐渐地(贱贱地)鼓起来一个包,你的脸就是一个系统,而鼓起来的包就是你的脸对巴掌的响应,好,这样就和信号系统建立起来意义对应的联系。 下面还需要一些假设来保证论证的严谨:假定你的脸是线性时不变系统,也就是说,无论什么时候老板打你一巴掌,打在你脸的同一位置(这似乎要求你的脸足够光滑,如果你说你长了很多青春痘,甚至整个脸皮处处连续处处不可导,那难度太大了,我就无话可说了哈哈),你的脸上总是会在相同的时间间隔内鼓起来一个相同高度的包来,并且假定以鼓起来的包的大小作为系统输出。好了,那么,下面可以进入核心内容——卷积了! 如果你每天都到地下去打台球,那么老板每天都要扇你一巴掌,不过当老板打你一巴掌后,你5分钟就消肿了,所以时间长了,你甚至就适应这种生活了……如果有一天,老板忍无可忍,以0.5秒的间隔开始不间断的扇你的过程,这样问题就来了

线性回归中的多项式拓展及pyhton实现

扶醉桌前 提交于 2019-12-25 07:32:38
在利用线性回归进行预测时,经常由于数据的线性关系不好,导致模型出现欠拟合,lr。score比较低,就是决定系数低,这时候我们可以用多项式拓展方式来改进、 多项式扩展,可以认为是对现有数据进行的一种转换,通过将数据映射到更高维度的空间中,该模型就可以拟合更广泛的数据。 需注意:多项式拟合的应用,仍然变为线性模型 下面是多项式拓展的实现 # 引入所需要的全部包 import sklearn from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import PolynomialFeatures from sklearn.pipeline import Pipeline import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import pandas as pd import time ## 创建一个时间字符串格式化字符串, def date_format(dt): import time t

【多项式】FFT

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-25 03:55:13
【多项式】FFT Preface 本文对所有 \(\LaTeX\) 编译后生成的文本共有大约 \(7000\) 字,其中前半部分为前置知识部分,介绍了多项式的有关概念、运算法则以及复数的概念、运算法则以及单位根有关内容,并证明了蝴蝶操作所用到的有关复数的两个重要引理公式。如果你对上述内容已经有了解,可以跳过 Pre-knowledge 部分。 Pre-knowledge 部分大约有 \(2000\) 字。 由于内容比较长,本文还没有经审阅人完全审阅完成,如果您发现了文本中的错误,请私信或评论我指出。 Pre-knowledge 多项式 Definition 称一个关于 \(x\) 的式子 \[f(x) = \sum_{i = 0}^{n} a_i \times x^i\] 为一个 \(n\) 次多项式,其中 \(a_i\) 为常数。称 \(n\) 为 \(f(x)\) 的次数。显然, \(f(x)\) 可以看做一个关于 \(x\) 的 \(n\) 次函数 \(y = f(x)\) 。 回忆初中解析几何最后一个大题的第一问,正常情况下都是给定三个点的坐标,求一个关于 \(x\) 的二次曲线解析式方程。而类似的如果求一条直线的解析式,则需要给出两个点的坐标。 类似的,对于如果想要确定一个 \(n\) 次函数的解析式,则需要 \(n + 1\) 个点的坐标。这是因为一个 \(n\)

什么是P问题、NP问题和NPC问题

南楼画角 提交于 2019-12-23 04:53:31
转载: http://www.matrix67.com/blog/archives/105 这或许是众多OIer最大的误区之一。 你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC问题,你如果不是很感兴趣就可以不看了。接下来你可以看到,把NP问题当成是 NPC问题是一个多大的错误。 还是先用几句话简单说明一下时间复杂度。时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。也就是说,对于高速处理数据的计算机来说,处理某一个特定数据的效率不能衡量一个程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数级复杂度;数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n),比如找n个数中的最大值;而像冒泡排序、插入排序等,数据扩大2倍

P、NP、NP-Complete、NP-Hard问题

人盡茶涼 提交于 2019-12-21 00:28:36
P、 NP、NP-Complete、NP-Hard这些 概念都是用来描述一个问题的难度的。即一个问题能否在以上时间内求解,或者验证一个解是否符合一个问题。 在下面的讨论中,我们假设问题的输入规模是n,那么问题的解决时间,或者验证时间都应该是n的一个函数,记为f(n). 1、 规约(Reduction) :将一个问题,等价转换成另一个问题的子问题的方式。 2、P问题:P即Polynomial time,多项式时间。f(n)=a0+a1*n1+a2*n2+a3*n3+…. 。 意思是说给定一个问题,能在多项式时间内 找到 符合该问题的解。此时,问题的时间复杂度是O(nj)。 3、NP问题(Non-deterministic problem):即非确定性多项式时间问题。 NP 就是指能在多项式时间内 验证 一个解是否满足的一类问题。 什么是非确定性问题呢? 有些计算问题是确定性的,比如加减乘除之类,你只要按照公式推导,按部就班一步步来,就可以得到结果。但是,有些问题是无法按部就班直接地计算出。比如,找大质数的问题。有没有一个公式,你一套公式,就可以一步步推算出来,下一个质数应该是多少呢?这样的公式是没有的。再比如,大的合数分解质因数的问题,有没有一个公式,把合数代进去,就直接可以算出,它的因子各自是多少?也没有这样的公式。 这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算

多项式fft、ntt、fwt 总结

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-16 06:53:08
做了四五天的专题,但是并没有刷下多少题。可能一开始就对多项式这块十分困扰,很多细节理解不深。 最简单的形式就是直接两个多项式相乘,也就是多项式卷积,式子是$N^2$的。多项式算法的过程就是把卷积做一种变换,在变换后各系数相称得到新系数。其实这一步变换的构造过程挺深奥的,并不是很会。对于多项式卷积的变换就是点值。于是就有了快速变换这样的算法。 细节问题出过很多。边界的问题容易弄错。一般如果是两个N项多项式相乘,得到的是一个$2*N-1$项的多项式,这是存在系数的,只不过一般我们只要N项的结果,所以做fft、ntt的时候总项数从$2*N$开始计算。其实这样解释比较牵强,但是原理的解释我并不清楚,稍感性理解。 多项式卷积应该化成类似i+j=k的形式,其实差值为k也是可以卷积的(翻转一个序列,这样得到的结果序列也是反的)。 fwt处理位运算形式的卷积,同样分治法。位运算是针对下标的,分治的时候考虑好左右两半的子答案的贡献。 多项式全家桶,基础是求导、积分。有时候一些式子不是直接两个相乘得到另一个,可能还要先求出逆元再变回去。这时候用到的就是关于多项式的各种运算。 具体的题目好多是和卷积、“各种数和各种反演”有关,把式子化成卷积形式进行优化。 没有时间写每个题解了,做题也很少,好多东西还没学。这块综合了不少东西,前置内容就有很多。 可能多项式要咕一大截了,难受。 来源: https:/

P,NP,NPC,NP-hard

做~自己de王妃 提交于 2019-12-12 19:48:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> P问题:存在多项式复杂度算法的问题; NP问题:可以在多项式时间验证给定解是否正确的问题; NP-hard问题:任意一个NP问题都可以多项式时间规约到问题L,则称L为NP-hard问题; NPC问题:如果一个NP-hard问题L是一个NP问题,则称其为NP完全问题。 P和NP关系:P=NP or P≠NP?尚无定论,但可以确定的是NP包含P; NP和NP-hard关系:NP是NP-hard的真子集,因为存在有些NP-hard问题无法在多项式时间判断一个解是否可行; NPC:是NP和NP-hard的交集。 来源: oschina 链接: https://my.oschina.net/u/1757446/blog/755570

等距结点下的Newton插值多项式系数计算(向前差分)

匿名 (未验证) 提交于 2019-12-03 00:09:02
\(({x_0},{y_0})-({x_n},{y_n})\) 共n+1个点的插值曲线时候,如果再增加一个点,由Lagrange插值法通式 \[\sum_{k=0}^{n}\frac{\prod_{i=0,i\ne k}^{n}(x-x_i)}{\prod_{i=0,i\ne k}^{n}(x_k-x_n)}y_k\] 可以知道,当再增加一个点时候,Lagrange 多项式还要重新计算以确定系数。 由线性代数的知识可以知道,任何n次多项式都可以表示成1, \((x-x_0)\) , \((x-x_0)(x-x_1)\) , \({\ldots}\) , \((x-x_0)(x-x_1){\ldots}(x-x_{n-2})(x-x_{n-1})\) 的线性组合形式,牛顿插值多项式正是基于这一点。 \(N_n\) (x)= \(a_0\) + \(a_1\) ( \(x-x_0\) )+ \(a_2\) ( \(x-x_0\) )( \(x-x_1\) )+ \({\ldots}\) + \(a_n(x-x_0)(x-x_1)(x-x_2){\ldots}(x-x_{n-1})\) ,其中 \(a_k\) 为插值多项式的待定系数。(一下关于牛顿插值多项式系数计算是基于各x结点的等距条件) 假设 \(x=x_k,\) 则此时 \(y=y_k\) ,这样,若 \(a_0,a_1,a_2

中国大学MOOC_零基础学Java语言_第5周 数组_1多项式加法

匿名 (未验证) 提交于 2019-12-02 20:59:24
第5周编程题 查看帮助 返回 第5周编程题 依照学术诚信条款,我保证此作业是本人独立完成的。 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分。 2.学生可以在作业截止时间之前 不限次数提交答案,系统将取其中的最高分作为最终成绩。 1 多项式加法(5分) 题目内容: 一个多项式可以表达为x的各次幂与系数乘积的和,比如: 2x6+3x5+12x3+6x+20 现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。 程序要处理的幂最大为100。 输入格式: 总共要输入两个多项式,每个多项式的输入格式如下: 每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。 注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。 输出格式: 从最高幂开始依次降到0幂,如: 2x6+3x5+12x3-6x+20 注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。 输入样例: 6 2 5 3 3 12 1 6 0 20 6 2 5 3 2 12 1 6 0 20 输出样例: 4x6+6x5+12x3+12x2+12x+40 时间限制

简析 NP 问题 和P问题

丶灬走出姿态 提交于 2019-12-02 18:05:08
简析 NP 问题 和P问题 最简单的解释: P:算起来很快的问题 NP:算起来不一定快,但对于任何答案我们都可以快速的验证这个答案对不对 NP-hard:比所有的NP问题都难的问题 NP-complete:满足两点: 是NP hard的问题 是NP问题 严谨的定义: 问题: ​ 对于一个包含由0和1组成的字符串集合S,以某个01字符串x作为输入,要求某个图灵机判断x在不在S里面。这里的图灵机可以先想象成平时我们用的计算机,S也可以被看成我们要解决的问题。注意我们的问题非常简单,就是要判断某个字符串x是否在某个集合S里面,下面是定义: P:有一个图灵机在多项式时间内能够判断x是否在S里面 NP:有一个图灵机M,如果某个字符串x在S里面,那么存在一个验证字符串u(注意这个u是针对这个x的,而且长度必须是x长度的多项式 关系),M以x和u作为输入,能够验证x真的是在S里面。 NP-hard:如果某个问题S是NP-hard,那么对于任意一个NP问题,我们都可以把这个NP问题在多项式时间之内转化为S,并且原问题的答案和转化后S的答案是相同的。也就是说只要我们解决了S,那么就解决了所有的NP问题。 NP-complete:一个问题既是NP-hard,又在NP里面;也就是说 解决了这个问题我们就解决了所有NP问题 这个问题本身也是个NP问题 好,下面先来解释为什么会有人搞出来这么莫名其妙的定义