Finding a longest path in an acyclic graph

Assignment Help Data Structure & Algorithms
Reference no: EM131739347

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

Reference no: EM131739347

Questions Cloud

Problem-depreciation calculation-replacement : Onkar Corporation bought a machine on June 1, 2013, for $31,800, f.o.b. the place of manufacture. Freight costs were $300, and $500 was spent to install it.
Explain how would you respond to your partner : Explain how would you respond to your partner? Does it make a difference that he is a much more experienced officer?
Compare and contrast global workers : Compare and contrast global workers, expatriates, local nationals, and third-country nationals.
Distinguish between in-store and out-store logistics : Write a 2 pages report about the distinguish between in-store and out-store logistics.
Finding a longest path in an acyclic graph : Com S 228 Assignment: Finding a Longest Path in an Acyclic Graph. Implementing an iterative depth-first search (DFS) algorithm for checking
Discount rate for projects of sort : At the end of 3 years, the new equipment will be worthless. Assume the firm's tax rate is 35% and the discount rate for projects of this sort is 9%
First providing brief overview of the project scope : Describe your project by first providing a brief overview of the project scope.
Corporate bonds in the united states : Even though most corporate bonds in the United States make coupon payments semiannually, bonds issued elsewhere often have annual coupon payments.
Explain the types of ecommerce risks and threats : Based on the learning activities where you practiced with risks and threats in ecommerce, respond to the checklist items in an informative essay.

Reviews

len1739347

11/27/2017 3:46:20 AM

You are required to include, in your submission, the source code for each of the classes: A short template is given in package cs228hw5.zip. You need to write proper documentation with Javadoc for each method that you implement. Write your class so that its package name is edu.iastate.cs228.hw5. Your source files (.java files) will be placed in the directory edu/iastate/cs228/hw5 (Linux) or eduniastatencs228nhw5 (Windows), as defined by the package specified above. Be sure to put down your name after the @author tag in each class source file. Your zip file should be named Firstname Lastname HW5.zip. You may submit a draft version of your code early to see if you have any submission problem with Blackboard Learn. We will grade only your latest submission.

Write a Review

Data Structure & Algorithms Questions & Answers

  Implement an open hash table

In this programming assignment you will implement an open hash table and compare the performance of four hash functions using various prime table sizes.

  Use a search tree to find the solution

Explain how will use a search tree to find the solution.

  How to access virtualised applications through unicore

How to access virtualised applications through UNICORE

  Recursive tree algorithms

Write a recursive function to determine if a binary tree is a binary search tree.

  Determine the mean salary as well as the number of salaries

Determine the mean salary as well as the number of salaries.

  Currency conversion development

Currency Conversion Development

  Cloud computing assignment

WSDL service that receives a request for a stock market quote and returns the quote

  Design a gui and implement tic tac toe game in java

Design a GUI and implement Tic Tac Toe game in java

  Recursive implementation of euclids algorithm

Write a recursive implementation of Euclid's algorithm for finding the greatest common divisor (GCD) of two integers

  Data structures for a single algorithm

Data structures for a single algorithm

  Write the selection sort algorithm

Write the selection sort algorithm

  Design of sample and hold amplifiers for 100 msps by using n

The report is divided into four main parts. The introduction about sample, hold amplifier and design, bootstrap switch design followed by simulation results.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd