Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wizyoung/missionary-and-cannibals-problem-in-python
solve the M_C problem in Python(用Python解决传教士野人过河问题)
https://github.com/wizyoung/missionary-and-cannibals-problem-in-python
Last synced: about 2 months ago
JSON representation
solve the M_C problem in Python(用Python解决传教士野人过河问题)
- Host: GitHub
- URL: https://github.com/wizyoung/missionary-and-cannibals-problem-in-python
- Owner: wizyoung
- Created: 2016-12-24T09:26:47.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2016-12-24T09:41:33.000Z (about 8 years ago)
- Last Synced: 2023-03-04T19:27:22.434Z (almost 2 years ago)
- Language: Python
- Homepage:
- Size: 3.91 KB
- Stars: 15
- Watchers: 2
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# missionary-and-cannibals-problem-in-Python
用Python语言解决传教士野人过河问题。最近做人工智能实验报告,尝试用新学的Python语言解决传教士野人过河问题。
**问题描述**
> 有三个传教士和三个野人一起来到河边准备渡河,河边有一条空船,且传教士和野人都会划船,但每次最多可供两人乘渡。河的任何一岸以及船上一旦出现野人人数超过传教士人数,野人就会把传教士吃掉。为安全 地渡河,传教士应该如何规划渡河方案?试给出该问题的状态图表示,并编程求解之。
>
> 若传教士和野人的数码均为 5 人,渡船至多可乘 3 人,请定义一个启发函 数,并给出相应的搜索树。**解题思路**
设 M 为传教士总人数,C 为野人总人数,K 为每条船乘坐人数,船的状态表示为 b。
在 M=3,C=3,K=2 情况下:
令 m 表示在左岸的传教士人数,c 表示在左岸的野人数,b=1 表示船在左岸, b=0 表示船在右岸。
因此可用(m, c, b)表述当前状态。
则,初始状态为(3, 3, 1), 目标状态为(0, 0, 0)。
渡河时,为确保安全,需满足:
0 ≤ m ≤ 3,0 ≤ c ≤ 3, b ∈ {0,1}, m > c(m 不为 0 时), 3-m > 3-c(m 不为 3 时)
---
代码中传教士人数M,野人人数C,船能坐K人,均可修改。
具体实现见代码啦