不过在这3天里,我有很多的感触。如何才能学以致用。
咱们先来看看我这次选的题目
B题:乘公交,看奥运
我国人民翘首企盼的第29届奥运会明年8月将在北京举行,届时有大量观众到现场观看奥运比赛,其中大部分人将会乘坐公共交通工具(简称公交,包括公汽、地铁等)出行。这些年来,城市的公交系统有了很大发展,北京市的公交线路已达800条以上,使得公众的出行更加通畅、便利,但同时也面临多条线路的选择问题。针对市场需求,某公司准备研制开发一个解决公交线路选择问题的自主查询计算机系统。
为了设计这样一个系统,其核心是线路选择的模型与算法,应该从实际情况出发考虑,满足查询者的各种不同需求。请你们解决如下问题:
1、仅考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般数学模型与算法。并根据附录数据,利用你们的模型与算法,求出以下6对起始站→终到站之间的最佳路线(要有清晰的评价说明)。
(1)、S3359→S1828 (2)、S1557→S0481 (3)、S0971→S0485
(4)、S0008→S0073 (5)、S0148→S0485 (6)、S0087→S3676
2、同时考虑公汽与地铁线路,解决以上问题。
3、假设又知道所有站点之间的步行时间,请你给出任意两站点之间线路选择问题的数学模型。
【附录1】基本参数设定
相邻公汽站平均行驶时间(包括停站时间): 3分钟
相邻地铁站平均行驶时间(包括停站时间): 2.5分钟
公汽换乘公汽平均耗时: 5分钟(其中步行时间2分钟)
地铁换乘地铁平均耗时: 4分钟(其中步行时间2分钟)
地铁换乘公汽平均耗时: 7分钟(其中步行时间4分钟)
公汽换乘地铁平均耗时: 6分钟(其中步行时间4分钟)
公汽票价:分为单一票价与分段计价两种,标记于线路后;其中分段计价的票价为:0~20站:1元;21~40站:2元;40站以上:3元
地铁票价:3元(无论地铁线路间是否换乘)
注:以上参数均为简化问题而作的假设,未必与实际数据完全吻合。
【附录2】公交线路及相关信息(见数据文件B2007data.rar)
题目说得很清楚,就是给出很多的节点,然后按照用户的要求搜索就可以。
最初分析的时候,我想建立一个图模型,用一些基本的图搜索算法和最短路径的算法来算,可是后来初步统计了一下公交站点的个数3957个。Oh,不算不知道,一算吓一跳,没有想到北京的交通系统竟然如此庞大!!!
这个算法是没有可能求除结果的。
于是乎,我换了一种模型,就是将每个站点和线路相互联接起来。最后计算的速度和结果都非常不错。具体的实现可以看附件/Files/gpcuster/2007mcm.rar
题目是解决了,但是给我留下了很多的思考。
算法对程序设计的重要性。虽然在整个程序的实现过程中,模块化的设计和OO技术的应用极大的降低了程序的复杂性,但是没有算法,一切都是空谈,这些技术都是为了更好地实现算法而服务的。
文档的重要性。这次做题,其他方面感觉处理得都不错,可是到最后写论文这块出现了不少问题。很多地方只有自己能想明白,而无法将其在展现在论文中。
对自己的要求:
1 多多学习算法,提高自己的逻辑思维水平。
2 多多练习技术文档的写作,锻炼自己的文字表达能力。