Articles of algorithm

hough变换 – javascript – node.js

所以,我试图实现霍夫变换,这个版本是基于次要属性的1维(它的所有变暗减less到1个昏暗的优化)版本。 封闭的是我的代码,具有示例图像…input和输出。 明显的问题是我做错了什么。 我翻了三倍检查我的逻辑和代码,它看起来也很好,我的参数。 但显然我错过了什么。 注意,红色像素应该是椭圆中心,而蓝色像素是要去除的边缘(属于符合math方程的椭圆)。 另外,我不感兴趣的openCV / matlab / ocatve /等..使用(没有任何反对他们)。 非常感谢你! var fs = require("fs"), Canvas = require("canvas"), Image = Canvas.Image; var LEAST_REQUIRED_DISTANCE = 40, // LEAST required distance between 2 points , lets say smallest ellipse minor LEAST_REQUIRED_ELLIPSES = 6, // number of found ellipse arr_accum = [], arr_edges = [], edges_canvas, […]

我如何更快地匹配这个文本?

我正在为名字build立一个自动build议。 当用户在文本框中input时,它会碰到服务器并运行: var names = [ list of 1000 names ]; //I have a list of 1000 names, this is static. var query = 'alex'; var matched_names = []; //This is when it gets slow…. names.forEach(function(name){ if(name.indexOf(query) >= 0){ matched_names.push(name); } }); return matched_names; 我怎样才能使这个更快? 我正在使用Node.js

像维基百科上所说的那样实现LLLalgorithm,但却陷入严重的问题

我不确定我的问题与编程有关,或与LLLalgorithm的概念有关,以及维基百科上提及的内容。 我决定实施LLLalgorithm,因为它已经写在维基百科上 (逐行/逐行)实际学习algorithm,并确保它是真正的工作,但我得到意想不到或无效的结果。 所以,我使用JavaScript(编程语言)和node.js(JavaScript引擎)来实现它, 这是获取完整代码的git存储库 。 长话短说,K的值超出范围,例如当我们只有3个向量(数组大小为3,因此索引的最大值将是2)时,K的值将超出范围,但是k变为3并且是无意义的。 我的代码是维基百科上提到的algorithm的一步一步(逐行)实现,我所做的只是实现它。 所以我不是什么问题。 // ** important // {b} set of vectors are denoted by this.matrix_before // {b*} set of vectors are denoted by this.matrix_after calculate_LLL() { this.matrix_after = new gs(this.matrix_before, false).matrix; // initialize after vectors: perform Gram-Schmidt, but do not normalize var flag = false; // invariant var k […]

原生JavaScriptsorting执行比实施mergesort和quicksort慢

我已经实现了一个mergesort和一个quicksort来比较它们与原生JavaScriptsorting。 对于quicksort我试图使用这个algorithm: 在YouTube上查看algorithm 。 两种algorithm都使用尽可能less的内存,对于合并sorting,为每个recursion调用传递一个辅助数组(以避免开销),并为快速sorting开始和结束位置的位置。 我正在使用sorting来pipe理NodeJs应用程序中的大量数据。 下面你有mergesort,quicksort和本地JavaScriptsorting,你可以testing性能 问题是:为什么本机JavaScriptperformance较慢? 在我的情况下: Chrome – 合并sorting:测量:1997.920ms; 快速sorting:测量:1755.740ms; 原产地:措施:4988.105ms 节点:合并sorting:测量:2233.413ms; 快速sorting:测量:1876.055ms; 本机:测量:6317.118ms 合并sorting var length = 10000000; // ten millions; var arr = []; for (let i = length; i > 0; i–) { // random array arr.push(parseInt(Math.random() * 1000000000)); } var mergeSort = function(array) { function merge(arr, aux, lo, […]

encryptionalgorithm列表

我试图find一个strings列表,可以使用一个encryptionalgorithm来适应这个函数,取代SHA256 。 crypto.createHmac("SHA256", secret).update(string).digest('base64'), 我已经认识到crypto使用openssl ,并且这些algorithm是特定于运行node.js的每个系统的。 通过以下命令,您可以看到系统可用的所有algorithm的列表。 openssl list-cipher-algorithms openssl list-cipher-commands 我将这两个命令的内容输出到了这个要点 。 令我困扰的是SHA256不在这两个列表中。 我真的很喜欢明确的algorithm列表。

从Node HTTP请求中运行的algorithm需要更长的时间才能运行

我有一个节点的应用程序,绘制在一个x,y点图的数据。 目前,我从前端发出GET请求,后端节点服务器接受请求,循环访问数据点arrays,使用Node Canvas绘制canvas,并将其传回到显示为PNG图像的前端。 复杂的事情是可以有多边形,所以我的algorithm计算一个点是否在一个多边形内,使用多边形包中的点 ,以及数据点的颜色,如果它是不同的。 这在less于50,000个数据点的情况下工作正常。 但是,如果有80万个请求需要大约23秒。 我已经对代码进行了剖析,大部分时间都是循环遍历所有的数据点,并找出在canvas上绘制的位置以及颜色(取决于它是否在一个或多个多边形中)。 这是我做的一个笨蛋 。 基本上我做这样的事情: for (var i = 0; i < data.length; i++) { // get raw points x = data[i][0]; y = data[i][1]; // convert to a point on canvas pointX = getPointOnCanvas(x); pointY = getPointOnCanvas(y, 'y'); color = getColorOfCell(pointX, pointY); color = color; plotColor.push({ color: color, […]

Node.js或PHP中的模式识别algorithm?

我想开始试验识别数据中的模式的algorithm。 我处理许多types的序列(图像像素,文本input,用户移动),使用模式识别来试图从不同的数据集中提取有意义的数据是很有趣的。 像大多数的networking一样,我的数据大部分是基于文本或基于整数键的。 他们的任何类是否提供了检查/创buildPHP或Nodejs模式的基本框架?

计算两点之间的最短路线

过去几周,我一直在使用nodejs和websockets在多人游戏上进行HTML5游戏。 我一直陷在这个问题上。 想象一下,我有一个数组( 如下所示 )实现这个tileheet映射。 1或棕色的瓷砖 – 有一个障碍,玩家不能通过它。 0或绿色瓷砖 – 是允许玩家移动的自由path。 通过以下方式访问地图上的任何图块: array[x][y] 我想创build最快的algorithm来找出地图两点之间的最短路线(如果有的话)。 你将如何解决这个问题? 我知道这是常见的问题。 例如 : 在位置(1,7)的玩家用一些AI来发射子弹,这个AI会在位置(6,0)向敌方玩家发射。 子弹必须计算两个玩家之间的最短路线,如果没有,就会爆炸在墙上。 问题 : 如何有效地find两点之间的最短路线?

打孔/将多个string合并为一个(最短的)string,其中包含每个string的所有字符

我的目的是将多个string打成一个单一的(最短的)string,该string将包含每个string的正向的所有字符。 这个问题不是特定于任何语言,而是更多地涉及algorithm部分。 (可能会在节点服务器中实现它,所以标记nodejs/javascript )。 所以,要解释这个问题: 让我们考虑一下我有几个string ["jack", "apple", "maven", "hold", "solid", "mark", "moon", "poor", "spark", "live"] 结果string应该是这样的: "sjmachppoalidveonrk" jack:s j m ac hppoalidveonr k apple:sjm a ch pp oa l idv e onrk 固体:jmachpp o 盖子 veonrk ==================================== >>>>全部在前进的方向 这些都是人工评估,在这个例子中输出可能不是100%完美。 所以,重点是每个string的所有字母都必须存在于FORWARD DIRECTION的输出中(这里是实际的问题所在),并且服务器可能会发送最终的string,并且会生成27594这样的27594并将其传递以提取令牌,在要求的最后。 如果我不得不用最小的string来打出它,那么会更容易(这种情况下只有唯一的字符就足够了)。 但在这种情况下,有一些要点: 字母可以多次出现,尽pipe我必须重用任何字母(如果可能的话),例如:for solid和hold o > l > d可以作为前向重用,但对于apple ( a > p […]