Ask Question, Ask an Expert

+61-413 786 465

info@mywordsolution.com

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

Remembering the pythagorean theorem - the square of the

Remembering the Pythagorean Theorem - The square of the hypotenuse is equal to the sum of the squares of the other two sides Your assignment is to design a Fortran 95 program with three solutions for the quadratic equati ...

Suppose you would like to sort n music files using a

Suppose you would like to sort n music files using a comparison-based sorting algorithm (i.e. no bucket sort), but you only have an old, unreliable computer, which you have nicknamed "Rustbucket". Every time Rustbucket c ...

Let sigmaab give the transition diagram for a

Let Σ={a,b}. Give the transition diagram for a nondeterministic ?nite state machine that accepts the set of strings in {a,b}∗ that contain a substring of length four that begins and ends with the same symbol. For example ...

Given the following table keynbspand fds repair

Given the following table, key and FDs, REPAIR (RepairInvoiceNumber, RepairDate, RepairCost, RepairEmployeeName, RepairEmployeePhone, SerialNumber, Type, TankCapacity) Candidate Keys: RepairInvoiceNumber, and (RepairDate ...

What is the difference between dekkers algorithm and igloo

What is the difference between Dekkers Algorithm and Igloo approach? Please provide examples that can explain this.

Consider a valleyed array a1 2 middot middot middot n with

Consider a valleyed array A[1, 2, · · · , n] with the property that the subarray A[1..i] has the property that A[j] > A[j + 1] for 1 ≤ j (a) What is a recursive algorithm that takes asymptotically sub-linear time to find ...

Shading and illuminating algorithmsa explain in your own

Shading and illuminating algorithms. a) Explain, in your own words, how the Phong illumination model works and what its strong and weak features are. b) Compare flat and Gouraud shading algorithms.

Identify at least two 2 factors that have led to the

Identify at least two (2) factors that have led to the explosive growth of digital crime over the past a few decades. Next, describe the most common forms of digital crime, and give your opinion as to why those forms you ...

Question a description of the tasks and mechanisms that

Question: A description of the tasks and mechanisms that allow you to examine the existing system (a minimum of 3 different tools should be described) A description of conceptual, logical and physical data modeling A des ...

Question suppose that you receive an email from someone

Question : Suppose that you receive an email from someone claiming to be Alice, and the email included a digital certificate that contains M = ("Alice", Alice's public key) and [h(M)]_CA, where CA is a certificate author ...

  • 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