小编Abc*_*hen的帖子

计算递归关系T(n)= T(n-1)+ logn

我们要通过重复替换来解决递归关系:

T(n)=T(n-1)+logn
Run Code Online (Sandbox Code Playgroud)

我开始替换并得到以下内容.

T(n)=T(n-2)+log(n)+log(n-1)
Run Code Online (Sandbox Code Playgroud)

按对数乘积规则,log(mn)= logm + logn,

T(n)=T(n-2)+log[n*(n-1)]
Run Code Online (Sandbox Code Playgroud)

继续这个,我明白了

T(n)=T(n-k)+log[n*(n-1)*...*(n-k)]
Run Code Online (Sandbox Code Playgroud)

我们知道基本情况是T(1),所以n-1 = k - > k = n + 1,并在我们得到的中取代

T(n)=T(1)+log[n*(n-1)*...*1]
Run Code Online (Sandbox Code Playgroud)

显然n*(n-1)*...*1 = n!所以,

T(n)=T(1)+log(n!)
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这一点.答案只是O(log(n!))?我已经读过其他解释说它是Θ(nlogn),因此它遵循O(nlogn)和Ω(nlogn)分别是上限和下限.

recursion complexity-theory big-o recurrence

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

Big-O嵌套while循环

i <-- 1
while(i < n)
   j <--1
   while(j < i)
      j <-- j * 2
   i <-- i + 1
done
Run Code Online (Sandbox Code Playgroud)

我对此的镜头将是O(log n)内循环.而且我猜测外环是O(n)一个整体的复杂性O(n log n).确认?

complexity-theory big-o time-complexity

4
推荐指数
2
解决办法
5284
查看次数

在three.js中调整dat.gui的大小

我在three.js中使用了一个数据gui.

不幸的是,我的gui非常大,我无法调整大小.我试过了autoplace=false.

我该如何解决这个问题?

javascript user-interface three.js

4
推荐指数
1
解决办法
2724
查看次数

完美平衡二叉树的复杂度

我的场景是一个包含整数的完美平衡的二叉树。

我已经搜索并找到了许多关于二叉树的最佳/最坏情况的解释。最好的情况是O(1)(在根中找到目标),最坏的情况是O(log(n))(树的高度)。

我几乎没有发现关于计算平均复杂度的信息。我能找到的最佳答案是O(log(n)) - 1,但我想我不太明白(如果正确的话)这个平均情况是如何计算的。

此外,搜索不在树中的整数是否会产生相同的复杂性,我认为会,但任何煽动都值得赞赏。

complexity-theory big-o binary-tree

4
推荐指数
1
解决办法
2614
查看次数

在 64 位 Windows 7 (msys2/mingw64) 上构建 GMP 6.1.0:由于 mp_limb_t 不是 64 位,配置失败

我尝试在我的 Windows 7 64 位计算机上构建 GMP,所以我运行config.guess并获取k10-pc-msys. (我使用 msys2 和 mingw64)

然后我跑了

./configure --prefix=/c/gmp-6.1.0 --build=k10-pc-msys --enable-cxx
Run Code Online (Sandbox Code Playgroud)

但这会因此错误而退出

checking size of mp_limb_t... 4
configure: error: Oops, mp_limb_t is 32 bits, but the assembler code
in this configuration expects 64 bits.
Run Code Online (Sandbox Code Playgroud)

所以我再次运行了配置ABI=64(考虑强制mp_limb_t为 64 位),但这以相同的错误结束。在此之后,我尝试添加CC="g++"(思考--enable-cxx需求g++),但我再次收到此错误。

我在谷歌上搜索了很多,发现在 GitHub 上juliaLang报告的一个问题看起来很接近我的问题,但该解决方案似乎对我不起作用,因为我没有使用 Julia。

有谁知道这个错误并找到了解决它的方法?

注意:我看到 msys2 已经安装,我可以使用它。但是我的程序的运行时间仅通过使用 msys2 安装的 GMP 构建 NTL 就增加了大约 70%。我认为这是因为它不是为我的计算机构建的,所以它根本没有优化。

编辑:即使没有任何设置(只是./configure …

c++ windows 64-bit gmp msys2

4
推荐指数
1
解决办法
1246
查看次数

php-7 中的“2020 年 1 月的第一个星期三”与“2020 年 1 月的第一个星期三”

今天我遇到了一个同事在我写的应用程序中报告的 PhP-7 中的一个奇怪的错误/功能。归结为以下几点。

考虑以下:

echo date('Y-m-d', strtotime('first thu of Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first thu Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first wed of Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first wed Jan 2020'));
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我看到以下内容:

2020-01-02
2020-01-02
2020-01-01
2020-01-08
Run Code Online (Sandbox Code Playgroud)

奇怪的是,输出的第 3 行和第 4 行是不同的。为什么?of在这种情况下是错误还是必须使用?

php datetime php-7

4
推荐指数
1
解决办法
206
查看次数

编辑距离(Levenshtein distance)递归自顶向下实现的复杂性

我一整天都在处理一个我似乎无法解决的问题。任务是证明编辑距离的递归实现具有时间复杂度 Ω(2 max(n,m) ),其中 n & m 是被测量单词的长度。

实现与这个小python示例相当

def lev(a, b):
    if("" == a):
       return len(b)   # returns if a is an empty string
    if("" == b):
        return len(a)   # returns if b is an empty string
    return min(lev(a[:-1], b[:-1])+(a[-1] != b[-1]), lev(a[:-1], b)+1, lev(a, b[:-1])+1)
Run Code Online (Sandbox Code Playgroud)

来自:http : //www.clear.rice.edu/comp130/12spring/editdist/

我曾尝试为不同的短词绘制递归深度的树,但我找不到树深度和复杂性之间的联系。

来自我的计算的递归公式

m = length of word1
n = length of word2
T(m,n) = T(m-1,n-1) + 1 + T(m-1,n) + T(m,n-1)
With the base cases:
T(0,n) = n
T(m,0) …
Run Code Online (Sandbox Code Playgroud)

algorithm complexity-theory big-o edit-distance levenshtein-distance

3
推荐指数
1
解决办法
4307
查看次数

通过替换求解递归T(n)= 2T(n/2)+Θ(1)

所以我很确定它是O(n)(但它可能不是?),但你如何用替换解决它?

如果假设T(n)<= c*n,那么归纳步骤是什么?

math big-o recurrence

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

O(O(f(n)))是什么意思?

我对Big-Oh表示法有所了解.但是我如何解释O(O(f(n)))的含义呢?这是否意味着增长率的增长率?

big-o asymptotic-complexity

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

如果a> = b则O(a + b)= O(a)?

我想要更好地理解这个想法O(n),所以我对此感到疑惑:

如果我们知道a> = b那么O(a+b)=O(a)
我知道O(a)+O(a)=O(2a)=O(a),但是我想知道它是否真的比它小一点,我的意思是 - 如果O(a+b)=O(a).

我认为这是真的,因为a+b=O(2a),但我想知道我是不是错了......

(如果a和b是常数,PS会是真的吗?)

谢谢!

complexity-theory big-o time-complexity space-complexity

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