拜占庭将军问题
世界名将录(中古东欧篇)

世界名将录(中古东欧篇)拜占庭和东欧在中世纪,起着欧洲盾牌的作用。
在中世纪前期,拜占庭抵抗了波斯和阿拉伯的入侵,而东欧各民族,则在反抗着拜占庭压迫;而中世纪后期,整个东欧都在抵抗着强大的土耳其人的入侵。
可以说在整个中世纪,东欧各民族都在为自己的生存而战斗,期间产生了一大批著名的军事人物:一、贝利撒留(505-565)拜占庭帝国将军(五星)贝利撒留是拜占庭时代伟大的军事家,其军事思想与《孙子兵法》非常近似。
他的攻势防御战略发展为拜占庭传统的军事思想体系。
他从来没有军队数量上的优势,却取得了一个又一个的胜利。
贝利撒留早年为东罗马皇帝查士丁尼的侍卫。
527年,22岁时担任了驻波斯前线的东方统帅。
528、541年指挥了第一、二次波斯战争,在战争中常常以弱胜强,出奇制胜,屡次阻挡了波斯大军的入侵。
532年贝利撒留回师君士坦丁堡镇压了尼卡起义。
534年远征非洲,灭亡了北非的汪达尔王国。
534年至540年又进军意大利,打败东哥特王国,占领了意大利的大部分地区。
贝利撒留几乎以一己之力重现了古罗马帝国的军事风采。
544年,东哥特人在意大利卷土重来,贝利撒留再次出征,因兵力不足,战事陷于长期僵持,548年被免职。
559年,他最后一次指挥作战,打败了攻到君士坦丁堡城下的保加利亚人。
贝利撒留极具军事天才,其指挥的战役几乎都是以劣势兵力取胜,善于运用有限的兵力创造奇迹,他的军事特点是战略进攻与战术防御的完美结合,他重视军事行动的战略目标,重视以战争取得和平的目的。
二、纳尔西斯(478-573)拜占庭帝国将军(四星)纳尔西斯早年为东罗马皇后狄奥多拉的宠信。
532年在镇压尼卡起义中崭露头角。
538年随贝利撒留进军意大利,与东哥特人作战,后与贝利撒留不和,被招回。
548年贝利撒留在意大利陷于僵持时,纳尔西斯奉命接替其为统帅,他率领数万蛮族雇佣军进入意大利。
552年,在塔吉奈战役中大破东哥特军队,东哥特国王托提拉重伤而死。
554年在卡西里纽姆战役中,纳尔西斯又打败了法兰克人和阿勒曼尼人,征服了意大利。
将军一马数学题

将军一马数学题
(原创版)
目录
1.将军一马数学题的背景和起源
2.将军一马数学题的解题思路和方法
3.将军一马数学题的启示和价值
正文
一、将军一马数学题的背景和起源
“将军一马数学题”起源于古代战争中的一个故事。
据说,古时一位将军在战场上遇到了一个棘手的问题:他需要率领部队穿越一片狭窄的峡谷,但敌人在峡谷的另一侧设有重兵把守。
为了尽快通过峡谷,将军需要找到一种方法,使得部队既能够安全通过,又能够最大限度地减少敌人的攻击。
这个问题逐渐演变成了一个著名的数学问题,即“将军一马数学题”。
二、将军一马数学题的解题思路和方法
将军一马数学题的解题思路主要涉及到图论中的最短路径问题。
最短路径问题是指在给定有向图或无向图中,从源节点到目的节点之间寻找一条边权值之和最小的路径问题。
解决这个问题的方法有 Dijkstra 算法、Floyd 算法等。
将军一马数学题的解题过程可以分为以下几个步骤:
1.将将军和马看作两个节点,峡谷看作一条边,构建一个图模型。
2.利用最短路径算法,如 Dijkstra 算法或 Floyd 算法,求解从将军节点到马节点的最短路径。
3.根据算法结果,将军可以通过的最短路径来指导他的行动,以最小化敌人的攻击。
三、将军一马数学题的启示和价值
将军一马数学题不仅具有趣味性,还具有一定的现实意义。
它启示我们在解决实际问题时,可以将问题抽象成数学模型,利用数学方法来求解。
同时,它也体现了数学在战争、工程等领域中的应用价值。
此外,将军一马数学题也反映了图论这一数学分支在实际问题中的广泛应用。
经典拜占庭容错共识机制

经典拜占庭容错共识机制摘要:一、拜占庭容错共识机制背景二、经典拜占庭容错共识机制介绍1.定义与概念2.基本原理3.主要特点三、经典拜占庭容错共识机制应用1.区块链技术2.分布式系统四、经典拜占庭容错共识机制优缺点分析1.优点2.缺点五、结论正文:一、拜占庭容错共识机制背景随着分布式系统的广泛应用,系统的一致性和可靠性成为关键问题。
拜占庭容错共识机制就是在分布式系统中解决一致性问题的经典方法。
它起源于拜占庭帝国的军队,用来保证在分布式系统中的节点能够在面临恶意节点攻击时,依然能够达成一致。
二、经典拜占庭容错共识机制介绍1.定义与概念经典拜占庭容错共识机制是一种在分布式系统中,面对可能出现拜占庭将军问题的节点,依然能够达成共识的算法。
它主要解决的是在分布式系统中,节点之间的信任问题。
2.基本原理经典拜占庭容错共识机制的基本原理是:节点之间通过互相发送消息,进行投票,当投票数达到一定阈值时,节点之间可以达成共识。
同时,为了防止恶意节点的攻击,机制还需要检查投票的合法性。
3.主要特点经典拜占庭容错共识机制的主要特点是:能够在分布式系统中,面对可能存在恶意节点的环境,依然能够达成一致。
但是,它的缺点是计算复杂度较高,通信开销大。
三、经典拜占庭容错共识机制应用1.区块链技术经典拜占庭容错共识机制在区块链技术中得到了广泛应用,如比特币、以太坊等,通过该机制保证了区块链网络的一致性和安全性。
2.分布式系统经典拜占庭容错共识机制在分布式系统中也有广泛应用,如分布式数据库、分布式文件系统等,通过该机制保证了分布式系统在面对恶意节点攻击时,依然能够正常运行。
四、经典拜占庭容错共识机制优缺点分析1.优点(1)能够在分布式系统中,面对可能存在恶意节点的环境,依然能够达成一致。
(2)具有一定的容错性,即使节点出现故障,也不会影响整个系统的运行。
2.缺点(1)计算复杂度较高,对节点计算能力要求较高。
(2)通信开销大,节点之间需要进行大量的通信,对网络带宽和延迟有较高的要求。
将军饮马问题

解: (1)由题意得出方程组
所以解析式为
(2)如图,作点C关 于直线 的对称点C’(2,-3),连结BC’并延长 交直线ቤተ መጻሕፍቲ ባይዱ于P点,再连结PC,此时,PB-PC=PB-PC’=BC’为最大。则 容易求得直线PB为 ,当 时,y=-6,所以要求的P点坐标为(1,-6)。也可以 连结AC延长交直线 于P点。
核心知识
所有线段最值问题核心知识的老祖宗只有两个: ①两点之间,线段最短; ②点线之间,垂线段最短。
基本图形
A
P
P
PA+PB>AB
B
A
B
AB最短
由此派生:
③三角形两边之和大于第三边
基本图形
A
P
结论
PA+PB>AB
B
④平行线之间,垂线段最短
基本图形
A
C
BD
结论
AB最短
分类例析
垂线段最短类
【例1】 2020•营口
同侧,不在同侧,要通过对称转成同侧
小异指的是要求最小值,一定是求和的最小值,这两个点就应该是在直线的
一侧,不在异侧,就要通过对称转成异侧。
作业 : 导学案
用习惯和智慧创造奇迹, 用理想和信心换取动力!
祝您成功!
“将军饮马”问题
传说亚历山大城有一位精通数学和物理的学者,名叫海伦,一天,一位罗马将军专程去拜 访他,向他请教一个百思不得其解的问题.如果将军从山脚下的A点出发,走到河边饮马后再 到B点宿营,请问怎样走才能使总的路程最短? 这个问题的解决并不难,据说海伦略加思索就解决了它,从此,这个被称为"将军饮马"的问 题广泛流传. 将此实际问题抽象成以下数学问题:如图,在定直线m上找一个动点P,使动点P到两个定点 A与B的距离之和最小,即PA+PB最小.
(完整版)将军饮马问题的11个模型及例题

AP+PQ取得最小值AQ,根据垂线段最短,当
AQ⊥ON时,AQ最小.
2. 已知:如图,A为锐角∠MON内一定点;
要求:在射线OM上找一点P,在射线ON上找一点Q,使
AP+PQ的值最小.
解:作点A关于OM的对称点A′,过点A′作AQ⊥ON
于点Q,A′Q交OM于点P,此时AP+PQ最小;
点到l的距离不相等)
要求:在直线l上找一点P,使︱PA-PB︱的值最大
解:作点B关于直Байду номын сангаасl的对称点B´,连接B´A并延长交
于点P,点P即为所求;
理由:根据对称的性质知l为线段BB´的中垂线,由中垂
线的性质得:PB=PB´,要使︱PA-PB︱最大,则需
︱PA-PB´︱值最大 ,从而转化为模型3.
典型例题1-1
∴PM=OE= ,∵OE=OE′,∴PM=OE′,PM∥OE′,
(a为定值)的线段PQ在l上移动(P在Q左边)
要求:确定PQ的位置,使得AP+PQ+QB最小
分析:PQ为定值,只需AP+QB的值最小,可通过平移,
使P、Q“接头”,转化为基本模型
解:将点A沿着平行于l的方向,向右移至A´,使
AA´=PQ=a,连接A´B交直线l于点Q,在l上截取
PQ=a(P在Q左边),则线段PQ即为所求,此时
AP+PQ+QB的最小值为A´B+PQ,即A´B+a
理由:易知四边形APQA´为平行四边形,则PA=QA´,
当A´、Q、B三点共线时,QA´+QB最小,即PA+QB
最小,又PQ长为定值此时PA+PQ+QB值最小.
一次函数将军饮马问题

一次函数将军饮马问题将军饮马问题是一个经典的数学问题,可以通过一次函数来解决。
该问题描述了一个将军要饮马,但是附近只有一口井,且水源距离将军的位置较远。
将军需要找到一个最短路径,将马引到井边喝水后,再返回原来的位置。
为了解决这个问题,我们可以使用一次函数来计算将军和井之间的最短路径。
一次函数的一般形式是y = ax + b,其中a和b是常数,x和y分别表示横纵坐标。
在该问题中,我们可以将井的位置设为原点(0, 0),将军的位置设为(x, y),其中x和y是将军的横纵坐标。
由于将军需要找到最短路径,我们需要找到一条经过原点的直线,使得这条直线与将军的位置最近。
通过计算斜率,我们可以得到直线的方程。
斜率可以通过将军位置的纵坐标除以横坐标得到,即a = y / x。
将b设为0,可以得到直线的方程y = (y / x)x。
通过观察可知,将军所在位置的横坐标x必须是正数,因为我们无法在负数位置进行移动,否则将无法找到最短路径。
而纵坐标y可以是任何实数。
当x取正无穷大时,直线趋近于y = x,当x取负无穷大时,直线趋近于y = -x。
将军可以根据直线方程来判断,当他朝着直线上方的方向行进时,直线位于他的左侧,他需要向右走以接近直线。
反之,如果他朝着直线下方行进,直线将位于他的右侧,他需要向左走。
通过不断调整方向和移动,将军可以最终到达原点,喝到井水后再返回原来的位置。
总结一下,一次函数能够帮助将军解决饮马问题。
将军根据直线方程y = (y / x)x来判断移动方向,最终能够到达井的位置,完成饮马后再返回原来的位置。
这个问题展示了数学在解决实际问题中的应用,同时也培养了人们对于空间感知和方向判断的能力。
将军饮马问题由来是什么

将军饮马问题的由来将军饮马问题是一个古老的数学问题,源自中国古代的故事和军事战略思维。
这个问题既有历史背景,又涉及到数学推理,因此在数学研究者中引起了广泛的讨论和研究。
问题的背景故事的背景是在中国古代战国时期,有一个将军要带领一支部队过一片险地。
在这片险地中,只有一条窄路可以通行,而且路的两边都是悬崖峭壁。
将军手下有一群骑士,而骑士们的马儿没有受过训练,只能按照下达的指令行动。
将军意识到这片险地可能会遇到敌军的伏击,所以他需要找到一种战略来确保部队的安全通过。
他决定采取这样的策略:他要先派一名骑士先行,探索前方的情况。
如果前方安全,将军会带领部队通过险地;如果前方遇到敌军伏击,将军会另做打算。
然而,将军遇到了一个困扰他的问题:他怎样才能确保所有骑士和马儿都能够安全通过险地呢?问题的分析和解决要解决这个问题,将军首先需要确定他需要派遣多少名骑士先行,以及他们的行动方式。
为了简化问题,我们假设骑士们都是聪明的,可以按照将军的指令行动。
这样,将军只需要考虑一个重要的因素:每个骑士骑马通过险地所需的时间。
通过分析,将军得出了一种解决方案。
他决定派遣将士按照一定的时间间隔骑马通过险地。
每个骑士到达险地的时候,他会选择等待一段时间,观察前方的情况。
如果在等待的过程中他发现了敌军的存在,他会尽快掉头返回报告给将军;如果他观察到前面是安全的,他就会骑马通过险地。
在这个方案中,将军要决定两个关键因素:骑士到达险地的时间间隔和每个骑士等待的时间。
如果时间间隔太短,骑士会发生拥堵,无法观察前方情况。
如果等待的时间太长,部队会在险地停留的时间过长,容易被敌军伏击。
数学推理和进一步研究通过对这个问题的分析,我们可以看到其中涉及到一些数学推理。
将军需要考虑到骑士的行动时间、观察时间和马儿的速度。
这可以用数学模型和算法来表示和求解。
由于时间和空间的限制,本文只对将军饮马问题进行了简要的介绍。
而实际上,这个问题在数学领域有着广泛的研究和探讨。
将军饮马例题

将军饮马例题
(原创实用版)
目录
1.将军饮马问题的定义和背景
2.将军饮马问题的数学模型
3.将军饮马问题的解决方案
4.将军饮马问题的实际应用
正文
一、将军饮马问题的定义和背景
将军饮马问题是一个古老的数学问题,也被称为骑士巡城问题。
它描述的是一位将军如何在战争期间安排他的马匹饮水,以保证所有的马都能喝到水,且不会被敌人发现。
这个问题最早出现在中国古代的数学著作《孙子算经》中,后来在欧洲也得到了广泛的关注和研究。
二、将军饮马问题的数学模型
将军饮马问题可以用图论来描述。
假设有 n 个马匹和 n 个水源,将军可以在每个水源饮一次马,每匹马必须且只能饮一次水。
将军可以从任意一个水源开始,最后回到起点。
问题转化为找到一条路径,使得每条路径上的水源都被访问一次,且每个水源只被访问一次。
三、将军饮马问题的解决方案
对于将军饮马问题,有一个著名的解决方案,即欧拉回路。
如果图是欧拉回路,那么将军就能保证所有的马都能喝到水。
欧拉回路的判断条件是:所有顶点的度数都是偶数,或者只有一个顶点的度数是奇数。
四、将军饮马问题的实际应用
将军饮马问题在实际生活中有许多应用,比如物流配送、任务分配、
数据中心设计等。
这些问题都可以转化为将军饮马问题,通过寻找欧拉回路,可以得到最优解,提高效率和节省资源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题总结
此时总结一下, 拜占庭问题的问题到底是什么:所有将军如何才能达成共识去攻 打(或撤退)城堡
区块链技术
根据相关的研究,得出一个【一般性的结论】:如果叛徒的数量大于或等于三分 之一 ,那么拜占庭问题不可解,这个三分之一也被称为拜占庭容错,三模冗余 是完全无法容错的(也就是说无解,不可能保持一致性)
最简单的策略即: 投票 (上图中的红色箭头和绿色箭头为每个将军做出的判断) , 超过半数支持某个决定,那么所有 9 个将军一定执行这个决定。如上图,5 个将 军决定进攻,4 个将军决定撤退,那么所有将军都会下令:进攻!
这种策略需要每个将军把自己的判断通过一种途径(途中灰色箭头)传递到所有 其他将军处。相对的,每个将军只有在收到了所有投票结果后,才会下令。如上 面的例子,所有将军得到投票:4 进攻 5 撤退,才下令撤退。
我们先假设信道一定是可靠的, 传令兵死亡之类的事情我们不考虑,毕竟在一个 非常复杂的网络中, 还可以通过多条的方式连接任意两个节点,可靠性还是值得 相信。主要破坏一致性的还是心怀不轨的【间谍】,或者总结为:如何防止【间 谍】对整体决策(进攻还是撤退)进行破坏?
我们按照区块链模型构造一个下图所示的系统
解释方法使用副官模型即可
推广到计算机系统内,【将军】类比为【计算机】,而计算机因为物理或被感染 等其他原因造成的【运行异常】就是【叛徒】,其实整个问题也是为了保证分布 式系统的一致性和可用性
传统解决方案
在区块链 之前,有两种解决方案:口头协议(又称为拜占庭 容错算法)和书面协议
【可视化直观】
其中每个将军投降下方的数字就是收到的攻击事件列表,在该规则下,可以看到 能保证,当叛徒数量小于 1/3 维护系统的一致性,即无论是什么情况,都可以防 止不一致的决定被执行(至少也是按兵不动,并且很容易定位叛徒是谁)
注意, 在这种仅有 4 个节点的情况下看似复用信道和传递消息的数量不多。 但随 着结点的增加, 时间复杂度和信道使用量级是节点数的平方。大规模网络基本瘫 痪,效率太低。
通常来说,大多数分布式系统使用的是书面协议确保一致性,中心机构背书。其 中有实用拜占庭容错算法(PBFT)最为有名
PBFT 概述
区块链技术
这个算法说起来也不难理解,他的核心思想是:对于每一个收到命令的将军,都 要去询问其他人, 他们收到的命令是什么。也就是说利用不断的信息交换让可行 的节点确认哪一个记录选择是正确的,即发现其中的背叛者
区块链技术
区块链解决方案
我们知道,区块链(想了解更多区块链原理,请移步:区块链常见问题)最强的 地方就在于它的一致性,同时这正是拜占庭问题的核心。
案例拆解
我们先假设你已经完全了解了比特币区块链的运行原理, 那么我们一步一步建立 一个场景看一看区块链是如何解决拜占庭将军问题?
区块链技术
首先, 你要知道这个问题属于计算机科学领域。解决这个问题才是区块链最大的 价值所在,因为这个问题一直是分布式系统的重要难题之一。
什么是拜占庭将军问题
这个问题的定义者是图灵奖获得者——Lamport,分布式系统的关键性奠基人 之一。他有面包店算法,拜占庭将军问题,Paxos 算法等著名成果。
区块链技术
每个将军本地都存储一份【记录】:记录所有将军的决定,比如“1:1”代表 1 号将军决定进攻
然后构造以下协议内容:
使用数字签名保证身份可可信 所有将军参与挖矿,国王以保证战役胜利为缘由,出资,奖励每一个挖到新区块 俩的将军
每一个将军当本地维护的最新确认【记录】中包含了所有 1-9 号将军的决定后, 正式做出自己的决定 在这个案例中,抛弃了代币的设定,因为不存在交易行为,而是由国王出资(保 证战争不被间谍影响,我认为国王应该愿意出这笔钱)。在拜占庭时期,因为没
区块链技术
这个投票策略的最大问题:假设出现了叛徒,如上图所示,会出现两种情况
【1】对自己位置的战场情况进行错误广播(比如他这个地方同的将军送去不同的消息破坏整体决定的一致性(导致左 边四个将军选择撤退,右边四个将军选择进攻)
必须强调,在传统的拜占庭问题构造的情景中,只能是一个例子,这个应用情景 是完全没有没有必要使用区块链来解决的!
总结
互联网技术的存在, 让传输过程中, 基本没有延迟 (或说延迟很小可以基本忽略) , 解决了通讯延迟的问题
区块链使用链型数据结构 + 算力互相制约使得作假的成本随着时间的加长呈指 数上升,解决了一致性问题。当然非对称秘钥部分的密码学,解决了身份确认问 题。
区块链技术
有网络,构造上述这样的系统,是完全不可能的。而现在网络链路速度,效率越 来越高,让区块链解决一致性问题得以解决
这里就引出了现在区块链的核心问题:应用场景与代价博弈。你要解决的痛点, 到底值不值得这样的花费呢?无论是算力消耗,还是资源消耗,亦或是类似于上 述案例中的国王出资(区块链代币价值为负数?),都是一种【代价】。完全的 信任是不存在的,只有当造假(走捷径获得利润)的成本远远高于得到的利润, 才能取得信任(一致性)。
问题描述
9 个将军带领 9 支军队,打一场攻城战役。假设每个将军都能独立根据眼前战况 做出两种判断:进攻或撤退,要求(或者最终目的是)如何让这 9 个将军的命令 是一致的(一致性,即共识)?要么一起进攻,要么一起撤退(每个将军之间也 是互不信任的,也有消灭对方的动机)。
区块链技术
【问题定义】总共 4 个将军,有 1 个是叛徒,每个将军需要在自己的战斗计划 中添加一行内容 <什么时间>进攻
【目标】只需要 3 个将军达成一致在同一时间进攻,就可以攻占城市,否则进攻 者全军覆没。最终目标还是统一一个一致的战斗计划,并按照计划同时实施(在 去中心化系统中,即【记录】的一致性)
【方法】对于每一个收到命令的将军,都要去询问其他人,他们收到的命令是什 么。在判断不出判断者的情况,执行更多的那个命令
采用 PBFT 方法,本质上就是利用通信次数换取信用。每个命令的执行都需要节 点间两两交互去核验消息,通信代价是非常高的。通常采用 PBFT 算法,节点间 的通信复杂度是节点数的平方级的。
白话 PBFT
区块链技术
还是用上面的将军的例子来举例,但为了方便我们把问题的定义稍作修改