Test Cases for Max-Flow Module
The max flow program works out the max flow value from one source node to one sink node. It reads the network from text files and writes the output to another text file. It was tested using 30 handmade test cases. The format of input and output files have described as follows. The outputs of the program have exactly matched the standard output files.
The first line of input file contains four positive integers separated by space: n m s t
n is the number of nodes; m is the number of edges; s is the source node and t is the sink node.
Then followed by m lines, each line contains three positive integers: x y c
x is the source node of edge; y is the end node of edge and c is the capacity of edge <x,y>.
The first line of output file is one integer number of the maximum flow value.
Each of the following line represents one flow in the format of “(x, y) f”, it means that the flow value is f at edge <x, y>.
The test cases are listed below.
Test Case 1
Input File
|
Output File
|
4 5 0 3
0 2 4
0 1 2
1 2 3
1 3 1
2 3 5
|
6
( 0 , 1 ) 2
( 0 , 2 ) 4
( 1 , 2 ) 1
( 1 , 3 ) 1
( 2 , 3 ) 5
|
Test Case 2
Input File
|
Output File
|
8 12 0 7
0 1 7
0 5 2
1 2 3
1 6 3
2 3 3
2 7 3
3 0 3
3 4 4
4 7 4
5 4 3
5 6 1
6 7 5
|
8
( 0 , 1 ) 6
( 0 , 5 ) 2
( 1 , 2 ) 3
( 1 , 6 ) 3
( 2 , 7 ) 3
( 4 , 7 ) 2
( 5 , 4 ) 2
( 6 , 7 ) 3
|
Test Case 3
Input File
|
Output File
|
5 8 0 4
0 1 5
0 2 7
0 3 3
1 4 6
2 1 2
2 4 5
3 2 4
3 4 8
|
14
( 0 , 1 ) 5
( 0 , 2 ) 6
( 0 , 3 ) 3
( 1 , 4 ) 6
( 2 , 1 ) 1
( 2 , 4 ) 5
( 3 , 4 ) 3
|
Test Case 4
Input File
|
Output File
|
12 18 0 11
0 1 7
0 2 3
1 3 1
1 4 2
2 3 3
2 4 3
2 5 3
3 6 4
4 6 2
4 7 4
4 8 2
5 8 3
6 9 3
7 9 2
7 10 2
8 10 3
9 11 4
10 11 3
|
6
( 0 , 1 ) 3
( 0 , 2 ) 3
( 1 , 3 ) 1
( 1 , 4 ) 2
( 2 , 4 ) 3
( 3 , 6 ) 1
( 4 , 6 ) 2
( 4 , 7 ) 3
( 6 , 9 ) 3
( 7 , 9 ) 1
( 7 , 10 ) 2
( 9 , 11 ) 4
( 10 , 11 ) 2
|
Test Cases for Proposed Algorithm
Thirty networks were created as test cases for the proposed algorithm (except for the butterfly network example). All the cases have obtained optimal coding and routing schemes successfully by the our algorithm. Six typical networks among them are listed below and some comments are given for the obtained coding and routing scheme.
As shown in Figure 20., the topology on the left is the same as the butterfly network, however, all the capacity of the edges are doubled. The coding scheme is shown on the right. There are two coded data blocks “d+b” and “c+a”, they could be decoded with single data block “d” and “c” at node 5, or a single data block “a” and “b” at node 6.
![](data:image/jpeg;base64,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pUxAS2xZdEvb0OVjqHzTgCkEj8VI1kwqON0ceNEJiC9CmyK1dvs3RNYvGRc2i9XQbNkTV4cDMsjC9XhwsSScb7AYBVkc9nKx1D5pQmIGMkwjhFSB+RBTjfZPjKIXk4f+x//aAAwDAQACAAMAAAAQ88884w88088888888U8s8888888888U888888888888sI8wc88888888888I8888888888MUo888888888os88Q88888888g888w088888ksI8880s4888U8c888U8E8888U8c888U8c88888Y8o888Y0o888880s88808888888ss084E48888888s084Mo888888U8k8g8o888888U8QMQ8s888888Uk8k8Y8888888UY888ko888888U8EwI8o888888U88A88o888888088Q08o888884M88Q88sc88888c88A88o88888488QMg8s888888ck8U8Y08888888Y888kU88888o88MwI8Y88888o88c8c8c88888o8wI8Uoc88888o8Mc84c088888As08888Y888BZx0S88HiBl88pCWCi8UATACD8pCDDK8UBDDCH8BlNcG88TCJZ8884YwQQoYYoU888scMsMsMc88888888888888888//8QAHhEBAAIDAQADAQAAAAAAAAAAAQARECFRMSBBUID/2gAIAQMBAT8Q/qBQLZwY+hAFmX6bYvwCAdgzUmnmUvACsJR3CqnrrA3XwgUGIqeyg6wl/AlnMKoem8CkVW2Mqeyk4wglM6MafaAKMv00wPlMV6Cbk29/K//EAB0RAQACAwEAAwAAAAAAAAAAAAEAERAhMVEgUID/2gAIAQIBAT8Q/UAXPTA+GKGnJVtEB22KNLN87M6LwreLsDEeG8MVXWISyEaeS/8AGNFfCrAxXjrCDAAohi3kv/WBqemB8EUtuSrbIntkBws1zo+q/8QAKhABAAECBAUEAwEBAQAAAAAAAREAITFBUWEQIHGBkTChwfBAsfHh0VD/2gAIAQEAAT8Q9NxFsZh7L7KQNNBL5lEcK1/VV9qWC2IL4T3Uev5GBqJj+H9hEeUYrYzaVcTDxaHC6h3KCaWgPWMXifQoQkSkA9kGW3vMQ70aRmcsGMm5mXfSS/4O1I5ATbV2rCrq8MbcZrOWQcZKt8Y0APoErALVwwgEHSTB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)
Share with your friends: |