哪个是Python最快的嵌入式noSQL数据库?

2024-09-28 22:32:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个快速、小型、嵌入式的noSQL解决方案(因为我没有root权限),并且支持Python。现在我只有两个名字:DyBASE,CodernityDB。请帮我找到其他人,并选择最好的一个。谢谢您!!!在


Tags: 权限root解决方案名字nosqlcodernitydbdybase
3条回答

这是一个递归算法,它本质上是将数组中的每个元素作为第一个元素,然后将不带该元素的调用自身的输出添加到数组中

取3个元素A、B和C并遍历逻辑,让我们调用函数perm

所以,我们想要

perm({A, B, C})

这等于

A + perm({B, C})
B + perm({A, C})
C + perm({A, B})

再次扩展

A + B + perm({C})
A + C + perm({B})
B + A + perm({C})
B + C + perm({A})
C + A + perm({B})
C + B + perm({A})

作为perm({X}) = X我们最终得到

A + B + C
A + C + B
B + A + C
B + C + A
C + A + B
C + B + A

这正是他们正在做的。这叫做递归,一开始很难理解。假设您有字符串:

A、B、C、D

实际上,您要做的是依次选择每个字符串,然后找到剩余字符串的所有排列,并在所选字符串前面加上前缀

Choose A, get all permutations of {B,C,D} and append A. 
Choose B, get all permutations of {A,C,D} and append B. 
Choose C, get all permutations of {A,B,D} and append C. 
Choose D, get all permutations of {A,B,C} and append D. 

现在,我们有一些看起来非常相似但更小的子问题。这就是递归的核心。拿一个问题,找到一种方法把它变成问题的一个小版本。现在,继续把它变成一个小问题,直到它变得微不足道。现在我们必须弄清楚如何生成3个字符串的排列

Permute(A B C) 
Choose A, get all permutations of {B,C} and append A.
Choose B, get all permutations of {A,C} and append B.
Choose C, get all permutations of {A,B} and append C.

结构相同,但问题较小。因此,请更进一步。我们如何排列(A B)

Permute(A B) 
Choose A, get all permutations of {B} and append A.
Choose B, get all permutations of {A} and append B.

现在我们只需要排列一个字符串。那是微不足道的

Permute(A)
A

现在我们有了一种排列大小为1的字符串列表的方法,我们定义了如何通过排列大小为N-1的列表来排列大小为N的列表。因此,我们可以排列任何大小的列表>;=1,用一个稍微小一点的问题来称呼我们自己。这就是递归的美妙之处。您只需定义如何解决最小的问题,以及如何使用该解决方案来构建更大的解决方案,并且该解决方案以自身为基础

使用的方案是“分而治之”。它的基本思想是将一个大问题分解为一组小问题,并应用相同的机制,直到问题达到“原子”级。换句话说:一个大小为n的问题被连续分解为大小为n-1的n个问题。在底部有一个简单的方法来处理大小1(或任何其他常数)的问题。这通常是使用递归完成的(正如Calgar99所指出的)

这一计划的一个很好的例子是“河内塔”,它也会让你有点头晕目眩。看看吧,这种方法的独创性会让你大吃一惊

对于所给出的代码:n个单词的排列是n-1个单词的排列与n个原始单词中的每一个的串联。这个递归定义为这个问题提供了一个非常优雅的解决方案

相关问题 更多 >