草庐IT

Grover算法

全部标签

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

java - 我认为维基百科上的 Java 矩阵链乘法算法不正确

我几乎可以肯定维基百科页面上matrixChainOrder的Java实现,MatrixChainMultiplication,是不正确的。我会改变它,但我不是一个合格的数学家,并且在没有首先审查我的观察的情况下做出改变是不舒服的。我想我要问的是——我的说法是否正确?k应该改为k+1,因为这个版本是用基于零的索引编写的,这与在同一页面上首次引入的伪代码版本不同。protectedint[][]m;protectedint[][]s;publicvoidmatrixChainOrder(int[]p){intn=p.length-1;m=newint[n][n];s=newint[n][

java - TicTacToe minimax 算法在 4x4 游戏中返回意外结果

在我的方法newminimax499中,我有一个利用内存和alphabeta修剪的minimax算法。该方法通常适用于3x3游戏,但是当我玩4x4游戏时,我会得到奇怪的、意想不到的计算机位置选择。他仍然从不输,但他似乎并不是为了赢而比赛。为了说明这里的问题,我们使用2个3x3和4x4游戏的场景。首先是一个3x3游戏的场景,其中玩家是X并迈出第一步:这还不错,事实上,这正是人们希望计算机执行的操作。现在来看一个4x4游戏的场景。同样,O是计算机,X启动:如您所见,计算机只是将Os一个接一个地按系统顺序排列,只有在它有可能获胜时才打破该顺序来阻止X。这是非常防守的打法,不像在3x3比赛中看

c# - Bentley-Ottmann 算法实现

C#或Java中是否存在任何现有的Bentley-Ottmann算法实现/库? 最佳答案 这里至少有一个C++实现(包括描述):http://softsurfer.com/Archive/algorithm_0108/algorithm_0108.htm 关于c#-Bentley-Ottmann算法实现,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8113263/

java - java.lang.Object的hashCode具体使用的是什么算法

在JVM中使用什么算法来实现java.lang.Object的隐式hashCode()方法?[OpenJDK或OracleJDK在答案中是首选]。 最佳答案 它依赖于实现(而且在很大程度上,算法完全取决于实现,只要它是一致的。)但是,根据答案here,你可以看到nativesourcefile其中哈希是在OpenJDK7中生成的(查看get_next_hash()函数),它实际上指定了此特定版本中的许多可能算法://Possibilities://*MD5Digestof{obj,stwRandom}//*CRC32of{obj,s

java - 光学聚类算法。如何获得最好的epsilon

我正在实现一个需要对地理点进行聚类的项目。OPTICS算法似乎是一个非常好的解决方案。它只需要2个参数作为输入(MinPts和Epsilon),分别是将它们视为一个簇所需的最小点数,以及用于比较两个点是否在同一簇中的距离值。我的问题是,由于点的种类繁多,我无法设置固定的epsilon。看看下面的图片。相同的点结构但不同的尺度会产生非常不同的结果。假设设置MinPts=2和epsilon=1Km。在左边,算法会创建2个簇(红色和蓝色),但在右边它会创建一个包含所有点的单个簇(红色),但我想在右边也获得2个簇。所以我的问题是:是否有任何方法可以动态计算epsilon值以获得此结果?编辑20

java - 从头开始实现自定义凝聚算法

我了解凝聚聚类算法,它以每个数据点作为单独的集群开始,然后组合点形成集群的方式。现在,我有一个n维空间和几个数据点,这些数据点在每个维度上都有值。我想根据业务规则对两个点/集群进行聚类,例如:如果跨维度1的集群之间的距离如果满足跨维度1的规则并且满足跨维度2的规则,则将它们聚类而不用担心其他维度.......和类似的自定义规则。此外,我有自己的方法来定义和测量任何特定维度上任何两个集群之间的距离。维度可能只包含字符串,我想定义自己的字符串距离度量。在另一个维度中,它可能包含位置的名称,并且该维度上两点之间的距离是命名位置之间的地理距离,其他维度也是如此。是否有一个框架/软件可以让我实现