Please answer the following question in general algorithm ONLY, DO NOT answer it in ONE specific programming language. Thank you! A vertex is "disconnected" if it does not lie on any cycle. Given an undirected graph G, give an efficient algorithm to count the number of "disconnected" vertices in G. Prove that your algorithm is correct. Analyze the running time of your algorithm.   What I've done so far: I get that I'm supposed to use a depth first searching tree, so I devised an algorithm to do just that, DFS(v)     | mark v     | v.pre = clock++     | for each edge vw     |   | if w is unmarked     |        | v = parent(w)     |        | DFS(w)     | v.post = clock++   I just dont know how to find the "disconnected" vertices. My thought process is that I can perhaps find all the vertices in a cycle, and take them out of the total number of vertices to find the number of disconnected vertices. If this thought process is correct, could you help me by showing me how to make such an algorithm?   Possible method to find cycles could be to see if there are loops where a chile vertex is an ancestor to it's parent vertex, but I'm not sure how to create a method for that either.

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Please answer the following question in general algorithm ONLY, DO NOT answer it in ONE specific programming language. Thank you!

A vertex is "disconnected" if it does not lie on any cycle. Given an undirected graph G, give an efficient algorithm to count the number of "disconnected" vertices in G. Prove that your algorithm is correct. Analyze the running time of your algorithm.

 

What I've done so far:

I get that I'm supposed to use a depth first searching tree, so I devised an algorithm to do just that,

DFS(v)

    | mark v

    | v.pre = clock++

    | for each edge vw

    |   | if w is unmarked

    |        | v = parent(w)

    |        | DFS(w)

    | v.post = clock++

 

I just dont know how to find the "disconnected" vertices. My thought process is that I can perhaps find all the vertices in a cycle, and take them out of the total number of vertices to find the number of disconnected vertices. If this thought process is correct, could you help me by showing me how to make such an algorithm?

 

Possible method to find cycles could be to see if there are loops where a chile vertex is an ancestor to it's parent vertex, but I'm not sure how to create a method for that either.

Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Searching
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
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)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education