在计算机科学中,您所学到的概念只有在展示出来之后才有用。问题是需要解决的主要问题,因此算法是对如何解决问题的简要计划。因此,它是计算机科学界的主要关注点。
我认为计算机科学的几乎每个方面都需要算法。下面向我介绍一下计算机科学的各个领域以及它们使用的算法。
自动机
动力装置构造。将非确定性自动机转换为确定性自动机的算法。
Todd-Coxeter算法。生成陪伴集的过程。
人工智能
Alpha-beta。Alpha最大值加Beta最小值。广泛用于棋盘游戏。
蚂蚁算法。蚁群优化是一组受蚂蚁行为启发而解决问题,找到两个位置之间最佳路径的算法。
DE(差分进化)。解决切比雪夫多项式拟合问题。
在线产品评论中对讽刺句的半监督识别。识别推文或在线文档中的recognize窃或反讽的算法。这样的算法对于类人机器人编程也必不可少。
计算机视觉
缩影。用较小的图像或视频表示图像或视频。
计数图像中的对象。使用连接组件标记算法首先标记每个对象,然后对对象计数。
O'Carroll算法。通过对昆虫视力的数学转换,该算法评估了如何避开物体。
遗传算法
他们使用三个运算符。选择(选择解决方案),复制(使用选择的解决方案构建其他解决方案),替换(如果更好,请替换解决方案)。
健身比例选择。也称为轮盘选择,是用于选择解决方案的功能。
截断选择。选择解决方案的另一种方法,按适用性排序。
比赛选择。通过锦标赛选择最佳解决方案。
随机通用抽样。将个体映射到直线的连续段,以使每个个体的段在大小上与其适应度完全相同,就像在轮盘赌选择中一样。
神经网络
霍普菲尔德网。循环人工神经网络,用作具有二进制阈值单元的内容可寻址存储系统。他们收敛到稳定状态。
反向传播。用于训练人工神经网络的监督学习技术。
自组织地图(Kohonen地图)。使用无监督学习对神经网络进行训练,以生成训练样本的低维(2D,3D)表示形式。适用于可视化高维数据。
生物信息学
Needleman-Wunsch。对两个序列(蛋白质或核苷酸序列)执行全局比对。
史密斯沃特曼。Needleman-Wunsch的变体。
压缩
无损压缩算法
Burrows-Wheeler变换。预处理对于改善无损压缩很有用。
放气。ZIP使用的数据压缩。
增量编码。辅助压缩经常发生顺序数据的数据。
增量编码。Delta编码应用于字符串序列。
LZW。(Lempel-Ziv-Welch)。LZ78的继承者。从要压缩的数据构建转换表。由GIF图形格式使用。
LZ77和78. LZ进一步变化的基础(LZW,LZSS等)。他们都是字典编码员。
LZMA。Lempel-Ziv-Markov链算法的缩写。
LZO。专注于速度的数据压缩算法。
PPM(通过部分匹配进行预测)。基于上下文建模和预测的自适应统计数据压缩技术。Shannon-Fano编码。根据一组符号及其概率构造前缀代码。
截断的二进制文件。熵编码通常用于具有有限字母的均匀概率分布。改善二进制编码。
游程编码。主压缩用出现的次数替换相同代码的序列。
Sequitur。字符串的增量语法推断。
EZW(嵌入式零树小波)。渐进编码可将图像压缩成精度更高的比特流。也可能是有损压缩效果更好。
熵编码
编码方案,将编码分配给符号,以便使码长与符号的概率匹配。
霍夫曼编码。利用相对字符频率进行简单的无损压缩。
自适应霍夫曼编码。基于霍夫曼编码的自适应编码技术。
算术编码。高级熵编码。
范围编码。与算术编码相同,但查看方式略有不同。
一元编码。代表n代表n的数字,n代表零。埃里亚斯(Elias)三角洲,伽玛,欧米茄编码。编码正整数的通用代码。斐波那契编码。将正整数编码为二进制代码字的通用代码。
Golomb编码。熵编码的形式,最适合遵循几何分布的字母。
大米编码。 熵编码的形式,最适合遵循几何分布的字母。
有损压缩算法
线性预测编码。通过以压缩形式表示语音数字信号的频谱包络来进行有损压缩。
A-law算法。标准压扩算法。
Mu-law算法。标准模拟信号压缩或压扩算法。
分形压缩。使用分形压缩图像的方法。
转换编码。像音频信号或摄影图像这样的数据的数据压缩类型。
矢量量化。经常用于有损数据压缩的技术。
小波压缩。数据压缩形式非常适合图像和音频压缩。
密码学
密钥(对称加密)
使用密钥(或一对直接相关的密钥)进行解密和加密。
高级加密标准(AES) ,又称Rijndael算法作为。
河豚。由Schneier设计为通用算法,旨在替代老化的DE。
数据加密标准(DES),以前是DE算法。
IDEA(国际数据加密算法)。以前是IPES(改进的PES),是DES的另一种替代物。由PGP(非常好的隐私)使用。使用键对拆分为块的数据执行转换。
RC4或ARC4。流密码在协议中广泛使用,例如用于Internet流量的SSL和用于无线网络的WEP。
微小的加密算法。使用某些公式易于实现分组密码算法。
PES(建议的加密标准)。 IDEA的旧名称。
公钥(非对称加密)
使用一对分别称为公钥和私钥的密钥。公钥加密消息,只有私钥允许解密消息。
DSA(数字签名算法)。生成带有质数和随机数的密钥。被美国机构使用,现在是公共领域。
ElGamal。基于Diffie-Hellman,由GNU Privacy Guard软件,PGP和其他密码系统使用。
RSA(Rivest,Shamir,Adleman)。广泛用于电子商务协议。使用质数。
Diffie-Hellman(Merkle)密钥交换(或指数密钥交换)。在不受保护的通信信道上共享秘密的方法和算法。由RSA使用。
NTRUEncrypt。利用带卷积乘法的多项式环。
消息摘要功能
消息摘要是由哈希函数处理的任意长度的字符串或数据加密后得到的代码。
MD5。用于检查CD或DVD的ISO映像。
RIPEMD(RACE完整性基元评估消息摘要)。基于MD4的原理,与SHA-1类似。
SHA-1(安全哈希算法1)。SHA组最常用的相关加密哈希函数。由NSA机构设计。
HMAC。密钥哈希消息认证。
老虎(TTH)。通常用于老虎树哈希。
使用伪随机数的密码,
请参见。随机数发生器
密码技术
秘密共享,秘密分割,密钥分割,N个算法中的M个。
Shamir的秘密共享计划。这是基于多项式插值的公式。
布拉克利的秘密分享计划。本质上是几何的,秘密是m维空间中的一个点。
其他技术和解密
子集总和。给定一组整数,任何子集总和等于零吗?用于密码学。
Shor的算法。能够根据非对称函数(例如RSA)解密代码的量子算法。
几何
礼品包装。确定一组点的凸包。
Gilbert-Johnson-Keerthi距离。确定两个凸形之间的最小距离。
格雷厄姆扫描。确定平面中一组点的凸包。
线段相交。查找线是否与扫掠线算法相交。
指向多边形。测试给定点是否在给定范围内。
射线/平面相交。
*线/三角形相交。*射线/平面相交的特殊情况。
隐式曲面的多边形。用多边形表示近似隐式曲面。
三角剖分。从角度到已知点的其他点到点的距离的评估方法。
图
3D Surface Tracker技术。在考虑到隐藏表面的情况下在视频的墙壁上添加图像的过程。
贝尔曼福特。计算加权图中的最短路径(其中某些边缘权重可能为负)。
Dijkstra的算法。使用非负边权重计算图形中的最短路径。
摄动方法。一种计算图中局部最短路径的算法。
Floyd-Warshall。在加权有向图中解决所有对最短路径问题。
弗洛伊德的周期发现。查找迭代中的循环。
约翰逊。稀疏加权有向图中的所有对最短路径算法。
克鲁斯卡尔。查找图形的最小生成树。
普里姆的。查找图形的最小生成树。也称为DJP,Jarník或Prim–Jarník算法。
* Boruvka。*查找图形的最小生成树。
福特福克森。计算图中的最大流量。
埃德蒙兹·卡普。实施福特福克森。
无阻塞最小跨越开关。用于电话交换。
Woodhouse-Sharp。查找图形的最小生成树。
基于弹簧。图形绘制算法。
匈牙利。寻找完美匹配的算法。
着色算法。图着色算法。
最近的邻居。查找最近的邻居。
拓扑排序。对有向无环图进行排序,以使每个节点都位于其具有边的所有节点之前(根据方向)。
Tarjan的离线最不常见祖先算法。为树中的节点对计算最低的公共祖先。
图形
布雷森汉姆的线算法。使用决策变量在2个指定点之间绘制一条直线。
风景绘制3D风景。
* DDA线算法。*使用浮点数学在2个指定点之间绘制一条直线。
洪水填充。用颜色填充连接的区域。
图像还原。恢复照片,改善图像。
吴小林的线路算法。线抗锯齿。
画家的算法。检测3D风景的可见部分。
射线追踪。逼真的图像渲染。
Phong底纹。3D计算机图形中的照明模型和插值方法。
Gouraud底纹。在3D对象的整个表面上模拟光和颜色的不同影响。
扫描线渲染。通过移动假想线构造图像。
全局照明。考虑其他物体的直接照明和反射。
插值。构造新的数据点,例如数字变焦。
再合成器。删除照片上的对象,然后重建Photoshop和The Gimp使用的背景。重新合成器教程。
斜率截距算法。它是用于绘制直线的斜率截距公式的实现。
样条插值。减少龙格现象的错误。
3D Surface Tracker技术。 在视频中的墙壁上添加图像或视频,但要考虑隐藏的表面。
列表,数组和树
正在搜寻
字典搜索。参见预测搜索。
选择算法。查找列表中的第k个最大项目。
二进制搜索算法。在排序列表中找到一个项目。
广度优先搜索。逐级遍历图形。
深度优先搜索。遍历图一个分支。
最佳优先搜索。使用优先级队列以可能的重要性顺序遍历图形。
一树搜索。*最好优先搜索采用启发式方法来提高速度的特殊情况。
统一成本搜索。树状搜索可找到成本变化最小的成本最低的路线。
预测性搜索。类似于二进制的搜索,其中搜索项的大小与搜索中的高值和低值有关。
哈希表。将关键字与未排序集合中的项目相关联,以在线性时间内检索它们。
内插搜索。参见预测搜索。
排序
二叉树排序。二叉树的排序,增量式,类似于插入排序。
Bogosort。效率低下的随机性办公桌卡。
气泡排序。对于每对索引,如果顺序混乱,请交换项目。
桶排序。将列表拆分为存储桶,然后分别对它们进行排序。概括信鸽排序。
鸡尾酒排序(或双向气泡,振动筛,波纹,往复运动,欢乐时光排序)。气泡排序的变体,它们在两个方向上均通过列表进行双向排序。
梳子排序。气泡排序的有效变化消除了“乌龟”,即靠近列表末尾的小值,并在两个值之间使用了空格。
计数排序。它使用列表A中的数字范围来创建此长度的数组B。B中的索引用于计算A中有多少个元素的值小于i。
侏儒排序。与插入排序类似,只是将元素移至适当位置是通过一系列交换完成的,如冒泡排序。
堆排序。将列表转换为堆,继续从堆中删除最大的元素,并将其添加到列表的末尾。
插入排序。确定当前项目在已排序项目列表中的位置,然后将其插入其中。
Introsort。还是内省型的。它从快速排序开始,并在特定递归级别切换到堆排序。
合并排序。分别对列表的前半部分和后半部分进行排序,然后合并排序后的列表。
薄煎饼排序。反转序列中某些前缀的元素。
鸽眼排序。按顺序将要排序的数组的所有元素填充到一个空数组中。
邮递员排序。邮局使用的桶分类的分层变体。
快速排序。将列表分为两部分,第一个列表中的所有项目都排在第二个列表中的所有项目之前。然后对两个列表进行排序。通常是选择方法。
基数排序。对与项目关联的键进行排序,或者通过处理数字对整数排序。
选择排序。选择剩余的最小元素,将其添加到排序列表的末尾。
外壳排序。通过使用值之间的间隙改善插入排序。
Smoothsort。参见heapsort。
随机排序。参见bogosort。
还有很多...