我最近重新开始学习离散数学。我在大学注册了一门课程,并且无法再次掌握一些问题,特别是在从单词问题中获得复发关系时。我很想知道如何这样做的一些提示。
例如(我已经改变了家庭作业问题中的数字,所以如果这不能解决,请告诉我):如果Jean划分大小的输入 n 分为三个大小为n / 5的子集,并将它们组合在 theta(n)时间,运行时是什么时候?我得到3T(n / 5)+ theta(n)作为递归关系,我不知道运行时是什么,我觉得这些都是不正确的。
我发现这个网站(https://users.cs.duke.edu/~ola/ap/recurrence.html)有助于将重复关系分解为一个可靠的运行时,但我仍然没有得到如何从第一个单词问题中获得递归关系地点。谢谢!
答案 0 :(得分:0)
将问题视为每个级别上具有节点的树结构。每个节点将包含您在特定时间处理的问题大小的数字,并且在每个级别您将拥有一些节点。这个数字可以是1,2,.......每个级别最多n个节点。
现在从顶级开始。您将拥有1个节点,其中的值将为' n'(因为在起点,我们将有' n'要处理的元素。)
现在降到第二级。在上面的问题中说,在任何时间点将问题(元素)分成三个部分,因此第2级上的节点数将为3.每个节点中的值将为' n / 5'(因为问题说每个子集的大小是父节点上存在的元素数除以5)。树将看起来像: -
(n)
| | |
(n/5)(n/5) (n/5)
现在进一步降到第3级,树看起来像
(n) level(1)
| | |
(n/5) (n/5) (n/5) level(2)
| | | | | | | | |
(n/25)(n/25)(n/25) (n/25)(n/25)(n/25) (n/25)(n/25)(n/25) level(3)
你将一直持续到最后一个级别,它只包含1个元素,节点总数将是' n'。
因此,如果您需要编写递归,请参阅级别1和级别2。
Time taken to solve problem with 'n1' element is written as T(n1).
Time taken to solve problem with 'n2' element is written as T(n2).
Now number of elements in level 1 is n1=n
(Time taken to solve problem on first level)=(Time taken to solve 1st
node of level 2)+(Time taken to solve 2nd node of level 2)+(Time taken
to solve last node of level 2) + (It also takes time to combine these
three nodes given in question i.e. theta(number of total elements(n))
T(n)=T(n/5)+T(n/5)+T(n/5)+theta(n)
=>T(n)=3T(n/5)+theta(n)