Home My Page Projects Code Snippets Project Openings SML/NJ
 Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

# SCM Repository

[smlnj] View of /sml/trunk/src/MLRISC/graphs/test4.sml
 [smlnj] / sml / trunk / src / MLRISC / graphs / test4.sml

# View of /sml/trunk/src/MLRISC/graphs/test4.sml

Mon Oct 23 23:39:43 2000 UTC (18 years, 7 months ago) by leunga
File size: 1792 byte(s)
```
Missed these...
Tag: leunga-20001023-demo-ra
```
```CM.make "../cm/Graphs.cm";
functor TestShortestPaths(SP : SINGLE_SOURCE_SHORTEST_PATHS
where type Num.elem = int) =
struct
val G as Graph.GRAPH g = DirectedGraph.graph("foo",(),10) :
(string,int,unit) Graph.graph
val _ = app (#add_node g)
[(0,"s"),
(1,"u"),
(2,"v"),
(3,"x"),
(4,"y")
]
val E =   [(0,1,10),
(0,2,5),
(1,2,2),
(2,1,3),
(1,3,1),
(2,3,9),
(2,4,2),
(3,4,4),
(4,3,6),
(4,0,7)
]
val _ = app (#add_edge g) E

val dist' = [0,8,5,9,7]
val pred' = [~1,2,0,1,2]

fun test() =
let fun weight(_,_,w) = w
val {dist,pred} = SP.single_source_shortest_paths
{graph=G,weight=weight,s=0}
val dist'' = Array.foldr op:: [] dist
val pred'' = Array.foldr op:: [] pred
in  if dist' <> dist'' orelse pred' <> pred'' then
raise Match else ();
{dist=dist,pred=pred}
end

end

structure TestDijkstra = TestShortestPaths(
Dijkstra(struct open Int
type elem = int
val zero = 0
val inf = 10000000
val == : int * int -> bool = op=
end))
structure TestBellmanFord = TestShortestPaths(
BellmanFord(struct open Int
type elem = int
val zero = 0
val inf = 10000000
val == : int * int -> bool = op=
end))
```