




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
AILABMANUAL
ArtificialIntelligenceLabUsingPython(LC-CSE-326G)
DEPARTMENTOFCOMPUTERSCIENCE&ENGINEERING
ChecklistforLabManual
S.No.
Particulars
1
MissionandVision
2
CourseOutcomes
3
Guidelinesforthestudent
4
ListofProgramsasperUniversity
5
SamplecopyofFile
DepartmentofComputerScience&Engineering
VisionandMissionoftheDepartmentVision
TobeaModelinQualityEducationforproducinghighlytalentedandgloballyrecognizablestudentswithsoundethics,latestknowledge,andinnovativeideasinComputerScience&Engineering.
MISSION
TobeaModelinQualityEducationby
M1:Impartinggoodsoundtheoreticalbasisandwide-rangingpracticalexperiencetotheStudentsforfulfillingtheupcomingneedsoftheSocietyinthevariousfieldsofComputerScience&Engineering.
M2:OfferingtheStudentsanoverallbackgroundsuitableformakingaSuccessfulcareerinIndustry/Research/HigherEducationinIndiaandabroad.
M3:ProvidingopportunitytotheStudentsforLearningbeyondCurriculumandimprovingCommunicationSkills.
M4:EngagingStudentsinLearning,UnderstandingandApplyingNovelIdeas.
Course:ArtificialIntelligenceLabusingPythonCourseCode:LC-CSE-326G
CO(CourseOutcomes)
RBT*-RevisedBloom’s
Taxonomy
CO1
ToUseControlStructuresandOperatorstowritebasicPythonprogramming.
L3
(Apply)
CO2
ToAnalyzeobject-orientedconceptsinPython.
L4
(Analyze)
CO3
ToEvaluatetheAImodelspre-processedthroughvariousfeature
engineeringalgorithmsbyPythonProgramming.
L5
(Evaluate)
CO4
ToDevelopthecodefortherecommendersystemusingNatural
Languageprocessing.
L6
(Create)
CO5
ToDesignvariousreinforcementalgorithmstosolvereal-timecomplex
problems.
L6
(Create)
COPO-PSOArticulationMatrices
Course
Outcomes(COs)
(POs)
PSOs
PO1
PO2
PO3
PO4
PO5
PO6
PO7
PO8
PO9
PO10
PO11
PO12
PSO1
PSO2
CO1
3
2
1
3
2
CO2
2
2
3
2
1
2
2
CO3
2
3
2
2
1
2
2
CO4
2
2
2
3
2
1
1
2
CO5
2
2
2
3
2
1
2
1
GuidelinesfortheStudents:
Studentsshouldberegularandcomepreparedforthelabpractice.
Incaseastudentmissesaclass,itishis/herresponsibilitytocompletethatmissedexperiment(s).
Studentsshouldbringtheobservationbook,labjournalandlabmanual.Prescribedtextbookandclassnotescanbekeptreadyforreferenceifrequired.
TheyshouldimplementthegivenProgramindividually.
Whileconductingtheexperimentsstudentsshouldseethattheirprogramswouldmeetthefollowingcriteria:
Programsshouldbeinteractivewithappropriatepromptmessages,errormessagesifany,anddescriptivemessagesforoutputs.
Programsshouldperforminputvalidation(Datatype,rangeerror,etc.)andgiveappropriateerrormessagesandsuggestcorrectiveactions.
Commentsshouldbeusedtogivethestatementoftheproblemandevery
functionshouldindicatethepurposeofthefunction,inputsandoutputs
Statementswithintheprogramshouldbeproperlyindented
Usemeaningfulnamesforvariablesandfunctions.
MakeuseofConstantsandtypedefinitionswhereverneeded.
Oncetheexperiment(s)getexecuted,theyshouldshowtheprogramandresultstotheinstructorsandcopythesameintheirobservationbook.
Questionsforlabtestsandexamneednotnecessarilybelimitedtothequestionsinthemanual,butcouldinvolvesomevariationsand/orcombinationsofthequestions.
ListofExperiments:
WriteaProgramtoImplementBreadthFirstSearchusingPython.
WriteaProgramtoImplementDepthFirstSearchusingPython.
WriteaProgramtoImplementTic-Tac-ToegameusingPython.
WriteaProgramtoImplement8-PuzzleproblemusingPython.
WriteaProgramtoImplementWater-JugproblemusingPython.
Write a Program to Implement Travelling SalesmanProblemusingPython.
WriteaProgramtoImplementTowerofHanoiusingPython.
WriteaProgramtoImplementMonkeyBananaProblemusingPython.
WriteaProgramtoImplementAlpha-BetaPruningusingPython.
WriteaProgramtoImplement8-QueensProblemusingPython.
EXPERIMENT1
#WriteaProgramtoImplementBreadthFirstSearchusingPython.
graph={
'A':['B','C'],
'B':['D','E'],
'C':['F'],
'D':[],
'E':['F'],'F':[]
}
visited=[]#Listtokeeptrackofvisitednodes.queue=[] #Initializeaqueue
defbfs(visited,graph,node):
visited.append(node)queue.append(node)
whilequeue:
s=queue.pop(0)print(s,end="")
forneighbouringraph[s]:ifneighbournotinvisited:
visited.append(neighbour)queue.append(neighbour)
#DriverCodebfs(visited,graph,'A')
Output:-
ABCDEF
EXPERIMENT2
#WriteaProgramtoImplementDepthFirstSearchusingPython.
#UsingaPythondictionarytoactasanadjacencylistgraph={
'A':['B','C'],
'B':['D','E'],
'C':['F'],
'D':[],
'E':['F'],'F':[]
}
visited=set()#Settokeeptrackofvisitednodes.
defdfs(visited,graph,node):ifnodenotinvisited:
print(node)visited.add(node)
forneighbouringraph[node]:dfs(visited,graph,neighbour)
#DriverCodedfs(visited,graph,'A')
Output:-
ABDEFC
EXPERIMENT3
#WriteaProgramtoImplementTic-Tac-ToegameusingPython.
#Tic-Tac-ToeProgramusing#randomnumberinPython
#importingallnecessarylibrariesimportnumpyasnp
importrandom
fromtimeimportsleep
#Createsanemptyboarddefcreate_board():
return(np.array([[0,0,0],
[0,0,0],
[0,0,0]]))
#Checkforemptyplacesonboarddefpossibilities(board):
l=[]
foriinrange(len(board)):
forjinrange(len(board)):
ifboard[i][j]==0:
l.append((i,j))
return(l)
#Selectarandomplacefortheplayerdefrandom_place(board,player):
selection=possibilities(board)current_loc=random.choice(selection)board[current_loc]=playerreturn(board)
#Checkswhethertheplayerhasthree#oftheirmarksinahorizontalrowdefrow_win(board,player):
forxinrange(len(board)):win=True
foryinrange(len(board)):
ifboard[x,y]!=player:win=Falsecontinue
ifwin==True:
return(win)
return(win)
#Checkswhethertheplayerhasthree#oftheirmarksinaverticalrow
defcol_win(board,player):
forxinrange(len(board)):win=True
foryinrange(len(board)):
ifboard[y][x]!=player:win=Falsecontinue
ifwin==True:
return(win)
return(win)
#Checkswhethertheplayerhasthree#oftheirmarksinadiagonalrow
defdiag_win(board,player):win=True
y=0
forxinrange(len(board)):
ifboard[x,x]!=player:win=False
ifwin:
returnwin
win=Trueifwin:
forxinrange(len(board)):y=len(board)-1-x
ifboard[x,y]!=player:win=False
returnwin
#Evaluateswhetherthereis#awinneroratie
defevaluate(board):
winner=0
forplayerin[1,2]:
if(row_win(board,player)or
col_win(board,player)ordiag_win(board,player)):
winner=player
ifnp.all(board!=0)andwinner==0:winner=-1
returnwinner
#Mainfunctiontostartthegamedefplay_game():
board,winner,counter=create_board(),0,1print(board)
sleep(2)
whilewinner==0:
forplayerin[1,2]:
board=random_place(board,player)print("Boardafter"+str(counter)+"move")print(board)
sleep(2)counter+=1
winner=evaluate(board)ifwinner!=0:
break
return(winner)
#DriverCode
print("Winneris:"+str(play_game()))
Output:-
[[0
0
0]
[0
0
0]
[0
0
0]]
Boardafter1move
[[0
0
0]
[0
0
0]
[1
0
0]]
Boardafter2move
[[0
0
0]
[0
2
0]
[1
0
0]]
Boardafter3move
[[0
1
0]
[0
2
0]
[1
0
0]]
Boardafter4move
[[0
1
0]
[2
2
0]
[1
0
0]]
Boardafter5move
[[1
1
0]
[2
2
0]
[1
0
0]]
Boardafter6move
[[1
1
0]
[2
2
0]
[1
2
0]]
Boardafter7move
[[1
1
0]
[2
2
0]
[1
2
1]]
Boardafter8move[[110]
[222]
[121]]
Winneris:2
EXPERIMENT4
#WriteaProgramtoImplement8-PuzzleproblemusingPython.
classSolution:
defsolve(self,board):
dict={}
flatten=[]
foriinrange(len(board)):
flatten+=board[i]
flatten=tuple(flatten)
dict[flatten]=0
ifflatten==(0,1,2,3,4,5,6,7,8):
return0
returnself.get_paths(dict)
defget_paths(self,dict):
cnt=0
whileTrue:
current_nodes=[xforxindictifdict[x]==cnt]
iflen(current_nodes)==0:
return-1
fornodeincurrent_nodes:
next_moves=self.find_next(node)
formoveinnext_moves:
ifmovenotindict:
dict[move]=cnt+1
ifmove==(0,1,2,3,4,5,6,7,8):
returncnt+1
cnt+=1
deffind_next(self,node):
moves={
0:[1,3],
1:[0,2,4],
2:[1,5],
3:[0,4,6],
4:[1,3,5,7],
5:[2,4,8],
6:[3,7],
7:[4,6,8],
8:[5,7],
}
results=[]
pos_0=node.index(0)
formoveinmoves[pos_0]:
new_node=list(node)
new_node[move],new_node[pos_0]=new_node[pos_0],new_node[move]
results.append(tuple(new_node))
returnresults
ob=Solution()
matrix=[
[3,1,2],
[4,7,5],
[6,8,0]
]
print(ob.solve(matrix))
Output:-
4
EXPERIMENT5
##WriteaProgramtoImplementWater-JugproblemusingPython.
#Thisfunctionisusedtoinitializethe
#dictionaryelementswithadefaultvalue.fromcollectionsimportdefaultdict
#jug1andjug2containthevaluejug1,jug2,aim=4,3,2
#Initializedictionarywith#defaultvalueasfalse.
visited=defaultdict(lambda:False)defwaterJugSolver(amt1,amt2):
.
if(amt1==aimandamt2==0)or(amt2==aimandamt1==0):
print(amt1,amt2)returnTrue
ifvisited[(amt1,amt2)]==False:print(amt1,amt2)
visited[(amt1,amt2)]=Truereturn(waterJugSolver(0,amt2)or
waterJugSolver(amt1,0)orwaterJugSolver(jug1,amt2)orwaterJugSolver(amt1,jug2)orwaterJugSolver(amt1+min(amt2,(jug1-amt1)),amt2-min(amt2,(jug1-amt1)))orwaterJugSolver(amt1-min(amt1,(jug2-amt2)),amt2+min(amt1,(jug2-amt2))))
else:
returnFalse
print("Steps:")waterJugSolver(0,0)
Output:-
Steps:
0
0
4
0
4
3
0
3
3
0
3
3
42
02
EXPERIMENT6
#WriteaProgramtoImplementTravellingSalesmanProblemusingPython.
#Python3implementationoftheapproachV=4
answer=[]
#Functiontofindtheminimumweight#HamiltonianCycle
deftsp(graph,v,currPos,n,count,cost):
#Iflastnodeisreachedandithas#alinktothestartingnodei.e
#thesourcethenkeeptheminimum#valueoutofthetotalcostof
#traversaland"ans"
#Finallyreturntocheckfor#morepossiblevalues
if(count==nandgraph[currPos][0]):answer.append(cost+graph[currPos][0])return
#BACKTRACKINGSTEP
#Looptotraversetheadjacencylist
#ofcurrPosnodeandincreasingthecount#by1andcostbygraph[currPos][i]valueforiinrange(n):
if(v[i]==Falseandgraph[currPos][i]):
#Markasvisitedv[i]=True
tsp(graph,v,i,n,count+1,cost+graph[currPos][i])
#Markithnodeasunvisitedv[i]=False
#Drivercode
#nisthenumberofnodesi.e.Vif name ==' main ':
n=4
graph=[[0,10,15,20],
[10,0,35,25],
[15,35,0,30],
[20,25,30,0]]
#Booleanarraytocheckifanode#hasbeenvisitedornot
v=[Falseforiinrange(n)]
#Mark0thnodeasvisitedv[0]=True
#FindtheminimumweightHamiltonianCycletsp(graph,v,0,n,1,0)
#ansistheminimumweightHamiltonianCycleprint(min(answer))
Output:-
80
EXPERIMENT7
#WriteaProgramtoImplementTowerofHanoiusingPython.
#RecursivePythonfunctiontosolvethetowerofhanoidefTowerOfHanoi(n,source,destination,auxiliary):
ifn==1:
print"Movedisk1fromsource",source,"todestination",destinationreturn
TowerOfHanoi(n-1,source,auxiliary,destination)
print"Movedisk",n,"fromsource",source,"todestination",destinationTowerOfHanoi(n-1,auxiliary,destination,source)
#Drivercoden=4
TowerOfHanoi(n,'A','B','C')
#A,C,Barethenameofrods
Output:-
Move
disk
1
from
rod
A
to
rod
B
Move
disk
2
from
rod
A
to
rod
C
Move
disk
1
from
rod
B
to
rod
C
Move
disk
3
from
rod
A
to
rod
B
Move
disk
1
from
rod
C
to
rod
A
Move
disk
2
from
rod
C
to
rod
B
Move
disk
1
from
rod
A
to
rod
B
Move
disk
4
from
rod
A
to
rod
C
Move
disk
1
from
rod
B
to
rod
C
Move
disk
2
from
rod
B
to
rod
A
Move
disk
1
from
rod
C
to
rod
A
Move
disk
3
from
rod
B
to
rod
C
Move
disk
1
from
rod
A
to
rod
B
Move
disk
2
from
rod
A
to
rod
C
Move
disk
1
from
rod
B
to
rod
C
EXPERIMENT8
#WriteaProgramtoImplementMonkeyBananaProblemusingPython.
'''
Pythonprogrammingimplementationofmonkeypickingbananaproblem'''
#GlobalVariableii=0
defMonkey_go_box(x,y):globali
i=i+1
print('step:',i,'monkeyslave',x,'Goto'+y)
defMonkey_move_box(x,y):globali
i=i+1
print('step:',i,'monkeytaketheboxfrom',x,'deliverto'+y)
defMonkey_on_box():globali
i=i+1
print('step:',i,'Monkeyclimbsupthebox')
defMonkey_get_banana():globali
i=i+1
print('step:',i,'Monkeypickedabanana')
importsys
#Readtheinputoperatingparameters,codeIn=sys.stdin.read()codeInList=codeIn.split()
#Theoperatingparametersindicatethelocationsofmonkey,banana,andboxrespectively.
monkey=codeInList[0]banana=codeInList[1]box=codeInList[2]
print('Thestepsareasfollows:')
#PleaseusetheleaststepstocompletethemonkeypickingbananataskMonkey_go_box(monkey,box)
Monkey_move_box(box,banana)Monkey_on_box()Monkey_get_banana()
EXPERIMENT9
#WriteaProgramtoImplementAlpha-BetaPruningusingPython.
#workingofAlpha-BetaPruning
#InitialvaluesofAplhaandBetaMAX,MIN=1000,-1000
#Returnsoptimalvalueforcurrentplayer#(Initiallycalledforrootandmaximizer)
defminimax(depth,nodeIndex,maximizingPlayer,
values,alpha,beta):
#Terminatingcondition.i.e#leafnodeisreached
ifdepth==3:
returnvalues[nodeIndex]ifmaximizingPlayer:
best=MIN
#Recurforleftandrightchildrenforiinrange(0,2):
val=minimax(depth+1,nodeIndex*2+i,
False,values,alpha,beta)best=max(best,val)
alpha=max(alpha,best)
#AlphaBetaPruningifbeta<=alpha:
break
returnbest
else:
best=MAX
#Recurforleftand#rightchildren
foriinrange(0,2):
val=minimax(depth+
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蔬菜栽培培訓(xùn)
- 2025年數(shù)據(jù)標(biāo)注與審核合作協(xié)議書(shū)
- 手機(jī)銀行企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 智能物流包裝輕量化設(shè)計(jì)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 武漢熱干面小店企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 陜西省漢中市2024-2025學(xué)年高一上學(xué)期期末校際聯(lián)考數(shù)學(xué)試題
- 山東省聊城市2024-2025學(xué)年高二上學(xué)期期末語(yǔ)文試題【含答案解析】
- 樹(shù)種批發(fā)企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 存款服務(wù)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 投資規(guī)劃企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 師德師風(fēng)培訓(xùn)筆記
- 養(yǎng)老護(hù)理練習(xí)題庫(kù)(含答案)
- 醫(yī)療廢物相關(guān)法律法規(guī)培訓(xùn)課件
- 特種設(shè)備生產(chǎn)和充裝單位許可規(guī)則
- 女生自尊自愛(ài)知識(shí)講座
- 2025年兒童青少年近視防控白皮書(shū)
- 小學(xué)生春季傳染病預(yù)防
- deepseek在智慧城市建設(shè)中的應(yīng)用前景
- 2024黑龍江公務(wù)員考試【A類、B類、省直、筆試】四套真題及答案
- 2025年九江職業(yè)大學(xué)高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 第七章 力 達(dá)標(biāo)測(cè)試卷(含答案)2024-2025學(xué)年度人教版物理八年級(jí)下冊(cè)
評(píng)論
0/150
提交評(píng)論