Agents perceive environments and act to achieve goals. Uninformed search — BFS and DFS — is how agents find solutions without domain knowledge.
An AI agent is anything that perceives its environment through sensors and acts upon it through actuators. A chess program perceives the board state and acts by moving pieces. A robot perceives images and distances, and acts by turning motors. What makes it an agent is the sense-act loop — not whether it uses neural networks or if-else rules.
PEAS is the standard framework for defining an agent: Performance measure (what counts as success), Environment (where it operates), Actuators (how it acts), Sensors (how it perceives). Specifying PEAS precisely before writing code prevents optimising the wrong objective.
The environment type determines which agent design applies. A fully observable, deterministic, static game like chess is a very different problem from a partially observable, stochastic, continuous domain like autonomous driving. You cannot use the same search algorithm for both.
A goal-based agent treats problem-solving as graph search: find a path from the initial state to a goal state. Uninformed search (also called blind search) has no information about how close a state is to the goal — it only knows the structure of the graph. Two fundamental strategies:
Completeness: BFS is complete for finite branching factors — it will always find a solution if one exists. DFS is not complete in graphs with cycles unless visited nodes are tracked. In practice, always track visited states to prevent infinite loops.
Use BFS when you need the shortest solution and the branching factor is small enough that storing the entire frontier is feasible. Use DFS when memory is the constraint, solutions are deep, and optimality is not required. Neither is practical for large real-world problems — that is where informed search (A*, greedy best-first) and ML-based planning take over.
Say the answer out loud before revealing — recalling is what makes it stick.
What does PEAS stand for and why is it useful for defining an AI agent?
What is the difference in memory usage between BFS and DFS, and why?
Under what conditions is BFS guaranteed to find an optimal solution?
What makes an environment partially observable, and how does it change agent design?