chaoxu / algoprob

Algorithmic Problems and Exercises
7 stars 0 forks source link

问题数据库的构想 #4

Open chaoxu opened 5 years ago

chaoxu commented 5 years ago

两个数据. 问题和算法(包括数据结构) 问题是规定的input和output的. (数据结构类问题稍微复杂一点) 每个算法都是解决一个特定问题的.

几大重要功能

  1. 特例的inheritance. 难度 ★ 比如问题里, 有个特例是B. 这里录入B的时候只需要说inherit A. 然后只需要增加不一样的东西. 这样原先可以使用在A的算法现在还能使用在B. 是的这非常OO.

  2. 自动计算复杂度. 难度 ★★ 比如 一个解决问题A的一个算法其中要跑解决问题B的算法n次. 而跑的时候给B的算法的input的大小是n^2. 则这个算法的时间复杂度是O(n T(n^2)), T(n)是input大小为n的时候B要跑的时间. 显示真实时间的时候可以从数据库里, 找到所有B问题的算法, 每一个时间复杂度塞进去, 然后求min. 好处是哪一天某个问题获得了新算法, 可以自动更新其他问题最快的算法.

  3. 时间复杂度排序. 难度 ★★★★★

    • asymptotic analysis. 比如计算出了O(m^2)和O(m)的算法, 哪一个快可以自动的获得. 而不用现在手动的去计算究竟哪个更快. 这个暂时应该会用SAGE的asymptotic expansion功能. 它们应该足够好能自动化大多comparison了.
    • 更高级的analysis. 比如可以加上约束, 如 m = O(n^2)这样的约束.