我会直截了当地说。我正在开发一个负责安排的网络或电话应用程序。我希望学生输入他们所选择的课程,然后我给他们提供符合他们要求的课程组合。
但是,假设有150门课程符合他们的要求,他们正在寻找3门课程。那将是150C3组合,对吗?
在浏览器或移动设备上运行这样的东西是否可行?
答案 0 :(得分:2)
首先,您需要一个更智能的算法来修剪搜索树。此外,如果您反复对同一组课程执行此操作,那么在服务器上执行计算会更好,并且可能预先计算可行的数据结构可以减少查询的执行时间。例如,您可以创建一个树,其中节点下的每个子树都包含“兼容”的节点。
答案 1 :(得分:1)
对我来说听起来像你完全错了。在大多数院校,有1)毕业课程要求,2)许多要求和选修课的先决条件。这不是一个纯粹的组合问题,它是一个依赖树。例如,如果学生的专业都需要课程201,课程301和课程401,则较高编号的编号较低的编号作为先决条件,而学生是青少年,您应该强烈建议尽快选择课程201。
答案 2 :(得分:0)
是的,数学我认为我可以处理!
如果有150个课程,你必须选择3个,那么可能的数量是(150*149*148)/(3*2)
(每个杰瑞的修正),这肯定比150因子更好,这是更多的零;)< / p>
现在,你真的不想构建一个大小的数组,而你不需要!所有Web语言都有随机选择数组中元素的想法,因此您可以在数组中获取一个元素并从中请求3个随机唯一条目。
虽然潜在的课程组合非常大,但根据您的帖子,我认为没有理由尝试计算它们。从n大小的列表中随机选择k项的任务即使对于旧的慢速设备也是微不足道的!
是否有任何特殊原因需要计算所有潜在的课程组合,而不仅仅是将一个随机选择作为建议抓包?如果没有,问题就解决了!
答案 3 :(得分:0)
选项1(Time \ Space代价昂贵):让用户在手机上浏览(150 * 149 * 148)列表中的可能选择,逐页,处理在服务器上完成侧的。
选项2(简单):代替(150 * 149 * 148)-item决策树,提供一个150个项目的包,如果他从包中选择一个项目,将其从包。
选项3(复杂):使用依赖关系树扩展您的决策树(可能的选择)(父课程需要子课程)和学生已经采取的课程列表,以及他的跟踪\水平。
据我所知,大多数教育系统使用第三种选择,这需要为学生提供个人资料。