運賃計算と分割乗車券の仕組み

当サイトは,JR線の利用において移動コストを最小化する「最安分割乗車券」と,それを実現する経路を自動的に導出するシステムです.ここでは,なぜ乗車券を分割すると安くなるのかという仕組みと,当サイトを支える情報工学に基づいた計算アルゴリズムについて解説します.

1. なぜ乗車券を分割すると安くなるのか?

JRの運賃は原則として乗車する営業キロの合計に基づいて算出されますが,以下の5つの要因により,途中の駅で乗車券を分割して購入した方が合計運賃が安価になるケースが存在します.

  • キロ単価の非単調性: 運賃のキロ単価は一定ではなく,距離帯によって変動するため,分割した方が安価となる場合があります.
  • 特定区間運賃の利用: 私鉄などと競合する区間には,通常の距離制運賃よりも安い「特定運賃」が設定されていることがあり,その区間を独立させて分割することで全体が安くなります.
  • 長距離区間における距離帯間隔の拡大: 営業キロが長くなるにつれて運賃が上昇する間隔が広がるため(例:50kmまでは5kmごと,100km〜600kmは20kmごと),短距離の乗車券を別途購入して長距離側の営業キロを調整することで,全体を低減できる場合があります.
  • 電車特定区間運賃の適用: 割安な「電車特定区間」と通常の「幹線」をまたがって乗車する場合,全区間が割高な幹線の賃率で計算されてしまうため,境界で分割して安い賃率を適用させます.
  • 特定都区市内制度の適用または回避: 特定都区市内の特例制度を利用して運賃計算経路を短縮したり,逆に特例の適用を避けるために境界駅で分割することで安くなることがあります.

2. 当サイトの探索アルゴリズムの優位性

既存の分割乗車券プログラムでは,利用者が事前に「乗車する経路」を指定する必要がありました. また,計算速度を優先して動的計画法(DP)を採用しているため,最適化の過程で同額となる別の分割パターンが枝刈りされてしまい,出力される解が一つに限定されるという課題がありました.

当システムでは,情報工学におけるグラフ理論を応用し,以下の独自アプローチを採用しています.

経路指定不要の自動探索

Dijkstra's Algorithm と Yen's Algorithm を組み合わせることで,利用者が経路を指定することなく,分割乗車券によって安価となる「迂回経路」も含めた探索を自動で行います.

ヒューリスティック探索の不採用と厳密解

A* アルゴリズムなどの手法は高速ですが,JRの運賃制度には「営業キロが物理的な距離よりも短く設定されている区間」が存在するため,物理的距離を推定値に用いると実際のコストを過大評価し,最安解を見逃すリスクがあります.そのため,本システムは解の正当性を完全に保証する手法を採用しています.

同額パターンの完全列挙

現実の鉄道利用においては,分割位置による途中下車の可否など,利便性を左右する要因が存在します.当システムは最適化の過程で枝刈りを行わず,同額となる複数の最安分割パターンを完全に列挙し,利用者の実用上の選択肢を全て提示します.

3. 運賃の「逆転現象」への対応

特定の条件下では,乗車経路を外方へ延伸することで運賃が安くなる「逆転現象」が発生します. 例えば,特定都区市内制度において,あえて目的地の先の駅まで切符を買うことで,発駅が都区市内中心駅からの計算に切り替わり,結果的に運賃が安くなる現象などです.

当システムでは,こうした複雑な運賃規則(経路特定区間や特定都区市内など)をアルゴリズムの内部に組み込み,延伸による逆転現象も考慮した「真の最安運賃」を導出する処理を行っています.