6 # redef fun debug_a_star do return true
12 redef type N
: NamedNode
16 init(graph
: Graph[N
, Link], name
: String)
22 redef fun to_s
do return "node:{name}"
25 fun print_path
(path
: nullable Path[NamedNode]) do if path
== null then
28 var names
= new Array[String]
29 while not path
.at_end_of_path
do
33 print names
.join
(", ")
42 var graph
= new Graph[NamedNode, Link]
44 var na
= new NamedNode(graph
, "a")
45 var nb
= new NamedNode(graph
, "b")
46 var nc
= new NamedNode(graph
, "c")
47 var nd
= new NamedNode(graph
, "d")
48 var ne
= new NamedNode(graph
, "e")
50 var lab
= new Link(graph
, na
, nb
)
51 var lac
= new Link(graph
, na
, nc
)
52 var lbd
= new Link(graph
, nb
, nd
)
53 var lcd
= new Link(graph
, nc
, nd
)
54 var lde
= new Link(graph
, nd
, ne
)
56 var context
= new ConstantPathContext(graph
)
58 var path
= na
.path_to
(ne
, 100, context
)
68 var graph
= new Graph[NamedNode,Link]
70 var na
= new NamedNode(graph
, "a")
71 var nb
= new NamedNode(graph
, "b")
72 var nc
= new NamedNode(graph
, "c")
73 var nd
= new NamedNode(graph
, "d")
74 var ne
= new NamedNode(graph
, "e")
76 var lab
= new Link(graph
, na
, nb
)
77 var lac
= new Link(graph
, na
, nc
)
78 var lbd
= new Link(graph
, nb
, nd
)
79 var lcd
= new Link(graph
, nc
, nd
)
81 var context
= new ConstantPathContext(graph
)
83 var path
= na
.path_to
(ne
, 100, context
)
95 var graph
= new Graph[NamedNode,WeightedLink]
97 var na
= new NamedNode(graph
, "a")
98 var nb
= new NamedNode(graph
, "b")
99 var nc
= new NamedNode(graph
, "c")
100 var nd
= new NamedNode(graph
, "d")
101 var ne
= new NamedNode(graph
, "e")
103 var lab
= new WeightedLink(graph
, na
, nb
, 2)
104 var lac
= new WeightedLink(graph
, na
, nc
, 3)
105 var lbd
= new WeightedLink(graph
, nb
, nd
, 1)
106 var lcd
= new WeightedLink(graph
, nc
, nd
, 3)
107 var lde
= new WeightedLink(graph
, nd
, ne
, 8)
109 var context
= new WeightedPathContext(graph
)
111 var path
= na
.path_to
(ne
, 100, context
)
121 fun case_weighted_too_long
123 var graph
= new Graph[NamedNode,WeightedLink]
125 var na
= new NamedNode(graph
, "a")
126 var nb
= new NamedNode(graph
, "b")
127 var nc
= new NamedNode(graph
, "c")
128 var nd
= new NamedNode(graph
, "d")
129 var ne
= new NamedNode(graph
, "e")
131 var lab
= new WeightedLink(graph
, na
, nb
, 2)
132 var lac
= new WeightedLink(graph
, na
, nc
, 3)
133 var lbd
= new WeightedLink(graph
, nb
, nd
, 1)
134 var lcd
= new WeightedLink(graph
, nc
, nd
, 3)
135 var lde
= new WeightedLink(graph
, nd
, ne
, 8)
137 var context
= new WeightedPathContext(graph
)
139 var path
= na
.path_to
(ne
, 5, context
)
144 # a -2- b -1- f -1- g
148 # c -3- d -8- e -2- h -2- i -3- j
149 fun case_weighted_big
151 var graph
= new Graph[NamedNode,WeightedLink]
153 var na
= new NamedNode(graph
, "a")
154 var nb
= new NamedNode(graph
, "b")
155 var nc
= new NamedNode(graph
, "c")
156 var nd
= new NamedNode(graph
, "d")
157 var ne
= new NamedNode(graph
, "e")
158 var nf
= new NamedNode(graph
, "f")
159 var ng
= new NamedNode(graph
, "g")
160 var nh
= new NamedNode(graph
, "h")
161 var ni
= new NamedNode(graph
, "i")
162 var nj
= new NamedNode(graph
, "j")
164 var lab
= new WeightedLink(graph
, na
, nb
, 2)
165 var lac
= new WeightedLink(graph
, na
, nc
, 3)
166 var lbd
= new WeightedLink(graph
, nb
, nd
, 1)
167 var lcd
= new WeightedLink(graph
, nc
, nd
, 3)
168 var lde
= new WeightedLink(graph
, nd
, ne
, 8)
169 var lbf
= new WeightedLink(graph
, nb
, nf
, 1)
170 var lfg
= new WeightedLink(graph
, nf
, ng
, 1)
171 var leh
= new WeightedLink(graph
, ne
, nh
, 2)
172 var lhi
= new WeightedLink(graph
, nh
, ni
, 2)
173 var lij
= new WeightedLink(graph
, ni
, nj
, 3)
174 var lfh
= new WeightedLink(graph
, nf
, nh
, 4)
175 var lgh
= new WeightedLink(graph
, ng
, nh
, 1)
177 var context
= new WeightedPathContext(graph
)
179 var path
= na
.path_to
(nj
, 100, context
)
186 case_weighted_too_long