0% found this document useful (0 votes)
8 views12 pages

Backtracking Maze Solver Guide

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views12 pages

Backtracking Maze Solver Guide

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Maze Solver Using

Backtracking
T•ì áäpìpµøaø•¾µ pĝá«a•µì a Jaėa-baìpj ³aĨp 쾫ėpä •³á«p³pµøpj ʕø
bac¨øäac¨•µ‰. Tp á侉äa³ Āìpì a ‰äaᐕca« •µøpäˆacp ø¾ ė•ìĀa«•Ĩp øp ³aĨp
aµj øp ì¾«Āø•¾µ áaø. Iø jp³¾µìøäaøpì ¾Ę äpcĀäì•ėp bac¨øäac¨•µ‰ caµ ˆ•µj
a áaø ˆä¾³ øp ìøaäø ø¾ øp pµj ¾ˆ a ³aĨp.
MEET OUR TEAM
LEADER: SHADAAN ALI
ROLL NO: 23CS2021068
Maze Representation and Setup
Maze Grid GUI Components

Tp ³aĨp •ì a 10ĝ10 ‰ä•j äpáäpìpµøpj bĞ a 2D aääaĞ. Cp««ì ʕø Tp •µøpäˆacp Āìpì Jaėa Sʕµ‰ ʕø a áaµp« ø¾ jäaĘ øp ³aĨp
0 aäp áaøì, aµj 1 aäp Ęa««ì. Tp ìøaäø •ì aø øp ø¾á-«pˆø c¾äµpä, aµj a bĀøø¾µ ø¾ øä•‰‰pä øp 쾫ėpä. Tp ʕµj¾Ę ì•Ĩp •ì baìpj ¾µ
aµj øp ‰¾a« •ì aø øp b¾øø¾³-䕉ø c¾äµpä. cp«« ì•Ĩp aµj ‰ä•j j•³pµì•¾µì.
Backtracking Algorithm
Overview
1 Step 1: Check Boundaries
EµìĀäp øp cĀääpµø cp«« •ì ʕø•µ ³aĨp «•³•øì aµj µ¾ø a Ęa«« ¾ä a«äpajĞ
ė•ì•øpj.

2 Step 2: Mark Cell


Maä¨ øp cĀääpµø cp«« aì áaäø ¾ˆ øp ì¾«Āø•¾µ áaø.

3 Step 3: Explore Neighbors


RpcĀäì•ėp«Ğ øäĞ ³¾ė•µ‰ 䕉ø, j¾Ęµ, «pˆø, aµj Āá ø¾ ˆ•µj øp áaø ø¾
øp ‰¾a«.

4 Step 4: Backtrack
Iˆ µ¾ áaø •ì ˆ¾Āµj, µ³aä¨ øp cp«« aµj bac¨øäac¨ ø¾ øäĞ ¾øpä ä¾Āøpì.
Recursive Maze Solving Method
Function Signature Base Cases

Tp ³pø¾j øa¨pì øp cĀääpµø ä¾Ę aµj c¾«Ā³µ aì áaäa³pøpäì Cpc¨ì ˆ¾ä ¾Āø-¾ˆ-b¾Āµjì, Ęa««ì, ¾ä ė•ì•øpj cp««ì. RpøĀäµì øäĀp
aµj äpøĀäµì øäĀp •ˆ a áaø ø¾ øp ‰¾a« •ì ˆ¾Āµj. ʐpµ øp ‰¾a« cp«« •ì äpacpj.
Graphical Visualization of
Maze
Walls
Däaʵ aì b«ac¨ ìãĀaäpì äpáäpìpµø•µ‰ ¾bìøac«pì.

Paths
W•øp ìãĀaäpì •µj•caøp ¾ápµ áaøì ʐpäp ³¾ėp³pµø •ì á¾ìì•b«p.

Solution Path
CĞaµ •‰«•‰øì øp cp««ì ˆ¾ä³•µ‰ øp ìĀccpììˆĀ« ä¾Āøp ˆä¾³ ìøaäø ø¾
ˆ•µ•ì.

Start and End


Gäppµ ³aä¨ì øp ìøaäø cp««, aµj äpj ³aä¨ì øp ‰¾a« cp««.
User Interaction and
Controls
Solve Button
Wpµ c«•c¨pj, •ø äpìpøì øp ì¾«Āø•¾µ aµj ìøaäøì øp bac¨øäac¨•µ‰
a«‰¾ä•ø³.

Feedback
D•ìá«aĞì a ³pììa‰p j•a«¾‰ •µj•caø•µ‰ ʐpøpä øp ³aĨp Ęaì 쾫ėpj
¾ä µ¾ ì¾«Āø•¾µ Ęaì ˆ¾Āµj.

Real-time Update
Tp ³aĨp áaµp« äpáa•µøì ø¾ ì¾Ę øp ì¾«Āø•¾µ áaø •³³pj•aøp«Ğ
aˆøpä ì¾«ė•µ‰.
Handling No Solution Cases
Iˆ øp a«‰¾ä•ø³ caµµ¾ø ˆ•µj a áaø, •ø bac¨øäac¨ì c¾³á«pøp«Ğ aµj äpøĀäµì
ˆa«ìp. Tp Āìpä •ì µ¾ø•ˆ•pj ʕø a j•a«¾‰ ìøaø•µ‰ "N¾ ì¾«Āø•¾µ ˆ¾Āµj!" pµìĀ䕵‰
c«paä c¾³³Āµ•caø•¾µ ¾ˆ ˆa•«Āäp caìpì.

T•ì áäpėpµøì øp á侉äa³ ˆä¾³ aµ‰•µ‰ aµj a««¾Ęì Āìpäì ø¾ øäĞ j•ˆˆpäpµø
³aĨpì ¾ä c¾µˆ•‰Āäaø•¾µì.
Code Structure and Modularity
Main Class MazePanel Class Recursive Solver

Haµj«pì GUI ìpøĀá, pėpµø aµj«•µ‰, aµj Rpìá¾µì•b«p ˆ¾ä jäaʕµ‰ øp ³aĨp, EµcaáìĀ«aøpj •µ a áä•ėaøp ³pø¾j øaø
³aĨp •µ•ø•a«•Ĩaø•¾µ. Ęa««ì, áaøì, aµj ì¾«Āø•¾µ ¾µ øp áp䈾ä³ì øp bac¨øäac¨•µ‰ ìpaäc.
ìcäppµ.
SOURCE CODE
•³á¾äø ¥aėaĝ.ìʕµ‰.;

•³á¾äø ¥aėa.aĘø.;

•³á¾äø ¥aėa.aĘø.pėpµø.*;

áĀb«•c c«aìì MaĨpS¾«ėpäGUI pĝøpµjì JFäa³p {

áä•ėaøp ìøaø•c ˆ•µa« •µø ROWS = 10;

áä•ėaøp ìøaø•c ˆ•µa« •µø COLS = 10;

áä•ėaøp ìøaø•c ˆ•µa« •µø CELL_SIZE = 40;

import [Link].*;
import [Link].*;
import [Link];

public class SmartRandomMazeSolverGUI extends JFrame


{
int N = 8;
int[][] maze;
int[][] sol;

JPanel gridPanel;
JButton generateBtn, solveBtn;
Random rand = new Random();

public SmartRandomMazeSolverGUI()
{
setTitle("Smart Random Maze Solver");
setSize(540, 600);
setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

gridPanel = new JPanel(new GridLayout(N, N));


add(gridPanel, [Link]);

JPanel buttonPanel = new JPanel();


generateBtn = new JButton("Generate Maze");
solveBtn = new JButton("Solve Maze");

[Link](generateBtn);
[Link](solveBtn);
add(buttonPanel, [Link]);

[Link](e -> {
generateSolvableMaze();
sol = new int[N][N];
drawMaze();
});

[Link](e -> {
sol = new int[N][N];
if (!solveMaze(0, 0))
[Link](this, "No Solution Found!");
drawMaze();
});

generateSolvableMaze();
sol = new int[N][N];
drawMaze();
setVisible(true);
}

// Generate maze UNTIL it is solvable


void generateSolvableMaze()
{
do {
generateMaze();
sol = new int[N][N];
} while (!solveMaze(0, 0));
}

void generateMaze()
{
maze = new int[N][N];

for (int i = 0; i < N; i++)


{
for (int j = 0; j < N; j++)
{
maze[i][j] = [Link](2);
}
}

maze[0][0] = 1;
maze[N - 1][N - 1] = 1;
}

void drawMaze()
{
[Link]();

for (int i = 0; i < N; i++)


{
for (int j = 0; j < N; j++)
{
JPanel cell = new JPanel();
[Link]([Link]([Link]));

if (i == 0 && j == 0)
[Link]([Link]);
else if (i == N - 1 && j == N - 1)
[Link]([Link]);
else if (sol[i][j] == 1)
[Link]([Link]);
else if (maze[i][j] == 0)
[Link]([Link]);
else
[Link]([Link]);

[Link](cell);
}
}

[Link]();
[Link]();
}

boolean isSafe(int x, int y)


{
return (x >= 0 && x < N &&
y >= 0 && y < N &&
maze[x][y] == 1 &&
sol[x][y] == 0);
}

// Backtracking in 4 directions
boolean solveMaze(int x, int y)
{
if (x == N - 1 && y == N - 1)
{
sol[x][y] = 1;
return true;
}

if (isSafe(x, y))
{
sol[x][y] = 1;

if (solveMaze(x + 1, y)) return true; // Down


if (solveMaze(x, y + 1)) return true; // Right
if (solveMaze(x - 1, y)) return true; // Up
if (solveMaze(x, y - 1)) return true; // Left

sol[x][y] = 0; // Backtrack
}
return false;
}

public static void main(String[] args)


{
new SmartRandomMazeSolverGUI();
}
}

}
Key Takeaways and Next
Steps
Backtracking Works
Iø •ì aµ pˆˆpcø•ėp ³pø¾j ˆ¾ä ì¾«ė•µ‰ ³aĨp áä¾b«p³ì bĞ pĝ᫾䕵‰ a««
á¾ìì•b«p áaøì.

Visual Feedback
Gäaᐕca« äpáäpìpµøaø•¾µ p«áì Āìpäì µjpäìøaµj øp ì¾«Āø•¾µ
áä¾cpìì c«paä«Ğ.

Extend and Improve


FĀøĀäp Ę¾ä¨ c¾Ā«j •µc«Ājp jеa³•c ³aĨp ‰pµpäaø•¾µ, ³Ā«ø•á«p
a«‰¾ä•ø³ì, ¾ä aµ•³aø•¾µ ¾ˆ øp ì¾«ė•µ‰ áä¾cpìì.
Thank You
Wp aááäpc•aøp оĀä ø•³p ø¾jaĞ. Wp ¾áp ø•ì áäpìpµøaø•¾µ •««Ā³•µaøpj øp á¾Ępä ¾ˆ äpcĀäì•ėp bac¨øäac¨•µ‰ ˆ¾ä pˆˆ•c•pµø ³aĨp
ì¾«ė•µ‰.

Questions?
Wp Ęp«c¾³p оĀä •µãĀ•ä•pì aµj ˆppjbac¨ ¾µ øp ³aĨp 쾫ėpä.

Contact Us
Rpac ¾Āø ˆ¾ä ˆĀ丐pä j•ìcĀì앾µì ¾ä c¾««ab¾äaø•¾µ ¾áá¾äøĀµ•ø•pì.

Explore the Code


F•µj øp ˆĀ«« áä¾¥pcø c¾jp aµj ajj•ø•¾µa« jpøa•«ì ¾µ G•øHĀb.

You might also like