的算法
1. 演算法是什么主要的数学意义是什么
东风数学主要特征:1具有实用性,有较强的社会性;2算法程序化模型化;3寓理与算并且是开放的归纳系统
西方数学主要特征:1封闭的逻辑演绎体系季节化的算法;2古希腊的数字与神秘性结合;3将数学抽象化;4希腊数学重视数学在美学上的意义
希腊人在数学上的贡献主要是创立了平面几何,立体几何,平面与球面三角,数论。推广了算数与代数。
东方数学注重实用性社会性,使数学与我们的生活密切联系,二者都推动了现代数学的发展,都开创了数学的先河。
2. 谁能解释基因算法
基因算法 1975年 John Holland 学者所提出
成为非常着名的算法
Genetic Algorithm (GA)
基因算法 又称: 遗传算法
基因算法的概念
将问题编码成 染色体的型式
基因: 0 or 1
染色体: x = 0 1 0 0 1 1 0
设计 适应函数 (fitness function)
f(x) :适应函数,给一 x 可得一 适应值 f(x)
适应值愈高, 表愈适应环境
基因算法三个基本动作
选择(Selection)与复制 (Reproction):
X = 0 1 0 0 1 1 0
选择 适应值高 之染色体
复制成多个染色体
基因算法三个基本动作
交换 (crossover):
父:0 1 0 0 1 1 0 0 1 1 1 0 1 0
母:1 0 1 1 0 0 1 1 0 0 0 1 0 1
交换 基因算法三个基本动作
突变 (mutation):
0 1 0 0 1 1 0
1 选择 产生初始族群
计算适应値 复制 交换
突变 产生下一子代
是否满足 停止条件
产生最适个体
否是 基因算法 基本架构图
取材自:辅仁大学资管系林文修老师
选择与 基因操作阶段
评估阶段 初始阶段 生成下一世代
问题否是 生成母体
评估适应函数
符合停止条件?
选择 复制 交换 突变
开始 结束 编码 适应函数
领域知识 表现型 基因型
解码 基因算法 之流程图
取材自:辅仁大学资管系林文修老师
算法步骤 Step1:随机产生N个染色体
Step2:利用适应函数算出每个染色体的适应值
Step3 : 选择与复制: 选择 适应值高 之染色体 复制成多个染色体
Step4:利用交换及突变的动作产生新的染色体
Step5:测试新染色体的适应值是否达到门槛值
是:则 停止
否:则 Go to Step3
范例1 假设 x 在 (0,31) 之间,y = x ,求 x = ,y 可得最大值
将问题编码成 基因的型式
x : 0 0 0 0 0~1 1 1 1 1
设计 适应函数 (fitness function)
f (x) = y = x
范例1 <Step 1, 2, 3>
取4组染色体 x f (x) f (x) /m 复制个数
0 1 1 1 0 (14) 196 0.71 1
1 1 0 0 0 (24) 576 2.07 2
1 0 0 0 1 (17) 289 1.04 1
0 0 1 1 1 ( 7) 49 0.18 0
m = = 278
196+576+289+49
4 范例1 <Step 4.1> 交换
x f (x)
0 1 1 1 0 0 1 0 0 0 (8) 8 = 64
1 1 0 0 0 1 1 1 1 0 (30) 30 = 900
1 1 0 0 0 1 1 0 0 1 (25) 25 = 625
1 0 0 0 1 1 0 0 0 0 (16) 16 = 256
交换 交换 范例1 <Step 4.1> 交换
交换点 下一子代 x f (x)
0 1 1 1 0 2 0 1 0 0 0 8 64
1 1 0 0 0 2 1 1 1 1 0 30 900
1 1 0 0 0 4 1 1 0 0 1 25 625
1 0 0 0 1 4 1 0 0 0 0 16 256
范例1 <Step4.2>突变 (机率0.1)
4个染色体× 5个基因 = 20个基因
20 × 0.1 = 2 有2个基因要突变
1 st:0 1 0 0 0 0 1 1 0 0 (12)
第一个染色体之第3基因突变
3 rd:1 1 0 0 1 1 0 0 0 1 (17)
第三个染色体之第2基因突变
范例1 <Step5>
停止条件有三种可能方法:
设定繁衍代数 (ex:1000代)
收敛 (ex:最佳适应值已50代未改进)
适应值达到门槛
否则,Go to Step3
编码(coding)-1
运用基因演化算法的目的是求问题的解,在初始阶段的编码步骤是把与问题相关变数的值(或称为问题解)以特定编码的方式将其组合成一条染色体 (chromosome,或称为字串string),每一条染色体即代表一可能的问题解答,
最简单而且被广泛使用的是标准二进位编码法(Standard binary encoding)。这种编码法是将染色体内的每个基因用二进位码{0,1}来表示,而编码后的染色体即是一串由01组合字串(string)。
3. 等值算法和主析取范式法的区别
等值算法和主析取范式法的区别:算法不同,含义不同。
一、算法不同:已知:p->q┐pvq,左边┐(pq),┐((p->q)^(q->p)),(p^┐q)v(q^┐p),右边(pvq)^(┐pv┐q),(p^┐q)v(q^┐p)左边。
二、含义不同:¬(P∨Q)→R⇔¬(¬(PVQ))∨R⇔(PVQ)VR⇔PVQVR,使该式为真,则P,Q,R中至少有一项为真即可,因此所有成真赋值范式如下:PQR;001;010;011;100;101;110;111。
证明:
假设非永假式A(P1,P2,P3,Pn)有两个不同的主析取范式A1和A2则A<=>A1,A<=>A2,故A1<=>A2,由于A1和A2是两个不同的主析取范式故,至少存在一最小项mi,是mi只存在于A1和A2两者之一中,不妨设mi在A1中,而不再A2中。设mi在A1中有一组成真指派R,于是在R指派下,主析取范式A1为真,但在R指派情况下,主析取范式A2为假,这与A1<=>A2相矛盾。
4. 台湾的大学课程算法相当于大陆的哪门课
就是大陆学校里的算法设计与分析
5. Bresenham直线算法的演算方法
Bresenham直线算法描绘的直线。假设我们需要由 (x0, y0) 这一点,绘画一直线至右下角的另一点(x1, y1),x,y分别代表其水平及垂直坐标,并且 x1 - x0 > y1 - y0。在此我们使用电脑系统常用的坐标系,即x坐标值沿x轴向右增长,y坐标值沿y轴向下增长。
因此x及y之值分别向右及向下增加,而两点之水平距离为x1 − x0且垂直距离为y1-y0。由此得之,该线的斜率必定介乎于1至0之间。而此算法之目的,就是找出在x0与x1之间,第x行相对应的第y列,从而得出一像素点,使得该像素点的位置最接近原本的线。
对于由(x0, y0)及(x1, y1)两点所组成之直线,公式如下:
因此,对于每一点的x,其y的值是
因为x及y皆为整数,但并非每一点x所对应的y皆为整数,故此没有必要去计算每一点x所对应之y值。反之由于此线之斜率介乎于1至0之间,故此我们只需要找出当x到达那一个数值时,会使y上升1,若x尚未到此值,则y不变。至于如何找出相关的x值,则需依靠斜率。斜率之计算方法为m = (y1 − y0) / (x1 − x0)。由于此值不变,故可于运算前预先计算,减少运算次数。
要实行此算法,我们需计算每一像素点与该线之间的误差。于上述例子中,误差应为每一点x中,其相对的像素点之y值与该线实际之y值的差距。每当x的值增加1,误差的值就会增加m。每当误差的值超出0.5,线就会比较靠近下一个映像点,因此y的值便会加1,且误差减1。
下列伪代码是这算法的简单表达(其中的plot(x,y)绘画该点,abs返回的是绝对值)。虽然用了代价较高的浮点运算,但很容易就可以改用整数运算(详见最佳化一节):
function line(x0, x1, y0, y1)
int deltax := x1 - x0
int deltay := y1 - y0
real error := 0
real deltaerr := deltay / deltax // 假设 deltax != 0 (非垂直线),
// 注意:需保留除法运算结果的小数部分
int y := y0
for x from x0 to x1
plot(x,y)
error := error + deltaerr
if abs(error) ≥ 0.5 then
y := y + 1
error := error - 1.0
6. Algorithm算法的介绍
Algorithm算法本来是学术(如数学、程序)领域中的用语,然而当套用在音乐电子器材上的时候,它指的是:不同的数字效果器串接的顺序。 大部份的数字效果处理机都已含有各种算法。
7. 基因遗传算法是个啥求详解
基因遗传算法主要理论就是优胜劣汰的进化论。
它的主要精神是透过每次迭代都能比上次更进步,逐步演化,表现出针对一个目标函数寻求最佳解的过程。但是因为是随机搜索,所以虽然基因算法设置如交配、突变等来避免,却仍可能会陷入区域最佳解;也有可能最后得到的不是最佳解,只是在结束条件之前找到的最好的解。
基本的基因算法流程:
1.初始化族群:假定这个族群中有4条染色体,每条染色体有5个基因。
基因 -从目标函数的角度来看,就是自变数。
例如:用基因算法解目标函数 f(X,Y,Z)=2X+3Y-Z,
限制式为“X,Y,Z={1,0}”※,
求目标函数的最大值。
此题目对应到染色体的概念,就有3个基因,
三个基因分别代表X、Y、Z三个自变数的值。
染色体 -单一组解
例如:有很多符合目标函数限制式的(X,Y,Z),
其中一组是(x1,y1,z1)=(1,0,0),
函数值 f(x1,y1,z1)为2*1+3*0-0=2。
此例中,这组解当然不是最佳解,但它是这个题目的一个可行解。
*想象我们用直觉解题,拿张计算纸,把所有可行解都列出来,
然后比较所有我们想得到的可行解,最后可以得
到最佳的一组(X,Y,Z),因为它的f(X,Y,Z)为最大值。
族群 -多组解的集合
例如:族群中有四条染色体,这四条染色体就是四组可行解。
2.设定交配率和突变率:假定交配率a为0.6,突变率b为0.1。
交配率 -每个世代中,族群内有多少比率的染色体会互相交配。
突变率 -每个世代中,族群内的染色体有多少机率会突变。
3.迭代世代。
For iter=10 -假定做十次优胜劣汰。
3.1. 天择:在这个世代中,根据每条染色体的权重,随机选择母代来产生后代,
用以做下一个运算。
通常使用轮盘法来作天择,也就是说,
如果染色体甲的解是这个族群中最好的,
那么甲的权重就是最高的。反之则是最低的。
*轮盘法:假定这次族群为“[1,1,1],[0,1,1],[1,0,1],[1,0,0]”,
四条染色体的适应值分别是“4,2,1,2”,
适应值总和为4+2+1+2=9,
则四条染色体被选到的机会为“4/9,2/9,1/9,2/9”
=“0.4,0.2,0.1,0.2”。这个机会就是权重。
为了不让每次选择都选到同一条染色体,所以只是
“有比较高的机会”选择到“有更好适应值的染色体”,
而不是一定会选择这个好适应值的染色体。
3.2. 交配:母代产生后,依照交配率a,随机选择染色体来作交配。
比较交配前的子代1和交配后的子代2,在8条染色体中,
选择适应值最好的4条染色体留下来。
最简单的交配方式就是交换两条染色体的某个基因。
*例如,染色体S=[0,1,0],染色体Q=[1,1,1],交配位于首位的基因,
则可以得到新的两条染色体S'=[1,1,0]、Q'=[0,1,1]。
3.3. 突变:交配完后,依照突变率b,决定这一个世代要不要突变。
假设要突变,则若突变后子代3的适应值比突变前子代2好,就用子代3取代子代2。
最简单的突变方式就是随机选择某条染色体的某个基因,改变它。
*例如,随机选中染色体M=[1,0,1],随机突变中间的基因,
得到新染色体M'=[1,1,1] 。
3.4. 更新:最后得到的族群中,所有染色体的适应值。
END For
4. 比较所有染色体的适应值,列出最好的那一个染色体为算法最后的解。
※一般使用二元染色体,限制染色体的基因只会等于零或壹。
在此处只是方便解说,所以直接把限制式设成零和壹。
假设我们用二元染色体来解目标函数f(x)=x^2的最大值,限制式为0<=x<=7,x为整数。
用基因算法求解,则需要产生log_2(8)=3个基因,
简单说来,就是用二进位表示一个有限整数值。
(也可以把基因想成电脑的位元数,我们用三个位元来表示一个有限的整数值。)
这样做的话,突变的方法就是直接把某个基因转成零或壹,
不用设定要更改多少值(例如加3、加100或减0.8)(基因算法应该一般不会这样做);
计算适应值时,互相转换二进位与十进位。
基因三个,则可以表达:
111=2^2+2^1+2^0=4+2+1=7
110=2^2+2^1=4+2=6
101=2^2+2^0=4+1=5
100=4
001=1
000=0
011=3
010=2
8. 进化论算法
进化首先是生物学的概念。根据达尔文“生物进化论”的观点:生物的发展和演变是根据自然选择的方式进行。生物机能和形态的变化,可从它所处的环境中寻找解释。生物的进化过程也许完全不是随机的,高级生物的进化过程很可能是“合情的产生与检验”的过程,即也许自然界掌握着一种很高明的“自动程序设计”方法进行遗传“程序”的书写。 模仿上述生物进化论所形成的应用算法称为进化论算法。[1]
9. 等化器的可适性算法(for MSE)
通讯传输等化器设计,很重要的就是要找出最佳的tap-delay-line filter系数,找出一组可以误差最小的系数。而在时变(time-invariant)通道中,通道状况随时在改变,所以在设计等化器时便要因应不同的通道状况,随时调整计算出使误差最小的系数,这种算法变称为adaptive algorithms。 可适性(adaptive)算法的好坏可由下列几项标准判定:
收敛速度:算法在经过多少次重复运算后可以相当接近最后想要的结果
每次重复运算(iteration)的计算量
错误调整(misadjustment)的大小
LMS算法
LMS算法通常包含两部分(由以下两者相互运作行程一回授(feedback loop)
率波程序(filtering process): 1.计算线系滤波器输出对输入信号的反应
2.比较输出信号和想要的信号(desire signal)得到预测误差
可适性程序(adaptive process):对于估测误差,自动调整等化器参数 d(n):为想得到的信号 u(n):等化器输入信号 y(n):等化器输出信号 w(n):可时变的tap-delay line filter系数
由于LMS算法不需要事先求得u(n)的自相关函数(ACF)及u(n)和d(n)的交相关函数(CCF),因此在运算上简化许多,也由于w(n)是e(n)及u(n)的 函式(e(n)u(n)是随机程序),所以LMS算法是一统计滤波器(stochastic filter)。
在设计LMS-based可适性滤波器时,如何决定step-size u使LMS算法收敛是一项相当重要的议题 当0<u<2/ŋ时,LMS算法收敛(ŋ_max是u*u的最大特征值 RLS算法对每个n值,我们根据W[N]来估计新的最小平方差解,我们在用w(n)来寻找,来表示新的w(n+1)估计值时,希望避免LS算法全部从头重做的情况,用RLS算法的好处是我们不用将矩阵反置(inverse),如此一来可以节省运算POWER
算法:
1.初始条件:P(0)=δ^(-1)˙I , w(0)=0 ,δ是一大于零很小的常数
2.for n=1,2,.... 计算k(n),z(n),w(n)
LMS和RLS两者比较:
1.LMS 算法的运算量少,为L 的等级(L为滤波器的长度),但收敛速度受到输入信号的统计特性所影响,需花较多时间达到要求的收敛性能
2.RLS 算法虽然收敛速度快,但却需要巨大的运算量,为L平方的等级。
10. 离散数学 等值算法
设p:派赵出国,q:派钱出国,r:派孙出国,s:派李出国,t:派周出国。则各条件分别符号化为:
(1)p→q,(2)(sVt),(3)(qA7r)V(-q^r),(4)(rAs)V(→rA-s),(5)1-+(p^q) 要求满足各条件,
因而要求(1)~(5)的合取式为真.设:A≈(p→q)A(sV1)八((q八→r)V(→qλr))A((rAs)V(r八-s))∩(t→(p^q))
为了求出各派遣方案,应求出A的析取范式,最好是主析取范式,主析取范式中含的极小项个数为派遣方案数,由各极小项的成真赋值给出如何派法.所以要求出A的主析取范式。
下面给出求A的主析取范式的主要步骤:
易知,成真赋值为00110与11001。
方案1:孙、李出国,而赵.钱、周不去。
方案2:赵、钱、周出国,而孙、李不去。
(10)的算法扩展阅读
随着信息时代的到来,工业革命时代以微积分为代表的连续数学占主流的地位已经发生了变化,离散数学的重要性逐渐被人们认识。离散数学课程所传授的思想和方法,广泛地体现在计算机科学技术及相关专业的诸领域,从科学计算到信息处理,从理论计算机科学到计算机应用技术,从计算机软件到计算机硬件,从人工智能到认知系统,无不与离散数学密切相关。
由于数字电子计算机是一个离散结构,它只能处理离散的或离散化了的数量关系, 因此,无论计算机科学本身,还是与计算机科学及其应用密切相关的现代科学研究领域,都面临着如何对离散结构建立相应的数学模型;又如何将已用连续数量关系建立起来的数学模型离散化,从而可由计算机加以处理。
离散数学是传统的逻辑学,集合论(包括函数),数论基础,算法设计,组合分析,离散概率,关系理论,图论与树,抽象代数(包括代数系统,群、环、域等),布尔代数,计算模型(语言与自动机)等汇集起来的一门综合学科。离散数学的应用遍及现代科学技术的诸多领域。
离散数学也可以说是计算机科学的基础核心学科,在离散数学中的有一个着名的典型例子-四色定理又称四色猜想,这是世界近代三大数学难题之一,它是在1852年,由英国的一名绘图员弗南西斯·格思里提出的,他在进行地图着色时,发现了一个现象,“每幅地图都可以仅用四种颜色着色,并且共同边界的国家都可以被着上不同的颜色”。
那么这能否从数学上进行证明呢?100多年后的1976年,肯尼斯·阿佩尔(Kenneth Appel)和沃尔夫冈·哈肯(Wolfgang Haken)使用计算机辅助计算,用了1200个小时和100亿次的判断,终于证明了四色定理,轰动世界,这就是离散数学与计算机科学相互协作的结果。