Uninformed (Blind) Search
Random Walk Search (RWS)
The Random Walk Search algorithm is a fundamental search strategy where a search agent randomly selects and moves to a neighboring node without maintaining a history of past states. This approach is often used in scenarios where structured search methods are either infeasible or inefficient due to an unknown or highly complex search space.
Example of use
<?php
// Create new graph instance
use app\classes\search\UninformedSearchGraph;
$graph = new UninformedSearchGraph();
// Add vertices with their levels
$graph->addVertex('S', 0); // Start node (level 0)
$graph->addVertex('A', 1); // Level 1
$graph->addVertex('B', 1); // Level 1
$graph->addVertex('C', 2); // Level 2
$graph->addVertex('D', 2); // Level 2
$graph->addVertex('G', 2); // Level 2
$graph->addVertex('H', 2); // Level 2
$graph->addVertex('E', 3); // Level 3
$graph->addVertex('F', 3); // Level 3
$graph->addVertex('I', 3); // Level 3
$graph->addVertex('K', 4); // Level 4 (target node)
// Add edges to create the graph structure
$graph->addEdge('S', 'A'); // S -> A
$graph->addEdge('S', 'B'); // S -> B
$graph->addEdge('A', 'C'); // A -> C
$graph->addEdge('A', 'D'); // A -> D
$graph->addEdge('B', 'G'); // B -> G
$graph->addEdge('B', 'H'); // B -> H
$graph->addEdge('C', 'E'); // C -> E
$graph->addEdge('C', 'F'); // C -> F
$graph->addEdge('G', 'I'); // G -> I
$graph->addEdge('E', 'K'); // E -> K
echo "RWS traversal starting from vertex 'S':\n";
echo "--------------------------------------\n";
// Perform random search from S to K - 100 steps maximum
$searchResult = $graph->rws('S', 'K', 100);
$graph->printRwsPath($searchResult);
Graph:
Starting RWS traversal...
Result:
Memory: 0.111 Mb
Time running: 0.002 sec.
RWS traversal starting from vertex 'S':
--------------------------------------
Random Search found target!
Total steps taken: 82/100
Path taken:
Step 0: Node S (Level 0, Visits: 0)
Step 1: Node B (Level 1, Visits: 0)
Step 2: Node G (Level 2, Visits: 0)
Step 3: Node I (Level 3, Visits: 0)
Step 4: Node G (Level 2, Visits: 1)
Step 5: Node B (Level 1, Visits: 1)
Step 6: Node S (Level 0, Visits: 1)
Step 7: Node B (Level 1, Visits: 2)
Step 8: Node S (Level 0, Visits: 2)
Step 9: Node A (Level 1, Visits: 0)
Step 10: Node D (Level 2, Visits: 0)
Step 11: Node A (Level 1, Visits: 1)
Step 12: Node S (Level 0, Visits: 3)
Step 13: Node B (Level 1, Visits: 3)
Step 14: Node G (Level 2, Visits: 2)
Step 15: Node B (Level 1, Visits: 4)
Step 16: Node H (Level 2, Visits: 0)
Step 17: Node B (Level 1, Visits: 5)
Step 18: Node S (Level 0, Visits: 4)
Step 19: Node A (Level 1, Visits: 2)
Step 20: Node D (Level 2, Visits: 1)
Step 21: Node A (Level 1, Visits: 3)
Step 22: Node S (Level 0, Visits: 5)
Step 23: Node A (Level 1, Visits: 4)
Step 24: Node S (Level 0, Visits: 6)
Step 25: Node A (Level 1, Visits: 5)
Step 26: Node D (Level 2, Visits: 2)
Step 27: Node A (Level 1, Visits: 6)
Step 28: Node S (Level 0, Visits: 7)
Step 29: Node A (Level 1, Visits: 7)
Step 30: Node D (Level 2, Visits: 3)
Step 31: Node A (Level 1, Visits: 8)
Step 32: Node S (Level 0, Visits: 8)
Step 33: Node B (Level 1, Visits: 6)
Step 34: Node G (Level 2, Visits: 3)
Step 35: Node I (Level 3, Visits: 1)
Step 36: Node G (Level 2, Visits: 4)
Step 37: Node I (Level 3, Visits: 2)
Step 38: Node G (Level 2, Visits: 5)
Step 39: Node B (Level 1, Visits: 7)
Step 40: Node S (Level 0, Visits: 9)
Step 41: Node A (Level 1, Visits: 9)
Step 42: Node S (Level 0, Visits: 10)
Step 43: Node B (Level 1, Visits: 8)
Step 44: Node G (Level 2, Visits: 6)
Step 45: Node I (Level 3, Visits: 3)
Step 46: Node G (Level 2, Visits: 7)
Step 47: Node B (Level 1, Visits: 9)
Step 48: Node S (Level 0, Visits: 11)
Step 49: Node A (Level 1, Visits: 10)
Step 50: Node D (Level 2, Visits: 4)
Step 51: Node A (Level 1, Visits: 11)
Step 52: Node C (Level 2, Visits: 0)
Step 53: Node A (Level 1, Visits: 12)
Step 54: Node S (Level 0, Visits: 12)
Step 55: Node B (Level 1, Visits: 10)
Step 56: Node H (Level 2, Visits: 1)
Step 57: Node B (Level 1, Visits: 11)
Step 58: Node G (Level 2, Visits: 8)
Step 59: Node B (Level 1, Visits: 12)
Step 60: Node S (Level 0, Visits: 13)
Step 61: Node A (Level 1, Visits: 13)
Step 62: Node S (Level 0, Visits: 14)
Step 63: Node B (Level 1, Visits: 13)
Step 64: Node G (Level 2, Visits: 9)
Step 65: Node B (Level 1, Visits: 14)
Step 66: Node S (Level 0, Visits: 15)
Step 67: Node B (Level 1, Visits: 15)
Step 68: Node S (Level 0, Visits: 16)
Step 69: Node B (Level 1, Visits: 16)
Step 70: Node H (Level 2, Visits: 2)
Step 71: Node B (Level 1, Visits: 17)
Step 72: Node H (Level 2, Visits: 3)
Step 73: Node B (Level 1, Visits: 18)
Step 74: Node S (Level 0, Visits: 17)
Step 75: Node A (Level 1, Visits: 14)
Step 76: Node C (Level 2, Visits: 1)
Step 77: Node A (Level 1, Visits: 15)
Step 78: Node S (Level 0, Visits: 18)
Step 79: Node A (Level 1, Visits: 16)
Step 80: Node C (Level 2, Visits: 2)
Step 81: Node E (Level 3, Visits: 0)
Step 82: Node K (Level 4, Visits: 0)
Visit counts:
Node S: visited 19 times
Node B: visited 19 times
Node G: visited 10 times
Node I: visited 4 times
Node A: visited 17 times
Node D: visited 5 times
Node H: visited 4 times
Node C: visited 3 times
Node E: visited 1 times