This project is done by : Emna GUERMAZI & Nguyet Ha TRAN, students in 4IR-B2, INSA Toulouse.
A makefile also provides basic automation :
make
to compile. This creates ftest.native and ctest.native executablemake format
to indent the entire project
The base project contains two modules and a main program:
graph.mli
&graph.ml
which define a moduleGraph
gfile.mli
&gfile.ml
which define a moduleGfile
ftest.ml
, the main program
To generate an image from a dot file, type on command line:
dot -Tpng your-dot-file > some-output-file
(if the png format is unrecognized, try svg)
In this part, we have to understand and implement the Ford-Fulkerson algorithm (in the module fordfulkerson
, which define a module fordfulkerson), then test it on several examples and verify. We also created the module tool which contains severals additionnals functions used in the module fordfulkerson and the main program.
Part 2 : Ford-Fulkerson algorithm's use-case : Circulation–demand problem (Max flow page)
Find a use-case of this algorithm and write a program that solves the problem.
We build 2 modules named Cfile
and Gfile2
. The module Cfile
translate a circulation-demand problem into a flow graph problem and the module Gfile2
is another version of the module Gfile
which input file has a slightly different format.
We created somes input text files with the imposed format, they have to contain the following elements:
- Source node with its supply capacity. By example, a source has id 1 with supply capacity 5 is presented as : S 1 5
- Destination node with its demand capacity. By example, a destination has id 2 with demand capcity 20 is presented as : T 2 20
- Node
- Transport roads between nodes, as well as its maximal capacity. By example, a transport road between node 1 and node 2 with a maximal capacity of 20 products, it is presented as : R 1 2 20
In this part, the project contains :
cfile.mli
&cfile.ml
defining moduleCfile
.gfile2.mli
&gfile2.ml
defining moduleGfile2
.ctest.ml
, part 2's main program.
In order to test the project's validity, we ran the programs on some examples and compared the results with those obtained by using other tools/programs, by calculating by hand and paper, etc.
-
./ftest.native graphs/graph1.txt 0 3 graphs/g_output1.txt
wheregraph1.txt
is the text-formatted input graph andg_output_1
is the result graph. Here we choose0
and3
as source and sink. -
dot -Tpng g_output_1.txt > g_output_1_0_3_flow25.png
to visualize the text-formatted result graph by converting it into an image.
Other similar commands are used to test with the text-formatted input graph graph2.txt
and graph3.txt
.
-
./ctest.native graphs/circulation1.txt Graphs/c_graph1.txt Graphs/c_output1.txt
wherecirculation1.txt
is the transport's problem written in the correct format precised in part 2,c_graph1.txt
is the text-formatted input graph (obtained by translating the circulation-demand problem) andc_output1.txt
is the result graph. -
dot -Tpng Graphs/c_graph1.txt > Graphs/c_graph1.png
to visualize the starting graph. -
dot -Tpng Graphs/c_output1.txt > Graphs/c_output1.png
to visualize the result graph.
Other similar commands are used to test with another circulation-demand problem in circulation2.txt
.