相关疑难解决方法(0)

仍然有点混淆Big O符号

所以我一直试图尽可能地理解Big O符号,但仍有一些我很困惑的事情.所以我一直在读,如果有东西是O(n),它通常指的是算法的最坏情况,但它不一定要参考最坏的情况,这就是为什么我们可以说最好的例如,插入排序的大小是O(n).但是,我无法理解这意味着什么.我知道如果最坏情况是O(n ^ 2),这意味着在最坏情况下表示算法的函数增长不快于n ^ 2(存在上限).但如果你有O(n)作为最好的情况,我应该怎么读呢?在最好的情况下,算法增长不比n快?我的图片是以n为上限的图形,如

在此输入图像描述

如果算法的最佳情况是O(n),那么n是算法运算在最佳情况下增长的速度的上限,因此它们不能比n增长得快......但这并不意味着它们可以像O(log n)或O(1)那样快速增长,因为它们低于上限?这没有意义,因为O(log n)或O(1)是比O(n)更好的场景,所以O(n)不是最好的情况吗?我很失落哈哈

sorting algorithm big-o

8
推荐指数
1
解决办法
778
查看次数

什么是大O符号?你怎么想出像O(n)这样的数字?

可能重复:
Big O的简明英语解释

我想这可能是在课堂上讲授的东西,但作为一名自学成才的程序员,我很少见到它.

我收集它与时间有关,而O(1)是最好的,而像O(n ^ n)这样的东西非常糟糕,但是有人能指出我对其实际代表的基本解释,这些数字来自哪里?

big-o

7
推荐指数
1
解决办法
1073
查看次数

在哪里可以找到O(n ^ 2)和O(n)等的含义?

我一直在注意使用这些术语的堆栈溢出的答案,但我不知道它们是什么意思.他们叫什么,是否有一个很好的资源,可以用简单的术语解释它们?

language-agnostic algorithm programming-languages

7
推荐指数
1
解决办法
586
查看次数

什么是大O符号?

可能重复:
Big O的简单英文解释

我知道Big O表示法用于评估算法的效率,但我不明白你如何阅读Big O表示法或算法究竟有多高效.有人可能会解释Big O符号的基础知识吗?谢谢.

big-o computer-science

7
推荐指数
1
解决办法
2万
查看次数

蛮力算法可以扩展吗?

我有一个数学问题,我通过反复试验解决(我认为这被称为暴力),当有一些选项时程序工作正常,但是当我添加更多变量/数据时,运行时间越来越长.

我的问题是,虽然原型工作,它对数以千计的变量和大数据集很有用; 所以,我想知道是否有可能扩展蛮力算法.我该如何进行缩放?

我开始学习和玩Hadoop(和HBase); 虽然它看起来很有希望,但我想验证我正在尝试做的事情并非不可能.

如果它有帮助,我用Java编写程序(并且如果可能的话可以使用它),但最终将它移植到Python,因为我觉得它更舒服.

更新:为了提供更多洞察力,我想我会添加一个简化版本的代码来实现这个想法.基本上如果我知道总和是100,我试图找到可以等于它的所有变量组合.这很简单,在我的版本中我可能会使用更大的数字和更多的变量.它是Diophantine,我相信没有算法可以在没有蛮力的情况下解决它.

int sum = 100;
int a1 = 20;
int a2 = 5;
int a3 = 10;
for (int i = 0; i * a1 <= sum; i++) {
    for (int j = 0; i * a1 + j * a2 <= sum; j++) {
        for (int k = 0; i * a1 + j * a2 + k * a3 <= sum; k++) {
            if (i * a1 …
Run Code Online (Sandbox Code Playgroud)

algorithm hadoop scalability

7
推荐指数
1
解决办法
1664
查看次数

算法A的运行时间至少为O(n²) - 为什么它没有意义?

为什么声明:

算法A的运行时间至少为O(n²)

没意义?

插入排序算法的运行时间最多为O(n²)

这是对的吗?

我尝试了网但无法得到很好的解释.

我有另一个问题:

我知道任何线性函数a⋅n+ b都是O(n),也是O(n²).它也是O(n³)吗?

algorithm big-o asymptotic-complexity

7
推荐指数
2
解决办法
1万
查看次数

计算Adamic-Adar的快速算法

我正在进行图形分析.我想计算N×N相似度矩阵,其包含每两个顶点之间的Adamic Adar相似性.为了概述Adamic Adar,让我从这个介绍开始:

给出A无向图的邻接矩阵G.CN是一组两个顶点的所有常见的邻居x,y.两个顶点的公共邻居是两个顶点具有边/链接的顶点,即两个顶点对应的公共邻居节点都具有1 A.k_n是节点的程度n.

Adamic-Adar定义如下: 在此输入图像描述

我计算它的尝试是从中获取xy节点的两行,A然后对它们求和.然后查找具有2值的元素,然后获取它们的度数并应用等式.然而,计算需要花费很长时间.我尝试使用包含1032个顶点的图形,并且花费了大量时间进行计算.它从7分钟开始,然后我取消了计算.所以我的问题是:有更好的计算算法吗?

这是我在python中的代码:

def aa(graph):

"""
    Calculates the Adamic-Adar index.

"""
N = graph.num_vertices()
A = gts.adjacency(graph)
S = np.zeros((N,N))
degrees = get_degrees_dic(graph)
for i in xrange(N):
    A_i = A[i]
    for j in xrange(N):
        if j != i:
            A_j = A[j]
            intersection = A_i + A_j
            common_ns_degs = list()
            for index in …
Run Code Online (Sandbox Code Playgroud)

python algorithm math numpy graph

7
推荐指数
1
解决办法
3156
查看次数

IF如何影响复杂性?

假设我们有一个1.000.000元素的数组,我们通过它们来检查一些简单的东西,例如,如果第一个字符是"A".从我(很少)的理解,复杂性将是O(n),并将需要一些X时间.如果我添加另一个IF(不是if)进行检查,让我们说,如果最后一个字符是"G",它将如何改变复杂性?它会增加复杂性和时间吗?喜欢O(2n)2X

我想避免考虑不同命令必须进行的计算次数.例如,我理解Len()需要更多的计算才能给出结果而不是简单的char比较,但是我们可以说IF中使用的命令(几乎)具有相同的复杂度.

complexity-theory big-o if-statement

6
推荐指数
2
解决办法
2万
查看次数

从List中获取5个字符串组

我有一个List<string>,我想从中获取5个项目组.没有键或任何简单的分组......但它总是5的倍数.

例如

{"A","16","49","FRED","AD","17","17","17","FRED","8","B","22","22","107","64"}
Run Code Online (Sandbox Code Playgroud)

参加团队:

"A","16","49","FRED","AD"
"17","17","17","FRED","8"
"B","22","22","107","64"
Run Code Online (Sandbox Code Playgroud)

但我无法找到一个简单的方法来做到这一点!

很确定它可以用枚举和Take(5)来完成......

.net c# linq

6
推荐指数
2
解决办法
995
查看次数

找到长度为N的重复子字符串

我必须创建一个Java程序,它在给定的String中查找长度为n的所有重复子字符串.输入字符串非常长,蛮力方法需要花费太多时间.

我已经尝试过:
现在我分别找到每个子字符串,并使用KMP算法检查该子字符串的重复.这也花费了太多时间.

对于这个问题,什么是更有效的方法?

java algorithm substring

6
推荐指数
1
解决办法
978
查看次数