The two most common ways to traverse a graph are breadth-first search and depth-first search. Both of these search algorithms follow a common template:
- Create a worklist W, seeded with the start node s.
- While the worklist isn't empty:
- Remove the first element of the worklist; call it v.
- If v is not visited:
- Mark v as visited.
- For each node u directly connected to v, add u to W.
In a breadth-first search, the worklist W is implemented as a FIFO queue, while in depth-first search it's a LIFO stack. If W is a priority queue, you get uniform-cost search.
A while back I asked a question about a data structure for choosing random elements out of a bag. If you implement the above worklist W using this random bag, then you get a "random-first search" algorithm that randomly explores the nodes in the graph starting with the initial node.
My question is this: are there any known algorithms that use this type of search? That is, are there algorithms that work by generating a random spanning tree of the graph in this fashion?