Tag: algorithm

获得最接近的string匹配

我需要一种方法将多个string与testingstring进行比较,并返回与其非常相似的string: TEST STRING: THE BROWN FOX JUMPED OVER THE RED COW CHOICE A : THE RED COW JUMPED OVER THE GREEN CHICKEN CHOICE B : THE RED COW JUMPED OVER THE RED COW CHOICE C : THE RED FOX JUMPED OVER THE BROWN COW (如果我正确地做了这个)“TEST STRING”最接近的string应该是“CHOICE C”。 什么是最简单的方法来做到这一点? 我计划将其实现为包括VB.net,Lua和JavaScript在内的多种语言。 在这一点上,伪代码是可以接受的。 如果你能提供一个特定语言的例子,这也是赞赏!

algorithmselect一个单一的,随机组合的值?

说我有不同的价值观,我想随机select其中的x 。 什么是有效的algorithm呢? 我可以只调用rand() x次,但如果x , y很大,性能会很差。 请注意,这里需要组合 :每个值应该有相同的概率被选中,但是它们在结果中的顺序并不重要。 当然,任何生成排列的algorithm都是合格的,但是我想知道是否有可能在没有随机顺序要求的情况下更有效地做到这一点。 如何有效地生成0和上限N之间的K个非重复整数列表,覆盖这种情况下的排列。

如何将两个有序数组合并到一个有序数组中?

这是在面试中问我的,这是我提供的解决scheme: public static int[] merge(int[] a, int[] b) { int[] answer = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) { if (a[i] < b[j]) { answer[k] = a[i]; i++; } else { answer[k] = b[j]; j++; } k++; } while […]

一种用于膨胀/缩小(偏移,缓冲)多边形的algorithm

我怎样“膨胀”一个多边形? 也就是说,我想要做类似的事情: 要求是新的(充气的)多边形的边/点与旧的(原始的)多边形的距离相同(在他们不是的示例图片上,因为那么它将不得不使用弧来填充顶点)现在忘了这个;))。 我正在寻找的math术语实际上是向内/向外的多边形偏离 。 为了指出这一点,给balint +1。 替代的命名是多边形缓冲 。 我的search结果: 这里有一些链接: 多边形切断策略综述 多边形偏移,PROBLEM caching多边形数据

在Java中获取集合的powerset

{1, 2, 3}是: {{}, {2}, {3}, {2, 3}, {1, 2}, {1, 3}, {1, 2, 3}, {1}} 假设我有一个Java Set : Set<Integer> mySet = new HashSet<Integer>(); mySet.add(1); mySet.add(2); mySet.add(3); Set<Set<Integer>> powerSet = getPowerset(mySet); 我该如何编写函数getPowerset,并尽可能使复杂性成为可能? (我想这可能是O(2 ^ n))。

Javascript的Array.sort实现?

JavaScript Array#sort()函数使用哪种algorithm? 我明白,它可以采取各种各样的论据和function来执行不同种类的分类,我只是对香草类使用哪​​种algorithm感兴趣。

image processing:“可口可乐jar”识别的algorithm改进

过去几年中我最感兴趣的项目之一是关于image processing的项目。 我们的目标是build立一个能够识别可口可乐“jar头”的系统 (注意,我强调“jar头”这个词,你会在一分钟内看到为什么)。 您可以在下面看到一个示例,可以在具有缩放和旋转的绿色矩形中识别。 项目的一些限制: 背景可能非常嘈杂。 jar头可以有任何规模或旋转 ,甚至方向(在合理范围内)。 图像可能有一定程度的模糊性(轮廓可能不完全是直的)。 图像中可能有可口可乐瓶,algorithm只能检测jar头 ! 图像的亮度可能会有很大的变化(所以你不能在颜色检测上“太多”)。 jar子可以部分隐藏在侧面或中间,可能部分隐藏在瓶子后面。 在图像中完全没有可能 ,在这种情况下,你必须找不到任何东西,并写下这样的消息。 所以你最终可能会遇到这样棘手的事情(在这种情况下,我的algorithm完全失败): 前段时间我做了这个项目,做了很多乐趣,而且我有一个体面的实现。 以下是关于我的实现的一些细节: 语言 :使用OpenCV库在C ++中完成。 预处理 :对于图像预处理,即将图像转换为更加原始的forms给予algorithm,我使用了2种方法: 将颜色区域从RGB更改为HSV,并根据“红色”色调进行过滤,在某个阈值以上进行饱和以避免类橙色,并对低值进行过滤以避免产生深色调。 最终的结果是一个二进制的黑白图像,其中所有的白色像素将代表匹配这个阈值的像素。 很明显,图像中仍然有很多垃圾,但是这会减less你需要处理的尺寸数量。 使用中值滤波进行噪声滤波(取所有邻居的中值像素值并用此值replace像素)以降低噪声。 使用Canny边缘检测filter在2个先例步骤之后获得所有项目的轮廓。 algorithm :我为这个任务select的algorithm本身是从这个真棒书籍特征提取,被称为广义霍夫变换 (有别于正则霍夫变换)。 它基本上说了几件事情: 你可以在不知道parsing方程的情况下在空间中描述一个物体(这里就是这种情况)。 它能抵抗像缩放和旋转等图像变形,因为它将基本上针对比例因子和旋转因子的每个组合来testing图像。 它使用algorithm将“学习”的基本模型(模板)。 剩余在轮廓图像中的每个像素将基于从模型中学习的内容投票给另一像素,该像素将被认为是对象的中心(就重力而言)。 最后,最后得到一个热图,例如在这里jar子轮廓的所有像素都会投票给它的引力中心,所以你将会在相同的像素中得到很多的投票。中心,并将在热图中看到一个高峰,如下所示: 一旦你有了这一点,一个简单的基于阈值的启发式可以给你的中心像素的位置,从中你可以导出的规模和旋转,然后绘制你的小矩形周围(最终规模和旋转因素显然是相对于你原始模板)。 理论上至less… 结果 :现在,虽然这种方法在基本案例中起作用,但在一些领域却严重缺乏: 这是非常缓慢 ! 我没有强调这一点。 需要几乎整整一天来处理30个testing图像,显然是因为我有一个非常高的旋转和平移比例因子,因为一些jar子很小。 当图像中的瓶子完全丢失时,由于某种原因,几乎总是find瓶子而不是jar子(也许是因为瓶子更大,因此像素更多,因此票数更多) 模糊的图像也是不好的,因为投票结果在中心周围的随机位置像素,从而结束了一个非常嘈杂的热图。 翻译和旋转方面的差异已经达到了,但是没有定位,这意味着没有直接面对相机目标的一个jar子没有被识别。 你能帮助我改进我的具体algorithm,只使用OpenCVfunction来解决上述四个具体问题吗? 我希望有些人也会从中学到一些东西,毕竟我不仅想问问题的人应该学习。 🙂

如何检查一个数是否是2的幂

今天,我需要一个简单的algorithm来检查一个数是否是2的幂。 该algorithm需要是: 简单 纠正任何超值。 我想出了这个简单的algorithm: private bool IsPowerOfTwo(ulong number) { if (number == 0) return false; for (ulong power = 1; power > 0; power = power << 1) { // This for loop used shifting for powers of 2, meaning // that the value will become 0 after the last shift // (from binary […]

什么是Hi / Loalgorithm?

什么是Hi / Loalgorithm? 我在NHibernate文档中find了这个(这是一个生成唯一键的方法,第5.1.4.2节),但是我还没有find一个很好的解释。 我知道Nhibernate处理它,我不需要知道里面,但我只是好奇。

用PHP关联数组寻找笛卡尔积

说我有一个如下的数组: Array ( [arm] => Array ( [0] => A [1] => B [2] => C ) [gender] => Array ( [0] => Female [1] => Male ) [location] => Array ( [0] => Vancouver [1] => Calgary ) ) 我怎样才能find笛卡尔积,同时保留外关联数组的键,并在内部使用它们? algorithm的结果应该是这样的: Array ( [0] => Array ( [arm] => A [gender] => Female [location] […]