程序代写案例-CS 330-Assignment 4
CS 330: Programming Assignment 4
Ford-Fulkerson for Maximum Flow
Deadline: Tuesday, December 15 at 11:59 pm (No late submissions!)
In this exercise you will implement the Ford-Fulkerson algorithm for solving the maximum flow
problem. Given a directed graph with positive capacities on the edges, as well as source and sink
vertices, find the maximum flow. The algorithm is described in Section 7.1 of Algorithm Design,
with the main pseudocode on page 344. Your code should run in at most O(mC) time, where m is
the number of edges and C is an upper bound on the value of the flow, the sum over the capacities
of edges exiting the source.
Tips
• The algorithm itself is simple: while you can, find an augmenting path in the residual graph
and augment it. Before starting, take some time to think about how you will keep track of
the necessary information. For instance, you’ll need to be able to keep track of which edges
in the residual graph are “forward” and which are “backward.”
• You need to be able to find simple s-t paths in the residual graph. BFS will work great here:
you can adapt your code from the first programming assignment or write it from scratch.
Submission Format
We will be providing starter code in Python titled ford fulkerson.py (when you submit to Grade-
scope, this name must match exactly). If you would prefer to code this assignment in Java, you
may, but we will not provide starter code. On ford fulkerson.java reading a text file input and
creating a text file output containing your solution following the specifications below. You may
submit other files containing additional functions and classes. The autograder will put your code
in the same directory as input, call it from the command line, and look for the file output in the
same directory.
There are 15 tests to pass on Gradescope. The assignment is graded out of 15 points:
1. Tests 1 and 2 check file names and compilation, and are worth 0 points.
2. Tests 3-5 are basic examples and are each worth 0 points. Their input files are available on
Gradescope in a file called pa4 inputs.zip for local debugging.
3. Tests 6-10 are worth 1 point each. Their input files are also available in pa4 inputs.zip.
4. Tests 11-15 are worth 2 points each, and their input files will not be made publicly available.
Input
The input format is similar to that of the other directed graph problems we’ve seen in previous
programming assignments. The file input will have m + 4 lines specifying a directed, weighted
graph:
1. The first line will be N , the number of vertices.
1
2. The second line will be m, the number of edges.
3. The third line will be the index s, specifying the source.
4. The forth line will be the index t, specifying the sink.
5. Every row after that will specify an edge by giving the starting node, the ending node, and
the capacity.
The capacities will all be positive integers. As in the book, you can assume that s will have no
edges coming into it, and t will have no edges leaving it. The vertices will be indexed 0 to n− 1.
Output
Your algorithm must create a text file output specifying the maximum flow, edge by edge. On each
line write the starting vertex, the ending vertex, and the value of the flow across that edge, each of
which is an int separated by commas. The value of the flow on an edge may be zero. Your output
file should have m lines; they can be written in any order.
Example begins on the next page.
2
Example
Consider the following directed, weighted graph. It is the first example in the lecture slides
lect 11 19 FF.pdf, available on Piazza. The source is vertex 0 and the sink is vertex 7. The
maximum flow has a value of 28.
0 2
1
3
4
5
6
7
10
5
15
9
15
4
8
4
15
10
15
10
15
6
10
input:
8
15
0
7
0,1,10
0,2,5
0,3,15
1,2,4
2,3,4
1,4,9
1,5,15
2,5,8
6,2,6
3,6,15
4,5,15
5,6,15
4,7,10
5,7,10
6,7,10
The output file is on the next page.
3
output:
0,1,10
0,2,5
0,3,13
1,2,0
2,3,0
1,4,9
1,5,1
2,5,8
6,2,3
3,6,13
4,5,0
5,6,0
4,7,9
5,7,9
6,7,10
4

欢迎咨询51作业君
51作业君 51作业君

Email:51zuoyejun

@gmail.com

添加客服微信: ITCSdaixie