Tag: algorithm

在avl树的红色黑树

AVL和红黑树都是自平衡的,除了红色和黑色的节点。 select红黑树而不是AVL树的主要原因是什么? 红黑树有什么用途?

什么是最好的自动完成/build议algorithm,数据结构

我们看到谷歌,Firefox的一些AJAX页面显示可能的项目列表,而用户input字符。 有人能给出好的algorithm,实现自动完成的数据结构吗?

生成字形的algorithm

什么是生成字形的最佳策略? An anagram is a type of word play, the result of rearranging the letters of a word or phrase to produce a new word or phrase, using all the original letters exactly once; ex. 十一二 加一是十二加一 小数点是我是一个点的地方 天文学家是月亮的星号 起初看起来非常简单,只是混淆了字母并生成了所有可能的组合。 但是,在字典中只生成单词的有效方法是什么呢? 我遇到了这个页面, 在Ruby中解决anagrams 。 但是你有什么想法?

支持向量机 – 硬性还是软性边际?

给定一个线性可分的数据集,在软边缘SVM上使用硬边缘SVM是否更好?

检查二叉树是镜像还是对称

testing树是否对称的基本algorithm是什么? 因为它是一棵二叉树,所以我会假定它是一个recursion的sorting定义 正式的问题如下: 如果其左右子树是相同的镜像,即二叉树是对称的,则二叉树是其自身的镜像。 最好用几个例子来解释。 1 / \ 2 2 真正 1 / \ 2 2 \ 3 假 1 / \ 2 2 / \ / \ 4 3 3 4 真正 1 / \ 2 2 / \ / \ 3 4 3 4 假 1 / \ 2 2 / \ 3 […]

为什么迭代k路合并O(nk ^ 2)?

k路合并是将k个sorting后的数组作为input的algorithm,每个数组的大小为n。 它输出所有元素的单个sorting数组。 它通过使用归并sortingalgorithm中心的“合并”例程将数组1合并到数组2中,然后将数组3合并到这个合并数组中,依此类推,直到所有k数组合并。 我曾经以为这个algorithm是O(kn),因为algorithm遍历每个k个数组(每个长度为n)一次。 为什么是O(nk ^ 2)?

哈希表vs平衡二叉树

当我需要在哈希表或平衡二叉树之间进行select以实现集合或关联数组时,应考虑哪些因素?

有没有更好的方法来排列string?

void permute(string elems, int mid, int end) { static int count; if (mid == end) { cout << ++count << " : " << elems << endl; return ; } else { for (int i = mid; i <= end; i++) { swap(elems, mid, i); permute(elems, mid + 1, end); swap(elems, mid, i); } } […]

更糟的是更好。 有一个例子吗?

是否有一个广泛使用的algorithm的时间复杂性比另一个已知的algorithm更差 ,但是在所有的实际情况下它是一个更好的select(复杂度更高但是更好 )。 可接受的答案可能是一种forms: 有algorithmA和B地具有O(N**2)和O(N)时间复杂度,但是B具有如此大的常数,以至于对于input小于宇宙中的primefaces数量,它不具有A优点。 答案中的例子突出显示: 单纯形algorithm – 对于凸优化问题,最坏情况是指数时间 – 已知多项式时间algorithm。 中值algorithm的朴素中位数 – 最坏情况O(N ** 2) 与已知的O(N)algorithm。 回溯正则expression式引擎 – 最坏情况下的指数与 O(N)Thompson NFA引擎。 所有这些例子都是利用最坏情况与平均情况。 是否有例子不依赖于最坏情况与平均情况之间的差异? 有关: “更坏更好”的崛起 。 (为了这个问题的目的,“更糟糕更好”这个短语的使用范围比文章更窄 (即algorithm时间复杂度) Python的devise理念 : ABC集团追求完美。 例如,他们使用基于树的数据结构algorithm,这些algorithm被certificate对于渐进式大集合是最优的(但对于小集合来说并不是那么好)。 如果没有能够存储这些大集合的计算机(换句话说,在这种情况下大不够大),这个例子将是答案。 方matrix乘法的Coppersmith-Winogradalgorithm是一个很好的例子(它是最快的(2008),但是差于algorithm)。 其他人? 从维基百科文章:“这不是在实践中使用,因为它只提供了一个巨大的优势,他们不能被现代硬件处理(罗宾逊2005年)”。

2 ^ n和n * 2 ^ n在相同的时间复杂度?

我在时间复杂性上find的资源并不清楚什么时候可以忽略时间复杂度方程中的项,特别是非多项式的例子。 我很清楚,给定n 2 + n + 1的forms,后两项是不重要的。 具体来说,给出两个分类,2 n和n *(2 n )是第二个与第一个相同的顺序? 那么附加的n乘法是否重要? 通常资源只是说x n处于指数增长速度更快,然后继续前进。 我可以理解为什么它不会因为n会大大超出n,而是因为它们没有被加在一起,所以在比较两个方程的时候会有很大的关系,实际上它们之间的差别总是n的一个因子,这至less可以说是很重要的。