RSA算法 :首先, 找出三个数, p, q, r, 其中 p, q 是两个相异的质数, r 是与 (p-1)(q-1) 互质的数...... p, q, r 这三个数便是 person_key,接著, 找出 m, 使得 r^m == 1 mod (p-1)(q-1)..... 这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用辗转相除法就可以得到了..... 再来, 计算 n = pq....... m, n 这两个数便是 public_key ,编码过程是, 若资料为 a, 将其看成是一个大整数, 假设 a < n.... 如果 a >= n 的话, 就将 a 表成 s 进位 (s
标签: person_key RSA 算法
上传时间: 2013-12-14
上传用户:zhuyibin
prolog 找路例子程序: === === === === === === Part 1-Adding connections Part 2-Simple Path example | ?- path1(a,b,P,T). will produce the response: T = 15 P = [a,b] ? Part 3 - Non-repeating path As an example, the query: ?- path2(a,h,P,T). will succeed and may produce the bindings: P = [a,depot,b,d,e,f,h] T = 155 Part 4 - Generating a path below a cost threshold As an example, the query: ?- path_below_cost(a,[a,b,c,d,e,f,g,h],RS,300). returns: RS = [a,b,depot,c,d,e,g,f,h] ? RS = [a,c,depot,b,d,e,g,f,h] ? no ==================================
标签: Part connections example prolog
上传时间: 2015-04-24
上传用户:ljt101007
1.功能 利用广义逆求解无约束条件下的优化问题(C语言) 2.参数说明 int m : 非线性方程组中方程个数 int n : 非线性方程组中未知数个数 double eps1 : 控制最小二乘解的精度要求 double eps2 : 用于奇异值分解中的控制精度要求 double x[n] : 存放非线性方程组解的初始近似值X(0),要求各分量不全为0 int ka : Ka=max{m,n}+1 void (*f)() : 指向计算非线性方程组中各方程左端函数值的函数名(用户自编) void (*s)() : 指向计算雅可比矩阵的函数名 int ngin() : 函数返回一个标志值 3.文件说明 ngin.c函数文件 ngin0.c主函数文件
上传时间: 2013-12-23
上传用户:大三三
上下文无关文法(Context-Free Grammar, CFG)是一个4元组G=(V, T, S, P),其中,V和T是不相交的有限集,S∈V,P是一组有限的产生式规则集,形如A→α,其中A∈V,且α∈(V∪T)*。V的元素称为非终结符,T的元素称为终结符,S是一个特殊的非终结符,称为文法开始符。 设G=(V, T, S, P)是一个CFG,则G产生的语言是所有可由G产生的字符串组成的集合,即L(G)={x∈T* | Sx}。一个语言L是上下文无关语言(Context-Free Language, CFL),当且仅当存在一个CFG G,使得L=L(G)。 *⇒ 例如,设文法G:S→AB A→aA|a B→bB|b 则L(G)={a^nb^m | n,m>=1} 其中非终结符都是大写字母,开始符都是S,终结符都是小写字母。
标签: Context-Free Grammar CFG
上传时间: 2013-12-10
上传用户:gaojiao1999
数据结构 1、算法思路: 哈夫曼树算法:a)根据给定的n个权值{W1,W2… ,Wn }构成 n棵二叉树的集合F={T1,T2…,T n },其中每棵二叉树T中只有一个带权为W i的根结点,其左右子树均空;b)在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左、右子树上结点的权值之和;c)F中删除这两棵树,同时将新得到的二叉树加入F中; d)重复b)和c),直到F只含一棵树为止。
上传时间: 2016-03-05
上传用户:lacsx
本程序要求用户在控制台里输入非终极符,终结符与产生式,然后对用户输入的文法进行分析,得出first集 与follow 集,并打印出预测分析表用户决定是否继续进行句型分析,如继续则给出符号分析栈的实现,从而判断刚输入的句子是否为符合该文法的句子。 该程序遵循LL(1) 文法FIRST(A)的构造:是A的所有可能推导的开头终结符或可能的ε FOLLOW(A)是所有句型中出现在紧接A之后的非终结符或“#” 预测分析程序 构造LL(1)分析表 ⅰ,构造文法中所有元素的FIRST和FOLLOW集合 ⅱ,对文法G的每个产生式A->α执行第三步和第四步 ⅲ,对每个终结符a∈FIRST(α),把A->α加至M[A,a] ⅳ,若ε∈FIRST(α),则对任何b∈FOLLOW(A)把A->α加至M[A,b]中 ⅴ,把所有无定义的M[A,a]标上“出错标志”
上传时间: 2013-12-27
上传用户:jackgao
Newton-Raphson算法 介绍 在科学计算和财经工程领域,许多数值算法都是通用的(至少在理论上是),可广泛地用于解决一类问题。一个大家熟悉的例子就是Newton-Raphson例程,它可用来寻找方程 f(x)=0的数值解。标准的数学表达式f(x)表示f是变量x的函数,其通常的表达形式为f(x,a,b,...)=0,f被定义为多于一个变量的函数。在这种情况下,Newton-Raphson算法试图把x以外的变量固定并作为参数,而寻找关于变量x的数值解。 由于Newton-Raphson算法需要知道被求解函数的确切表达,其传统实现方法是直接将代码嵌入到客户应用程序中。这就使得算法的实现代码经过针对不同被求解函数的少量修改后在客户程序中反复出现。 同许多其它数学例程一样,Newton-Raphson算法的具体实现是应该与特定用户无关的。并且,重复编码在任何情况下都应该尽量避免。我们很自然地会想到把该类例程作为库函数来实现,以使客户程序可以直接调用它们。但是,这种实现方式必然会涉及到如何将用户自定义函数(Newton-Raphson 例程需要调用该函数)封装成可以作为参数传递的形式。
标签: Newton-Raphson 算法 工程领域 计算
上传时间: 2016-07-31
上传用户:gdgzhym
【问题描述】 在一个N*N的点阵中,如N=4,你现在站在(1,1),出口在(4,4)。你可以通过上、下、左、右四种移动方法,在迷宫内行走,但是同一个位置不可以访问两次,亦不可以越界。表格最上面的一行加黑数字A[1..4]分别表示迷宫第I列中需要访问并仅可以访问的格子数。右边一行加下划线数字B[1..4]则表示迷宫第I行需要访问并仅可以访问的格子数。如图中带括号红色数字就是一条符合条件的路线。 给定N,A[1..N] B[1..N]。输出一条符合条件的路线,若无解,输出NO ANSWER。(使用U,D,L,R分别表示上、下、左、右。) 2 2 1 2 (4,4) 1 (2,3) (3,3) (4,3) 3 (1,2) (2,2) 2 (1,1) 1 【输入格式】 第一行是数m (n < 6 )。第二行有n个数,表示a[1]..a[n]。第三行有n个数,表示b[1]..b[n]。 【输出格式】 仅有一行。若有解则输出一条可行路线,否则输出“NO ANSWER”。
标签: 点阵
上传时间: 2014-06-21
上传用户:llandlu
1. 在MATLAB中,分别对灰度图、真彩色图、索引彩色图,实现图像的读入、显示等功能。 2. 将真彩色图、索引彩色图转为灰度图,并保存到硬盘自己的文件夹下。 3. 如果按下面的操作读入索引彩色图像,请说明X、MAP两个矩阵中是如何保留图像中RGB彩色信息的。 [X,MAP]=imread(‘文件名’,‘格式’); 答:代码中X为读出的图像数据,MAP为颜色表数据(或称调色板,亦即颜色索引矩阵,对灰度图像和RGB彩色图像,该MAP为空矩阵)。一幅像素为m*n的RGB彩色图像(m,n为正整数,分别表示图像的高度和宽度),可以用m*n*3的矩阵来形容,3层矩阵中的每一个元素对应红、绿、蓝的数值,红绿蓝是三原色,可以组合出所有的颜色。 4,(提高题)实现真彩色图像的读入,请分R、G、B三个通道分别显示该图像的红、绿、蓝色图像。
上传时间: 2017-05-10
上传用户:mouroutao
#include "iostream" using namespace std; class Matrix { private: double** A; //矩阵A double *b; //向量b public: int size; Matrix(int ); ~Matrix(); friend double* Dooli(Matrix& ); void Input(); void Disp(); }; Matrix::Matrix(int x) { size=x; //为向量b分配空间并初始化为0 b=new double [x]; for(int j=0;j<x;j++) b[j]=0; //为向量A分配空间并初始化为0 A=new double* [x]; for(int i=0;i<x;i++) A[i]=new double [x]; for(int m=0;m<x;m++) for(int n=0;n<x;n++) A[m][n]=0; } Matrix::~Matrix() { cout<<"正在析构中~~~~"<<endl; delete b; for(int i=0;i<size;i++) delete A[i]; delete A; } void Matrix::Disp() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) cout<<A[i][j]<<" "; cout<<endl; } } void Matrix::Input() { cout<<"请输入A:"<<endl; for(int i=0;i<size;i++) for(int j=0;j<size;j++){ cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl; cin>>A[i][j]; } cout<<"请输入b:"<<endl; for(int j=0;j<size;j++){ cout<<"第"<<j+1<<"个:"<<endl; cin>>b[j]; } } double* Dooli(Matrix& A) { double *Xn=new double [A.size]; Matrix L(A.size),U(A.size); //分别求得U,L的第一行与第一列 for(int i=0;i<A.size;i++) U.A[0][i]=A.A[0][i]; for(int j=1;j<A.size;j++) L.A[j][0]=A.A[j][0]/U.A[0][0]; //分别求得U,L的第r行,第r列 double temp1=0,temp2=0; for(int r=1;r<A.size;r++){ //U for(int i=r;i<A.size;i++){ for(int k=0;k<r-1;k++) temp1=temp1+L.A[r][k]*U.A[k][i]; U.A[r][i]=A.A[r][i]-temp1; } //L for(int i=r+1;i<A.size;i++){ for(int k=0;k<r-1;k++) temp2=temp2+L.A[i][k]*U.A[k][r]; L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r]; } } cout<<"计算U得:"<<endl; U.Disp(); cout<<"计算L的:"<<endl; L.Disp(); double *Y=new double [A.size]; Y[0]=A.b[0]; for(int i=1;i<A.size;i++ ){ double temp3=0; for(int k=0;k<i-1;k++) temp3=temp3+L.A[i][k]*Y[k]; Y[i]=A.b[i]-temp3; } Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1]; for(int i=A.size-1;i>=0;i--){ double temp4=0; for(int k=i+1;k<A.size;k++) temp4=temp4+U.A[i][k]*Xn[k]; Xn[i]=(Y[i]-temp4)/U.A[i][i]; } return Xn; } int main() { Matrix B(4); B.Input(); double *X; X=Dooli(B); cout<<"~~~~解得:"<<endl; for(int i=0;i<B.size;i++) cout<<"X["<<i<<"]:"<<X[i]<<" "; cout<<endl<<"呵呵呵呵呵"; return 0; }
标签: 道理特分解法
上传时间: 2018-05-20
上传用户:Aa123456789