
算法相关
文章平均质量分 58
shunan
这个作者很懒,什么都没留下…
展开
-
字符串匹配之有限自动机&kmp算法
由于传统的字符串匹配效率不高,大概思路:从主串的第pos个字母起和模式的第一个字符比较之,若相等,则继续逐个比较后续字符;否则从主串的下一个字符起再重新和模式的字符比较之,以此类推,直到匹配完主串的每一个子串,如果主串有n个字符,模式串有m(m kmp其实是在有限自动机的基础上改进过来的,因此先考虑有限自动机。它的主要改进点是,当出现主串和模式串某个字符比较时不相等时,不返回到主串上次比原创 2006-11-29 18:37:00 · 4587 阅读 · 0 评论 -
构造voronoi图的数据结构
Typedef struct Node{ Int x; Int y;}MyNode;Typedef struct Nodel{ Int start; Int num; Edge *firstEdge;}MyNodel;Typedef struct Edge{Int mainNum;Int adhereNum;Double a原创 2007-05-28 14:59:00 · 3971 阅读 · 0 评论 -
李开复:算法的力量
李开复:算法的力量 算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门就产生了一种误解,认为学计算机就是学各转载 2007-05-28 16:28:00 · 748 阅读 · 0 评论 -
Delaunay三角剖分
最近点意义下的Voronoi图的直线对偶图就是Delaunay三角剖分,因此可以把上上篇描述的构造Voronoi图的分治算法用于Delaunay三角剖分。增量算法:易于实现,使用广泛,适合小规模点集的三角化。具体过程如下:1 遍历所有散点,生成一个包含所有散点的大三角形(顶点不在点集中)2 有未处理过的点p,插入之,否则结束算法,退出3 在已剖分好的三角网中找出包含点原创 2007-05-28 15:18:00 · 1870 阅读 · 0 评论 -
构造voronoi图分治算法
使用前篇介绍的数据结构输入:坐标平面内的n>1个无重合的点组成的点集P输出:构造好的Voronoi图V(P) 1 对这n个点按照x坐标值为主关键字,y坐标值为次关键字进行排序2 开始构造:2.1 if n==2 then 构造两个点的Voronoi图,并返回2.2 if原创 2007-05-28 15:08:00 · 7621 阅读 · 2 评论 -
SIMD-BT 模型下的并行求点在多边形中
在树连接的SIMD机器上并行化上述算法: 假定Q有n条边,系统中有n个处理器p1,…,pn排成二叉树,编号从根开始自上而下,自左向右逐级向下推进。每一个处理器存储Q的一条边(由两个端点的笛卡尔坐标表示),点p的坐标为(xp,yp)。 一开始根读进点p坐标,然后传播给其他处理器,当pj接收到p的坐标,它确定:p为端点的射线是否和Q的边ej相交;若相交则pj产生‘1’输出,原创 2006-12-23 19:29:00 · 932 阅读 · 0 评论 -
凸壳串行算法
关于凸壳的串行算法,可以说有好多种,有时间复杂度O(n^2)的,也有O(nlogn)的,下面依次介绍几种算法:1,我认为最土的一种方法,时间复杂度为O(n^2) 叫做 卷包裹法由Chand 和 Kapur 于1970年提出,基本思想:首先过y坐标最小的点p1画一条水平直线L,显然该点是凸壳的一个顶点。然后L绕p1按逆时针方向旋转,碰到S(顶点集合)中的第二个点p2时,直线绕p2按逆时针旋转原创 2006-12-20 19:46:00 · 5357 阅读 · 0 评论 -
判断点在多边形中
有一个n边形,顶点为p1,p2,...,pn;给定一个已知点p,判断p在此多边形内还是外。预备知识: 两线段相交的定义,如果一条线段的两端分别处在另一条线段的两端,则此两线段相交判断2点在线段的两侧可以用向量的叉乘实现!基本步骤:1,过p点垂直向上作一条射线2,判断此射线与n边形n条边的交点3,把所有交点相加,如果是奇数则说明在多边形内,否则在多边形外思路非常的简单,另原创 2006-12-20 17:34:00 · 1292 阅读 · 0 评论 -
判断点是否在一个三角形内部
之前有了解过这方面的东西,在图形编辑器中也用到了这个判断,当时总结出来的结果是要4次向量叉乘。同时在网上粗略的搜了一下,貌似也没找到有更好的方法了(也许是自己没找到,^-^).下面先说一下用4次向量叉乘的方法:设三角形三点A(x1,y1)B(x2,y2)C(x3,y3),已知点M(x,y),1,先求出三个向量MA,MB,MC. 2,计算MA*MB,MA*MC; MB*MC,MB*MA;原创 2006-12-08 13:50:00 · 7731 阅读 · 3 评论 -
voronoi图分治算法并行化
目前已经存在的构造Voronoi图的并行算法有两种方式:一种是使用与平面点集同数量级的p=O(n)个处理器个数,对基于MPI的并行算法,能达到O(lgn*lgn*lgn)的复杂度,比较适用于对时间要求非常高的场合,显然这样的处理环境成本也是非常的高,而当平面点集数量较少时,也体现不出此类算法的优越性,因为通信会占用掉大部分的时间,举个bitonic sort的例子,应该可以说明此类情况,由于原创 2007-05-28 15:14:00 · 2841 阅读 · 0 评论