Research Article

A Gradual Approach for Multimodel Journey Planning: A Case Study in Izmir, Turkey

Algorithm 3

Finding routes containing transfers.
Inputs: origin, origin line , , ,
for each node n in Graph:
-n.dist  ≔ infinity;
-n.previous  ≔ undefined;
Q  ≔ Priority queue according to distance;
for each origin stop s in  :
-s.dist  ≔  0;
-enqueue s into Q;
while Q.isEmpty != true:
-u  ≔  node with min distance in Q;
-remove u from Q;
-for each outbound edge e of node u:
--v  ≔  node reachable from u with edge e;
--e.weight  ≔  infinity;
--if e.Line  :
---if u.previous != null:
----prev_e  ≔  edge used for reaching to u
----if e is a line:
-----if e.Line != prev_e.Line:
------if e.Line    : e.weight  ≔  ;
------else if e.Line    : e.weight  ≔   + coefficient1;
------else e.weight  ≔    +  coefficient2;
-----else e.weight  ≔  ;  //  e.Line = prev_e.Line
----else if e is foot-edge:   e.weight  ≔  ;
---else e.weight  ≔ ;  //  u.previous = null
-for each outbound edge e of node u:
--v  ≔  node reachable from u with edge e;
--dist_v  ≔  u.dist  +  e.weigth;
--if dist_v < v.dist:
---dequeue v from Q with key v.dist;
---v.dist  ≔  dist_v;
---v.previous  ≔  u;
---decrease-key v in Q;
---enqueue v into Q with key dist_v;
S  ≔  empty sequence;
u  ≔  target;
while u.previous is not null:
-insert u into S;
-u  ≔  u.previous;