Programmable problem: Write a program that accepts as input the nodes and edges of a directed graph and prints as output all possible paths through the graph. What are the major design considerations for your program?

How does the complexity of the graph (in terms of number of branches and cycles) affect the algorithm you use?

Suppose a program contains N decision points, each of which has two branches. How many test cases are needed to perform path testing on such a program?

If there are M choices at each decision point, how many test cases are needed for path testing?

Can the program’s structure reduce this number? Give an example to support your answer.