EBK DATA STRUCTURES AND ALGORITHMS IN C
4th Edition
ISBN: 9781285415017
Author: DROZDEK
Publisher: YUZU
expand_more
expand_more
format_list_bulleted
Expert Solution & Answer
Want to see the full answer?
Check out a sample textbook solutionStudents have asked these similar questions
In the figure below there is a weighted graph, dots represent vertices, links
represent edges, and numbers represent edge weights.
S
2
1
2
1
2
3
T
1
1
2
4
(a) Find the shortest path from vertex S to vertex T, i.e., the path of
minimum weight between S and T.
(b) Find the minimum subgraph (set of edges) that connects all vertices
in the graph and has the smallest total weight (sum of edge weights).
2.
3.
The Graph Data Structure is made up of nodes and edges. (A Tree Data Structure is a special kind of a
Graph Data Structure). A Graph may be represented by an Adjacency Matrix or an Adjacency List. Through
this exercise, you should be able to have a better grasp the Adjacency Matrix concept. You are expected to
read about the Adjacency Matrix concept as well as the Adjacency List concept.
Suppose the vertices A, B, C, D, E, F, G and H of a Graph are mapped to row and column
indices(0,1,2,3,4,5,6,and 7) of a matrix (i.e. 2-dimensional array) as shown in the following table.
Vertex of Graph
Index in the 2-D Array Adjacency Matrix
Representation of Graph
A
B
2
F
6.
H
7
Suppose further, that the following is an Adjacency Matrix representing the Graph.
3
4
5.
6.
7
0.
1
1
1
1
01
1
01
1.
3
14
1
1
1
6.
1
Exercise:
Show/Draw the Graph that is represented by the above Adjacency matrix. Upload the document that contains
your result. (Filename: AdjacencyMatrixExercise.pdf)
Notes:
-The nodes of the…
5. (This question goes slightly beyond what was covered in the lectures, but you can solve it by combining algorithms that we have described.)
A directed graph is said to be strongly connected if every vertex is reachable from every other vertex; i.e., for every pair of vertices u, v, there is a directed path from u to v and a directed path from v to u.
A strong component of a graph is then a maximal subgraph that is strongly connected. That is all vertices in a strong component can reach each other, and any other vertex in the directed graph either cannot reach the strong component or cannot be reached from the component.
(Note that we are considering directed graphs, so for a pair of vertices u and v there could be a path from u to v, but no path path from v back to u; in that case, u and v are not in the same strong component, even though they are connected by a path in one direction.)
Given a vertex v in a directed graph D, design an algorithm for com- puting the strong connected…
Chapter 8 Solutions
EBK DATA STRUCTURES AND ALGORITHMS IN C
Knowledge Booster
Similar questions
- True or false: For graphs with negative weights, one workaround to be able to use Dijkstra’s algorithm (instead of Bellman-Ford) would be to simply make all edge weights positive; for example, if the most negative weight in a graph is -8, then we can simply add +8 to all weights, compute the shortest path, then decrease all weights by -8 to return to the original graph. Select one: True Falsearrow_forwardDefinition: We define a path in a graph to be short if it contains ≤ 100 edges. Note that we are looking at the number of edges, not the number of vertices. The Problem: •INPUT – An unweighted DAG G = (V, E) – Two specific vertices s, t ∈V •OUTPUT: the number of different short paths in G from s to t. You don’t have to output the actual paths; you just have to figure out how many of them there are. Show a dynamic programming algorithm that solves the above problem in O(|E|) time. You only need to write pseudocode, nothing else. NOTE: a reminder that you can assume in this class that all arithmetic operations (multiplication, addition, etc.) take O(1) time, even if the numbers are very big.arrow_forwardImplement the dijkstra's algorithm on a directed graph from a given vertex. all edges have non-negative edge weights. Output the edge as they are added to the shortest path trees. Compute and print the weight of the shortest path to every reachable vertex. The source vertex is S. show the following: -program code -Screenshot of the output -Representation of the graph transversalarrow_forward
- When we learn about Graph Traversals, one question that I'm sometimes asked by students is why we need them at all. Consider the two implementation strategies for graphs that we learned about previously: an adjacency matrix and adjacency lists. Both of them include a separate array-based structure in which information about every vertex is stored. So if our only goal is to visit every vertex, we can do that by just iterating through that array-based structure. If visiting every vertex is as easy as iterating through them, then why do we need graph traversal algorithms such as depth-first and breadth-first? What purpose do they serve that just iterating through the vertices one at a time, without regard for the presence of edges, wouldn't? JAVA PROGRAMMINGarrow_forwardOne can manually count path lengths in a graph using adjacency matrices. Using the simple example below, produces the following adjacency matrix: A B A 1 1 B 1 0 This matrix means that given two vertices A and B in the graph above, there is a connection from A back to itself, and a two-way connection from A to B. To count the number of paths of length one, or direct connections in the graph, all one must do is count the number of 1s in the graph, three in this case, represented in letter notation as AA, AB, and BA. AA means that the connection starts and ends at A, AB means it starts at A and ends at B, and so on. However, counting the number of two-hop paths is a little more involved. The possibilities are AAA, ABA, and BAB, AAB, and BAA, making a total of five 2-hop paths. The 3-hop paths starting from A would be AAAA, AAAB, AABA, ABAA, and ABAB. Starting from B, the 3-hop paths are BAAA, BAAB, and BABA. Altogether, that would be eight 3-hop paths within this graph. Write a program…arrow_forwardGiven a graph that is a tree (connected and acyclic). (1) Pick any vertex v. (II) Compute the shortest path from v to every other vertex. Let w be the vertex with the largest shortest path distance. (III) Compute the shortest path from w to every other vertex. Let x be the vertex with the largest shortest path distance. Consider the path p from w to x. Which of the following are true a. p is the longest path in the graph b. p is the shortest path in the graph c. p can be calculated in time linear in the number of edges/vertices a,c a,b a,b,c b.carrow_forward
- In graph theory, graph coloring is a special case of graph labeling; it is an assignment of labels traditionally called "colors" to elements of a graph subject to certain constraints. In its simplest form, it is a way of coloring the vertices of a graph such that no two adjacent vertices share the same color; this is called a vertex coloring. The chromatic number of a graph is the least mumber of colors required to do a coloring of a graph. Example Here in this graph the chromatic number is 3 since we used 3 colors The degree of a vertex v in a graph (without loops) is the number of edges at v. If there are loops at v each loop contributes 2 to the valence of v. A graph is connected if for any pair of vertices u and v one can get from u to v by moving along the edges of the graph. Such routes that move along edges are known by different names: edge progressions, paths, simple paths, walks, trails, circuits, cycles, etc. a. Write down the degree of the 16 vertices in the graph below: 14…arrow_forwardYou are given a connected, undirected graph G. Devise an algorithm that produces a path that traverses each edge in G exactly once in each direction. A vertex may occur multiple times on the path. Provide a short justification about why your algorithm is correct, and analyze its efficiency.arrow_forwardDJ and Mark are very lazy guys. These are not the guys from some game, these are the ones playing games all the time. Recently, they bought a new game named "Graph Vertices chooser". The rules of this game are pretty simple. It's a two-player game with each player taking alternating turns starting with DJ. You are given a weighed graph. All the vertices are initially unmarked. In each turn, a player chooses an unmarked vertex and mark it to red or black colour (DJ marks red whereas Mark marks black). The game ends when there is no any unmarked vertex left. After the end of the game, DJ's score will be weight of all the edges in graph such that both the end points of the edge are coloured red. Similarly, score of Mark is sum of weight of edges with both end points being black. DJ would like to maximize difference between his and Mark points, while Mark would like to minimize the difference between DJ's and his score. Both players optimally. Now, you are the one who decided to be the…arrow_forward
- Fill in the blank Dijkstra's algorithm works because, on every shortest path p from a source vertex u to a target vertex v, there is a (predecessor) vertex w in p immediately before v such that removing v from p yields the shortest path from u to w. In other words, the path through the previous vertex is also the shortest path. Thus, choosing an edge from the previous vertex that brings us to v with the __ cost always yields the shortest path to v.arrow_forwardProgramming with Python: v Implement Depth First Search (Traversal) v Implement Breadth First Traversal For the implementation: 1. Create a directed graph with 10 Vertices 2. Add arbitrary edges among vertices to satisfy the directed graph 3. Run your program and show appropriate output (Traversal order) 4. Your implementation should be fully commented Please, submit your source code and output (Screen Capture) too.arrow_forwardIf there is an Euler path that starts at AA and ends at some other vertex, give it. Otherwise enter DNE.This should be a list of letters, from A to the other vertex: e.g. ACBDEAD (if that were even possible!). Path: Since this is a planar graph, the number of regions - arcs + nodes equals what number?arrow_forward
arrow_back_ios
SEE MORE QUESTIONS
arrow_forward_ios
Recommended textbooks for you
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education