文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。

1. 海盗分金博弈

五个海盗抢走了一个装满 100 枚金币的箱子。作为一群民主的海盗,他们同意以下分配战利品的方法:最资深的海盗将提议分配硬币。所有的海盗,包括最资深的海盗,都会进行投票。如果至少50%的海盗(在本例中为3名海盗)接受提议,则黄金按提议进行分配。如果没有,则将最高级的海盗喂给鲨鱼,然后从下一个最高级的海盗开始这个过程.…重复这个过程,直到一个计划被批准。你可以假设所有的海盗都是完全理性的:他们首先想活下去,其次是获得尽可能多的金子。最后,作为嗜血的海盗,如果在其他方面均等的结果之间做出选择,他们希望船上的海盗更少。

Q: 金币最终将如何分配?

A: 根据海盗的分配规则和理性行为(优先生存、其次最大化金币、最后在金币相同情况下希望船上海盗更少),我们从海盗数量最少的情况开始逆向推理,逐步推导出五个海盗时的分配方案。

  1. 一个海盗(只剩 P5)

    • P5 提出方案,拿走所有 100 枚金币。
    • 投票:仅 P5 一人,100% 支持,方案通过。
    • 分配:P5 得到 100。
  2. 两个海盗(P4 和 P5)

    • P4 提出方案。需要至少 50% 支持(2 的 50% 为 1,即至少一票支持)。
    • P4 会投票支持自己的方案,因此即使 P5 反对,方案也能通过(P4 一票支持即满足条件)。
    • P4 可以提出:自己拿 100,P5 拿 0。
    • 分配:P4 得到 100,P5 得到 0。
  3. 三个海盗(P3、P4、P5)

    • P3 提出方案。需要至少 50% 支持(3 的 50% 为 1.5,向上取整需至少 2 票支持)。
    • P3 会投票支持自己,因此还需要一票支持。
    • 如果方案被拒绝,P3 被淘汰,进入两个海盗情况(P4 得 100,P5 得 0)。
    • P5 在拒绝情况下得 0,因此 P3 可以贿赂 P5:给 P5 1 枚金币,P5 会支持(1 > 0)。
    • P4 在拒绝情况下得 100,但 P3 无需贿赂 P4(成本高)。
    • 方案:P3 得 99,P4 得 0,P5 得 1。
    • 投票:P3 支持、P5 支持(两票支持),方案通过。
  4. 四个海盗(P2、P3、P4、P5)

    • P2 提出方案。需要至少 50% 支持(4 的 50% 为 2,需至少 2 票支持)。
    • P2 会投票支持自己,因此还需要一票支持。
    • 如果方案被拒绝,P2 被淘汰,进入三个海盗情况(P3 得 99,P4 得 0,P5 得 1)。
    • P4 在拒绝情况下得 0,因此 P2 可以贿赂 P4:给 P4 1 枚金币,P4 会支持(1 > 0)。
    • P3 在拒绝情况下得 99,贿赂成本高;P5 在拒绝情况下得 1,如果给 1 枚,金币相同但海盗更少时 P5 可能反对(嗜血偏好),因此贿赂 P4 更划算。
    • 方案:P2 得 99,P3 得 0,P4 得 1,P5 得 0。
    • 投票:P2 支持、P4 支持(两票支持),方案通过。
  5. 五个海盗(P1、P2、P3、P4、P5)

    • P1 提出方案。需要至少 50% 支持(5 的 50% 为 2.5,向上取整需至少 3 票支持)。
    • P1 会投票支持自己,因此还需要两票支持。
    • 如果方案被拒绝,P1 被淘汰,进入四个海盗情况(P2 得 99,P3 得 0,P4 得 1,P5 得 0)。
    • P3 在拒绝情况下得 0,因此 P1 可以贿赂 P3:给 P3 1 枚金币,P3 会支持(1 > 0)。
    • P5 在拒绝情况下得 0,因此 P1 可以贿赂 P5:给 P5 1 枚金币,P5 会支持(1 > 0)。
    • P2 在拒绝情况下得 99,贿赂成本高;P4 在拒绝情况下得 1,如果给 1 枚,金币相同但海盗更少时 P4 可能反对,因此贿赂 P3 和 P5 更划算。
    • 方案:P1 得 98,P2 得 0,P3 得 1,P4 得 0,P5 得 1。
    • 投票:P1 支持、P3 支持、P5 支持(三票支持),方案通过。

根据上述推理过程,我们可以生成如下表格来展示分配方案:

海盗数量P5P4P3P2P1
1100
20100
31099
401099
5101098

在五个海盗的情况下,金币分配如下:

  • 最资深海盗(P1):98 枚金币
  • 第二资深海盗(P2):0 枚金币
  • 第三资深海盗(P3):1 枚金币
  • 第四资深海盗(P4):0 枚金币
  • 最年轻海盗(P5):1 枚金币

总金币:98 + 0 + 1 + 0 + 1 = 100 枚。

Python实现

要解决海盗分金问题,我们可以使用逆向归纳法(从最少海盗数开始逐步推导到5个海盗),并通过Python代码实现这一逻辑。以下是完整的代码实现:

from typing import Dict, List, Tupledef pirate_allocation(total_pirates: int) -> Dict[int, int]:"""计算海盗分配金币的最优策略。Args:total_pirates (int): 海盗总数。Returns:Dict[int, int]: 每个海盗的金币分配方案,键为海盗编号(从1到total_pirates),值为金币数量。"""# 存储不同海盗数量的分配方案allocations: Dict[int, Dict[int, int]] = {}# 基础情况:1个海盗allocations[1] = {1: 100}# 从2个海盗开始逐步计算到指定数量的海盗for n in range(2, total_pirates + 1):# 获取n-1个海盗时的分配方案prev_alloc: Dict[int, int] = allocations[n - 1]# 计算每个非提议者海盗在下一轮(n-1海盗)中的收益next_round_gains: List[Tuple[int, int]] = []for i in range(2, n + 1):  # 当前海盗编号i(从2到n)# 在下一轮中,当前海盗的编号变为i-1gain_in_next: int = prev_alloc.get(i - 1, 0)next_round_gains.append((i, gain_in_next))# 按下一轮收益升序排序,收益相同则按海盗编号升序next_round_gains.sort(key=lambda x: (x[1], x[0]))# 计算通过方案所需总票数(向上取整)total_votes_needed: int = (n + 1) // 2votes_to_buy: int = total_votes_needed - 1  # 需要收买的海盗数# 初始化当前分配方案(所有海盗0金币)curr_alloc: Dict[int, int] = {pirate: 0 for pirate in range(1, n + 1)}total_cost: int = 0# 收买代价最小的votes_to_buy个海盗for idx in range(votes_to_buy):pirate_id, next_gain = next_round_gains[idx]bribe_amount: int = next_gain + 1  # 必须比下一轮收益多至少1金币curr_alloc[pirate_id] = bribe_amounttotal_cost += bribe_amount# 剩余金币归提议者(1号海盗)curr_alloc[1] = 100 - total_cost# 存储当前海盗数的分配方案allocations[n] = curr_allocreturn allocations[total_pirates]# 计算5个海盗的分配方案
result: Dict[int, int] = pirate_allocation(5)
print("金币分配方案(海盗编号从最资深到最年轻海盗):")
for pirate, coins in sorted(result.items()):print(f"海盗{pirate}: {coins}枚金币")

输出结果

金币分配方案(海盗编号从最资深到最年轻海盗):
海盗1: 98枚金币
海盗2: 0枚金币
海盗3: 1枚金币
海盗4: 0枚金币
海盗5: 1枚金币

代码逻辑详解

  1. 基础情况处理:当只有1个海盗时,他独占全部100枚金币。
  2. 逆向归纳
    • 从2个海盗开始逐步计算到5个海盗。
    • 对于每个海盗数量n
      • 获取n-1个海盗时的分配方案(作为下一轮基准)。
      • 计算每个非提议者海盗(编号2~n)在下一轮中的预期收益。
      • 将这些海盗按下一轮收益排序(收益低者优先,收益相同则按编号升序)。
      • 计算通过方案所需票数:ceil(n/2)(通过整数除法(n+1)//2实现)。
      • 提议者(1号海盗)需要收买ceil(n/2)-1个海盗,选择代价最小的海盗(给下一轮收益+1金币)。
      • 剩余金币归提议者所有。
  3. 输出结果:返回5个海盗时的分配方案。

关键点说明

  • 理性行为:海盗优先考虑生存,其次最大化金币,最后在同等收益下希望减少海盗。
  • 投票逻辑:提议者只需确保获得刚好足够的赞成票(包括自己的一票)。
  • 收买策略:提议者会收买在下一轮收益最低的海盗,用最小代价(下一轮收益+1金币)换取支持。
  • 嗜血特性:通过严格大于下一轮收益的出价规避嗜血影响(避免海盗因嗜血而投反对票)。

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/908272.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/908272.shtml
英文地址,请注明出处:http://en.pswp.cn/news/908272.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

购物商城网站 Java+Vue.js+SpringBoot,包括商家管理、商品分类管理、商品管理、在线客服管理、购物订单模块

购物商城网站 JavaVue.jsSpringBoot,包括商家管理、商品分类管理、商品管理、在线客服管理、购物订单模块 百度云盘链接:https://pan.baidu.com/s/10W0kpwswDSmtbqYFsQmm5w 密码:68jy 摘 要 随着科学技术的飞速发展,各行各业都在…

用mediamtx搭建简易rtmp,rtsp视频服务器

简述: 平常测试的时候搭建rtmp服务器很麻烦,这个mediamtx服务器,只要下载就能运行,不用安装、编译、配置等,简单易用、ffmpeg推流、vlc拉流 基础环境: vmware17,centos10 64位,wi…

Java 高频面试题场景(二):老年健康手环数据管理系统

系列文章 序号文章名称1Java 高频面试题场景(一):社区智能充电桩管理系统2Java 高频面试题场景(二):老年健康手环数据管理系统文章目录 系列文章一、项目信息项目介绍技术栈主要工作二、面试题及回答1. **面试官问**:在这个老年健康手环数据管理系统项目中,为什么要用R…

Python爬虫爬取天猫商品数据,详细教程【Python经典实战项目】

Python爬取天猫商品数据详细教程 一、前期准备 1. 环境配置 Python环境:确保已安装Python 3.x版本,建议使用Anaconda或直接从Python官网下载安装。第三方库: requests:用于发送HTTP请求。BeautifulSoup:用于解析HTM…

Symbol as Points: Panoptic Symbol Spotting via Point-based Representation

文章目录 AbstractIntroductionRelated WorkVector Graphics RecognitionPanoptic Symbol SpottingPoint Cloud Segmentation MethodFrom Symbol to PointsPrimitive positionPrimitive feature Panoptic Symbol Spotting via Point-based RepresentationBackboneSymbol Spotti…

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…

[闭源saas选项]Pinecone:为向量数据库而生的实时语义搜索引擎

目录 Pinecone:为向量数据库而生的实时语义搜索引擎 一、什么是 Pinecone? 二、Pinecone 是开源的吗?支持私有化部署吗? 三、为什么需要向量搜索? 四、Pinecone 的核心优势 五、使用 Pinecone 的典型流程 六、在…

【Maniskill】使用Ppo的官方基线训练时出现指标突然“塌陷”的现象

1. 问题描述 1.1 在使用官方代码进行训练的时候“success_once突然掉落到0” 简要说明你在使用官方 examples/baselines/ppo/baselines.sh 脚本训练 PickCube-v1 时,在 early stage(如前 50 k 步)指标正常、success_once 接近 1,…

本地部署大模型实战:使用AIStarter一键安装Ollama+OpenWeb教程(含最新版本更新指南)

大家好!今天给大家带来一个本地部署大模型的详细教程 ,主要介绍如何通过 AIStarter 4.0 一键部署 Ollama OpenWeb 的完整流程。如果你还在为在线大模型不稳定、隐私泄露等问题烦恼,那么本地部署 将是一个非常不错的选择! 首先&am…

Redis大量key集中过期怎么办

当 Redis 中存在大量 key 在同一时间点集中过期时,可能会导致以下问题: 请求延迟增加:Redis 在处理过期 key 时需要消耗 CPU 资源,如果过期 key 数量庞大,会导致 Redis 实例的 CPU 占用率升高,进而影响其他…

【Linux 学习计划】-- 系统中进程是如何调度的(内核进程调度队列)

目录 回顾进程优先级与进程调度的引入 内核runqueue图例 关于queue[140]前100个位置 | 实时进程与分时进程 遍历需要调度的进程与bitmap的引入 active、expired指针 结语 回顾进程优先级与进程调度的引入 在我们之前的学习中,我们是有学习过进程优先级这个概…

【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(1)——Chat Client API

Spring AI框架快速入门 一、前言二、前期准备2.1 运行环境2.2 maven配置2.3 api-key申请 三、Chat Client API3.1 导入pom依赖3.2 配置application.properties文件3.3 创建 ChatClient3.3.1 使用自动配置的 ChatClient.Builder3.3.2 使用多个聊天模型 3.4 ChatClient请求3.5 Ch…

微信小程序开发一个自定义组件的详细教程

以下是一个微信小程序自定义组件的详细教程,覆盖开发文档中的核心知识点。我们将以一个包含属性、事件、插槽、生命周期等功能的按钮组件为例进行说明: 一、创建组件 在 components 目录下新建 custom-button 文件夹,包含以下文件&#xff…

模电——第四讲场效应管

定义:具有正向受控作用的半导体器件 分类:MOS(绝缘栅)场效应管和结性场效应管 区别:场效应管相比于晶体管,输入电阻很大,是单极型器件 MOS场效应管: 特性曲线 利用半导体表面的电…

[蓝桥杯]堆的计数

堆的计数 题目描述 我们知道包含 NN 个元素的堆可以看成是一棵包含 NN 个节点的完全二叉树。 每个节点有一个权值。对于小根堆来说,父节点的权值一定小于其子节点的权值。 假设 NN 个节点的权值分别是 1~NN,你能求出一共有多少种不同的小根堆吗&…

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…

WebRTC中的几个Rtp*Sender

一、问题: webrtc当中有几个比较相似的类,看着都是发送RTP数据包的,分别是:RtpPacketToSend 和RtpSenderVideo还有RtpVideoSender以及RTPSender,这说明什么呢?首先,说明我会很多连词&#xff0…

EFI(x64)简易开发环境

文章目录 1 必须文件2 运行环境3 构建应用 (Visual Studio)4 引用 EDK2 头文件 1 必须文件 EDK2: 可以只拉取仓库本身, 不拉取其子仓库(完整构建才需要) qemu: qemu 以源码发布, QEMU for Windows – Installers (64 bit) 这里有民间构建的安装包 2 运行环境 创建一个 root …

八皇后问题深度解析

八皇后问题深度解析 一、八皇后问题的起源与背景1.1 问题起源1.2 历史发展 二、问题描述与约束条件2.1 问题描述2.2 约束条件 三、算法原理:回溯算法3.1 回溯算法概述3.2 八皇后问题的回溯算法实现思路 四、八皇后问题的多语言实现4.1 Python实现4.2 C实现4.3 Java实…

Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束前言项目简介技术栈…