UltipaDocs
Try Playground
  • Introduction
    • Show Algorithms
    • Install and Uninstall
    • Run Algorithms
    • Algorithm Results and Statistics
    • Degree Centrality
    • Closeness Centrality
    • Harmonic Centrality
    • Graph Centrality
    • Betweenness Centrality
    • Eigenvector Centrality
    • CELF
    • PageRank
    • ArticleRank
    • HITS
    • SybilRank
    • Jaccard Similarity
    • Overlap Similarity
    • Cosine Similarity
    • Pearson Correlation Coefficient
    • Euclidean Distance
    • K-Hop All
    • Bipartite Graph
    • HyperANF
    • Connected Component
    • Triangle Counting
    • Induced Subgraph
    • k-Core
    • k-Truss
    • p-Cohesion
    • k-Edge Connected Components
    • Local Clustering Coefficient
    • Topological Sort
    • Schema Overview
    • Dijkstra's Single-Source Shortest Path
    • Delta-Stepping Single-Source Shortest Path
    • Shortest Path Faster Algorithm (SPFA)
    • Minimum Spanning Tree
    • Breadth-First Search (BFS)
    • Depth-First Search (DFS)
    • Adamic-Adar Index
    • Common Neighbors
    • Preferential Attachment
    • Resource Allocation
    • Total Neighbors
    • Louvain
    • Leiden
    • Label Propagation
    • HANP
    • k-Means
    • kNN (k-Nearest Neighbors)
    • K-1 Coloring
    • Conductance
      • Random Walk
      • Node2Vec Walk
      • Node2Vec
      • Struc2Vec Walk
      • Struc2Vec
      • GraphSAGE
      • GraphSAGE Train
      • LINE
      • Fast Random Projection
      • Summary of Graph Embedding
      • Gradient Descent
      • Backpropagation
      • Skip-gram
      • Skip-gram Optimization
  1. Docs
  2. /
  3. Graph Analytics & Algorithms
  4. /
  5. Pathfinding

Depth-First Search (DFS)

✓ File Writeback ✕ Property Writeback ✕ Direct Return ✕ Stream Return ✕ Stats

Overview

Graph traversal is a search technique used to visit and explore all the nodes of a graph systematically. The primary goal of graph traversal is to uncover and examine the structure and connections of the graph. There are two common strategies for graph traversal:

  • Breadth-First Seach (BFS)
  • Depth-First Search (DFS)

The Depth-First Search (DFS) algorithm operates based on the backtracking principle and follows these steps:

  1. Create a stack (last in, first out) to keep track of visited nodes.
  2. Start from a selected node, push it into the stack, and mark it as visited.
  3. Push any unvisited neighbor of the node at the top of the stack into the stack, and mark it as visited. If there are multiple unvisited neighbors, choose one arbitrarily or based on a certain order.
  4. Repeat step 3 until there are no more unvisited neighbors to push into the stack.
  5. When there are no new nodes to visit, backtrack to the previous node (the one from which the current node was explored) by popping the top node from the stack.
  6. Repeat steps 3, 4 and 5 until the stack is empty.

Below is an example of traversing the graph using the DFS approach, starting from node A and assuming to visit neighbors in alphabetical order (A~Z):

Considerations

  • Only nodes that are in the same connected component as the start node can be traversed. Nodes in different connect components will not be included in the traversal results.

Syntax

  • Command: algo(traverse)
  • Parameters:
Name
Type
Spec
Default
Optional
Description
ids / uuids_id / _uuid//NoID/UUID of the start node to traverse the graph
directionstringin, out/YesDirection of edges when traversing the graph
traverse_typestringdfsbfsNoTo traverse the graph in the DFS approach, keep it as dfs

Examples

File Writeback

Spec
Content
Description
filename_id,_idThe visited node (toNode), and the node from which it is visited (fromNode)
UQL
algo(traverse).params({
  ids: ['B'],
  direction: 'in',
  traverse_type: 'dfs'
}).write({
  file: {
      filename: 'result'
  }
})

Results: File result

File
F,C
E,F
C,A
B,B
A,B