algorithm - 复发的解决办法
问题描述
我正在寻找这种复发的解决方案。基本上我想学习如何解决这种重复以及如何获得它的价值。
T(N) = 3T(N/3) + T(N/2) + N
解决方案
使用 Akra-Bazzi 方法绝对是一个很好的解决方案。
以下关于递归树的解决方案是错误的。在评论中找出原因。
只是想在这里留下错误的解决方案,以防有人好奇或犯同样的错误。
这是递归树的解决方案。
对于 h 级,它看起来像
T(N) = 3^h*T(N/3^h) + T(N/2^h) + \sum\limits_{i=1}^{h-1} (3^{i-1} + 3^i)*T(N/(3^i 2^{hi}))
这意味着 h 级有贡献
N < N + N/2^h + 4N/3 * (1-\frac{1}{2^{h-1}}) < 4N
请注意,递归树的高度介于
(\log_2 N, \log_3 N)
因此,大哦符号是
O(N log N)
(只是想说明递归树是一种可能的解决方案。
推荐阅读
- c++ - c ++类/结构中的功能依赖属性
- python - ModuleNotFoundError:没有名为“flask”的模块,我做错了什么?
- list - Dart - 在列表中查找重复值
- r - 最小行乘以最大行
- python - Django Mysql 不迁移模型
- javascript - 使用 Javascript 将 React 应用程序嵌入为小部件失败,并在 Firefox 和 Chrome 上显示不同的消息
- algorithm - 具有相同变量名的 for 循环的复杂性
- excel - 如何在每个工作表上循环并根据单元格值重命名工作表
- sql-server - 在 BCP 导入的表上跟踪 SQL Server 中的更改
- blockchain - 如何将一组结构从 web3js 发送到 Solidity 合约?