在许多算法中,很容易理解算法如何执行算法,而是适用于它的工作方式很好,它如何工作,有时候,作者构造树木或图表的作者并不是很容易进行处理并使用这些结构来描述研究对象的属性,并证明了结构的一些属性,最终给出了它的解释为什么它适用于...

我们什么时候应该使用树,图形来分析算法?或等效地,在理论上描述树木或图表是什么属性?

在排序算法中,使用二叉树分析许多算法,在2SAT算法中,问题的核心被称为图形。

嗯,对于固定模式的问题,可以容易地暗示结构,如OI或LeetCode中的问题,然而,在研究中,这种情况不太可能发生。

如果最好的答案是:嗯,当你觉得一些结构是正确的时,你可以尝试它们,很难说必须使用它,哪个不应该。我接受。我期待着更鼓舞人心的答案。

有帮助吗?

解决方案

答案可能就像数据结构课程的促销!

您可能在编程语言的研究中研究了数据结构,而不是以抽象的方式研究。

你应该知道数据结构的主要特征和你的问题,选择最适合它的问题(通过合适的我们通常意味着在主要操作的时间和空间复杂性上效率,并希望有意义,我意味着容易理解表示)

例如,如果您想要快速搜索/插入(O(log n)),则使用BST(O(log n)),如果担心最坏的情况,则可能希望保持树平衡;如果您认为UR之间的频率差异,请更喜欢HU-TUCKER OAT相当可对性能产生影响。用于编码的霍夫曼树,哈希表如果您的项目r分散在范围内,并且您希望快速搜索/插入(const在av),.... b树,b + -trees,... 选择bet数组,链接列表,堆栈,....

相同

您可以看看Knuth艺术计算机编程,第3卷搜索和排序

然后,您可以继续更实际的问题,并考虑UR元素之间的性质和关系。如果连接有一个分层性,则选择树木,如果连接变化,顶点或边缘可能具有表示成本或利润的值;有时你可能会重新思考你的选择哪些数据以将顶点放在那样,在这种情况下,在这种情况下,你想到了解决问题的问题和众所周知的算法的性能,以便在每种情况下将其映射到映射到每种情况。< / p>

我希望这是有帮助的

其他提示

没有艰难的规则。如果它们有用,请使用它们;如果他们不是,请不要。作为广泛的准则:

在一对项目之间具有关系时,图形通常是有用的。

树木具有分层关系时通常有用。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top