pq

Optimized Product Quantization 论文笔记

让人想犯罪 __ 提交于 2020-12-20 07:01:44
摘要    乘积量化(PQ)是一种有效的矢量量化方法。 乘积 量化器可以以非常低的存储器/时间成本生成指数大的码本。 PQ的本质是将高维向量空间分解为子空间的笛卡尔乘积,然后分别量化这些子空间。最佳空间分解对于PQ性能很重要,但仍然是一个未解决的问题。在本文中,我们通过最小化空间分解和量化码本的量化失真来优化PQ。我们为这一具有挑战性的优化问题提出了两种新颖的方案:第一个解决方案迭代地解决了两个更简单的子问题;第二种解决方案基于高斯假设,并提供最优性的理论分析。我们在三个应用中评估我们的优化 乘积 量化器:(i)用于详尽排序的紧凑编码[1],(ii)为非穷举搜索构建反向多索引[2],以及(iii)用于图像检索的压缩图像表示[ 3]。在所有应用中,我们的优化 乘积 量化器优于现有解决方案。 简介    在本文中,我们将PQ表示为一个优化问题,通过寻找最佳码字和空间分解来最小化量化失真。由于大量未知参数,这种优化问题具有挑战性。在这项工作中,我们提出两种解决方:在第一个解决方案中,我们迭代地解决了两个更简单的子问题:用固定的码字求解空间分解,反之亦然。该解决方案是非参数的,因为它不假设关于数据分布的任何先验信息。我们的第二个解决方案是参数解决方案,因为它假设数据遵循高斯分布。在这个假设下,我们推导出量化失真下界的分析公式。然后我们理论上证明当(i)子空间相互独立时,这个下界被最小化

Java提高篇

╄→гoц情女王★ 提交于 2020-12-19 16:36:11
电子书下载地址: 链接:https://pan.baidu.com/s/1nnQsDNKPavRmglE6Nxj0PQ 提取码:z2sz 本文分享自微信公众号 - Java全栈学习(taoquanquansh)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/3324580/blog/4680382

rsa公钥密码和签名含C语言代码

心已入冬 提交于 2020-12-05 16:55:03
RSA是目前使用最广泛的公钥密码体制之一。它是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。 RSA算法的安全性基于RSA问题的困难性,也就是基于大整数因子分解的困难性上。但是RSA问题不会比因子分解问题更加困难,也就是说,在没有解决因子分解问题的情况下可能解决RSA问题,因此RSA算法并不是完全基于大整数因子分解的困难性上的。 ** 1.欧拉函数 什么是欧拉函数   欧拉函数是小于x的整数中与x互素的数的个数,一般用φ(x)表示。特殊的,φ(1)=1. 如何计算欧拉函数   通式:φ(n)=n*(1-1/p1) (1-1/p2) (1-1/p3) (1-1/p4) … (1-1/pn),其中p1, p2……pn为n的所有素因数,n是不为0的整数. 欧拉函数的一些性质     1. 对于素数p,φ§=p−1  2. 若p为素数,n=p k,则φ(n)=p k-p^(k-1)   3. 欧拉函数是积性函数,但不是完全积性函数;若m,n互素,则φ(m∗n)=φ(m)∗φ(n),特殊的,当m=2,n为奇数时,φ(2 n)=φ(n)  4. 当n>2时,φ(n)是偶数  5. 小于n的数中

python抓取猫眼电影列表

南笙酒味 提交于 2020-11-22 06:51:56
抓取地址:http://maoyan.com/board/4 分析url分页规则:http://maoyan.com/board/4?offset=0 其中offset参数值为0到90 用到的库: PyQuery:html解析器,语法类似jquery fake_useragent;用于伪造头部浏览器信息,防爬虫屏蔽 相关代码: import requests from requests.exceptions import RequestException from pyquery import PyQuery as pq from fake_useragent import UserAgent from multiprocessing import Pool import json def gethtml(offset): try : ua = UserAgent() # 防爬虫机制,加入头部信息 headerinfo= { " Accept " : " text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 " , " Accept-Encoding " : " gzip, deflate " , " Accept - Language " : " zh - CN,

牛客网暑期ACM多校训练营(第二场)

♀尐吖头ヾ 提交于 2020-11-22 03:26:37
Rank Solved A B C D E F G H I J K 44/452 4/11 O O Ø O Ø Ø Ø Ø O Ø Ø O : 当场通过 Ø : 赛后通过 . : 尚未通过 A run solved by chelly chelly's solution 签到 B discount solved by chelly chelly's solution 我们把限制总结一下: 花p[i]-d[i]购买一个点 花p[i]购买一个点和它的父亲 "花p[i]购买一个点和它父亲"这个不能连续 就十分类似树上的匹配问题的,可以用dp求解 然后这个图是个基环外向树森林,所以先扣出所有的环,然后做树DP,再做环DP即可 C message upsolved by chelly chelly's solution 直线y=ax+b和y=cx+d的交点横坐标是$-\frac{b-d}{a-c}$,于是我们可以将(a,b)和(c,d)看成两个点 问题就转化成了,平面上有n个点,有m个询问点,你需要对每个询问点回答这个询问点和哪个点形成的斜率最小 这就是个经典问题,容易知道答案一定在n个点形成的凸包上 对于一个询问点(x,y),我们将凸包分块,分成该点左边和该点右边,那么答案在左边和右边就是单峰的,可以二分或者三分 所以我们可以先离线询问点,然后在构下凸包的时候完成左边的操作

C++ STL详解

生来就可爱ヽ(ⅴ<●) 提交于 2020-11-21 13:34:08
C++ STL详解 转载自: http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.html 一、STL简介 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来 的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。 STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类 组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文件 :<algorithm>、<deque>、<functional>、<iterator>、<vector>、 <list>、<map>、 <memory> 、<numeric> 、<queue> 、<set> 、<stack> 和<utility> 。 二、算法 大家都能取得的一个共识是函数库对数据类型的选择对其可重用性起着至关重要的作用。举例来说,一个求方根的函数,在使用浮点数作为其参数类型的情况下的可重用性肯定比

谈谈字符集和字符编码

喜你入骨 提交于 2020-11-21 01:47:35
http://tommwq.tech/blog/2020/11/20/232 1 字符集和字符编码 字符集(charset)和字符编码(character encoding)是两个含义相近的概念。在历史上一段时间里,二者实际上指代同一个东西,就是为字符建立的数字编号。字符集建立了字符到数字的1-1映射。对于每个字符,都有唯一的数字与之相对应。映射的作用域是字符集能够识别的全部字符,值域是这些字符的数字编号。字符编码则是在字符集的基础上更进一步,规定了在计算机中如何表示这些数字编号。比如我们可以把字符“A”映射成65,这就是一个字符集(虽然只包含1个字符)。现在考虑我们如何在计算机中表示数字65。假设我们使用C语言,我们可以用char、short、int、long这4种数据类型记录数字65,因此产生了这个小小字符集的4种不同的字符编码。 char A_c = 0x41 ; short A_s = 0x0041 ; int A_i = 0x00000041 ; long A_l = 0x0000000000000041 ; 一些字符集在编制的时候,就规定了数字编号的表示方式。对于这种情况,字符集和字符编码是等同的。 最初每个计算机厂商都设计了自己的字符编码。为了让不同厂商的系统可以相互通信,统一字符编码的需求产生了。最开始统一的是表示拉丁字母的ASCII码。拉丁字母数量较少

动态规划算法

半腔热情 提交于 2020-11-15 11:46:32
贪心算法:逐步建立一个解决方案,具体地优化一些局部准则。 分治:将一个问题分解成独立的子问题,求解每个子问题,并将子问题的解组合起来形成原问题的解。 动态规划:把一个问题分解成一系列相互重叠的子问题,并为越来越大的子问题建立解决方案。 一、weighted interval scheduling 加权区间调度 问题描述:每个job有开始时间、结束时间和权重,找job不overlap的最大权重。 解法1:最早结束时间优先。(若权重都一样,用贪心法是正确的,但在本题不对)。 以完成时间升序标记jobs。记p(j)=i,表示j>i,在选择job j后,可选的最大下标为i。 记OPT(j)表示由作业1,2,3…j组成的请求的最优解。 若OPT选择j,wight包括vj,包括之前的OPT:1,2,…p(j); 若OPT不选择j,一定包括OPT:1,2…j-1 解法2:暴力法 //伪代码 输入:n , s [ n ] , f [ n ] , v [ n ] 排序:根据f [ n ] 计算:p [ n ] int computeOpt ( int j ) { if ( j == 0 ) return 0 ; else return max ( v [ j ] + computeOpt ( p [ j ] ) , computeOpt ( j - 1 ) ) ; } 分析:分层递归调用

一、抓包协议简单分析

不打扰是莪最后的温柔 提交于 2020-11-14 12:20:41
1.简单说下http协议有哪几种请求方式: 在http1.0版本上有三种方式:get、post、head 在http1.1版本上新增了五种:put、options、delete、trace、connect 基本上用的就是get和post了,下面就对get和post具体解释一下,讲这个之前需要讲下URL的结构,拿博客园网址举例 https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=%E5%8D%9A%E5%AE%A2%E5%9B%AD&rsv_pq=9070b02d0000b82c&rsv_t=ecbfNLT6tI2IKIjGeY1Y7bImwtpREHE5RfVv1D5egK%2FvDovb5soyDvWDOyU&rqlang=cn&rsv_enter=1&rsv_sug3=8&rsv_sug1=7&rsv_sug7=100 host:www.baidu.com 这是域名 path:s 这是服务器路径 ?分隔符 问号后面跟的是参数,格式是name=value&name=value ,多个参数用&连接 分析完URL结构,下面讲: 1.get请求特点:一般输入网址这种的都是get请求,参数直接写在了URL地址里面, 有请求行,请求头,空行,注意post是没有最后body这部分。 2. post请求特点

RSA公钥指数的选取

非 Y 不嫁゛ 提交于 2020-11-11 20:23:09
一、什么是RSA公钥指数? 首先了解一下RSA密钥的建立流程。如下图所示: (1)选择两个不同的大素数p和q; (2)计算公共模数(n=pq)和欧拉数(eular=(p-1)(q-1)); (3)选择公钥指数e; (4)计算inverse(d); (5)生成公钥、私钥; 上述流程中出现的e就是公钥指数。 二、公钥指数的选取 公钥指数是可以随意选取的,但是为了提高RSA的加密速度实际使用中公钥指数最长用的三个值是3、17、65537(=2^16+1,65537的二进制表示中只有两个1,所以需要17次乘法来实现指数运算)。PEM建议用3。PKCS#1建议用3或65537。X.509建议用65537。这样选取主要是为了提高加密或签名验证的性能,因为3、17或65537分别只需要2或17次模乘运算,而一个随机选择的e(假设n是1024-bit)则大约需要1000次模乘运算。这种方法刻意把公钥指数选的小一点,其对应私钥指数就会很大,这么做的目的是节约公钥运算的时间。因为正常使用中都是用公钥加密,所以需要节约大部分人的时间。而极少部分人也会选用私钥解密,那么就只能少数服从多数了。 在选用公钥指数时,人们普遍会认为3和17没有65537安全。然而这种想法并没有合理的依据。实际上采用这三个值中的任何一个都不存在安全问题。前提是使用正确的填充方案。 来源: oschina 链接: https:/