两个数据. 问题和算法(包括数据结构) 问题是规定的 input 和 output 的. (数据结构类问题稍微复杂一点) 每个算法都是解决一个特定问题的.
几大重要功能
特例的 inheritance. 难度 ★ : 比如问题 A 里, 有个特例是 B. 这里录入 B 的时候只需要说 inherit A. 然后只需要增加不一样的东西. 这样原先可以使用在 A 的算法现在还能使用在 B. 是的这非常 OO.
自动计算复杂度. 难度 ★★ : 比如 一个解决问题 A 的一个算法其中要跑解决问题 B 的算法 n 次. 而跑的时候给 B 的算法的 input 的大小是 n^2. 则这个算法的时间复杂度是 O(n T(n^2)), T(n)是 input 大小为 n 的时候 B 要跑的时间. 显示真实时间的时候可以从数据库里, 找到所有 B 问题的算法, 每一个时间复杂度塞进去, 然后求 min. 好处是哪一天某个问题获得了新算法, 可以自动更新其他问题最快的算法.
时间复杂度排序. 难度 ★★★★★
1
lrxiao 2019-02-08 03:06:37 +08:00
感觉要定义一个问题和算法以及适用范围可能会比较困难,同时算法 /数据结构真的会有大量的通用结构吗?
最近的 Morning Paper blog 好像有几篇自动选择算法数据结构的 比如 https://blog.acolyer.org/2019/01/23/the-data-calculator-data-structure-design-and-cost-synthesis-from-first-principles-and-learned-cost-models/ |
2
aijam 2019-02-08 03:25:10 +08:00
于是 lz 发明了一种可以解决所有(大多数)问题的算法。。。
|
3
chaoxu OP |
4
momocraft 2019-02-08 09:50:41 +08:00
难点:算法的形式化描述
另外 2 得到的可能只是一个复杂度上界 |