From 22a5720da0c27ee9c0bce866049712036efcbe8e Mon Sep 17 00:00:00 2001 From: Sergiu Ivanov Date: Sun, 7 Nov 2021 21:49:32 +0100 Subject: [PATCH] Add maxflow. --- graph.rkt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/graph.rkt b/graph.rkt index 0e0a995..a4b990a 100644 --- a/graph.rkt +++ b/graph.rkt @@ -45,6 +45,8 @@ coloring coloring/greedy coloring/brelaz order-smallest-last valid-coloring? + maxflow + graphviz) ;; Wrap the opaque graph structure coming from the generic @@ -228,6 +230,10 @@ (define (valid-coloring? g coloring) (g:valid-coloring? (gg g) coloring)) + ;; 9 Maximum Flow + (define (maxflow g source sink) + (g:maxflow (gg g) source sink)) + ;; 10 Graphviz (define (graphviz g #:output [output #f] #:colors [colors #f]) (g:graphviz (gg g) #:output output #:colors colors))) @@ -345,6 +351,9 @@ [order-smallest-last (-> Graph (Listof Any))] [valid-coloring? (-> Graph (HashTable Any Number) Boolean)] + ;; 9 Maximum Flow + [maxflow (-> Graph Any Any (HashTable (List Any Any) Number))] + ;; 10 Graphviz [graphviz (->* (Graph) (#:output Output-Port @@ -565,6 +574,11 @@ (check-true (valid-coloring? g0 #hash((a . 0) (b . 1) (c . 0) (d . 2))))) + (test-case "9 Maximum Flow" + (define g0 (weighted-graph/directed '((1 a b) (2 a c) (3 b d) (3 c d)))) + (check-equal? (hash->ordered-list (maxflow g0 'a 'd)) + '(((a b) . 1) ((c d) . 2) ((b d) . 1) ((a c) . 2)))) + (test-case "10 Graphviz" (define g (directed-graph '((a b) (b c)))) (check-equal? (graphviz g)