2014-04-04 46 views
2

enter image description here在公共交通圖論

嗨,

我現在是發展公共交通指南軟件。在歐洲,美國的谷歌地圖提供了這一點,但在土耳其則沒有。我有數據庫,其中包含所有車站的經度和緯度,以及其他公交線路,車站信息。在我的計劃中,首先我將使用圖論(站點是頂點;邊權重是站點之間的距離)並連接位於同一條總線上的站點;然後找到路線。之後,我將在Google Map上演示路線。我已經完成了第一步,連接站。然而,之後我發現我的計劃中出現了一個錯誤,如圖所示。 人想要去接近A到K,該方案應該說

  1. 在站步行到A站
  2. 上了車總線8一個
  3. 在測站點E
  4. 步行至車站下車後總線8 ħ
  5. GOT上總線970在臺H
  6. 下車時總線970在站ķ

但是,站E和H之間沒有連接。因此,圖算法無法找到從A到K的路線。我應該定義E和H之間的步行路徑。然而,這只是該城市的6500多個小示範在城市站。我怎麼解決這個問題? 我有一個想法,在1公里範圍內的電臺之間添加連接;但我認爲這是低效的。 謝謝。

+1

也許你可以比較兩個線路站點之間的距離,並通過步行選擇最近的2個站點? [距離矩陣服務](https://developers.google.com/maps/documentation/javascript/distancematrix)可能會有所幫助。 – MrUpsidown

+0

感謝您的支持,但它只適用於乘客使用2輛巴士。如果兩條線不相交併且需要第三條線或第四條線會怎麼樣? – mcs111

+0

https://www.google.com/intl/zh-CN/landing/transit/怎麼樣?看來土耳其已經有幾行了。 – MrUpsidown

回答

0

在E和H之間添加一個有向邊,重量爲'a'。選擇'a'以使網絡中沒有任何邊權重具有相同的權重'a'。例如,您可以選擇'a'爲0,因爲我確信您的網絡中沒有任何邊緣的權重爲零,因爲這意味着某些兩個站點之間沒有距離。接下來,以這樣一種方式編碼您的程序,只要選擇的路線包含重量爲「a」的邊緣,程序就應該說「從E站走到H站」「或者任何具有重量邊緣的節點'a'連接。

否則,您可以有一個圖形,以便每當您必須走路時,從一個節點到另一個節點有兩個有向邊。假設一個邊的權重爲0,另一個邊的權重爲兩個站之間的距離。確保你的程序是這樣編碼的,當在站A和B之間遇到兩個邊時,一個用權重0,另一個用'x'時,那麼程序給出指令「從站A到B,距離'x'km。