草庐IT

算法评估

全部标签

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比赛中看

Java 8 - 惰性评估?

当我在观看Streams视频时,我发现自己对StreamsAPI如何对循环方法的命令式方法进行惰性评估感到困惑。这是典型的for循环代码,它检查第一个大于3和偶数的数字,然后简单地打印它并返回。Listarr=Arrays.asList(1,2,3,5,4,6,7,8,9);for(inti:arr){System.out.println("CheckingifisGreater:"+i);if(i>3){System.out.println("checkingifisEven"+i);if(i%2==0){System.out.println(i*2);break;}}}这里是预期的

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 - 如何在 Java 中对返回 boolean 值的两个并行线程执行短路评估?

我正在寻找逻辑上等同于以下问题的指导:publicbooleanparallelOR(){ExecutorServiceexecutor=Executors.newFixedThreadPool(2);FuturetaskA=executor.submit(newSlowTaskA());FuturetaskB=executor.submit(newSlowTaskB());returntaskA.get()||taskB.get();//ThisisnotwhatIwant//Exceptionhandlingomittedforclarity}上面的构造给出了正确的结果但是总是等待