草庐IT

slam算法

全部标签

java - 带邻接表的骑士巡回算法

我正在尝试用Java解决骑士的游览问题。我的目标是计算一匹马在任意维度的棋盘上的所有可能行程。我尝试使用的是邻接表数据结构。现在的问题是,我知道哪些方block与一个方block相邻,但我不知道相邻方block的方向。我该如何解决这个问题? 最佳答案 这里只是您应该做什么的粗略概述:创建一个包含上、下、左、右字段的“Square”类(加上访问器和修饰符方法)创建一个“Chessboard”类来存储所有的方block并设置它们。创建一个“骑士”类在棋盘上移动(并检查移动是否有效)。最后,创建一个驱动程序类来搜索和存储如何移动骑士。示例

java - 燃料图平滑算法

我正在开发车队管理系统,其中一项任务是显示表示车辆油耗的图表(基于来自CANbus的数据)。如果数据值介于0和100之间,则表示百分比。所以,如果我得到一个整数45,这意味着油箱中的燃料是45%。但是,如果载具在移动,由于船舶的物理特性,可能会出现不一致的数据。例如,一个数据系列可能是:76,76,75,74,73,73,71,7076,70,75,76,77,76,74,74,73,72,69,72,73,73,72,71我想平滑这些值,但是根据我选择一次平均多少个值,结果是不同的。关键问题是,有时我必须在图表中显示一些消耗和补充能量的时刻,并且不能平滑。我可以使用什么样的算法来分析

java - 类似于Knapsack Java代码的动态规划算法

关键任务生产系统有n个必须按顺序执行的阶段;第i阶段由机器M_i执行。每台机器M_i都有可靠运行的概率r_i和失败的概率1-r_i(并且失败是独立的)。因此,如果我们用单台机器实现每个阶段,则整个系统工作的概率是r_1,r_2,...,r_n。为了提高这个概率,我们通过拥有执行阶段i的机器M_i的m_i个副本来增加冗余。所有m_i个副本同时失败的概率只有(1-r_i)^(m_i),所以第i阶段正确完成的概率为1-(1-r_i)^(mi),而全部正确完成的概率系统工作是prod(i=1,n){1-(1-r_i)^(m_i)}。每台机器M_i的成本为c_i,购买机器的总预算为B。(假设B和

java - 如何使两点算法之间的最短路径更快?

我写了这个算法。它有效(至少对于我的简短测试用例),但在较大的输入上花费的时间太长。我怎样才能让它更快?//Returnsanarrayoflength2withthetwoclosestpointstoeachotherfromthe//originalarrayofpoints"arr"privatestaticPoint2D[]getClosestPair(Point2D[]arr){intn=arr.length;floatmin=1.0f;floatdist=0.0f;Point2D[]ret=newPoint2D[2];//Ifarrayonlyhas2points,ret

java - Wagner Fischer算法+展示步骤

我用java实现了WagnerFischer算法,但我想显示所有步骤。我搜索但找不到任何想法。很长一段时间后,我试图将每个转换与成本一起保存在矩阵中,然后回到第一个解决方案然后反转它......这是一个好主意,如果是,应该如何我设置条件?kitten->sitting1.replacekwiths2.keepi3.keept4.keept5.replacet6.addg我试图为显示步骤创建函数,但不知道如何解决。importjava.io.File;importjava.io.FileNotFoundException;importjava.util.Scanner;publiccla

一文带你了解区块链中15种共识算法

所有主要的区块链共识算法解释区块链技术席卷全球,提供了一种去中心化且安全的信息存储和传输方式。它还彻底改变了交易的执行方式,随之而来的是广泛的共识算法。在这里,共识算法在确保区块链网络的完整性方面发挥着关键作用。在本文中,我们将探讨所有主要类型的区块链共识算法、它们的含义、优点、缺点,以及为什么它们在区块链技术中必不可少。区块链共识算法共识算法是一组规则或协议,使区块链网络中的节点能够就网络的共享状态达成一致。它们用于确保网络中的所有节点就交易的有效性以及将它们添加到区块链的顺序达成共识。共识算法负责通过确保没有单个节点或节点组可以操纵网络来维护区块链的完整性。出于多种原因,共识算法在区块链技

java - 我怎样才能修改这个视线算法来接受穿过角落的光线?

我正在研究一种基于Theta*的寻路算法,它是A*的一种变体,它提供了一个很好的寻路系统,它不受网格的限制,即使地形/障碍物是基于网格模式的。该系统需要一种视线算法来确定特定路径是否被阻挡。我找到了this非常有用的视线算法,我已经在我的代码中成功地实现了它。不幸的是,它认为以下是无效路径:但是,出于我的目的,我希望这样的路径被认为是有效的。我试图通过使用基本y=mx+b公式检测点是否在线上来修改算法,但算法的不一致使我无法依赖这样的系统。是否有任何有效的方法来修改此算法以允许这样的路径?还有另一种算法会更好吗?请记住,路径的起点和终点不一定必须限制在网格中,因此所有点都使用doubl

java - 各种搜索算法的Big-O运行时间

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。如果boolean数组中至少有两个值是true,方法hasTwoTrueValues返回true。为提出的所有三个实现提供Big-O运行时间。//版本1publicbooleanhasTwoTrueValues(boolean[]arr){intcount=0;for(inti=0;i=2;}//版本2publicbooleanhasTwoTrueValues(boolean[]arr){for

java - 请使用 "Hugo Elias"算法生成波形! java

我最近的项目似乎碰壁了,涉及图像上的波浪/波纹生成。我制作了一个可以在网格上使用基本颜色的完美作品;哎呀,我什至根据波浪的高度为颜色添加了阴影。但是,我的总体目标是让这种效果像您看到的那样作用于图像here.我遵循的是一种人们称之为HugoElias方法的算法(如果他真的提出了设计,我就不知道了)。他的教程可以找到here!在学习该教程时,我发现他的伪代码很难理解。我的意思是,在我点击图像上的高度图部分之前,这个概念在很大程度上是有意义的。问题是x和y偏移量会抛出ArrayIndexOutOfBoundsException,因为他将偏移量添加到相应的x或y。如果波浪太大(即在我的例子中

java - 堆的算法

试图重现Heap的算法,以生成整数数组的所有可能排列,但我无法解决除三个以外的其他整数的问题。Heap的算法来自维基百科:proceduregenerate(N:integer,data:arrayofany):ifN=1thenoutput(data)elseforc:=1;c我的代码:publicstaticvoidperm(int[]list,intn){if(n==1){System.out.println(Arrays.toString(list));}else{for(intc=1;c我做错了什么和误解了它?为什么它仅适用于[1,2,3](n=3)作为输入,而不适用于n=2