公交路线设计
2).搜索直接到達的線路
?1. 有兩種思路,一種方法是用一個大矩陣,行列均是總站點數,A[i][j]記錄的是經過站點i,j的公交路線;另一種方法是,獲取經過站點i的所有的公交路線,有序排列,獲得經過站點j的所有公交路線并有序排列,取交集即可。
?
一般而言,越少換乘越好,所有公交路線的搜索流程也是按照直接到,換乘1次,換乘2次,換乘3次…如此搜索的。
?
固定起始點i和j,其中i為出發站點,j為目標站點。若i和j都在A的第k個行向量中.且i在j前,則i可通過第k條線路到達j.,并統計該線路上產生的時間z2和費用z1..若前面兩個條件之一不滿足,則i不能通過第k 條線路到達j.循環執行下一條線路。最后輸出費用最小的線路和費用最小的線路, 對應完整線路(包括站點和車次)..
3)搜索換乘1次到達的線路
? ?固定起始點i和目標點j,循環執行每個站點.按前面方法判斷站點i能否直接到達站點k,同時判斷站點k能否直接到達站點j.統計每條i能直接到達k,k能直接到達j的線路.并計算該條以k為中轉站的線路的時間z2和費用z1.共循環n次,就可以完成所有搜索.輸出費用最小的線路和費用最小的’線路, 及對應完整線路(包括站點和車次)。
4) 搜索換乘2次到達的線路
??固定起始點i和目標點j,循環計算通過i的所有線路和通過j的所有線路。對通過i的某條線路r,通過j的某條線路s,若線路r中存在站點x1, 線路s存在站點x2,使x1可由某條線路直接到達x2,則獲得一條iàx1àx2àj的換乘兩次的線路。其中x1和x2為中轉站。對通過i的所有線路,通過j的所有線路進行循環執行,且判斷兩條線路上的站點能否直接到達,就可以得到所有有兩個中轉站的線路,計算每條這樣線路的時間z2和費用z3,最后輸出時間最少的線路和費用最小的線路及對應完整線路(包括站點和車次).
5)搜索換乘d次()到達的線路
? ?固定起始點i和目標點j,任意取d個站點,判斷i能否直接到達,能否直接到達,…,能否直接到達,能否直接到達j.若以上每條線路都可以直接到達,則獲得一條iàà--..àj的線路。循環取,則可獲得所有經過d次換乘的線路,最后輸出時間最少的線路和費用最小的線路及對應完整線路(包括站點和車次)。
總結
- 上一篇: 最少次数
- 下一篇: 构建二叉堆时间复杂度的证明