This repository contains implementations of key concepts in Artificial Intelligence and Intelligent Systems, developed as part of coursework assignments.
Assignment 2:
├── Task 1: CAPTCHA Implementation
├── Task 2: AQI Reflex Agent (Go CLI)
├── Task 3: Uninformed Search (Water Jug Problem)
Assignment 3:
├── Task 1: Dijkstra’s Algorithm (Indian Cities)
├── Task 2: UGV Static Obstacle Navigation (A*)
├── Task 3: UGV Dynamic Navigation (Repeated A*)
A simple CAPTCHA system inspired by the Turing Test, designed to distinguish human users from automated bots.
Instead of asking:
“Can a machine behave like a human?”
CAPTCHA asks:
“Does this interaction behave like a human?”
- Interactive 3×3 image grid
- Randomized challenges
- Server-side verification
- Limited attempts (3 tries)
- HMAC-based integrity protection
A Simple Reflex Agent that fetches real-time Air Quality Index (AQI) and provides health recommendations.
- Takes location input (State, Country)
- Converts location → coordinates using Geocoding API
- Fetches AQI data using Google Air Quality API
- Applies rule-based decision logic
Implementation and comparison of classical uninformed search algorithms.
- Breadth-First Search (BFS)
- Depth-First Search (DFS)
- Depth-Limited Search (DLS)
- Iterative Deepening DFS (IDDFS)
Two jugs with fixed capacities — goal is to measure a target quantity using allowed operations.
- Nodes Expanded
- Memory Usage (Frontier Size)
- Execution Time
- Solution Depth
- BFS → optimal but memory-heavy
- DFS → memory-efficient but non-optimal
- DLS → controlled depth but risky
- IDDFS → best balance of optimality and memory
Implementation of Dijkstra’s Algorithm (Uniform-Cost Search) on a weighted graph of Indian cities.
- Compute shortest path between two cities
- Use road distances as edge weights
- Weighted graphs
- Priority queue (min-heap)
- Path reconstruction
Road distances based on publicly available OpenStreetMap-derived references.
Path planning for an Unmanned Ground Vehicle (UGV) in a known obstacle grid.
A* Search Evaluation function:
f(n) = g(n) + h(n)
-
Grid-based environment (70×70 scalable)
-
Three obstacle densities:
- Low (10%)
- Medium (20%)
- High (30%)
- Path Found
- Path Length
- Nodes Explored
- Execution Time
As density increases:
- complexity ↑
- time ↑
- success rate ↓
Path planning in environments where obstacles are:
- Unknown initially
- Dynamic during traversal
- Implemented: Repeated A*
- Conceptual: D Lite*
- Plan path using A*
- Move step-by-step
- Detect new obstacles
- Replan when blocked
- Path Found
- Path Length
- Nodes Explored
- Execution Time
- Number of Replans
- Dynamic environments require adaptive replanning
- Repeated A* works but is inefficient
- D* Lite is more optimal for real-world systems