Guest User

Untitled

a guest
May 18th, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (* Knuderne er sorteret i stigende order *)                    
  2. fun select [] n used = []
  3.  | select ((v,[])::st) (n::ns) used = (v,n)::(select st (n::ns) ((v,n)::used))
  4.  | select ((v,l)::st) n used =
  5.  let
  6.    fun checkNeighbour [] used = []
  7.    fun checkNeighbour l [] = []
  8.      | checkNeighbour (lv::l) ((uv,un)::used) =
  9.      if (lv = uv) then
  10.       un::(checkNeighbour l used)
  11.      else (checkNeighbour l ((uv,un)::used))@(checkNeighbour (lv::l) used)
  12.    val usedReg = checkNeighbour l used
  13.    fun checkReg [] ur = 0
  14.      | checkReg n [] = 0
  15.      | checkReg (n::ns) ur = (if (List.exists k ur2) then
  16.                    checkReg ns ur
  17.                    else n)
  18.    val aReg = checkReg n usedReg
  19.  in
  20.      (v,aReg)::(select st n ((v,aReg)::used))
  21.   end  
  22.  
  23. fun simplify [] E n st = select st n
  24.  | simplify (v::V) E n st =
  25.  let
  26.    fun removeEdges v [] E2 = E2
  27.      | removeEdges v ((s,t)::E) E2 =
  28.      if (v = s) || (v = t) then
  29.       removeEdges v E E2
  30.      else removeEdges v E e::E2
  31.    fun neighbours v [] l = l
  32.      | neighbours v ((s,t)::E) l =
  33.    case (s,t) of
  34.      (v,t) => neighbours v E (t::l)
  35.               | (s,v) => neighbours v E (s::l)
  36.    val edges = removeEdges v E []
  37.     val l = neighbours v E []  
  38.  in
  39.      simplify V edges n (v,l)::st
  40.  end
Add Comment
Please, Sign In to add comment