The main reason is to look at Chapter B and Chapter 22nd of CLRS 2. CLRS is really comprehensive and the description is rigorous, although the concept of mathematics is really a headache.
Recently, it is better to sort out the concept of strongly connected branches in the graph.
Simple path: the path from one vertex to another in a directed graph. Each vertex in the path is unique.
Simple loop: Similarly, a circuit in a directed graph is v0, V1, V2, V3 ...... VK, except V0 = VK, V1 ...... Vks are different from each other; in an undirected graph, the same, but K> = 3
Connected Graph: In an undirected graph, each vertex is connected by a path or only one connected branch.
Strongly Connected Graph: each vertex in a directed graph is connected by a path or only one strongly connected branch.
Full graph: an undirected graph that is adjacent to each vertex.
Bipartite Graph: You can divide a point set into V1 and V2. Each side (u, v) has U belonging to V1, and V belongs to V2.
Euler's loop: in a strongly connected graph, each side is used only once, but one loop of a vertex can be accessed multiple times.
By the way, let's review what a bunch of concepts of Euler's, and copy a section from here:
Definition:
Euler's path: path through each edge in the graph and passing through each vertex only once.
Euler's loop: a loop that passes through each edge and passes through each vertex only once.
Euclidean: a diagram with Euler's loop.
Simply put, the Euler's path is not connected at the beginning and end, while the Euler's circuit requires that the first and the end be connected.
Determination of whether an undirected graph has an Euler's path or loop:
Euler's path: Graph connectivity. In the figure, there are only two nodes with an odd degree (that is, the two endpoints of the Euler's path)
Euler's loop: Graph connectivity; all nodes in the diagram are even
Determination of whether a directed graph has an Euler's path or loop:
Euler's path: Graph connectivity; inbound = outbound for other nodes except the two endpoints; inbound for one endpoint greater than outbound 1; inbound for one endpoint smaller than outbound 1
Euler's loop: Graph connectivity; inbound of all nodes = outbound
Regarding the connectivity judgment, floyed passed closures have always been used. I looked for them online and there are several possible types:
Shortest PathAlgorithm: For example, floyed is used to pass the closure, or two points after the shortest is done, or maxlongint
Search: The searched mark. If there are unmarked points, they are not connected.
Query set: In an undirected graph, if two vertices do not have the same ancestor, they do not have to be connected. Alternatively, you can check the number of connected chunks by several ancestor.