Dijkstra's algorithm: Difference between revisions
Content added Content deleted
(added haskell) |
|||
Line 750: | Line 750: | ||
| otherwise = aux (previous ! vertex) (vertex : acc) |
| otherwise = aux (previous ! vertex) (vertex : acc) |
||
adj_list :: Array |
adj_list :: Array Char [(Char, Int)] |
||
adj_list = listArray ( |
adj_list = listArray ('a', 'f') [ [('b',7), ('c',9), ('f',14)], |
||
[( |
[('a',7), ('c',10), ('d',15)], |
||
[( |
[('a',9), ('b',10), ('d',11), ('f',2)], |
||
[( |
[('b',15), ('c',11), ('e',6)], |
||
[( |
[('d',6), ('f',9)], |
||
[( |
[('a',14), ('c',2), ('e',9)] ] |
||
main :: IO () |
main :: IO () |
||
main = do |
main = do |
||
let (min_distance, previous) = dijkstra |
let (min_distance, previous) = dijkstra 'a' ' ' adj_list |
||
putStrLn $ "Distance from |
putStrLn $ "Distance from a to e: " ++ show (min_distance ! 'e') |
||
let path = shortest_path_to |
let path = shortest_path_to 'e' ' ' previous |
||
putStrLn $ "Path: " ++ show path</lang> |
putStrLn $ "Path: " ++ show path</lang> |
||