🚉

乗り継ぎ(乗り換え)検索のこんな使い方 1

に公開

本「列車乗り継ぎ検索(乗り換え検索)の基礎基本」で、列車の乗り継ぎ(乗り換え)検索アルゴリズムの基礎基本を紹介させていただきました。“乗り継ぎ(乗り換え)検索”は本来、“乗り換え案内”に用いるためのものですが、それ以外に“こんな使い方もあるよ”というようなものを3つほど不定期で紹介していこうと思います。これは、その第1回目です。
https://zenn.dev/kcampari01/books/f9237d0b649771

その1 My時刻表

緩急接続のある路線に駅Aと駅Bがあって、最寄り駅が駅Bでときおり駅Aを往訪する人がいた場合、駅Bに戻ろうとして駅Aの時刻表を見た時、・自分に関係しない列車も掲載されている、・先着する列車がすぐに把握できない場合がある、などのため、駅Aの時刻表がそのままでは必ずしも見やすいとは限らない場合があります。この人にとっては駅Bに先着する列車のみが把握できれば良いわけです。これに対応するような時刻表をMy時刻表、と言うこととします。駅時刻表を見やすくする(フィルタリングする)のが目的ですので、単一路線を想定します。複数の路線にわたる場合は、接続駅で分割した複数のMy時刻表を持つこととします。
これ以降、路線を西武鉄道池袋線、最寄り駅Bを秋津駅、往訪駅Aを池袋駅、ダイヤは2025年3月15日改正の平日、を具体例として、My時刻表作成のアプローチの一つを紹介していきます。

到着起点でのアプローチ

出発基点でも到着起点でも最終的に同じ結果を得ますが、ここでは到着起点で考えてみます。

1. 秋津駅池袋方面からの最終列車の到着時刻を到着希望時刻とし、到着起点で池袋駅出発で乗り継ぎ探索する。

この最終列車は池袋始発の列車に限定されないことに注意して下さい。この条件で探索すると、池袋:0:14 -準急 小手指行-> 0:40:秋津 が提示されます。
この時点で、0:14 準急 小手指行、は、My時刻表に掲載決定です。

2. 提示された列車の池袋駅発車時刻 0:14 で、出発起点で秋津駅到着で乗り継ぎ探索する。

この例の場合は秋津駅到着は 0:40 のままですが、一致しない場合もあることに注意して下さい。ここで取得される秋津駅到着時刻が最終列車での秋津駅到着時刻、ということになります。

3. 2.で提示された秋津駅到着 0:40 の1分前、0:39 到着で、手順 1, 2 を繰り返す。

池袋:0:02 -準急 小手指行-> 0:28:秋津 が提示されます。これは、My時刻表に掲載決定です。

4. 手順 1 から 3 を繰り返す。

池袋:23:52 -準急 飯能行-> 00:21:秋津
池袋:23:39 -準急 飯能行-> 00:07:秋津
池袋:23:32 -各停 保谷行-> 23:42:練馬:23:44 -快速 小手指行-> 00:01:秋津
池袋:23:22 -快速 飯能行-> 23:46:秋津
池袋:23:12 -急行 飯能行-> 23:28:ひばりケ丘:23:30 -各駅停車 小手指行-> 23:36:秋津
池袋:23:02 -準急 小手指行-> 23:28:秋津
池袋:22:52 -急行 飯能行-> 23:06:ひばりケ丘:23:08 -各駅停車 小手指行-> 23:15:秋津
池袋:22:42 -準急 小手指行-> 23:08:秋津
池袋:22:32 -快速 飯能行-> 22:57:秋津
池袋:22:22 -急行 飯能行-> 22:36:ひばりケ丘:22:38 -各駅停車 小手指行-> 22:45:秋津
池袋:22:12 -快速 小手指行-> 22:37:秋津
池袋:22:02 -急行 飯能行-> 22:16:ひばりケ丘:22:18 -各駅停車 小手指行-> 22:27:秋津
池袋:21:52 -急行 飯能行-> 22:06:ひばりケ丘:22:08 -各駅停車 小手指行-> 22:15着:秋津
池袋:21:42 -急行 飯能行-> 21:57:ひばりケ丘:21:59 -各駅停車 小手指行-> 22:06:秋津
池袋:21:25 -快速 飯能行-> 21:49:秋津
池袋:21:20 -急行 飯能行-> 21:34:ひばりケ丘:21:36 -各駅停車 小手指行-> 21:44:秋津
池袋:21:10 -急行 飯能行-> 21:27:ひばりケ丘:21:29 -各駅停車 小手指行-> 21:36:秋津
池袋:20:55 -快速 飯能行-> 21:19
以下、省略します。

5. 時刻表の形式で書き換える

ここまでの結果を時刻表の形式にします。

_________ _________ _________ _________ _________ _________
23 準急 小手指
02
_
急行 飯能
12
[ひばりケ丘]
快速 飯能
22
_
各停 保谷
32
[練馬]
準急 飯能
39
_
準急 飯能
52
_
22 急行 飯能
02
[ひばりケ丘]
快速 小手指
12
_
急行 飯能
22
[ひばりケ丘]
快速 飯能
32
_
準急 小手指
42
_
急行 飯能
52
[ひばりケ丘]
21 急行 飯能
10
[ひばりケ丘]
急行 飯能
20
[ひばりケ丘]
快速 飯能
25
_
急行 飯能
42
[ひばりケ丘]
急行 飯能
52
[ひばりケ丘]
20 快速 飯能
55
_

乗車してもよい列車をMy時刻表に追加する

例えば、21:00 に池袋に到着して、目の前に 21:03 発の準急小手指行が止まっていたとします。My時刻表では 21:10 発急行飯能行が案内されていますが、これはひばりケ丘で各駅停車乗り換えとなり、この各駅停車は池袋 21:03 発の準急小手指行なので(21:10 発急行飯能行がひばりケ丘で21:03 発準急小手指行に追いついた)池袋で21:03 発準急小手指行に乗車しても結果は変わらない、むしろ乗り換え回数が減る(乗り換えなし)ので好都合かもしれません。
これに対応するには、上記の例で言えば 21:10 発急行飯能行をマスキング(乗り継ぎ探索から見えないようにする)した上で、20:55 から 21:10 の間で池袋を出発する列車で秋津到着で池袋出発起点による乗り継ぎ探索を行い、その結果の秋津到着時刻と、池袋発 21:10 の秋津到着時刻とを比較して同着のものがあれば、その列車もMy時刻表に記載する、という処理が考えられます。21:03 発の準急小手指行がこれにマッチしました。
結果を時刻表形式で表すと、以下のようになります。

_________ _________ _________ _________ _________ _________ _________
21 準 小手指
03
_
_
急行 飯能
10
[ひばりケ丘]
急行 飯能
20
[ひばりケ丘]
快速 飯能
25
_
_
準 小手指
33
_
_
急行 飯能
42
[ひばりケ丘]
急行 飯能
52
[ひばりケ丘]

https://zenn.dev/kcampari01/articles/e8964063bafbca
https://zenn.dev/kcampari01/articles/fb420932223337

Discussion