Tag: algorithm

如何确定一个链表是否只有一个循环使用两个内存位置

有没有人知道一个algorithm来查找链表是否仅使用两个variables来遍历链表本身。 假设你有一个链接的对象列表,不pipe对象是什么types。 我有一个指针的链接列表中的一个variables的头,我只给了一个其他variables遍历列表。 所以我的计划是比较指针值,看是否有指针是相同的。 名单是有限的大小,但可能是巨大的。 我可以设置两个variables的头部,然后遍历列表与其他variables,总是检查是否等于另一个variables,但是,如果我打了一个循环,我永远不会离开它。 我认为它必须处理不同的遍历列表和比较指针值的速度。 有什么想法吗?

有什么办法来检测像putjbtghguhjjjanikastring?

人们在我的网站上search,其中一些search是这些search: tapoktrpasawe qweasd qwa as aıe qwo ıak kqw qwe qwe qwe a 我的问题是有什么办法来检测类似于上面的string? 我想这是不可能的100%,但任何解决scheme将受到欢迎:) 编辑:我的意思是“乱码search”。 例如,有些人在我的search引擎中search“asdqweasdqw”,“paykaprkg”,“iwepr wepr ow”等string,我想检测乱码search。 search结果是0还是其他什么都没关系。 我不能使用这个逻辑。 如果我考虑“正规的话”,一些新的品牌或产品将被忽略。 感谢您的帮助

懒洋洋地产生排列

我正在寻找一种algorithm来生成一个集合的排列,这样我就可以在Clojure中创build一个懒惰的列表。 即我想迭代一个排列列表,其中每个排列不被计算,直到我请求它,所有的排列不必一次存储在内存中。 另外,我正在寻找一个给定一个集合的algorithm,它将返回该集合的“下一个”排列,以这种方式重复调用自己的输出函数将循环所有排列的原始集合,在有些命令(顺序是什么并不重要)。 有这样一个algorithm吗? 我所看到的大部分排列生成algorithm倾向于一次生成它们(通常是recursion的),这不会扩展到很大的集合。 在Clojure(或其他function语言)中的实现将是有益的,但我可以从伪代码中找出它。

ssl证书如何validation?

安全validationssl证书所需的一系列步骤是什么? 我(非常有限)的理解是,当你访问https站点时,服务器向客户端(浏览器)发送一个证书,浏览器从该证书获取证书的颁发者信息,然后用它来联系发布者,证书的有效性。 这到底如何? 那么这个过程如何使它免于中间人攻击呢? 什么阻止了一些随机的人build立他们自己的validation服务来使用中间人攻击,所以一切看上去都是安全的?

find相似图像的algorithm

我需要一个algorithm,可以确定两个图像是否“相似”,并识别类似的颜色,亮度,形状等模式。我可能需要一些指针,人类大脑用什么参数来“分类”的图像。 .. 我曾经看过基于hausdorff的匹配,但似乎主要是为了匹配转换的对象和形状的图案。

加载骰子的数据结构?

假设我有一个n边加载的模子,当我滚动它时,每个边k有一些概率pk 。 我很好奇,如果有一个很好的algorithm来静态存储这个信息(即对于一组固定的概率),这样我就可以高效地模拟一个随机掷骰子。 目前,我有一个O(LG)的解决scheme,这个问题。 这个想法是为所有k存储一个前k个边的累积概率表,它们在[0,1)范围内产生一个随机实数,然后在表上进行二分search,得到最大的累积索引值不大于选定的值。 我更喜欢这个解决scheme,但运行时不考虑概率似乎很奇怪。 特别是在极端情况下,一方面总是出现或者价值是均匀分布的,可能使用一种简单的方法在O(1)中生成滚动的结果,尽pipe我的解决scheme仍然需要对数很多的步骤。 有没有人有任何build议,如何解决这个问题的方式是在某种程度上“适应”在运行时? 编辑 :基于这个问题的答案,我写了一篇文章,描述了这个问题的许多方法 ,以及他们的分析。 它看起来像Vose的别名方法的实施给予Θ(n)预处理时间和O(1)时间每个die roll,这真是令人印象深刻。 希望这是对答案中包含的信息的有益补充!

纯function编程的效率

有没有人知道什么是纯粹的function编程,而不是命令性地(即允许副作用)编程时可能发生的最糟糕的渐近放缓? 来自itowlson的评论澄清 :有没有什么问题最着名的非破坏性algorithm比最好的已知破坏性algorithm渐近地差,如果是这样,多less?

什么algorithm在地图上计算从点A到点B的方向?

地图提供者(如Google或Yahoo! Maps)如何提供方向? 我的意思是,他们可能有某种forms的真实世界的数据,当然包括距离,但也可能是像驾驶速度,人行道,列车时刻表等等。但假设数据是一个更简单的格式,比如一个非常大的有向图边缘权重反映距离。 我希望能够快速计算从一个任意点到另一个点的方向。 有时候这些点会在一起(在一个城市内)靠近,而有时它们会相距甚远(越野)。 像Dijkstraalgorithm这样的graphicsalgorithm将不起作用,因为graphics是巨大的。 幸运的是,像A *这样的启发式algorithm可能会起作用。 但是,我们的数据是非常有条理的,也许某种分层的方法可能工作? (例如,存储相距很远的某些“关键”点之间的预先计算的方向以及一些局部方向,然后两个远处点的方向将涉及到关键点的局部方向,到另一关键点的全局方向,然后是局部方向再次。) 实际中使用了哪些algorithm? PS。 这个问题的动机是在在线制图方向上发现怪癖。 与三angular形不等式相反,有时Google Maps会认为XZ比XYZ中的中间点更长,而且更远。 但是也许他们的行走方向也可以优化另一个参数呢? PPS。 这是另外一个违反三angular形不平等的情况,对我来说,他们使用某种分层的方法: XZ和XYZ 。 前者似乎使用着名的塞瓦斯托波尔大道,尽pipe它稍微偏离了方向。 编辑 :这些例子都没有工作了,但都在原来的职位时。

提高交错列等距网格上点击检测的性能

我正在研究一个等距游戏引擎,并且已经创build了一个像素完美点击检测algorithm。 访问该项目,并注意点击检测能够检测到磁贴的哪个边缘被点击。 它也检查y指数点击最​​前面的瓷砖。 我目前的algorithm解释: 等轴网格由100 * 65像素的平铺图像组成。 TileW=100, TileL=50, tileH=15 地图由三维数组map[z][y][x] 。 平铺中心点(x,y)计算如下: //x, y, z are the position of the tile if(y%2===0) { x-=-0.5; } //To accommodate the offset found in even rows this.centerX = (x*tileW) + (tileW/2); this.centerY = (y*tileL) – y*((tileL)/2) + ((tileL)/2) + (tileH/2) – (z*tileH); 确定鼠标是否位于贴图上给定区域内的原型函数: Tile.prototype.allContainsMouse = function() { […]

连接4检查赢取algorithm

我知道有关连接4检查赢了很多的问题。 问题是,大多数其他algorithm使我的程序有运行时错误,因为他们试图访问我的数组之外的索引。 我的algorithm是这样的: private int checkWin(int[][] gridTable,int rowNum,int colNum, int maxRow, int maxCol) { // For checking whether any win or lose condition is reached. Returns 1 if win or lose is reached. else returns 0 // gridTable[][] is the game matrix(can be any number of rows and columns between 4 and 40) // colNum […]