Articles of 算法

在android中find最短路径/距离的算法?

我是android新手,我正在做一些项目规划。 要完成规划,我必须知道我将在项目中使用哪些算法或技术。 这个想法很简单。 我只是想确定我当前位置和几个超市位置之间的最短路径/距离。 我可以申请任何算法或Android API吗?

查找int数组是否包含数字的最快方法

这是一个奇怪的问题。 我在Java中有一个整数数组,其中每个int代表一种颜色。 它们将是0xFFFFFFFF或0x0。 如果此数组包含任何等于0xFFFFFFFF的值,那么最快的方法是什么? 这是我目前的代码: int length = w * h; for (int i = 0; i < length; i++) { if (pixels[i] == 0xFFFFFFFF) { return true; } } 我不知道是否有更快的方法来做到这一点。 我想你的兽医可能有一两招。 编辑:看起来它只是来自Bitmap.getPixels()的一个愚蠢的像素数组,它无法被排序或转换为另一个存储结构。 感谢大家的投入,看起来循环是这种情况下的最佳方式。

算法优化 – 并行AsyncTasks或线程?

我目前有一个AsyncTask ,它目前使用OpenCV使用bubble sort技术比较图像。 说,我必须相互比较400张图像。 这意味着400*401/2=80,200比较。 我们假设一次比较需要1秒钟。 那么,这是80,200 sec ,大约22.27 hours ,这是非常长的。 所以,我开发了这种types的算法: 它将400图像分成5组。 所以每组有80图像。 算法的第一部分是在组成员中比较自己的图像。 因此, image1将自己与image2-80进行比较,这意味着有79比较。 image2将进行78比较,依此类推。 这使得3,160比较。 或者3,160 sec 。 同样, image81将自己与image82-160进行比较,依此类推。 因此,所有“组比较”都在3,160 sec内完成,因为它们是并行运行的。 算法的第二部分将group 1元素与group 2元素进行比较, group 2与group 3 , group 3与group 4 ,依此类推。 这将意味着将image1与image81-160进行比较,这是80比较,因此group 1和group 2之间的总比较将是80*80=6400比较。 是否可以将每个图像与组比较并行比较? 也就是说,如果image1将自己与image81-160进行比较,那么image2应该做同样的事情,依此类推,而其他组也在做同样的事情。 所以,这个部分应该只需要6400 sec 。 现在, group1将与group3 , group2与group4 , group3与group5 。 – > 6400 […]

谷歌地图算法

如何在Android中集成的Google Maps上实现Dijkstra或回溯等算法? 例如,我想计算从A市到B市的路线,以便我支付最低的天然气价格。

随机数w /种子作用非确定性

我已编程多年了,我现在提出的问题可能是我遇到过的最奇怪的问题之一。 我的应用程序中有一块代码随机生成一系列令牌,有三种可能的types,比如A,B或C. 所以10个代币可能是ABCCAAABAC。 在代码块的开头,随机数生成器种子初始化如下: math.randomseed(seed) math.random() 现在,不出所料,当种子值保持不变时,我总是得到相同的令牌序列,因为随机生成代码以确定的方式执行。 好吧, 几乎总是。 实际上,在极少数情况下,出乎同样的种子,我会得到一个不同的随机序列。 然后它在我知道之前恢复正常。 您可能在想 – 啊, 副作用 ,这可能是一个状态相关的问题,其中生成随机令牌序列的代码块使用一个variables来改变它调用random() (例如)。 但是,我99%肯定我控制了所有明显的副作用。 代码块中只有少数位置可以访问外部状态,并且它们都保持不变。 情节变得更加浓厚 – 这个问题在我一直在构建的应用程序的Android部署上才显而易见。 不可否认,这是一个罕见的错误,我似乎无法可靠地重复它。 因此它也可能出现在iOS部署中。 但我还没有在其他平台上遇到它。 我不妨提一下,我正在通过Corona SDK使用lua脚本来开发应用程序。 我已经多想了这个问题,并将其缩小到几个可能性: 与使用相同随机数生成器的另一个线程交互,我不知道 (这在lua中甚至可能吗?)某种堆损坏会导致奇怪的副作用 我搞砸了,有一些该死的明显的外部状态参考,我在整个多小时的调试中都错过了 所有这些最痛苦的方面是bug的不可重复性。 大多数情况下,代码块在给定重复种子的情况下完全确定性地起作用。 然后就好像存在一个非确定性阶段 ,然后在一段未知的时间后再次消失。 我很乐意在这里挑选专家的大脑。 这可能会发生什么? 此外 – 由于我在Android部署中只看到过这个特定问题,因此可能有任何特定于平台的问题吗? 作为参考,这是完整的代码块。 它实际上是生成具有两个随机属性(三种颜色之一,三种形状之一)的标记,但这并不意味着问题的本质。 math.randomseed(currentRandomSeed) math.random() local tokenListPlan = {} — randomly assign weighting distribution local thresh1, […]

日出时间计算与Google的结果不符

我不确定它是否真的与Android有关,但由于我将其用于Android应用程序,我也在标记Android。 如果给出lat-long,我正在尝试构建一些逻辑来计算日出时间。 我试过跟随,但是一切都给出了我提供它的位置(印度class加罗尔)的稍微不同的时间,当我用关键字Bangalore Sunrise搜索谷歌谷歌给出了不同的卡片结果看起来更准确: 尝试将此C代码移植到Java: http : //souptonuts.sourceforge.net/code/sunrise.c.html 尝试使用WikiPedia的这个公式: http : //en.wikipedia.org/wiki/Sunrise_equation 尝试使用此库: https : //github.com/mikereedell/sunrisesunsetlib-java 尝试使用此Web服务: http : //www.earthtools.org/webservices.htm#sun 所有这些都给出了不同的结果,而Google的外观仍然更加准确。 这里有人知道API或更好的计算方法吗? 或谷歌用于他们的卡的算法/网络服务? 任何帮助深表感谢。

将ARGB颜色值反转为ABGR的快速算法?

我正在使用IntBuffer来操作Bitmap的像素,但缓冲区中的值应该是AABBGGRR ,而颜色常量是AARRGGBB 。 我知道我可以使用Color.argb , Color.a ,…来反转,但我认为它并不完美。 我需要操作非常大量的像素,所以我需要一种能够在短时间内执行此算子的算法。 我想到了这个Bit Expression,但它不正确: 0xFFFFFFFF ^ pSourceColor 如果没有更好的,也许我将使用位移操作符(执行Color.a ,…)而不是调用函数来减少时间。 编辑: 这是我目前转换的函数,虽然我认为应该有一个更好的算法(更少的运算符)来执行它: private int getBufferedColor(final int pSourceColor) { return ((pSourceColor >> 24) <> 16) & 0xFF) | // Red -> Blue ((pSourceColor >> 8) & 0xFF) << 8 | // Green ((pSourceColor) & 0xFF) < Red }

识别手写圆圈,钻石和矩形

我正在寻找一些关于识别三种手写形状的建议 – 圆形,菱形和矩形。 我试过不同的aproaches,但他们失败了所以也许你可以指出我在另一个更好的方向。 我尝试了什么: 1)基于手写形状和理想形状点之间的点积的简单算法。 它在识别矩形方面并不是那么糟糕,但在圆形和钻石上失败了。 问题是即使对于理想的形状,圆形和菱形的点积也非常相似。 2)相同的方法,但使用动态时间扭曲作为相似性的度量。 类似的问题。 3)神经网络。 我尝试了几种方法 – 将点数据提供给神经网络(Feedforward和Kohonen)或提供光栅化图像。 对于Kohonen来说,它始终将所有数据(用于训练的样本)分类到同一类别。 带点的前馈更好(但与aproach 1和2处于同一水平)并且光栅化图像非常慢(我需要至少大小^ 2输入神经元,对于小尺寸的光栅圆,即使对我来说也难以区分;))也没有成功。 我想是因为所有这些形状都是封闭的数字? 我不是ANN的大专家(有一个学期的课程)所以也许我使用它们错了? 4)将形状保存为Freeman Chain Code并使用一些算法来计算相似度。 我认为在FCC中,形状将彼此不同。 这里没有成功(但我没有深入探索这条道路)。 我用这个为Android构建应用程序,但我认为这里的语言无关紧要。

如何用android进行标量测试?

我不确定“标量测试”是否正确,但我的意思是测试不是布尔“失败或成功”。 我正在研究的问题是android的半音调音器: http://code.google.com/p/androidtuner/ 我想通过运行一些wav文件并处理得到的音高图来测试算法。 目标是将标量测试结果定义为标准化的x-minus-y平方和,其中x是检测到的音调,y是预期音调。 所以一个完美的测试运行将是0,但更现实的是我想调整算法,看看它是否/如何改进所有测试用例。 一般来说 – unit testing结果可以是数字而不是布尔值吗? android测试框架是否允许它? 我应该如何与Eclipse集成任何解决方案? 我目前的想法是绕过一切并使用adb来获取运行每个测试后生成的文件。 虽然那不是太棒了。

如何在客户端和服务器之间同步大型列表

我想在客户端和服务器之间同步大量项目。 由于列表非常大,我无法在单个请求中同步它,因此,如何确保列表与同步服务的合理数量的调用同步? 例如: 我希望将列表与100.000项同步,以便我使用以下签名创建Web服务 getItems(int offset,int quantity): Item[] 在呼叫和呼叫之间修改列表时会出现问题。 例如: getItems(0,100) : Return items (in the original list) [0,100) getItems(100,100): Return items (in the original list) [100,200) ##### before the next call the items 0-100 are removed #### getItems(200,100): Return items (in the original list) [300,400) 因此永远不会检索项目[200,300]。 (如果添加项目而不是删除项目,也可以检索重复项目。 如何确保此列表的正确同步?