Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (* Knuderne er sorteret i stigende order *)
- fun select [] n used = []
- | select ((v,[])::st) (n::ns) used = (v,n)::(select st (n::ns) ((v,n)::used))
- | select ((v,l)::st) n used =
- let
- fun checkNeighbour [] used = []
- fun checkNeighbour l [] = []
- | checkNeighbour (lv::l) ((uv,un)::used) =
- if (lv = uv) then
- un::(checkNeighbour l used)
- else (checkNeighbour l ((uv,un)::used))@(checkNeighbour (lv::l) used)
- val usedReg = checkNeighbour l used
- fun checkReg [] ur = 0
- | checkReg n [] = 0
- | checkReg (n::ns) ur = (if (List.exists k ur2) then
- checkReg ns ur
- else n)
- val aReg = checkReg n usedReg
- in
- (v,aReg)::(select st n ((v,aReg)::used))
- end
- fun simplify [] E n st = select st n
- | simplify (v::V) E n st =
- let
- fun removeEdges v [] E2 = E2
- | removeEdges v ((s,t)::E) E2 =
- if (v = s) || (v = t) then
- removeEdges v E E2
- else removeEdges v E e::E2
- fun neighbours v [] l = l
- | neighbours v ((s,t)::E) l =
- case (s,t) of
- (v,t) => neighbours v E (t::l)
- | (s,v) => neighbours v E (s::l)
- val edges = removeEdges v E []
- val l = neighbours v E []
- in
- simplify V edges n (v,l)::st
- end
Add Comment
Please, Sign In to add comment