How to write a depth-first search algorithm in Python?
How to write a depth-first search algorithm in Python?
Depth-First Search (DFS) is a commonly used graph traversal algorithm. In depth-first search, starting from the starting node, adjacent nodes are continuously explored until no more exploration is possible, and then it falls back to the previous node and continues to traverse unexplored adjacent nodes until all nodes are visited.
The following is an example of a depth-first search algorithm written in Python:
# 定义图的类 class Graph: def __init__(self, vertices): self.V = vertices # 节点数量 self.adj = [[] for _ in range(self.V)] # 存储节点的邻接节点 # 添加边 def add_edge(self, u, v): self.adj[u].append(v) # DFS递归函数 def dfs_util(self, u, visited): visited[u] = True # 标记当前节点为已访问 print(u, end=' ') # 输出当前节点 # 遍历当前节点的所有邻接节点 for i in self.adj[u]: if not visited[i]: self.dfs_util(i, visited) # 对外接口,执行DFS def dfs(self, u): visited = [False] * self.V # 标记所有节点均未访问 self.dfs_util(u, visited) # 测试代码 if __name__ == '__main__': # 创建一个具有4个节点的图 g = Graph(4) # 添加图的边 g.add_edge(0, 1) g.add_edge(0, 2) g.add_edge(1, 2) g.add_edge(2, 0) g.add_edge(2, 3) g.add_edge(3, 3) print("深度优先遍历结果:") g.dfs(2)
The above code implements a Graph class to represent the structure of the graph, which includes the initial number of nodes and the definition of adjacent nodes . Then the function to add edges add_edge
is defined.
DFS algorithm is performed with the assistance of dfs_util
recursive function. The function accepts two parameters: the current node u
and an array visited
, using To mark whether the node has been visited. The algorithm first marks the current node as visited and outputs the value of the node. Then traverse all adjacent nodes of the current node. If the adjacent nodes have not been visited, the dfs_util
function is called recursively.
Finally, the dfs
function serves as the external interface, accepts the starting node as a parameter, and creates a visited
array initialized to False. Call the dfs_util
function to start DFS traversal.
In the test code, we create a graph with 4 nodes and add some edges. Then use starting node 2 to perform DFS traversal and output the results.
Hope this code example helps you understand how to write a depth-first search algorithm in Python. You can also modify and optimize the code according to your own needs.
The above is the detailed content of How to write a depth-first search algorithm in Python?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



There is no built-in sum function in C language, so it needs to be written by yourself. Sum can be achieved by traversing the array and accumulating elements: Loop version: Sum is calculated using for loop and array length. Pointer version: Use pointers to point to array elements, and efficient summing is achieved through self-increment pointers. Dynamically allocate array version: Dynamically allocate arrays and manage memory yourself, ensuring that allocated memory is freed to prevent memory leaks.

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

Although distinct and distinct are related to distinction, they are used differently: distinct (adjective) describes the uniqueness of things themselves and is used to emphasize differences between things; distinct (verb) represents the distinction behavior or ability, and is used to describe the discrimination process. In programming, distinct is often used to represent the uniqueness of elements in a collection, such as deduplication operations; distinct is reflected in the design of algorithms or functions, such as distinguishing odd and even numbers. When optimizing, the distinct operation should select the appropriate algorithm and data structure, while the distinct operation should optimize the distinction between logical efficiency and pay attention to writing clear and readable code.

!x Understanding !x is a logical non-operator in C language. It booleans the value of x, that is, true changes to false, false changes to true. But be aware that truth and falsehood in C are represented by numerical values rather than boolean types, non-zero is regarded as true, and only 0 is regarded as false. Therefore, !x deals with negative numbers the same as positive numbers and is considered true.

The H5 page needs to be maintained continuously, because of factors such as code vulnerabilities, browser compatibility, performance optimization, security updates and user experience improvements. Effective maintenance methods include establishing a complete testing system, using version control tools, regularly monitoring page performance, collecting user feedback and formulating maintenance plans.

There is no built-in sum function in C for sum, but it can be implemented by: using a loop to accumulate elements one by one; using a pointer to access and accumulate elements one by one; for large data volumes, consider parallel calculations.

How to obtain dynamic data of 58.com work page while crawling? When crawling a work page of 58.com using crawler tools, you may encounter this...

Copying and pasting the code is not impossible, but it should be treated with caution. Dependencies such as environment, libraries, versions, etc. in the code may not match the current project, resulting in errors or unpredictable results. Be sure to ensure the context is consistent, including file paths, dependent libraries, and Python versions. Additionally, when copying and pasting the code for a specific library, you may need to install the library and its dependencies. Common errors include path errors, version conflicts, and inconsistent code styles. Performance optimization needs to be redesigned or refactored according to the original purpose and constraints of the code. It is crucial to understand and debug copied code, and do not copy and paste blindly.
