Lec 04: Heuristic Search
Table of Contents
Introduction
This tutorial focuses on the fundamentals of heuristic search as presented in the lecture by Prof. Shyamanta M. Hazarika from IIT Guwahati. Heuristic search is a crucial concept in artificial intelligence, enabling efficient problemsolving by using strategies to guide the search process. This guide will break down the key principles and methods associated with heuristic search, making it accessible for students and practitioners in the field.
Step 1: Understand Heuristic Search
 Definition: Heuristic search refers to strategies used to make decisions or solve problems more efficiently when traditional methods are too slow.
 Purpose: It aims to find optimal solutions in complex search spaces by using heuristics—rules of thumb that reduce the search effort.
 Applications: Commonly used in pathfinding algorithms, game AI, and optimization problems.
Step 2: Familiarize with Types of Heuristics

Admissible Heuristics:
 These heuristics never overestimate the cost to reach the goal.
 Example: In pathfinding, the straightline distance to the goal is often used.

Consistent Heuristics:
 These ensure that the estimated cost is always less than or equal to the estimated cost from the current node to a neighbor plus the cost of reaching that neighbor.
 This is essential for algorithms like A* to work correctly.
Step 3: Explore Common Heuristic Search Algorithms

A Search Algorithm*:
 Combines features of Dijkstra’s algorithm and greedy bestfirst search.
 Uses the formula:
where:f(n) = g(n) + h(n)
f(n)
is the total estimated cost of the cheapest solution through noden
.g(n)
is the cost from the start node to noden
.h(n)
is the heuristic estimate from noden
to the goal.

Greedy BestFirst Search:
 Expands the node that appears to be closest to the goal.
 Uses only the heuristic function
h(n)
, ignoring the cost to reach the node.

Hill Climbing:
 A local search algorithm that continuously moves towards the direction of increasing elevation (or value).
 It's prone to getting stuck in local maxima.
Step 4: Analyze the Tradeoffs of Heuristic Search

Efficiency vs. Optimality:
 Heuristic searches prioritize speed and efficiency, which can sometimes lead to suboptimal solutions.

Memory Usage:
 Some algorithms, like A*, require significant memory for storing nodes, while others, like hill climbing, use less.
Step 5: Implement a Simple Heuristic Search
 Choose a Problem: Start with a simple pathfinding problem on a grid.
 Define Heuristic: Use the Manhattan distance as your heuristic:
def manhattan_distance(point1, point2): return abs(point1[0]  point2[0]) + abs(point1[1]  point2[1])
 Run the Algorithm: Implement the A* algorithm using your chosen heuristic and test it on your defined problem.
Conclusion
Heuristic search is a vital aspect of artificial intelligence that enhances problemsolving efficiency. By understanding the types of heuristics, the common algorithms, and their tradeoffs, you will be better equipped to apply these concepts in realworld scenarios. Continue experimenting with different problems and heuristics to deepen your understanding and enhance your skills in AI applications.