結果は、地下鉄への最短経路を見つけるためにマップを使用して達成しました

図の構造を持つ2つの局の地下鉄の駅の間の最短経路。

最短経路を見つけるために2つのステーションを完了するためのPythonプログラム書く:
ダイクストラアルゴリズムを使用して1.、
2。見つけるためにライン上の2つの駅、それらのいずれかの間に、複数の最短経路が存在する場合
北京地下鉄線の合計

図の発電所名入力構造。

LINE1 = U「」「リンゴ園旧市街の道八角遊園地Babaoshan玉泉路Wukesong Wanshoulu Gongzhufen軍事博物館アルバ
世界貿易ポイントロード四会市でNanlishi天安門西天安門東Fuxingmennei西単、王府井と東単建国ウィング四会市'' '
LINE2 = U' ''西直門Chegongzhuang Fuchengmen Fuxingmennei Changchunjie玄武平和フロントドア建国局Chongwenmen北京市
朝陽ゲートYonghegong Dongsishitiao、東直門、Andingmen GuLouDaJie Jishuitan ' 「」
LINE5は= U「」「はLiujiayao Puhuangyu Chongwenmen天壇東門ciqikou東単DengShiKou東四Zhangzizhonglu songjiazhuang
新しい北西大屯のBeixinqiao Yonghegong HepingliノースストリートHepingxiqiao Huixinxijieサウスサイドは利益を東北回りBeiyuan Lishuiqiao南Lishuiqiao Tiantongyuan Tiantongyuan Tiantongyuan南北「」「
LINE4 = U」「」寺の病院生物医学ベースyihezhuang Huangcun Huangcun西アベニュー駅ナツメオーチャードロード清遠高米店南
高米店北西新宮殿レッドゲートコミュニティ西ブリッジ西Majiabao彼らは路地西第四を通じてCaishikou宣武門、西単北京南駅陶然亭の精神を見た
グリーンレーンXinjiekou西直門動物園北京中関村海淀Huangzhuangの人民大学のWeigongcun国立図書館 サマーパレス北宮殿学校西苑北川橋「」「の東門
LINE6 = U」「北海にTSZティン寺Rdの海淀ホワイトDanqiaoナンChegongzhuang平和をランク付け」、ノース・ウェストChegongzhuang南鑼鼓巷東四東朝陽門橋
Hujialou金テラス道路Shilipuユース道路大連排水スロープ黄色のコテージ研究所通常の業務用品通州Beiguanロードエクスプレスゲート北北西運河東カナルハウス東ハオ呂チェン夏公園「」「
line8 = U」「」Zhuxinzhuang道路Pingxiフユ知っHuilongguan東通りHuoyingゆう太極拳ニュージーランドの小さなポート村林崔橋の森公園南門
オリンピック公園オリンピックスポーツセンターBeituchengアンワル橋GuLouDaJie什刹海南鑼鼓巷「」「
Line9 = U」「」国立図書館ホワイトDanqiaoナンホワイトヒープ息子軍事博物館、北京西駅東航天橋航天橋Qiliチワン語
、豊台東アベニューロード、豊台サイエンスパーク豊台Nanlukeyi Guogongzhuang「」「
line10 = U」「」Jinsong双子の世界貿易センターJintaixizhao Hujialou団結湖店農業展覧Liangmaqiao Sanyuanqiao Shaoyaojuサンパレス
HuixinxijieサウスサイドAnzhenmen北土城土城健康狂するウェスト・ガーデンZhichun Zhichunリー、海淀蘇州ストリートBaGou Huangzhuang銃器事業
長春橋Chedaogou TSZティン寺西釣魚台Gongzhufenロータス橋駅航天橋豊西局丹羽最初の貿易寺草ブリッジ
コーナーゲート、彼らはダンLiuzhuang songjiazhuang Chengshousi Fenzhongsi Shilihe潘家園「」「dahongmenイーストウエストを見た
Xi'erqiブロンズHuilongguan Huoying Lishuiqiao Beiyuan、望京西へ西直門Zhichun道グレート鐘寺五道口にLine13 = U」「」
牡丹生息地Guangximen劉牙東直門「」「
line14 = U」「」Zhuangyuanボーチャン郭郭ZiをWayao広い庭井戸Qili荘西ビューロー「」「
砂後の2外国人= U」「」は風水ボー順義石門南フランスの手紙日谷ステートフェア梨ホムカバスプリングキャンプCuigezhuang望京望京西「」 '
YiZhuangLine = U「」「ショーヴィレッジXiaohongmenヴェッキオ宮殿songjiazhuang Yizhuang文化公園ストリートウァニュエンストリートRongjingドン栄・チャンドンストリート
海排水排水することにより、同済道南」「」
FangShanLine = U「」「Guogongzhuang大きなセレブレックス台湾水田フェンス長陽部屋陽澄南門蘇荘の北西大学都市良郷地区良郷地区大学の広い良郷地区良郷地区大学「」 '
ChangPingLine = U「Xi'erqiライフサイエンスパークZhuxinzhuang Gonghua市沙沙高等教育公園Nanshao」
中国Shuangqiao荘Baliqiao通州Beiyuan果樹園JiukeshuのBaTongLine = U「」「四会市4 Huidong高碑店市通信大学梨園Linhe土橋「」 '

辞書パイソンを導入これらの文字列は、動作をアンパック利用することができます。

DEF(**線)build_subway:
「」」
入力build_subwayある(linename = 'STATION1 station2 ...' ...)
{neighbor1:行番号、neighbor2:行番号、...}、station2:出力リレーは{ステーションのような辞書です{...
}、...} 「」」
lines.keysにおけるキーの():
値=行[キー]
行[キー] = value.split()
局=セット()
lines.keysにおけるキーの():
stations.update(セット(行[キー]))
システム= {}
ステーションにおけるステーションのため
next_station = {}
株におけるキーの:
もし[キー]行に駅:
行=行[キー]
IDX = line.index(ステーション)
IDX場合== 0:
next_station [ライン[1] =キー
ELIFのIDX == LEN(ライン)-1:
next_station [線[IDX-1]] =キー
他:
next_station [線[IDX-1]] =キー
next_station [ライン[IDX + 1] =キー
システム[ステーション] = next_stationの
リターンシステム

しかし、円形の経路は、適切な調整を行う必要があります

DEF(BeiJingSubway)update_subway:
"" "
起因LINE2とline10あるサークル線に
BeiJingSubwayを更新する必要がある
" ""
BeiJingSubway [U '西直門'] [U 'jishuitan'] = 'LINE2'
BeiJingSubway [U 'jishuitan'] [U 'は西直門'] = 'LINE2'
BeiJingSubway [U 'Jinsong'] [U '潘家園'] = 'line10'
BeiJingSubway [U '潘家園'] [U 'Jinsong'] = 'line10'
戻りBeiJingSubway

私たちは本当に構造のビューを取得する必要があります

bj_subway = build_subway(LINE1 = U「 」 ' リンゴ園旧市街の道八角遊園地Babaoshan玉泉路Wukesong Wanshoulu Gongzhufen軍事博物館アルバ
Nanlishi天安門西天安門東Fuxingmennei西単、王府井と東単建国ウィング国際貿易DA王道四会市四会市「」「
LINE2 = U」 『』西直門Chegongzhuang Fuchengmen Fuxingmennei Changchunjie玄武平和フロントドア建国局Chongwenmen北京市
朝陽ゲートYonghegong Dongsishitiao東直門安定性ドラムタワーストリートドアJishuitan '' 'は、
LINE5は= U' '' songjiazhuang Liujiayao Puhuangyu Chongwenmen天壇東門東単DengShiKou東四Zhangzizhonglu ciqikou
Beixinqiao Yonghegong HepingliノースストリートHepingxiqiao Huixinxijie南側のメリット新しいノース・ウェスト大屯東回り北回りBeiyuan Lishuiqiao南Lishuiqiao Tiantongyuan Tiantongyuan Tiantongyuan南北「」「
LINE4 = U」 『』寺の病院生物医学ベースyihezhuang鉄道駅Huangcun Huangcun西アベニュー清遠ナツメオーチャード・ロードが高いですミディアン南
から北高米店新しい西の橋の公共住宅Xihongmen路地西第四を通じてMajiapu北京南西宣武門、西単陶然亭Caishikouの精神を見た
グリーンレーンXinjiekou人民大学Weigongcun西直門動物園国立図書館 北京大学西苑北川橋北の宮殿「」のHuangzhuang中関村海淀円明園東門「
LINE6 = U」 『北海や東北南鑼鼓巷でTSZティン寺Rdの海淀ホワイトDanqiaoナンChegongzhuang西Chegongzhuang平和をランク付けします』東朝陽門橋
HujialouジンタイロードShilipuユース道路大連排水スロープ黄色のコテージ研究所通常の業務用品通州Beiguanロードエクスプレスゲート北北西運河東カナルハウス東ハオ呂チェン夏公園「」「
line8 = U」 『』ウィングタイ林崔橋の森公園南門のZhuxinzhuangゆう道路、知らHuilongguan東メインストリートHuoyingゆうPingのXifuニュージーランドの小さな港の村
オリンピック公園オリンピックスポーツセンターBeituchengアンワル橋GuLouDaJie什刹海南鑼鼓巷「」「
Line9 = U」 『』国立図書館ホワイトDanqiaoナンホワイトヒープ息子軍事博物館、北京西駅東航天橋航天橋Qiliチワン語
豊台東通りの道、豊台サイエンスパーク豊台Nanlukeyi Guogongzhuang「」「
line10 = U」 『』 Jinsong双子の世界貿易センターJintaixizhao Hujialou団結湖店農業展覧Liangmaqiao Sanyuanqiao Shaoyaojuサンパレス
Huixinxijieサウスサイドのセキュリティ陳健ドアBeitucheng狂するウェスト・ガーデン土城海淀Zhichun Zhichun Huangzhuang蘇州ストリートBaGou銃器ビジネス
自宅で長春橋Chedaogou TSZティン寺西釣魚台Gongzhufenロータス橋駅航天橋豊西局丹羽最初の貿易規律寺Caoqiaoの
コーナーゲート、彼らは、東西のdahongmenダンLiuzhuang songjiazhuang Chengshousi Fenzhongsi Shilihe潘家園「」「見た
五道口Xi'erqiブロンズHuilongguan Huoying Lishuiqiao BeiyuanにLine13 = U」 『』西直門Zhichunロードグレート鐘寺望京西
ShaoYaoJu Guangximen劉牙東直門「」「
line14 = U」 『』 Zhuangyuanボーチャン郭郭ZiをWayao広い庭井戸Qili荘西ビューロー『』「
2エイリアン= U」 『』風水ボー順義石門南フランスの手紙houshayuナシホムステートフェアカバ孫権キャンプCuigezhuang望京望京 「」「
YiZhuangLine = U」 『』ショーヴィレッジXiaohongmenヴェッキオ宮殿songjiazhuang Yizhuang文化公園ストリートウァニュエンストリートRongjingドン栄・チャンドンストリート
、同済道南の海の排水排水『』「によって、
FangShanLine = U」 ' 「「西南門蘇荘の北の良郷地区大学都市Guogongzhuang大きなセレブレックス水田フェンス長陽の部屋の広陽澄良郷地区大学良郷地区良郷地区大学」」
ChangPingLine = U「Xi'erqiライフサイエンスパークZhuxinzhuang Gonghua市沙沙高等教育公園Nanshao」、
BaTongLine = U「」「荘Baliqiao通州Beiyuan園四会市の橋渡し4高碑店市通信大学中国のHuidong 9土橋梨ツリーLinhe ''「)
bj_subway = update_subway(bj_subway)

二つのステーション間の最短経路を探します

DEF shorter_path(ゴールを開始):
「」「
変更回FINA最短経路を考慮しない
『』」
起動した場合==目標:
リターン[スタート]
=セット()探求
キュー= [[開始]
:キューながら
パス= queue.pop(0)
S =パス[-1]
の状態のために、bj_subwayにおけるアクション[S] .items()
状態でない場合探求において:
explored.add(状態)
パス2 =パス+ [アクション、状態]
状態なら==目標:
リターンパス2
他:
queue.append(パス2)
リターン[]

テスト「土橋」と「人民大学」:
ここに画像を挿入説明
著者
:ジョーカー
:Tanzikun

おすすめ

転載: blog.csdn.net/zKUN_bit/article/details/92436607