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

Lab Manual

Data structure manual
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
132 views

Lab Manual

Data structure manual
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

ARTIFICIAL INTELLIGENCE LAB

DAVANGERE UNIVERSITY
DAVANGERE-577007, KARNATAKA

ARTIFICIAL INTELLIGENCE LAB

BACHELOR OF COMPUTER APPLICATIONS

BAPUJI INSTITUTE OF HI-TECH EDUCATION

DAVANGERE – 577 004

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

PART A:
1. write a program to implement Breadth first search using python

2. write a program to implement Depth first search using python


3. write a program to implement Tic-Tac-Toe game using python
4. write a program to implement 8-Puzzale problem using python
5. write a program to implement Water-Jug problem using python
6. write a program to implement Travelling Salesman problem using python
7. write a program to implement Tower of Hanoi problem using python
8. write a program to implement Monkey Banana problem using python
9. write a program to implement Alpha-Beta Pruning problem using python
10. write a program to implement 8-Queens problem using python

PART B:
1.write a program to implement hill climbing algorithm in python
2.write a program to implement a* algorithm in python
3.Implementation of Python Basic Libraries such as Math, Numpy and Scipy
4.Implementation of Python Libraries for ML application such as Pandas and
Matplotlib
5.Creation AND Loading different datasets in Python
6.Write a Python program to compute Mean, Median, Mode, Variance and
Standard deviation using datasets.
7.Implementation of Find S algorithm
8. Implementation of Candidate elimination algorithm
9.Write a program to implement Simple Linear Regression and plot the graph
10.Write a Python program to implement Stemming for a given sentence using
NLTK

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

PART A:
1. write a program to implement Breadth first search using python
graph = {
'5' : ['3','7'],
'3' : ['2', '4'],
'7' : ['8'],
'2' : [],
'4' : ['8'],
'8' : []
}

visited = []
queue = []
def bfs(visited, graph, node):
visited.append(node)
queue.append(node)

while queue:
m = queue.pop(0)
print (m, end = " ")

for neighbour in graph[m]:


if neighbour not in visited:
visited.append(neighbour)
queue.append(neighbour)

print("Following is the Breadth-First Search")


bfs(visited, graph, '5')

output:
Following is the Breadth-First Search
537248

2. write a program to implement Depth first search using python


graph = {
'5' : ['3','7'],
'3' : ['2', '4'],
'7' : ['8'],
'2' : [],
'4' : ['8'],
'8' : []
}

visited = set()

def dfs(visited, graph, node):


if node not in visited:

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

print (node)
visited.add(node)
for neighbour in graph[node]:
dfs(visited, graph, neighbour)

print("Following is the Depth-First Search")


dfs(visited, graph, '5')

Output:
Following is the Depth-First Search
532487
3. write a program to implement Tic-Tac-Toe game using python
board = [" " for x in range(9)]
def print_board():
row1 = "| {} | {} | {} |".format(board[0], board[1], board[2])
row2 = "| {} | {} | {} |".format(board[3], board[4], board[5])
row3 = "| {} | {} | {} |".format(board[6], board[7], board[8])
print()
print(row1)
print(row2)
print(row3)
print()
def player_move(icon):
if icon == "X":
number = 1
elif icon == "O":
number = 2
print("Your turn player {}".format(number))
choice = int(input("Enter your move (1-9): ").strip())
if board[choice - 1] == " ":
board[choice - 1] = icon
else:
print()
print("That space is taken!")
def is_victory(icon):
if (board[0] == icon and board[1] == icon and board[2] == icon) or \
(board[3] == icon and board[4] == icon and board[5] == icon) or \
(board[6] == icon and board[7] == icon and board[8] == icon) or \
(board[0] == icon and board[3] == icon and board[6] == icon) or \
(board[1] == icon and board[4] == icon and board[7] == icon) or \
(board[2] == icon and board[5] == icon and board[8] == icon) or \
(board[0] == icon and board[4] == icon and board[8] == icon) or \
(board[2] == icon and board[4] == icon and board[6] == icon):
return True
else:
return False
def is_draw():
if " " not in board:
return True
else:

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

return False
while True:
print_board()
player_move("X")
print_board()
if is_victory("X"):
print("X wins! Congratulations!")
break
elif is_draw():
print("It's a draw!")
break
player_move("O")
if is_victory("O"):
print_board()
print("O wins! Congratulations!")
break
elif is_draw():
print("It's a draw!")
break
Output:

| | | |
| | | |
| | | |

Your turn player 1


Enter your move (1-9): 1

|X| | |
| | | |
| | | |

Your turn player 2


Enter your move (1-9): 5

|X| | |
| |O| |
| | | |

Your turn player 1


Enter your move (1-9): 2

|X|X| |
| |O| |
| | | |

Your turn player 2


Enter your move (1-9): 7

|X|X| |

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

| |O| |
|O| | |

Your turn player 1


Enter your move (1-9): 3

|X|X|X|
| |O| |
|O| | |

X wins! Congratulations!

4. write a program to implement 8-Puzzale problem using python

def getInvCount(arr):
inv_count = 0
empty_value = -1
for i in range(0, 9):
for j in range(i + 1, 9):
if arr[j] != empty_value and arr[i] != empty_value and arr[i] > arr[j]:
inv_count += 1
return inv_count

def isSolvable(puzzle) :

inv_count = getInvCount([j for sub in puzzle for j in sub])

return (inv_count % 2 == 0)

puzzle = [[8, 1, 2],[-1, 4, 3],[7, 6, 5]]


if(isSolvable(puzzle)) :
print("Solvable")
else :
print("Not Solvable")

Output:
Solvable

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

5. write a program to implement Water-Jug problem using python

from collections import defaultdict


jug1, jug2, aim = 4, 3, 2
visited = defaultdict(lambda: False)
def waterJugSolver(amt1, amt2):
if (amt1 == aim and amt2 == 0) or (amt2 == aim and amt1 == 0):
print(amt1, amt2)
return True
if visited[(amt1, amt2)] == False:
print(amt1, amt2)
visited[(amt1, amt2)] = True
return (waterJugSolver(0, amt2) or
waterJugSolver(amt1, 0) or
waterJugSolver(jug1, amt2) or
waterJugSolver(amt1, jug2) or
waterJugSolver(amt1 + min(amt2, (jug1-amt1)),
amt2 - min(amt2, (jug1-amt1))) or
waterJugSolver(amt1 - min(amt1, (jug2-amt2)),
amt2 + min(amt1, (jug2-amt2))))
return False
print("Steps: ")
waterJugSolver(0, 0)

Output:
Steps:
00
40
43
03
30
33
42
02

6. write a program to implement Travelling Salesman problem using


python
from sys import maxsize
from itertools import permutations
V=4
def travellingSalesmanProblem(graph, s):
vertex = []
for i in range(V):
if i != s:

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

vertex.append(i)

min_path = maxsize
next_permutation=permutations(vertex)
for i in next_permutation:
current_pathweight = 0
k=s
for j in i:
current_pathweight += graph[k][j]
k=j
current_pathweight += graph[k][s]
min_path = min(min_path, current_pathweight)
return min_path
if __name__ == "__main__":
graph = [[0, 10, 15, 20], [10, 0, 35, 25],
[15, 35, 0, 30], [20, 25, 30, 0]]
s=0
print(travellingSalesmanProblem(graph, s))

Output:
80

7. write a program to implement Tower of Hanoi problem using python


def TowerOfHanoi(n , source, destination, auxiliary):
if n==1:
print ("Move disk 1 from source",source,"todestination",destination)
return
TowerOfHanoi(n-1, source, auxiliary, destination)
print ("Move disk",n,"fromsource",source,"todestination",destination)
TowerOfHanoi(n-1, auxiliary, destination, source)
n=4
TowerOfHanoi(n,'A','B','C')

Output:
Move disk 1 from source A to destination C
Move disk 2 from source A to destination B
Move disk 1 from source C to destination B
Move disk 3 from source A to destination C
Move disk 1 from source B to destination A
Move disk 2 from source B to destination C
Move disk 1 from source A to destination C
Move disk 4 from source A to destination B
Move disk 1 from source C to destination B
Move disk 2 from source C to destination A
Move disk 1 from source B to destination A
Move disk 3 from source C to destination B
Move disk 1 from source A to destination C
Move disk 2 from source A to destination B
Move disk 1 from source C to destination B

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

8. write a program to implement Monkey Banana problem using python


i=0
def Monkey_go_box(x,y):
global i
i=i+1
print('step:',i,'monkey slave',x,'Go to '+y)
def Monkey_move_box(x,y):
global i
i=i+1
print('step:', i, 'monkey take the box from', x, 'deliver to ' + y)
def Monkey_on_box():
global i
i=i+1
print('step:', i, 'Monkey climbs up the box')
def Monkey_get_banana():
global i
i=i+1
print('step:', i, 'Monkey picked a banana')
codeIn=['monkey', 'banana','box']
monkey=codeIn[0]
banana=codeIn[1]
box=codeIn[2]
print('The steps are as follows:')
Monkey_go_box(monkey, box)
Monkey_move_box(box, banana)
Monkey_on_box()
Monkey_get_banana()

Output:
The steps are as follows:
step: 1 monkey slave monkey Go to boxs
step: 2 monkey take the box from box deliver to banana
step: 3 Monkey climbs up the box
step: 4 Monkey picked a banana

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

9. write a program to implement Alpha-Beta Pruning problem using


python
MAX, MIN = 1000, -1000
def minimax(depth, nodeIndex, maximizingPlayer, values, alpha, beta):
if depth == 3:
return values[nodeIndex]
if maximizingPlayer:
best = MIN
for i in range(0, 2):
val = minimax(depth + 1, nodeIndex * 2 + i, False, values, alpha, beta)
best = max(best, val)
alpha = max(alpha, best)
if beta <= alpha:
break
return best
else:
best = MAX
for i in range(0, 2):
val = minimax(depth + 1, nodeIndex * 2 + i, True, values, alpha, beta)
best = min(best, val)
beta = min(beta, best)
if beta <= alpha:
break
return best
if __name__ == "__main__":
values = [3, 5, 6, 9, 1, 2, 0, -1]
print("The optimal value is :", minimax(0, 0, True, values, MIN, MAX))

Output:The optimal value is : 5

10. write a program to implement 8-Queens problem using python


print ("Enter the number of queens")
N = int(input())
board = [[0]*N for _ in range(N)]
def attack(i, j):
for k in range(0,N):
if board[i][k]==1 or board[k][j]==1:
return True
for k in range(0,N):
for l in range(0,N):
if (k+l==i+j) or (k-l==i-j):
if board[k][l]==1:
return True
return False
def N_queens(n):
if n==0:
return True
for i in range(0,N):

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

for j in range(0,N):
if (not(attack(i,j))) and (board[i][j]!=1):
board[i][j] = 1
if N_queens(n-1)==True:
return True
board[i][j] = 0
return False
N_queens(N)
for i in board:
print (i)

Output:
Enter the number of queens
8
[1, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 1, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 1]
[0, 0, 0, 0, 0, 1, 0, 0]
[0, 0, 1, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 1, 0]
[0, 1, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0, 0]

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

PART B:
1.write a program to implement hill climbing algorithm in python
from numpy import arange
from matplotlib import pyplot
def objective(x):
return x[0]**2.0
r_min, r_max = -5.0, 5.0
inputs = arange(r_min, r_max, 0.1)
results = [objective([x]) for x in inputs]
pyplot.plot(inputs, results)
x_optima = 0.0
pyplot.axvline(x=x_optima, ls='--', color='red')
pyplot.show()

Output:

2.write a program to implement a* algorithm in python

def aStarAlgo(start_node, stop_node):

open_set = set(start_node)
closed_set = set()
g = {}
parents = {}

g[start_node] = 0

parents[start_node] = start_node

while len(open_set) > 0:


n = None

for v in open_set:
if n == None or g[v] + heuristic(v) < g[n] + heuristic(n):
n=v

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

if n == stop_node or Graph_nodes[n] == None:


pass
else:
for (m, weight) in get_neighbors(n):

if m not in open_set and m not in closed_set:


open_set.add(m)
parents[m] = n
g[m] = g[n] + weight

else:
if g[m] > g[n] + weight:

g[m] = g[n] + weight

parents[m] = n

if m in closed_set:
closed_set.remove(m)
open_set.add(m)

if n == None:
print('Path does not exist!')
return None

if n == stop_node:
path = []

while parents[n] != n:
path.append(n)
n = parents[n]

path.append(start_node)

path.reverse()

print('Path found: {}'.format(path))


return path

open_set.remove(n)
closed_set.add(n)

print('Path does not exist!')


return None

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

def get_neighbors(v):
if v in Graph_nodes:
return Graph_nodes[v]
else:
return None

def heuristic(n):
H_dist = {
'A': 11,
'B': 6,
'C': 99,
'D': 1,
'E': 7,
'G': 0,

return H_dist[n]

Graph_nodes = {
'A': [('B', 2), ('E', 3)],
'B': [('C', 1),('G', 9)],
'C': None,
'E': [('D', 6)],
'D': [('G', 1)],

}
aStarAlgo('A', 'G')
Output:
Path found: ['A', 'F', 'G', 'I', 'J']

3.Implementation of Python Basic Libraries such as Math, Numpy and Scipy

a.Math Function
import math
A = 16
print("square root of A")
print(math.sqrt(A))

Output:
square root of A 4.0

b. Numpy Function
import math
import numpy as np
A = 16

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

print("square root of A")


print(math.sqrt(A))
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
result_addition = array1 + array2
print("Display the original arrays and the results")
print("Array 1:", array1)
print("Array 2:", array2)
print("Element-wise Addition:", result_addition)

Output:
Display the original arrays and the results
Array 1: [1 2 3]
Array 2: [4 5 6]
Element-wise Addition: [5 7 9]

c. Scipy Function
import numpy as np
from scipy import linalg
two_d_array=np.array([[4,5],[3,2]])
print(linalg.det(two_d_array))
Output:
-7.0

4.Implementation of Python Libraries for ML application such as Pandas and


Matplotlib

a.Pandas
import pandas as pd
data ={"country": ["Brazil", "Russia", "India", "China", "South Africa"],
"capital": ["Brasilia", "Moscow", "New Delhi", "Beijing", "Pretoria"],
"area": [8.516, 17.10, 3.286, 9.597, 1.221],
"population": [200.4, 143.5, 1252, 1357, 52.98] }
data_table =pd.DataFrame(data)
print(data_table)

Output:

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

b.Matplotlib

import matplotlib.pyplot as plt


import numpy as np
x =np.linspace(0, 10, 100)
plt.plot(x, x, label ='linear')
plt.legend()
plt.show()

Output:

5.Creation AND Loading different datasets in Python

import pandas as pd
df1 = pd.read_excel("C:\\Users\\BCA42\\Desktop\\Book1.xlsx")
df2 = pd.read_csv("C:\\Users\\BCA42\\Desktop\\Book3.csv")

Output:

6.Write a Python program to compute Mean, Median, Mode, Variance and Standard
deviation using datasets.
a.Mean
import numpy as np
list=[2, 4, 4, 4, 5, 5, 7, 9]
print(np.mean(list))

Output:
5.0

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

b.Median

import numpy as np
list=[2, 4, 4, 4, 5, 5, 7, 9]
print(np.median(list))

Output:
4.5

c.Mode
import statistics
list = [2, 4, 4, 4, 5, 5, 7, 9]
print(statistics.mode(list))

Output:
4

d.Variance

import numpy as np
list = [2, 4, 4, 4, 5, 5, 7, 9]
print(np.var(list))

Output:
4.0

e.Standard deviation
import numpy as np
list = [2, 4, 4, 4, 5, 5, 7, 9]
print(np.std(list))

Output:
2.0

7.Implementation of Find S algorithm


training_data = [
(['Yes', 'Yes'], 'Dog'),
(['Yes', 'No'], 'Cat'),
(['No'
, 'Yes'], 'Dog'),
(['No', 'No'], 'Cat'),
(['Yes', 'Yes'], 'Dog')
]
# Initial hypothesis
h = ['∅', '∅']
# Find-S algorithm
for example, label in training_data:
if label == 'Dog':
for i in range(len(example)):
if h[i] == '∅':
h[i] = example[i]

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

elif h[i] != example[i]:


h[i] = '?'
print("Final hypothesis:", h)

Output:
Final hypothesis: ['?', 'Yes']

8. Implementation of Candidate elimination algorithm


import csv
with open("C:\\Users\\BCA74\\Desktop\\trainingdata.csv") as f:
csv_file=csv.reader(f)
data=list(csv_file)

s=data[1][:-1]
g=[['?' for i in range(len(s))] for j in range(len(s))]

for i in data:
if i[-1]=="Yes":
for j in range(len(s)):
if i[j]!=s[j]:
s[j]='?'
g[j][j]='?'

elif i[-1]=="No":
for j in range(len(s)):
if i[j]!=s[j]:
g[j][j]=s[j]
else:
g[j][j]="?"
print("\nSteps of Candidate Elimination Algorithm",data.index(i)+1)
print(s)
print(g)
gh=[]
for i in g:
for j in i:
if j!='?':
gh.append(i)
break
print("\nFinal specific hypothesis:\n",s)

print("\nFinal general hypothesis:\n",gh)


Output:
Steps of Candidate Elimination Algorithm 1
['Sunny', 'Warm', '?', 'Strong', 'Warm', 'Same']
[['?', '?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?',
'?'], ['?', '?', '?', '?', '?', '?']]

Steps of Candidate Elimination Algorithm 2


['Sunny', 'Warm', '?', 'Strong', 'Warm', 'Same']
[['?', '?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?',
'?'], ['?', '?', '?', '?', '?', '?']]

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

Steps of Candidate Elimination Algorithm 3


['Sunny', 'Warm', '?', 'Strong', 'Warm', 'Same']
[['Sunny', '?', '?', '?', '?', '?'], ['?', 'Warm', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', '?'], ['?',
'?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', 'Same']]

Steps of Candidate Elimination Algorithm 4


['Sunny', 'Warm', '?', 'Strong', '?', '?']
[['Sunny', '?', '?', '?', '?', '?'], ['?', 'Warm', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', '?'], ['?',
'?', '?', '?', '?', '?'], ['?', '?', '?', '?', '?', '?']]

Final specific hypothesis:


['Sunny', 'Warm', '?', 'Strong', '?', '?']

Final general hypothesis:

[['Sunny', '?', '?', '?', '?', '?'], ['?', 'Warm', '?', '?', '?', '?']]

9.Write a program to implement Simple Linear Regression and plot the graph

import numpy as nmp


import numpy as np
import matplotlib.pyplot as mtplt

def estimate_coeff(p, q):


n1 = nmp.size(p)
m_p = nmp.mean(p)
m_q = nmp.mean(q)
SS_pq = nmp.sum(q * p) - n1 * m_q * m_p
SS_pp = nmp.sum(p * p) - n1 * m_p * m_p
b_1 = SS_pq / SS_pp
b_0 = m_q - b_1 * m_p
return (b_0, b_1)
def plot_regression_line(p, q, b):
mtplt.scatter(p, q, color = "m",
marker = "o", s = 30)
q_pred = b[0] + b[1] * p
mtplt.plot(p, q_pred, color = "g")
mtplt.xlabel('p')
mtplt.ylabel('q')
mtplt.show()
def main():
p = np.array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
q = np.array([11, 13, 12, 15, 17, 18, 18, 19, 20, 22])
b = estimate_coeff(p, q)
print("Estimated coefficients are :\nb_0 = {} \
\nb_1 = {}".format(b[0], b[1]))
plot_regression_line(p, q, b)
if __name__ == "__main__":
main()

BCA, BIHE Davangere


ARTIFICIAL INTELLIGENCE LAB

Output:
Estimated coefficients are :
b_0 = -0.4606060606060609
b_1 = 1.1696969696969697

10.Write a Python program to implement Stemming for a given sentence using NLTK

from nltk.stem import PorterStemmer


from nltk.tokenize import word_tokenize

ps = PorterStemmer()
words = ["program", "programs", "programmer", "programming", "programmers"]
for w in words:
print(w, " : ", ps.stem(w))

Output:
program : program
programs : program
programmer : program
programming : program
programmers : program

BCA, BIHE Davangere

You might also like