0% found this document useful (0 votes)
210 views

Exp 7 PDF

The document describes an experiment to design and implement the 15 puzzle problem using branch and bound technique. The objectives are to learn branch and bound strategy and apply it to solve the 15 puzzle problem, and analyze the time complexity. The expected outcomes are the ability to describe branch and bound, design and apply it to solve 15 puzzle, and analyze the time complexity. The document includes the algorithm, C program code to implement the 15 puzzle problem using branch and bound, and sample output.

Uploaded by

VaibhavPatil
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)
210 views

Exp 7 PDF

The document describes an experiment to design and implement the 15 puzzle problem using branch and bound technique. The objectives are to learn branch and bound strategy and apply it to solve the 15 puzzle problem, and analyze the time complexity. The expected outcomes are the ability to describe branch and bound, design and apply it to solve 15 puzzle, and analyze the time complexity. The document includes the algorithm, C program code to implement the 15 puzzle problem using branch and bound, and sample output.

Uploaded by

VaibhavPatil
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
You are on page 1/ 11

Experiment No : 7

Name: Vaibhav Patil


Roll No:47
Batch: C

Problem Statement: I) To design 15 puzzle Problem using Branch & Bound


Technique

Objective: To be able to learn Branch & Bound strategy


and apply the concepts on 15 puzzle problem.
To find the running time or time complexity of
15 puzzle problem

Expected Outcome: Ability to describe branch & bound technique.


Ability to design and apply branch & bound
strategy on 15 puzzle problem.
Ability to analyze time complexity of 15 puzzle
problem.
Theory:
Algorithm:
Algorithm Iterative Deepening;
begin
bound := h(root); //f initial bound is heuristic
estimate g
repeat
bound := DepthFirstSearch (root; bound); //f perform
iterative-deepening
DFS g
until solved;
end.
function DepthFirstSearch (n, bound): integer; //f
returns next cost bound g
begin
if h(n) = 0 then begin
solved := true; return (0); //f found a
solution: return cost g
end;
new bound := 1;
for each successor ni of n do begin
if c(n; ni) + h(ni) _ bound then
b := c(n; ni) + DepthFirstSearch (ni; bound c(n;
ni)); //f search deeper g
else
b := c(n; ni) + h(ni); f cuto_ g
if solved then return (b);
new bound := min (new bound; b);
//f compute next iteration's bound g
end;
return (new bound); //f return next
iteration's bound g
end;

Program Code: #include<stdio.h>


#include<conio.h>

int m=0,n=4;

int cal(int temp[10][10],int t[10][10])


{
int i,j,m=0;
for(i=0;i < n;i++)
for(j=0;j < n;j++)
{
if(temp[i][j]!=t[i][j])
m++;
}
return m;
}

int check(int a[10][10],int t[10][10])


{
int i,j,f=1;
for(i=0;i < n;i++)
for(j=0;j < n;j++)
if(a[i][j]!=t[i][j])
f=0;
return f;
}
int main()
{
int
p,i,j,n=4,a[10][10],t[10][10],temp[10][10],r[10][10];
int m=0,x=0,y=0,d=1000,dmin=0,l=0;

printf("\nEnter the matrix to be solved,space


with zero :\n");
for(i=0;i < n;i++)
for(j=0;j < n;j++)
scanf("%d",&a[i][j]);

printf("\nEnter the target matrix,space with


zero :\n");
for(i=0;i < n;i++)
for(j=0;j < n;j++)
scanf("%d",&t[i][j]);

printf("\nEntered Matrix is :\n");


for(i=0;i < n;i++)
{
for(j=0;j < n;j++)
printf("%d\t",a[i][j]);
printf("\n");
}

printf("\nTarget Matrix is :\n");


for(i=0;i < n;i++)
{
for(j=0;j < n;j++)
printf("%d\t",t[i][j]);
printf("\n");
}

while(!(check(a,t)))
{
l++;
d=1000;
for(i=0;i < n;i++)
for(j=0;j < n;j++)
{
if(a[i][j]==0)
{
x=i;
y=j;
}
}

//To move upwards


for(i=0;i < n;i++)
for(j=0;j < n;j++)
temp[i][j]=a[i][j];

if(x!=0)
{
p=temp[x][y];
temp[x][y]=temp[x-1][y];
temp[x-1][y]=p;
}
m=cal(temp,t);
dmin=l+m;
if(dmin < d)
{
d=dmin;
for(i=0;i < n;i++)
for(j=0;j < n;j++)
r[i][j]=temp[i][j];
}

//To move downwards


for(i=0;i < n;i++)
for(j=0;j < n;j++)
temp[i][j]=a[i][j];
if(x!=n-1)
{
p=temp[x][y];
temp[x][y]=temp[x+1][y];
temp[x+1][y]=p;
}
m=cal(temp,t);
dmin=l+m;
if(dmin < d)
{
d=dmin;
for(i=0;i < n;i++)
for(j=0;j < n;j++)
r[i][j]=temp[i][j];
}

//To move right side


for(i=0;i < n;i++)
for(j=0;j < n;j++)
temp[i][j]=a[i][j];
if(y!=n-1)
{
p=temp[x][y];
temp[x][y]=temp[x][y+1];
temp[x][y+1]=p;
}
m=cal(temp,t);
dmin=l+m;
if(dmin < d)
{
d=dmin;
for(i=0;i < n;i++)
for(j=0;j < n;j++)
r[i][j]=temp[i][j];
}

//To move left


for(i=0;i < n;i++)
for(j=0;j < n;j++)
temp[i][j]=a[i][j];
if(y!=0)
{
p=temp[x][y];
temp[x][y]=temp[x][y-1];
temp[x][y-1]=p;
}
m=cal(temp,t);
dmin=l+m;
if(dmin < d)
{
d=dmin;
for(i=0;i < n;i++)
for(j=0;j < n;j++)
r[i][j]=temp[i][j];
}

printf("\nCalculated Intermediate Matrix


Value :\n");
for(i=0;i < n;i++)
{
for(j=0;j < n;j++)
printf("%d\t",r[i][j]);
printf("\n");
}
for(i=0;i < n;i++)
for(j=0;j < n;j++)
{
a[i][j]=r[i][j];
temp[i][j]=0;
}
printf("Minimum cost : %d\n",d);
}
getch();
}
Output Snapshot:
Outcome: We learned to implement 15 puzzle problem using a C
program.

You might also like