主頁 >  其他 > 猴子摘香蕉問題

猴子摘香蕉問題

2023-05-23 11:49:08 其他

簡介

一個房間里,天花板上掛有一串香蕉,有一只猴子可在房間里任意活動(到處走動,推移箱子,攀登箱子等),設房間里還有一只可被猴子移動的箱子,且猴子登上箱子時才能摘到香蕉,問猴子在某一狀態下(設猴子位置為A香蕉位置在B箱子位置為C),如何行動可摘取到香蕉?

猴子摘香蕉問題PEAS

性能 環境 執行器 感受器
猴子站在箱子上摘得香蕉 香蕉、箱子位置 (四肢)Move,Climb,Push,Grasp (眼睛) Site,Hold,On,Hang

基本的定義

定義狀態謂詞

  • \(SITE(x , y)\): \(x\)\(y\)
  • \(HANG)(w,y)\): \(w\) 懸掛在 \(y\)
  • \(ON(z)\): \(z\) 站在箱子上
  • \(HOLDS(z)\): \(z\) 手里拿著香蕉

變元的個體域

  • \(x\) 的個體域是\(\{Monkey, Box\}\)

  • \(y\)的個體域是\(\{a,b,c\}\) (地點為 a,b,c)

  • \(z\)的個體域是\(\{Monkey\}\)

  • \(w\)的個體域是\(\{Banana\}\)

初始狀態

\[S_0 = SITE(Monkey, a) \wedge HANG(Banana, b) \wedge SITE(Box, c) \wedge \neg ON(Monkey) \wedge \neg HOLDS(Monkey) \]

猴子在A處,香蕉懸掛在B處,箱子放在C處

目標狀態

\[S_g = SITE(Monkey,b) \wedge \neg HANG(Banana,b) \wedge SITE(Box,b) \wedge ON(Monkey) \wedge HOLDS(Monkey) \]

猴子拿到香蕉,站在箱子上,箱子位于B處

定義四個操作

\[Goto(u,v): 猴子從u走到v處,\\ Pushbox(v,w): 猴子推著箱子從v走到w處,\\ Climbbox: 猴子爬上箱子\\ Grasp: 猴子摘到香蕉 \]

各操作的條件和動作

  • \(Goto(u,v)\)
    • \(條件:\neg ON(Monkey), SITE(Monkey,u)\)
    • 動作:
      • $洗掉表:SITE(Monkey,u) $
      • \(添加表:SITE(Monkey,v)\)
  • \(Pushbox(v,w)\)
    • \(條件:\neg ON(Monkey), SITE(Monkey,v), SITE(Box,v)\)
    • 動作:
      • \(洗掉表:SITE(Monkey,v),SITE(Box,v)\)
      • \(添加表:SITE(Monkey, w), SITE(Box, w)\)
  • \(Climbbox\)
    • \(條件:\neg ON(Monkey), SITE(Monkey,w),SITE(Box, w)\)
    • 動作:
      • \(洗掉表:\neg ON(Monkey)\)
      • \(添加表:ON(Monkey)\)
  • \(Grasp\)
    • \(條件:ON(Monkey), SITE(Box, b), HANG(Banana,b)\)
    • 動作:
      • $洗掉表:\neg HOLDS(Monkey),HANG(Banana,b) $
      • \(添加表:HOLDS(Monkey), \neg HANG(Banana,b)\)

求解

  1. 綜合資料庫:(M, B, Box, On, H)

    • M: 猴子的位置
    • B:香蕉的位置
    • Box:箱子的位置
    • \(On = 0\):猴子在地板上
    • \(On = 1\):猴子在箱子上
    • \(H = 0\):猴子沒有抓到香蕉
    • \(H=1\):猴子抓到了香蕉
  2. 初始狀態:(a, b, c, 0, 0)

  3. 結束狀態:(b, b, b, 1, 1)

  4. 規則集:

    • \(r_1: IF (x,y,z,0,0) \; THEN (w,y,z,0,0)\) 猴子到處亂走
    • $r_2: IF(z,y,z,0,0) ; THEN(z',y,z',0,0) $ 猴子推箱子走
    • \(r_3: IF(x,y,x,0,0) \; THEN(x,y,x,1,0)\) 猴子爬上箱子
    • \(r_4: IF(x,y,x,1,0) \; THEN(x,y,x,0,0)\) 猴子爬下箱子
    • \(r_5: IF(x,x,x,1,0) \; THEN(x,x,x,1,1)\) 猴子摘香蕉
    • 其中,\(x,y,z,w\)為變數,
  5. 具體程序:

    根據具體問題可將規則具體為:

    • \(r_1: IF(a,b,c,0,0) \; THEN(c,b,c,0,0)\) 猴子走到箱子處
    • \(r_2: IF(c,b,c,0,0) \; THEN(b,b,b,0,0)\) 猴子將箱子推到香蕉處
    • \(r_3: IF(b,b,b,0,0) \; THEN(b,b,b,1,0)\) 猴子爬上箱子
    • \(r_5: IF(b,b,b,1,0) \; THEN(b,b,b,1,1)\) 猴子摘到香蕉

    在已知事實下,\(r_1 \rightarrow r_2 \rightarrow r_3 \rightarrow r_5\),即可得到香蕉,

代碼

# 猴子走向箱子
def Goto(Monkey, Box):
    global i  # 步數
    i += 1
    print("step " + str(i) + ": " + "Monkey從" + Monkey + "走向" + Box)


# 猴子推箱子到香蕉處
def Pushbox(Box, Banana):
    global i
    i += 1
    print("step " + str(i) + ": " + "Monkey將Box從" + Box + "推向" + Banana)


# 猴子爬上箱子
def Climbbox():
    global i
    i += 1
    print("step " + str(i) + ": " + "Monkey爬上Box")


# 猴子摘取香蕉
def Grasp():
    global i
    i += 1
    print("step " + str(i) + ": " + "Monkey摘到Banana")


# 猴子爬下箱子
def Dropbox():
    global i
    i += 1
    print("step " + str(i) + ": " + "Monkey爬下box")

# 檢查輸入
def Check(Monkey, Banana, Box, On, H):
    if Monkey != Box and On == "1":
        print("不合法的輸入!")
        return False
    if H == "1":
        print("Monkey已摘到banana")
        return False
    return True
if __name__ == "__main__":
    i = 0
    print("請輸入Monkey位置,Banana的位置,Box的位置,猴子是否在箱子上(1:在,0:不在)上以及猴子是否摘取香蕉(1:是,0:否):")
    Monkey, Banana, Box, On, H = input().split(",")
    Flag = Check(Monkey, Banana, Box, On, H)
    while Flag:
        # r1規則:箱子和猴子不在一起才能走向箱子
        if Monkey != Box:
            Goto(Monkey, Box)
            Monkey = Box
            continue

        # r2規則:猴子跟箱子在一起,且不跟香蕉在一起,以及猴子不在箱子上,才能推箱子到香蕉處
        if Box != Banana and Monkey == Box and On == "0":
            Pushbox(Box, Banana)
            Monkey = Box = Banana
            continue

        # r3規則:猴子不在箱子上,并且猴子跟箱子在一起才能爬
        if On == "0" and Monkey == Box:
            Climbbox()
            On = "1"
            continue

        # r5規則:猴子在箱子上,并且處在香蕉位置,且猴子沒有摘取香蕉,才能摘取香蕉
        if On == "1" and Box == Banana and H == "0":
            Grasp()
            H = "1"
            continue

        # r4規則:猴子在箱子上,但不在香蕉的位置,爬下箱子
        if On == "1" and Box != Banana:
            Dropbox()
            On = "0"
            continue

        # 猴子取到香蕉,則結束回圈
        if H == "1":
            break

本文來自博客園,作者:江水為竭,轉載請注明原文鏈接:https://www.cnblogs.com/Az1r/p/17422374.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553170.html

標籤:其他

上一篇:天涯神帖合集,建議收藏!

下一篇:返回列表

標籤雲
其他(159534) Python(38162) JavaScript(25443) Java(18101) C(15231) 區塊鏈(8267) C#(7972) AI(7469) 爪哇(7425) MySQL(7207) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4575) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1976) 功能(1967) Web開發(1951) HtmlCss(1940) C++(1920) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 猴子摘香蕉問題

    ### 簡介 一個房間里,天花板上掛有一串香蕉,有一只猴子可在房間里任意活動(到處走動,推移箱子,攀登箱子等)。設房間里還有一只可被猴子移動的箱子,且猴子登上箱子時才能摘到香蕉,問猴子在某一狀態下(設**猴子**位置為**A**,**香蕉**位置在**B**,**箱子**位置為**C**),如何行動 ......

    uj5u.com 2023-05-23 11:49:08 more
  • 天涯神帖合集,建議收藏!

    最近幾天大家應該發現天涯社區網站打不開了。 ![](http://img.topjavaer.cn/img/202305190848117.png) 天涯社區創辦于1999年,此時的中國,互聯網產業方興未艾,那時天涯社區相當火爆。 2007年時,天涯社區的注冊用戶就突破了2000萬,號稱是全球最大的 ......

    uj5u.com 2023-05-23 11:49:00 more
  • 子母鐘系統(網路時鐘系統)助力高考精準計時作業建設

    子母鐘系統(網路時鐘系統)助力高考精準計時作業建設 子母鐘系統(網路時鐘系統)助力高考精準計時作業建設 京準電子科技官微——ahjzsz 【摘要】時鐘系統是校園網路中一個重要的精準計時系統,隨著網路的普及,許多校園都建了自己的校園專網,使用的網路設備和服務器也日益增多,這些設備都有自己的時鐘,而且是 ......

    uj5u.com 2023-05-23 11:43:20 more
  • 云計算遇上電動車,跑出新模式的數智化轉型

    摘要:臺鈴集團依托華為云開放能力,與華為云開發者技術服務DTSE團隊進行了產品方案的聯合構建,顯著提高了自身的抗風險能力、數字化運營效率以及資料價值發掘能力。 本文分享自華為云社區《臺鈴數智化轉型成效明顯,華為云DTSE賦能新能源電動車行業加速發展》,作者:華為云賦能云團隊 江蘇錫山工業云。 隨著經 ......

    uj5u.com 2023-05-23 11:37:05 more
  • Serverless冷擴機器在壓測中被擊穿問題

    有次全鏈路壓測中,有位同事負責的服務做Serverless擴容(負載達到50%之后自動擴容并上線接入流量)中,發現新擴容的機器被擊穿,理論分析之后我們重新進行現象回放,模擬問題重現 ......

    uj5u.com 2023-05-23 11:37:00 more
  • Unity3D高級編程主程手記 學習筆記二:C#技術要點

    1.Untiy3D中C#的底層原理 Unity底層在運行C#程式時有兩種機制:一種是Mono,另一種是IL2CPP。Mono存在的目的是為了跨平臺,因為最初C#只支持Windows。而IL可以看成是一種匯編語言且完全基于堆疊,必須運行在虛擬機上。也就是說C#會被編譯器編譯成IL,當需要他們時就會被實 ......

    uj5u.com 2023-05-23 11:31:38 more
  • 猴子摘香蕉問題

    ### 簡介 一個房間里,天花板上掛有一串香蕉,有一只猴子可在房間里任意活動(到處走動,推移箱子,攀登箱子等)。設房間里還有一只可被猴子移動的箱子,且猴子登上箱子時才能摘到香蕉,問猴子在某一狀態下(設**猴子**位置為**A**,**香蕉**位置在**B**,**箱子**位置為**C**),如何行動 ......

    uj5u.com 2023-05-23 11:25:49 more
  • 解密Prompt7. 偏好對齊RLHF-OpenAI&#183;DeepMind&#183;Anthropi

    RLHF是針對有用,無害,事實性等原則,把模型輸出和人類偏好進行對齊的一種方案。以OpenAI為基礎,本章會對比DeepMind, Anthropic在RLHF步驟中的異同,試圖理解RLHF究竟做了啥 ......

    uj5u.com 2023-05-23 09:09:26 more
  • ER圖和資料庫模型圖有啥區別呢?

    **1. 簡介** 對于從事資料庫結構設計相關人員而言,我們通常會在設計的不同階段用到ER圖和資料庫模型圖,用來描述資料之間的組成結構和資料間的關系,但是很多畫圖人員會把它們兩者給搞混了,下面就來聊聊它們之間的區別。 1、**ER圖**全稱為**物體聯系模型**、**物體關系模型**或**物體聯系模 ......

    uj5u.com 2023-05-23 09:09:08 more
  • unity學習日志3(麥扣老師3DRPG專案學習)

    ##1.Shader Graphy基本使用 ![](https://img2023.cnblogs.com/blog/3163322/202305/3163322-20230522202712286-142074988.png) 1. 利用unity自帶的菲利涅效果通過Multiply用Color使 ......

    uj5u.com 2023-05-23 09:08:58 more