复杂性大于AngularJS控制器的授权(SonarLint问题)。
我将 sonarlint 与 eclipse 一起使用,我正在使用 angularjs 编码一个应用程序.我对控制器有问题,所以我试图将其清洁一些以使其更清晰,然后Sonarlint弹出了一个问题: 功能的复杂性为11,大于10的授权. 这是我的控制器的代码: app.controller('LauncherCtrl', function ($scope, $http) { $scope.genStatus = "stopped"; $scope.startgenerator = function() { $http.get('/start').success(function () { $scope.updateStatus(); }); }; $scope.resumegenerator = function() { $http.get('/resume')
0 2024-02-23
编程技术问答社区
嵌套for-loop运行时间的问题
我已经考虑了几天,一直在考虑这个问题,并挂在计算第二个嵌套前循环的次数上.我相信我有一个正确的公式来确定其他两个循环的运行时间,但是第三个使我挂断了电话.我是第一个运行N-1次的循环.确定次循环#2运行次数的方程是; 1至N-1的总和.如果有人可以帮助我了解如何找到频率#3运行的次数,那将不胜感激. for ( int i=1; i
2 2024-01-26
编程技术问答社区
最坏情况下的时间复杂性分析伪代码
有人可以帮助我进行此伪代码的时间复杂性分析吗? 我在这里寻找最糟糕的复杂性,我无法弄清楚它是O(n^4),O(n^5)还是其他东西.如果您可以详细介绍您的解决方法,那将不胜感激. sum = 0 for i = 1 to n do for j = 1 to i*i do if j mod i == 0 then for k = 1 to j do sum = sum + 1 解决方案 第一个循环:O(n) 第二个循环:i平均是n/2,您可以拥有一个精确的公式,但它是O(n²) 第三循环发生i在第二个回路内发生,因此平均为n/2.而且它也是O(n²),估计它. 所以是O(n*n²*(1 + 1/n*n²)),我会说O(n^4). 1/n来自以下事实:第三个循环大致发生了第二次1/n 这都是一个球场估计,没有严格的证据,但这应该是正确的.您可以通过自己运行代码来确认它.
0 2024-01-26
编程技术问答社区
在复杂性分析中,为什么++被认为是2种操作?
在我的计算机科学II课中,教授认为++, - ,*=等是2个操作.但是,在组装级别上,这并不是两个操作.有人可以解释还是只是为了简单起见? 解决方案 我实际上认为它是3个操作:阅读,增量(或其他),写.这是假设它正在从某种共享内存中读取到某种本地存储(例如注册或堆栈),然后在本地存储上运行,然后回信. 它在组装级别的操作将取决于您要增加的内容,平台,硬件等. 其他解决方案 因为++(ex:b ++)是简化 的 b = b + 1 那里有两个操作,加法(B + 1),然后是原始变量的添加值的分配. 其他解决方案 为什么在进行复杂性分析时打扰?只是o(1): - ) 编辑:请让我知道为什么您将其投票时.由于这个问题被标记为复杂性,我认为大o概念是最重要的,而不是实际常数.此外,如其他答案中已经提到的那样,这取决于许多因素:计算操作,平台,编译器等的方式.
0 2024-01-26
编程技术问答社区
2^n复杂度的算法
我需要以2^n的复杂性来实现和测试算法.我已经试图找到一个.如果有什么办法可以通过实现来实现这一目标 - 确切的复杂性为2^n,这将是最佳的.如果有人知道一个位置,我可以找到一个示例,也可以帮助我实施一个,那真是太棒了:-).基本操作可以是任何东西,但单个陈述如i ++;最好. 解决方案 生成带有n个元素的集合的所有子集. 添加. 生成S = {A0,A1,...,AN-1}的所有子集的最简单方法可能是在等级的二进制表示之间转换. 拍摄s = {a0,a1,a2}. rank binary subset 0 000 {} 1 001 {a0} 2 010 {a1} 3 011 {a0, a1} 4 100 {a2} 5 101 {a0, a2} 6 110 {a1, a2} 7 111 {a0, a1, a2} so,二进制中的1表示相应元素在子集中. a 0表
2 2024-01-26
编程技术问答社区
谁能告诉我除法和征服矩阵乘法算法的加法和减法的复杂性?
有人可以告诉我分隔和征服矩阵乘法算法的加法和减法的复杂性吗? 我知道,经典矩阵乘法的加法和减法操作的复杂性是(n^3-n^2),而strassen的是6n^2.81 - 6n^2 ...但是我似乎找不到在任何地方分割和征服.只要弄清楚如果有人知道,你们会.谢谢 解决方案 这可能会有所帮助.请参阅Strassen方法之前的介绍部分.
2 2024-01-23
编程技术问答社区
分析一个指数递归函数
我正在尝试计算以下复杂性 指数递归功能. ismember()和isnotComputed()函数降低了数字 递归电话. 此代码的输出是一组[],b [],它在 递归功能调用的初始部分. 会感谢为此建立递归关系的任何意见 导致该程序分析的问题. 没有函数ismember(),iSNotComputed()此代码具有O(2^n)的复杂性.从经验上(具有以上两个函数),该代码具有O(| n^2 || L |)的复杂性.其中l是递归调用的数量,即产生的结果. 我试图尽可能准确地计算此代码的复杂性,以便我可以将其效率与本质上相似的其他一组其他算法进行比较. void RecuriveCall(int A[], int ASize, short int B[], int BSize, int y, short int level) { int C[OBJECTSIZE]; short int D[ATTRIBUT
计算二进制字符串的Lempel-Ziv(LZ)复杂性(又称序列复杂性)。
我需要计算二进制字符串的LZ-复杂性. lz-复杂性是遇到的差异子字符串的数量,因为从开始到结束时流了流.例如: s = 1001111111000010 在不同的子字符串中标记序列复杂性c(s)= 6: s = 1/0/01/1110/1100/0010/ 有人可以指导我找到一个简单的解决方案吗?我敢肯定,对于这个众所周知的问题,应该有一些非常直接的实现,但是我很难找到它们.可以简单地完成构造后缀树或类似的东西完成.如果是,到底如何?我该怎么办? 有人知道完成任务的任何C/C ++源代码吗? 预先感谢. 澄清答案中建议的树的构造.树看起来像这样吗? o / \ o o / \ / \ o o o o / / o o 解决方案 @Arash和@Sanchit Gupta:您可能对LZ76复杂性和LZ78复杂性感到困
8 2024-01-23
编程技术问答社区
最大子阵列问题的蛮力复杂性
最大subarray问题使用蛮力? 可以更优化它们吗?特别是记忆复杂性? 谢谢, 解决方案 蛮力是欧米茄(N^2).使用Divide和Conquer您可以使用Theta(N LG N)复杂性来完成.更多详细信息可在许多书籍中获得,例如>此讲座. 其他解决方案 如下所示Kadane的算法具有O(N)的复杂性. Java的实现: public int[] kadanesAlgorithm (int[] array) { int start_old = 0; int start = 0; int end = 0; int found_max = 0; int max = array[0]; for(int i = 0; i
0 2024-01-23
编程技术问答社区
复杂性-决定了增长的顺序
我了解如何在大多数情况下计算函数的复杂性.确定数学功能的生长顺序也是如此. [我可能不像我想的那样了解它,这就是为什么我可能会问这个.]例如: an^3 + bn^2 + cn + d可以用大符表示法写入o(n^3),因为与an^3相比,该术语bn^2 + cn + d的值无关紧要(常数系数a ,b,c和d也被排除在外,因为它们对价值的贡献也变得微不足道). 我不明白的是,当领先术语涉及某种部门时,这如何工作?例如: a/n^3 + bn^2或n^3/a + bn^2 让n = 100,a = 1000和b = 10的前公式,然后我们有 n^3/a = 100^3/1000 = 1000和bn^2 = 10*100^2 = 100,000 对于后者而言,甚至更具戏剧性 - 在这种情况下,主术语不仅在上面如此缓慢,而且还在缩小,不是吗?: a/n^3 = 1000/100^3 = 0.001和bn^2 = 100,000如上. 在这两种情况下
0 2024-01-23
编程技术问答社区
寻找组合的时间和空间复杂性(nCr)
最糟糕的情况下,不同算法的最糟糕的时间和空间复杂性查找组合,即ncr 在时间/空间复杂性方面,哪种算法是最著名的解决方案? 解决方案 O(n!)是一个一个一个一个组生成所有组合的时间复杂性. 要找到有多少个组合,我们可以使用此公式: nCr = n! / ( r! * (n-r)! ) 正如@Beaker所述,可以在O(1)时间(即恒定时间)中计算此计数.
4 2024-01-23
编程技术问答社区
字符串到字符串的修正问题np-完整性证明
我有这个任务来证明这个问题: 有限字母£,两个字符串x,y€ £*,一个积极的整数K. 有一种方法可以得出字符串y 从字符串x通过k序列 或更少的单个符号操作 删除或相邻符号 交换? 是NP完整的.我已经弄清楚我必须从设置覆盖问题的决策版本进行转换,但是我不知道该执行此操作.任何帮助将不胜感激. 解决方案 看起来像修改的 levenshtein距离.可以用二次时间的DP解决问题. 从最小设置盖(MSC)转换为此字符串校正问题: Robert A. Wagner On the complexity of the Extended String-to-String Correction Problem 1975, Proceedings of seventh annual ACM symposium on Theory of computing 简而言MSC问题: 给定有限集x_1,...,x_n和integer l,是否存在{1,...,n}的子
0 2024-01-23
编程技术问答社区
脚本的效率(寻找一对有相同余数的整数)。
我试图在x-y = 0(mod n)中找到一对(x,y),其中输入为正整数n,一个非负整数和m> n的集合a.为了运行下面的代码,我仅出于运行一个示例而采用了M和N. 以下是我写的脚本. 我想知道是否有更有效的写脚本的方法 import numpy as np import sys n = 10 m = 12 def functi(n, m): A = [0] * m for i in range(m): A[i] = np.random.randint(0,34) X = [-1] * n for i in range(len(A)-1,-1,-1) : #loop backwards a = A[i] A.pop(i) r = a % n if X[r] == -1: X[r] = a else: return(X[r], a) pair =
0 2024-01-23
编程技术问答社区
算法时间复杂性的对数图/图表
我刚刚编写了快速和合并的排序算法,我想制作其运行时间与数组大小的日志图. 由于我从未做到这一点,我的问题是我选择数组长度的任意数字(输入的大小)是否重要,或者我应该遵循模式(类似于10^3,10^4,10^5,等)? 解决方案 通常,对于每个方法,您需要选择足够大的数组长度,以显示预期的O(n log n)或O(n^2)类型的行为. 如果您的N太小,则运行时间可能由其他增长率主导,例如,运行时间= 1000000*n + n^2的算法对于N 另一方面,如果您的N太大,您的算法可能需要太长完成. 最好的妥协可能是从小N开始,以及N,2N,4N,...或N,3N,9N的时间,并继续增加,直到您可以清楚地看到日志日志图渐变直线.
0 2024-01-23
编程技术问答社区
时间复杂度分析:带有内部for循环的while循环
我正在尝试查找该代码运行的次数.在右边,我尝试了代码.我不确定循环.这是代码: times sum = 0 1 i = 1 1 while i ≤ n log n + 1 sum = sum + i n log n i = 2i log n return sum 1 => n log n + 2 log n + 4 然后:o(n log n) 这是正确的吗? 解决方案 不,您的分析不正确.请注意,内部环的每次迭代都可以工作O(1),因此可以通过将环路迭代数量乘以O(1). 来找到总的时间复杂性. 在这种情况下,循环用于O(log n)迭代,因为我只能在超过n之前加倍O(log n)次.因此,总
4 2024-01-23
编程技术问答社区
修改排序后的数组的交叉点
我遇到了这个问题 - 输入 - 我得到了两个排序的阵列A1和A2.我需要找到第二个数组中不存在的元素. 我有两种方法 1)Hashtable -O(M+N) [当第二个数组小时使用] 2)二进制搜索-O(m*logn) [当第二阵列巨大时使用] 还有其他其他方法具有更好的时间复杂性吗? 谢谢 解决方案 只是并行迭代它们. 这是一个JavaScript示例: var a1 = [1, 2, 3, 4, 5, 6, 7, 9]; var a2 = [0, 2, 4, 5, 8]; findNotPresent(a1, a2); // [1, 3, 6, 7, 9] function findNotPresent(first, second) { var first_len = first.length; var first_index = 0; var second_len = second.length;
0 2024-01-23
编程技术问答社区
热门专题