I have a working prototype running and here's the debug info that it's printing.
The following calls were made to generate this.
Code:
addPath("A","B",1);
addPath("A","C",1);
addPath("A","E",1);
addPath("B","A",1);
addPath("B","C",1);
addPath("C","A",1);
addPath("C","B",1);
addPath("C","D",1);
addPath("E","C",1);
findRoute("B","E");
Path Data:
Code:
Create: A>B(1)
Add: A>C(1)
Add: A>E(1)
Create: B>A(1)
Add: B>C(1)
Create: C>A(1)
Add: C>B(1)
Add: C>D(1)
Create: E>C(1)
Array
(
[A] => Array
(
[0] => Array
(
[0] => B
[1] => 1
)
[1] => Array
(
[0] => C
[1] => 1
)
[2] => Array
(
[0] => E
[1] => 1
)
)
[b] => Array
(
[0] => Array
(
[0] => A
[1] => 1
)
[1] => Array
(
[0] => C
[1] => 1
)
)
[C] => Array
(
[0] => Array
(
[0] => A
[1] => 1
)
[1] => Array
(
[0] => B
[1] => 1
)
[2] => Array
(
[0] => D
[1] => 1
)
)
[E] => Array
(
[0] => Array
(
[0] => C
[1] => 1
)
)
)
Routing Steps:
Code:
Routing B>E
Iterating Stack: 0@0=B>A 0+1=1
Push Stack 1
Iterating Stack: 1@0=A>B 1+1=2
Iterating Stack: 1@1=A>C 1+1=2
Push Stack 2
Iterating Stack: 2@0=C>A 2+1=3
Iterating Stack: 2@1=C>B 2+1=3
Iterating Stack: 2@2=C>D 2+1=3
Pop Stack 2
Iterating Stack: 1@2=A>E 1+1=2
Route Found
Array
(
[0] => 2
[1] => B
[2] => A
[3] => E
)
Pop Stack 1
Iterating Stack: 0@1=B>C 0+1=1
Push Stack 1
Iterating Stack: 1@0=C>A 1+1=2
Cost Exceeded
Iterating Stack: 1@1=C>B 1+1=2
Cost Exceeded
Iterating Stack: 1@2=C>D 1+1=2
Cost Exceeded
Pop Stack 1
Pop Stack 0
Returned Route:
Code:
Array
(
[0] => B
[1] => A
[2] => E
)