人工智能—状态空间法(state space)[二]
来源:互联网 发布:5g网络手机 编辑:程序博客网 时间:2024/05/01 23:03
#############################################Python实现传教士和野人过河问题:################################## -*- coding:utf-8 -*-import itertoolsclass m_c(): #定义操作算符,10种。来回各5种 def operators(self,s): p01=[s[0],s[1]-1,0] p10=[s[0]-1,s[1],0] p11 =[s[0]-1,s[1]-1,0] p02 =[s[0],s[1]-2,0] p20 =[s[0]-2,s[1],0] p =[p01,p10,p11,p02,p20] q01=[s[0],s[1]+1,1] q10=[s[0]+1,s[1],1] q11 =[s[0]+1,s[1]+1,1] q02 =[s[0],s[1]+2,1] q20 =[s[0]+2,s[1],1] q =[q01,q10,q11,q02,q20] operators= [q,p] return operators #判断条件制约 def enable(self,b,operator): #制约1,两岸人数不能为负数 if operator[0]<0 or operator[1]<0 or m-operator[0]<0 or c-operator[1]<0: return False #制约2,传教士在左岸时,不许传教士人数小于狼数 if operator[0]<operator[1] and operator[0]!=0: return False #制约3,传教士在右岸时,不允许传教士人数小于狼数 if (m-operator[0])<(c-operator[1]) and (m-operator[0])!=0 : return False #制约4,不许船停靠在无人的岸边,下同 if b==1 and operator ==[0,0]: return False if b==0 and operator ==[m,c]: return False return True def trun(self,states,operatorindex,roads,b): indexs =[] sign =0 a =0 tem = [] for s in states: #遍历操作算符 for operator in self.operators(s)[b]: #对于满足操作允许的算符 if self.enable(b,operator): #如果操作之后的状态和之前的状态没有重复 if operator not in roads: indexs.append(self.operators(s)[b].index(operator)) tem.append(operator) roads.append(operator) a =1 if a ==1: pass else: #如果操作不成功,则表明这个状态已经截止,没有下节点。 roads.append(['no way']) operatorindex =indexs states =tem b = abs(b-1) return states,operatorindex,roads,b [m,c,b]=[3,3,1]app =m_c()operatorindex =['']states =[[m,c,b]]roads = [[m,c,b]]while roads[-1] !=[0,0,0]: [states,operatorindex,roads,b]=app.trun(states,operatorindex,roads,b)Tree = []#格式化输出for i in xrange(len(roads)): Tree.append(roads[i][-1])num_times = [(k,len(list(v))) for k,v in itertools.groupby(Tree)]leiji = 0 for i in num_times: if i[0] ==1 or 'no way' : print roads[leiji:leiji+i[1]] else: print roads[leiji:leiji+i[1]] leiji +=i[1]
0 0
- 人工智能—状态空间法(state space)[二]
- 人工智能—空间状态法(state space)[一]
- 人工智能—状态空间法(state space)[三]
- 人工智能—状态空间法(state space)[四]
- Ompl base state space type:OMPL状态空间类型
- Java面向对象设计模式(二十)——状态模式(State)
- 设计模式学习笔记(二十二)——State状态
- 设计模式学习笔记二十二(State状态模式)
- C++设计模式之二十:State(状态模式)
- 有限状态自动机FSM实现(二)--State模式
- JAVA--状态模式(State)--设计模式二十
- 二十、状态模式State(行为型)
- 状态模式(State)—考勤系统
- 状态模式(State)
- State(状态模式)
- State(状态)模式
- 状态(State)模式
- 状态模式(State)
- C# Application.DoEvents
- 完全覆盖 II 之状态压缩
- 关于android RTP驱动的问题
- Crunch字典生成器的使用
- C/C++中的char*,const char*,string之间转换
- 人工智能—状态空间法(state space)[二]
- error: linker command failed with exit code 1 (use -v to see invocation)
- Codeforces Round #181 (Div. 2) B. Coach 带权并查集
- oracle11G空表未导出
- 417. Pacific Atlantic Water Flow
- EF 配置Oracle数据库 EntityType“PersonInfoTest”未定义键。请为该 EntityType 定义键
- SVM中的正则化和损失是什么?
- js 调用qq聊天窗口
- 微信红包发放