Ask Computer Engineering Expert

Assignment: Finding a Longest Path in an Acyclic Graph

Introduction -

This assignment gives you an opportunity to work on graph problems by implementing an iterative depth-first search (DFS) algorithm for checking if a given directed graph is acyclic and by implementing an algorithm for finding a longest path (maxPath) in an acyclic graph. If the graph is acyclic, then the DFS algorithm returns a list of all vertices in a topological order. Otherwise, it returns null. The iterative DFS algorithm can process a large graph without stack memory overflow, because it is more efficient in space than a recursive DFS algorithm. The maxPath algorithm produces a stack of all vertices in a longest path (in an acyclic graph) along the distance of the path, with the stack top being the first vertex in the path.

Both algorithms are supposed to work on a directed graph, in which each edge goes from a starting vertex to an ending vertex, meaning that the ending vertex can be reached from the starting vertex. In addition, each edge has a cost, which can be positive or negative or 0. A directed graph has a cycle if it contains a sequence of edges from a vertex back to itself, such as an edge from vertex A to vertex B, an edge from vertex B to vertex C, and an edge from vertex C to vertex A. A directed graph is acyclic if it has no cycles. The DFS algorithm is used to check if a directed graph is acyclic. For example, on the above cycle of three edges from vertex A to itself, if the vertex A is the first vertex on the cycle reached during the search, then the vertex A is colored red, with the vertices B and C remaining green, and eventually, the vertex B is reached during the search. When the edge from the vertex B to the vertex A is explored during the search, the color of A is found to be still red. Thus, a cycle is detected if an ending vertex is found to be red during the DFS search. If no cycles are found, then the DFS algorithm produces a stack of all vertices in a topological order, with the stack top being the first vertex in the order. A topological order of an acyclic graph has the property that if any vertex u comes before any vertex w in the order, then the graph has no edge from the vertex w to the vertex u. The stack is empty initially. When the DFS search is completed at a vertex by coloring it black, the vertex is pushed onto the stack.

The maxPath algorithm finds a path with the maximum distance in a directed acyclic graph with each edge having a positive or non-positive cost. Here the distance of a path in the graph is the sum of costs of each edge in the path. Let cost(u; v) be the cost of an edge from vertex u to vertex v. Initially, set dist[u] to 0 and pred[u] to null for each vertex u. Then for each vertex u in a topological order, perform the following computation for each edge from the vertex u to another vertex v: compute newdist = dist[u]+cost(u; v), and if newdist is larger than dist[v], then set dist[v] to newdist and pred[v] to u. Let end be a vertex such that dist[end]  dist[u] for each vertex u. Then end is the last vertex on a path with the maximum distance dist[end]. Each vertex in this path can be found by using the pred map starting from the vertex end. For example, if pred[end] is not null, then pred[end] is the vertex immediately before end in the path. The starting vertex s in the path is the first vertex such that pred[s] is null.

Requirements of the DFS and MaxPath classes

The template code folder contains six class files. You just need to complete the methods in the DFS and MaxPath class files by using the complete classes in the other four files along with the java.util.HashMap and java.util.Iterator types. The DFS algorithm on a directed graph should be implemented by using an iterative method. An iterative DFS method on an undirected graph is given in a lecture code file named Graph.java. A recursive DFS method for producing a topological order of vertices on a directed acyclic graph is given in a lecture code file named DiGraph.java.

The maxPath algorithm can be implemented by using maps as in Dijkstra's algorithm in the code file DiGraph.java. Note that Dijkstra's algorithm does not allow edges with negative costs and uses the Heap class, while the maxPath algorithm does not use the Heap class. The exact specification for each method can be found in the DFS and MaxPath class files in the template code folder.

Attachment:- Assignment Files.rar

Computer Engineering, Engineering

  • Category:- Computer Engineering
  • Reference No.:- M92548033

Have any Question?


Related Questions in Computer Engineering

Does bmw have a guided missile corporate culture and

Does BMW have a guided missile corporate culture, and incubator corporate culture, a family corporate culture, or an Eiffel tower corporate culture?

Rebecca borrows 10000 at 18 compounded annually she pays

Rebecca borrows $10,000 at 18% compounded annually. She pays off the loan over a 5-year period with annual payments, starting at year 1. Each successive payment is $700 greater than the previous payment. (a) How much was ...

Jeff decides to start saving some money from this upcoming

Jeff decides to start saving some money from this upcoming month onwards. He decides to save only $500 at first, but each month he will increase the amount invested by $100. He will do it for 60 months (including the fir ...

Suppose you make 30 annual investments in a fund that pays

Suppose you make 30 annual investments in a fund that pays 6% compounded annually. If your first deposit is $7,500 and each successive deposit is 6% greater than the preceding deposit, how much will be in the fund immedi ...

Question -under what circumstances is it ethical if ever to

Question :- Under what circumstances is it ethical, if ever, to use consumer information in marketing research? Explain why you consider it ethical or unethical.

What are the differences between four types of economics

What are the differences between four types of economics evaluations and their differences with other two (budget impact analysis (BIA) and cost of illness (COI) studies)?

What type of economic system does norway have explain some

What type of economic system does Norway have? Explain some of the benefits of this system to the country and some of the drawbacks,

Among the who imf and wto which of these governmental

Among the WHO, IMF, and WTO, which of these governmental institutions do you feel has most profoundly shaped healthcare outcomes in low-income countries and why? Please support your reasons with examples and research/doc ...

A real estate developer will build two different types of

A real estate developer will build two different types of apartments in a residential area: one- bedroom apartments and two-bedroom apartments. In addition, the developer will build either a swimming pool or a tennis cou ...

Question what some of the reasons that evolutionary models

Question : What some of the reasons that evolutionary models are considered by many to be the best approach to software development. The response must be typed, single spaced, must be in times new roman font (size 12) an ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As