Chapter2 Notes NEP
Chapter2 Notes NEP
Chapter2 Notes NEP
Problem solving:
In Artificial Intelligence (AI), the term problem solving is given to the analysis of how computers
can be made to find solutions in well-circumscribed domains.
Problem solving is defined as the way in which an agent finds a sequence of actions that achieves
its goals, when no single action will do.
PROBLEM SOLVING AGENTS
Problem Solving agents which is type of goal based agent. A problem-solving agent firstly
formulates a goal and a problem to solve. Then the agent calls a search procedure to solve it. It
then uses the solution to guide its actions.
It will do whatever the solution recommends as the next thing to do and then remove that step from
the sequence. Once the solution has been executed, the agent will formulate a new goal. Searching
techniques like uninformed and informed or heuristic used in many areas like theorem proving,
game playing, expert systems, natural language processing etc.
Structure of problem solving agent:
Goal state: A state that describes the objective that the agent is trying to achieve is called
as the goal state of the agent.
Action: When there is a transition between the world states an action is said to be performed
agent with several immediate options of unknown value can decidewhat to do by first
examining different possible sequences of actions that lead to the states of known value
and then choosing the best sequence.
The initial state, actions and transition model together define the state space of a problem which is
a set of all states reachable from the initial state by any sequence of actions. The state space forms
a graph in which the nodes are states and the links between the nodes are actions.
4. Goal Test
The goal test determines whether a given state is a goal state or not. Sometimes there is an explicit
set of possible goal states and the test simply checks whether the given state is one of them.
Sometimes the goal is specified by an abstract property rather than an explicitly enumerated set of
states.
5. Path Cost
The last component of the problem is the path cost which is a function that assigns a numeric cost
to each path. The problem solving agent chooses a cost function that reflects its own performance
measure.
The solution to the problem is an action sequence that leads from initial state to goal state and the
solution quality is measured by the path cost function. An optimal solution has the lowest path cost
among all the solutions.
Example Problems: Toy Problems
An Example Problem Formulation: Let us take the example of vacuum world, there is a vacuum
cleaner agent and it can move left or right and its jump is to suck up the dirt from the floor.
The goal of the 8-queens problem is to place eight queens on a chessboard such that no queen
attacks any other. (A queen attacks any piece in the same row, column or diagonal.)
This can be formulated as problem as follows:
1) States: Any arrangement of 0 to 8 queens on the board is a state
2) Initial state: No queens on board.
3) Actions: Add a queen to any empty square.
4) Transition Model: Returns the board with a queen added to the specified square.
5) Goal Test: 8 queens are on the board, none attacked.
UNINFORMED SEARCH:
This topic covers several search strategies that come under the heading of uninformed search or
blind search. These search strategies use only the information available in the problem definition
1. Breadth First Search (BFS):
Breadth-first search is the most common search strategy for traversing a tree or graph. This
algorithm searches breadthwise in a tree or graph, so it is called breadth-first search.
BFS algorithm starts searching from the root node of the tree and expands all successor
node at the current level before moving to nodes of next level.
The breadth-first search algorithm is an example of a general-graph search algorithm.
Breadth-first search implemented using FIFO queue data structure.
In the above tree structure, we have shown the traversing of the tree using BFS algorithm from the
root node S to goal node K. BFS search algorithm traverse in layers, so it will follow the path
which is shown by the dotted arrow, and the traversed path will be:
1. S---> A--->B---->C--->D---->G--->H--->E---->F---->I---->K
Advantages:
BFS will provide a solution if any solution exists.
If there are more than one solutions for a given problem, then BFS will provide the minimal
solution which requires the least number of steps.
Disadvantages:
It requires lots of memory since each level of the tree must be saved into memory to expand
the next level.
BFS needs lots of time if the solution is far away from the root node.
Breadth First Search (BFS):
Time complexity: Equivalent to the number of nodes traversed in BFS until the shallowest
solution.
Space complexity: Equivalent to how large can the fringe get.
Completeness: BFS is complete, meaning for a given search tree, BFS will come up with
a solution if it exists.
Optimality: BFS is optimal as long as the costs of all edges are equal.
2. Depth-first Search
Depth-first search is a recursive algorithm for traversing a tree or graph data structure.
It is called the depth-first search because it starts from the root node and follows each path
to its greatest depth node before moving to the next path.
DFS uses a stack data structure for its implementation.
The process of the DFS algorithm is similar to the BFS algorithm
In the above search tree, we have shown the flow of depth-first search, and it will follow the order
as:
Root node--->Left node ----> right node.
It will start searching from root node S, and traverse A, then B, then D and E, after traversing E, it
will backtrack the tree as E has no other successor and still goal node is not found. After
backtracking it will traverse node C and then G, and here it will terminate as it found goal node.
DFS requires very less memory as it only needs to store a stack of the nodes on the path
from root node to the current node.
It takes less time to reach to the goal node than BFS algorithm (if it traverses in the right
pa
Disadvantages:
There is the possibility that many states keep re-occurring, and there is no guarantee of
finding the solution.
DFS algorithm goes for deep down searching and sometime it may go to the infinite loop.
3. Depth-Limited Search
A depth-limited search algorithm is similar to depth-first search with a predetermined limit. Depth-
limited search can solve the drawback of the infinite path in the Depth-first search. In this
algorithm, the node at the depth limit will treat as it has no successor nodes further.
Depth-limited search can be terminated with two Conditions of failure:
Standard failure value: It indicates that problem does not have any solution.
Cut off failure value: It defines no solution for the problem within a given depth limit.
Advantages:
Uniform cost search is optimal because at every state the path with the least cost is chosen.
Disadvantages:
It does not care about the number of steps involve in searching and only concerned about
path cost. Due to which this algorithm may be stuck in an infinite loop.
5. Iterative deepening depth-first Search:
The iterative deepening algorithm is a combination of DFS and BFS algorithms. This
search algorithm finds out the best depth limit and does it by gradually increasing the limit
until a goal is found.
This algorithm performs depth-first search up to a certain "depth limit", and it keeps
increasing the depth limit after each iteration until the goal node is found.
This Search algorithm combines the benefits of Breadth-first search's fast search and depth-
first search's memory efficiency.
The iterative search algorithm is useful uninformed search when search space is large, and
depth of goal node is unknown.
IDDFS algorithm performs various iterations until it does not find the goal node. The iteration
performed by the algorithm is given as:
1'st Iteration-----> A
2'nd Iteration----> A, B, C
3'rd Iteration------>A, B, D, E, C, F, G
4'th Iteration------>A, B, D, H, I, E, C, F, K, G
In the fourth iteration, the algorithm will find the goal node.
Advantages:
It combines the benefits of BFS and DFS search algorithm in terms of fast search and
memory efficiency.
Disadvantages:
The main drawback of IDDFS is that it repeats all the work of the previous phase.
6. Bidirectional Search Algorithm
Bidirectional search algorithm runs two simultaneous searches, one form initial state called
as forward-search and other from goal node called as backward-search, to find the goal
node.
Bidirectional search replaces one single search graph with two small subgraphs in which
one starts the search from an initial vertex and other starts from goal vertex.
The search stops when these two graphs intersect each other.
In the below search tree, bidirectional search algorithm is applied. This algorithm divides one
graph/tree into two sub-graphs. It starts traversing from node 1 in the forward direction and starts
from goal node 16 in the backward direction.
The algorithm terminates at node 9 where two searches meet.
Advantages:
Bidirectional search is fast.
On each iteration, each node n with the lowest heuristic value is expanded and generates all its
successors and n is placed to the closed list. The algorithm continues until a goal state is found.
In the informed search we will discuss two main algorithms which are given below:
Best First Search Algorithm(Greedy search)
A* Search Algorithm
1. Greedy Best-First Search
Greedy best-first search algorithm always selects the path which appears best at that
moment.
It is the combination of depth-first search and breadth-first search algorithms.
It uses the heuristic function and search. Best-first search allows us to take the advantages
of both algorithms.
With the help of best-first search, at each step, we can choose the most promising node.
In the best first search algorithm, we expand the node which is closest to the goal node and
the closest cost is estimated by heuristic function, i.e. f(n)= h(n).
Were, h(n)= estimated cost from node n to the goal.
The greedy best first algorithm is implemented by the priority queue.
It maintains two lists, OPEN and CLOSED list. In the CLOSED list, it places those nodes which
have already expanded and in the OPEN list, it places nodes which have yet not been expanded.
1. Step 1: Place the starting node into the OPEN list.
2. Step 2: If the OPEN list is empty, Stop and return failure.
3. Step 3: Remove the node n, from the OPEN list which has the lowest value of h(n), and
places it in the CLOSED list.
4. Step 4: Expand the node n, and generate the successors of node n.
5. Step 5: Check each successor of node n, and find whether any node is a goal node or not.
If any successor node is goal node, then return success and terminate the search, else
proceed to Step 6.
6. Step 6: For each successor node, algorithm checks for evaluation function f(n), and then
check if the node has been in either OPEN or CLOSED list. If the node has not been in
both list, then add it to the OPEN list.
7. Step 7: Return to Step 2.
Consider the above search problem, and we will traverse it using greedy best-first search. At each
iteration, each node is expanded using evaluation function f(n)=h(n) , which is given in the table.
In this search example, we are using two lists which are OPEN and CLOSED Lists. Following are the
iteration for traversing the above example.
Advantages:
Best first search can switch between BFS and DFS by gaining the advantages of both the
algorithms.
This algorithm is more efficient than BFS and DFS algorithms.
Disadvantages:
It can behave as an unguided depth-first search in the worst case scenario.
It can get stuck in a loop as DFS.
This algorithm is not optimal.
2. A* Search Algorithm:
A* search is the most commonly known form of best-first search.
It uses heuristic function h(n), and g(n) gives the path cost from the start node to node n
It has combined features of UCS and greedy best-first search, by which it solve the problem
efficiently.
A* search algorithm finds the shortest path through the search space using the heuristic
function. This search algorithm expands less search tree and provides optimal result faster.
A* algorithm is similar to UCS except that it uses g(n)+h(n) instead of g(n).
In A* search algorithm, we use search heuristic as well as the cost to reach the node. Hence we can
combine both costs as following, and this sum is called as a fitness number.
Algorithm of A* search:
Step1: Place the starting node in the OPEN list.
Step 2: Check if the OPEN list is empty or not, if the list is empty then return failure and stops.
Step 3: Select the node from the OPEN list which has the smallest value of evaluation function
(g+h), if node n is goal node then return success and stop, otherwise
Step 4: Expand node n and generate all of its successors, and put n into the closed list. For each
successor n', check whether n' is already in the OPEN or CLOSED list, if not then compute
evaluation function for n' and place into Open list.
Step 5: Else if node n' is already in OPEN and CLOSED, then it should be attached to the back
pointer which reflects the lowest g(n') value.
Step 6: Return to Step 2.
In this example, we will traverse the given graph using the A* algorithm. The heuristic value of
all states is given in the table so we will calculate the f(n) of each state using the formula f(n)=
g(n) + h(n), where g(n) is the cost to reach any node from start state.
Here we will use OPEN and CLOSED list.
Solution:
Advantages:
A* search algorithm is the best algorithm than other search algorithms.
A* search algorithm is optimal and complete.
This algorithm can solve very complex problems.
Disadvantages:
It does not always produce the shortest path as it mostly based on heuristics and
approximation.
A* search algorithm has some complexity issues.
The main drawback of A* is memory requirement as it keeps all generated nodes in the
memory, so it is not practical for various large-scale problems.