Professional Documents
Culture Documents
Artificial 11
Artificial 11
PRACTICAL NO 1
1
Artificial Intelligence Sub Code: BTCS-704
last = newl; } } } }
void DFS_traversal(){
node *tmp;
int N,v,start_node,visited[MAX_NODE];
cout<<"Enter starting node : ";
cin>>start_node;
for(int i=1;i<=totNodes;i++)
visited[i]=0;
push(start_node);
visited[start_node]=1;
while(is_stk_empty()!=1){
N = pop();
visited[N]=1;
cout<<" "<<N;
tmp = adj[N];
while(tmp!=NULL){
v = tmp->vertex;
if(visited[v]==0)
{ push(v);
visited[v]=1; }
tmp=tmp->next;
}}}
void main(){
clrscr();
cout<<"*****Depth First Search Traversal*****\n";
createGraph();
cout<<"\n===DFS traversal is as under===\n";
DFS_traversal();
getch(); }
OUTPUT:
2
Artificial Intelligence Sub Code: BTCS-704
PRACTICAL NO 2
#include<conio.h>
#include<process.h>
void bfs();
int qempty();
3
Artificial Intelligence Sub Code: BTCS-704
void qinsert(char);
int qdelete();
int i,n;
struct graphvertex
{ char data;
int visited; };
struct node
{ int info;
node *link; }
*front=NULL,*rear=NULL;
struct grapharc
void insertvertex(char v)
vertex=new graphvertex;
vertex->data=v;
vertex->next=NULL;
vertex->garc=NULL;
if(start==NULL)
4
Artificial Intelligence Sub Code: BTCS-704
start=vertex;
else
{ ptr=start;
while(ptr->next!=NULL)
{ ptr=ptr->next; }
ptr->next=vertex;
}}
ptr=start;
while(ptr->data!= s)
ptr=ptr->next;
svar=ptr;
ptr=start;
while(ptr->data != d)
ptr=ptr->next;
dvar=ptr;
arc->dest= dvar;
arc->nxtarc=NULL;
larc=svar->garc;
5
Artificial Intelligence Sub Code: BTCS-704
if(larc==NULL)
svar->garc=arc;
else
{ grapharc *ptr1=larc;
while(ptr1->nxtarc!= NULL)
ptr1=ptr1->nxtarc;
ptr1->nxtarc=arc;
}}
void bfs()
char m,a,v;
ptr=start;
while(ptr!=NULL)
{ ptr->visited=0;
ptr=ptr->next; }
ptr=start;
cin>>a;
qinsert(a);
while(qempty()!=1)
{ m=qdelete();
cout<<m;
while(ptr->data!=m)
{ ptr=ptr->next; }
6
Artificial Intelligence Sub Code: BTCS-704
tmp=ptr->garc;
while(tmp!=NULL)
v=tmp->dest->data;
if(tmp->dest->visited==0)
{ qinsert(v);
tmp->dest->visited=1; }
tmp=tmp->nxtarc;
}}}
void qinsert(char a)
ptr=start;
tmp=new node;
tmp->info=a;
tmp->link=NULL;
if(front==NULL)
front=rear=tmp;
else
{ rear->link=tmp;
rear=tmp; } }
int qdelete()
char item;
if(qempty())
7
Artificial Intelligence Sub Code: BTCS-704
{ cout<<"underflow";
exit(1); }
item=front->info;
if(front==rear)
front=rear=NULL;
else
{ tmp=front;
front=front->link; }
return item;
int qempty()
{ if(front==NULL)
return 1;
else
return 0; }
void main()
{ clrscr();
char v,s,d,c;
cin>>n;
for(i=0;i<n;i++)
{ cin>>v;
insertvertex(v); }
8
Artificial Intelligence Sub Code: BTCS-704
cout<<"vertice are:";
ptr=start;
while(ptr!=NULL)
{ cout<<ptr->data<<"\t";
ptr=ptr->next; }
do
{ cout<<"Enter source:";
cin>>s;
cout<<"Enter destination:";
cin>>d;
insertedge(s,d);
cout<<"Continue : ";
cin>>c; }
while(c!='n');
ptr=start;
while(ptr!=NULL)
{ cout<<ptr->data<<" ";
grapharc *ptr1=ptr->garc;
while(ptr1!=NULL)
{ cout<<ptr1->dest->data<<" ";
ptr1=ptr1->nxtarc; }
cout<<endl;
ptr=ptr->next;
9
Artificial Intelligence Sub Code: BTCS-704
bfs();
getch();
Output:
PRACTICAL NO 3
#include <iostream.h>
#include <conio.h>
if(a==1){
10
Artificial Intelligence Sub Code: BTCS-704
return; }
else{
tower(a-1,from,to,aux);
tower(a-1,aux,from,to);
void main(){
clrscr();
int n;
cout<<"\n\t\t*****Tower of Hanoi*****\n";
cin>>n;
cout<<"\n\n";
tower(n,'A','B','C');
getch();
Output:
11
Artificial Intelligence Sub Code: BTCS-704
PRACTICAL NO 4
12
Artificial Intelligence Sub Code: BTCS-704
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
#include<math.h>
int xcapacity;
int ycapacity;
{ if (d < f)
return d;
else
return f; }
int steps(int n)
{ int x = 0, y = 0, step = 0;
int temp;
cout << setw(60) << " Vessel A Vessel B Steps" << endl;
while (x != n )
{ if (x == 0)
{ x = xcapacity;
step += 1;
else if (y == ycapacity)
{ y = 0;
13
Artificial Intelligence Sub Code: BTCS-704
step++;
else
y = y + temp;
x = x - temp;
step++;
return step; }
void main()
{ clrscr();
int n, ans;
cout << "Enter the liters(GOAL) of water required to be filled in Vessel 1:";
cin >> n;
ans = steps(n);
getch(); }
14
Artificial Intelligence Sub Code: BTCS-704
Output:
PRACTICAL NO 5
#include<stdio.h>
#include<conio.h>
15
Artificial Intelligence Sub Code: BTCS-704
#include<stdlib.h>
#include<iostream.h>
char matrix[3][3];
char check(void);
void init_matrix(void);
void get_player_move(void);
void get_computer_move(void);
void disp_matrix(void);
int main(void)
{ clrscr();
char done;
init_matrix();
do { disp_matrix();
get_player_move();
done = check();
get_computer_move();
done = check(); }
if(done=='X')
16
Artificial Intelligence Sub Code: BTCS-704
else
disp_matrix();
return 0; }
void init_matrix(void)
{ int i, j;
void get_player_move(void)
{ int x, y;
x--; y--;
get_player_move(); }
void get_computer_move(void)
{ int i, j;
17
Artificial Intelligence Sub Code: BTCS-704
if(i*j==9) {
cout<<"draw\n";
exit(0); }
else
matrix[i][j] = 'O'; }
{ int t;
{ printf(" %c | %c | %c ",matrix[t][0],
if(t!=2)
printf("\n---|---|---\n"); }
printf("\n"); }
char check(void)
{ int i;
if(matrix[i][0]==matrix[i][1] &&
if(matrix[0][i]==matrix[1][i] &&
18
Artificial Intelligence Sub Code: BTCS-704
if(matrix[0][0]==matrix[1][1] &&
matrix[1][1]==matrix[2][2])
return matrix[0][0];
if(matrix[0][2]==matrix[1][1] &&
matrix[1][1]==matrix[2][0])
return matrix[0][2];
Output :
19
Artificial Intelligence Sub Code: BTCS-704
PRACTICAL NO 6
20
Artificial Intelligence Sub Code: BTCS-704
21
Artificial Intelligence Sub Code: BTCS-704
22
Artificial Intelligence Sub Code: BTCS-704
{
for(x=0;x<n;x++)
{ closed_nodes_map[x][y]=0;
open_nodes_map[x][y]=0; } }
n0=new node(xStart, yStart, 0, 0);
n0->updatePriority(xFinish, yFinish);
pq[pqi].push(*n0);
open_nodes_map[x][y]=n0->getPriority();
while(!pq[pqi].empty())
{ n0=new node( pq[pqi].top().getxPos(), pq[pqi].top().getyPos(),
pq[pqi].top().getLevel(), pq[pqi].top().getPriority());
x=n0->getxPos(); y=n0->getyPos();
pq[pqi].pop();
open_nodes_map[x][y]=0;
closed_nodes_map[x][y]=1;
if(x==xFinish && y==yFinish)
{ string path="";
while(!(x==xStart && y==yStart))
{ j=dir_map[x][y];
c='0'+(j+dir/2)%dir;
path=c+path;
x+=dx[j];
y+=dy[j]; }
delete n0;
while(!pq[pqi].empty()) pq[pqi].pop();
return path;
}
for(i=0;i<dir;i++)
23
Artificial Intelligence Sub Code: BTCS-704
{ xdx=x+dx[i]; ydy=y+dy[i];
if(!(xdx<0 || xdx>n-1 || ydy<0 || ydy>m-1 || map[xdx][ydy]==1
|| closed_nodes_map[xdx][ydy]==1))
{ m0=new node( xdx, ydy, n0->getLevel(), n0->getPriority());
m0->nextLevel(i);
m0->updatePriority(xFinish, yFinish);
if(open_nodes_map[xdx][ydy]==0)
{ open_nodes_map[xdx][ydy]=m0->getPriority();
pq[pqi].push(*m0);
dir_map[xdx][ydy]=(i+dir/2)%dir; }
else if(open_nodes_map[xdx][ydy]>m0->getPriority())
{ open_nodes_map[xdx][ydy]=m0->getPriority();
dir_map[xdx][ydy]=(i+dir/2)%dir;
while(!(pq[pqi].top().getxPos()==xdx && pq[pqi].top().getyPos()==ydy))
{ pq[1-pqi].push(pq[pqi].top());
pq[pqi].pop(); }
pq[pqi].pop();
if(pq[pqi].size()>pq[1-pqi].size()) pqi=1-pqi;
while(!pq[pqi].empty())
{ pq[1-pqi].push(pq[pqi].top());
pq[pqi].pop(); }
pqi=1-pqi;
pq[pqi].push(*m0); }
else delete m0; }}
delete n0; }
return "";
}
24
Artificial Intelligence Sub Code: BTCS-704
int main()
{ srand(time(NULL));
for(int y=0;y<m;y++)
{
for(int x=0;x<n;x++) map[x][y]=0;
}
for(int x=n/8;x<n*7/8;x++)
{ map[x][m/2]=1; }
for(int y=m/8;y<m*7/8;y++)
{ map[n/2][y]=1; }
int xA, yA, xB, yB;
switch(rand()%8)
{
case 0: xA=0;yA=0;xB=n-1;yB=m-1; break;
case 1: xA=0;yA=m-1;xB=n-1;yB=0; break;
case 2: xA=n/2-1;yA=m/2-1;xB=n/2+1;yB=m/2+1; break;
case 3: xA=n/2-1;yA=m/2+1;xB=n/2+1;yB=m/2-1; break;
case 4: xA=n/2-1;yA=0;xB=n/2+1;yB=m-1; break;
case 5: xA=n/2+1;yA=m-1;xB=n/2-1;yB=0; break;
case 6: xA=0;yA=m/2-1;xB=n-1;yB=m/2+1; break;
case 7: xA=n-1;yA=m/2+1;xB=0;yB=m/2-1; break; }
cout<<"Map Size (X,Y): "<<n<<","<<m<<endl;
cout<<"Start: "<<xA<<","<<yA<<endl;
cout<<"Finish: "<<xB<<","<<yB<<endl;
clock_t start = clock();
string route=pathFind(xA, yA, xB, yB);
if(route=="") cout<<"An empty route generated!"<<endl;
clock_t end = clock();
25
Artificial Intelligence Sub Code: BTCS-704
26
Artificial Intelligence Sub Code: BTCS-704
cout<<"F";
cout<<endl; } }
getchar(); // wait for a (Enter) keypress
return(0);
}
OUTPUT:
27
Artificial Intelligence Sub Code: BTCS-704
PRACTICAL NO 7
Write a program to implement Heuristic Search Procedure.
#include <stdio.h>
#include<conio.h>
#define MAX 100
#define INFINITY 999
int tsp_dp (int c[][MAX], int tour[], int start, int n);
int main()
{ int n; int i, j, c[MAX][MAX], tour[MAX], cost;
printf ("This program demonstrates the TSP problem.");
printf ("\nHow many cities to traverse? ");
scanf ("%d", &n);
printf ("Enter the cost matrix: (999: no connection)\n");
for (i=0; i<n; i++)
for (j=0; j<n; j++)
scanf ("%d", &c[i][j]);
for (i=0; i<n; i++)
tour[i] = i;
cost = tsp_dp (c, tour, 0, n);
printf ("Minimum cost: %d.\nTour: ", cost);
for (i=0; i<n; i++)
printf ("%d ", tour[i]+1);
printf ("1\n");
getch(); }
int tsp_dp (int c[][MAX], int tour[], int start, int n)
{ int i, j, k;
int temp[MAX], mintour[MAX], mincost, ccost;
if (start == n - 2)
28
Artificial Intelligence Sub Code: BTCS-704
OUTPUT:
29
Artificial Intelligence Sub Code: BTCS-704
PRACTICAL NO 8
Write a program for Expert System using Forward Chaining.
#include<iostream>
using namespace std;
int main()
{ char answer[3]; int i;
cout<<"has(A,pointed teeth)";
cin>>answer[0];
cout<<"has(A,claws)";
cin>>answer[1];
cout<<"has(A,forward eyes)";
cin>>answer[2];
if(answer[0]=='y'&& answer[1]=='y'&& answer[2]=='y')
{ cout<<"A is carnivoure animal"; }
else
{ cout<<"A is a Human Being"; }
return 255; }
OUTPUT:
30
Artificial Intelligence Sub Code: BTCS-704
PRACTICAL NO 9
Write a program to implement Search Problem of 3X3 Puzzle.
#include <iostream>
#include <iomanip>
#include <array>
using namespace std;
void printarray(int num[3][3])
{ for(int i = 0;i < 3; i++)
{
for(int j = 0; j< 3; j++)
{ cout << num[i][j] << " "; }
cout << "\n"; } }
void swapValues(int (&array)[3][3], int i1,int j1,int i2,int j2)
{ int temp = array[i1][j1];
array[i1][j1] = array[i2][j2];
array[i2][j2] = temp; }
void moveleft(int (&array)[3][3], int i, int j)
{ if(i==1&&j==1)
{ swapValues(array, i, j, i-1, j);
swapValues(array, i, j, i+1, j); }
else if(i==1&&j==2)
{ swapValues(array, i, j, i, j-1);
swapValues(array, i, j, i, j-2); }
else if(i==0&&j==0)
{ swapValues(array, i, j+2, i, j);
swapValues(array, i, j+1, i, j); }
else if(i==0&&j==2)
{ swapValues(array, i, j, i, j); }
31
Artificial Intelligence Sub Code: BTCS-704
else
swapValues(array, i, j, i-1, j);
swapValues(array, i, j, i+1, j);
}
void movedown(int (&array)[3][3], int i, int j)
{
if(i==0&&j==0)
{ swapValues(array, i, j, i+1, j);
swapValues(array, i, j, i+2, j); }
else if(i==1&&j==1)
{ swapValues(array, i+1, j, i, j);
swapValues(array, i-1, j, i, j); }
else if(i==0&&j==2)
{ swapValues(array, i, j, i+1, j); }
else
swapValues(array, i, j, i-1, j);
swapValues(array, i, j, i+1, j);
}
void moveright(int (&array)[3][3], int i, int j)
{ if(i==0&&j==0)
{ swapValues(array, i, j+1, i, j);
swapValues(array, i, j+2, i, j); }
else if(i==1&&j==1)
{ swapValues(array, i, j+1, i, j);
swapValues(array, i, j-1, i, j); }
else if(i==1&&j==2)
{ swapValues(array, i, j-2, i, j);
swapValues(array, i, j-1, i, j); }
32
Artificial Intelligence Sub Code: BTCS-704
else
swapValues(array, i, j, i-1, j);
swapValues(array, i, j, i+1, j);
}
void moveup(int (&array)[3][3], int i, int j)
{ if(i==0&&j==0)
{ swapValues(array, i, j, i+2, j);
swapValues(array, i, j, i+1, j); }
else if(i==1&&j==1)
{ swapValues(array, i, j, i-1, j);
swapValues(array, i, j, i+1, j); }
else if(i==0&&j==2)
{ swapValues(array, i, j, i+1, j);
swapValues(array, i, j, i+2, j);
swapValues(array, i, j, i+1, j); }
else
swapValues(array, i, j, i-1, j);
swapValues(array, i, j, i+2, j);
}
class Puzzle
{
public:
Puzzle();
void swapValues(int num[3][3], int i1, int j1, int i2, int j2);
void moveup(int (&array)[3][3], int i, int j);
void moveright(int (&array)[3][3], int i, int j);
void moveleft(int (&array)[3][3], int i, int j);
void movedown(int (&array)[3][3], int i, int j);
33
Artificial Intelligence Sub Code: BTCS-704
void printarray(int[3][3]); };
int main()
{ int state1[3][3] = {{2, 8, 3}, {1, 6, 4}, {7, 0, 5}};
int state2[3][3] = {{2, 8, 1}, {4, 6, 3}, {0, 7, 5}};
int gstate[3][3] = {{1, 2, 3}, {8, 0, 4}, {7, 6, 5}};
cout << "this is state 1" << endl;
printarray(state1);
cout << "\n\n";
cout << "now this is state 2" << endl;
printarray(state2);
cout << "\n\n";
cout << "now this is the goal state" << endl;;
printarray(gstate);
int start1, start2;
cout << endl << endl << "please enter your starting point in the states listed above going up or
down" << endl;
cin >> start1;
cout << "now enter the point going left to right" << endl;
cin >> start2;
cout << "this is moving coordinate (1, 1) upwards" << endl;
moveup(state1, start1, start2);
printarray(state1);
cout << endl;
cout << "this is moving coordinate (1, 1) to the left" << endl;
moveleft(state1, start1, start2);
printarray(state1);
cout << endl;
cout << "this is moving coordinate (1, 1) downwards" << endl;
movedown(state1, start1, start2);
34
Artificial Intelligence Sub Code: BTCS-704
printarray(state1);
cout << endl;
cout << "this is moving coordinate (1, 1) to the right" << endl;
moveright(state1, start1, start2);
printarray(state1);
cout << endl;
cin.get();
cin.get();
return 0;
}
OUTPUT:
35