
我们被问到:"小明小红玩游戏,连续不断抛一个硬币,在序列中,如果正正反,小明赢,如果反反正,小红赢,游戏公平吗?谁赢的几率大?"
解释:他们连续抛一个公平的硬币(假设是公平的)。他们观察抛硬币序列。当序列中出现"正正反"(即正面、正面、反面)时,小明赢。当序列中出现"反反正"(即反面、反面、正面)时,小红赢。问题是:游戏公平吗?谁赢的几率大?注意:游戏是连续进行的,直到其中一个模式出现?还是说他们在每个连续的三次抛掷中检查?问题说:"在序列中,如果正正反,小明赢,如果反反正,小红赢",这意味着他们观察序列,一旦出现其中一个模式,游戏结束,对应的人赢。但注意:模式可能重叠?例如,序列:正正反,小明赢。但如果序列是反反正,小红赢。但如果序列是正正反反?在正正反之后,小明已经赢了,所以游戏停止?还是继续?通常这类问题是关于谁先出现其模式的概率。这是一个经典的"Penney's game"问题,其中两个玩家选择不同的三元模式,然后抛硬币直到其中一个模式出现,问哪个模式先出现的概率更大。这里模式是:小明:HHH?不对,是"正正反",即HHT(H=正面,T=反面)。小红:反反正,即TTH。所以模式是HHT和TTH。我们需要比较在公平硬币抛掷序列中,哪个模式先出现的概率更大。
在Penney's游戏中,对于两个三元模式,总有一个模式有优势。具体规则:对于模式A和B,我们可以计算B相对于A的"优势"或概率。有一个已知结果:对于模式X和Y,如果Y是X的"反序"加一个符号?这里HHT和TTH不是互为反序。实际上,HHT的反序是THH,不是TTH。所以我们需要计算概率。
设P_A为模式A先于模式B出现的概率。对于模式A=HHT,B=TTH。我们可以通过状态机或递推关系计算。
设状态为最近的两个抛掷结果(因为我们需要三个连续的结果)。但注意:模式可能重叠,所以我们需要跟踪可能成为模式前缀的序列。定义状态为当前后缀与模式前缀的最大匹配长度。但更简单:设S为当前未决定的状态,即还没有出现任何一个模式。我们定义状态为最近的一些抛掷结果,这些结果可能是某个模式的前缀。对于模式HHT和TTH,它们的前缀有:对于HHT:前缀:H, HH。对于TTH:前缀:T, TT。所以状态可以表示为:空(无匹配),H,HH,T,TT。但注意:如果出现HT,它既不是HHT的前缀(因为HHT以HH开头,所以HT后,我们有一个T,但T是TTH的前缀?TTH的前缀是T和TT,所以HT后,最后一个字符是T,所以匹配TTH的前缀长度1?但注意:我们考虑的是连续序列,所以当我们有HT时,最后一个是T,所以它匹配TTH的第一个字符T,所以状态可以是T。类似地,TH:最后一个是H,匹配HHT的第一个字符H,所以状态是H。所以我们需要考虑所有可能的状态:空(开始或刚重置),H,HH,T,TT。另外,如果出现HT,它变成T;TH变成H;如果出现HH后一个T,则HHT出现,小明赢;如果出现TT后一个H,则TTH出现,小红赢。但注意:如果出现HHT,游戏结束;如果出现TTH,游戏结束。但还有可能同时出现吗?不可能,因为HHT和TTH不同,除非序列同时包含两者?但它们是不同的三元组,所以不可能同时出现。但可能重叠?例如序列:H H T H T T?检查:位置1-3: HHT,小明赢;但位置3-5: T H T?不是TTH;位置4-6: H T T?不是TTH。所以没有重叠。但有可能在HHT之后紧接着出现TTH?例如:H H T T T H?位置1-3: HHT,小明赢,所以游戏在第三个抛掷后结束,不会继续。所以一旦出现一个模式,游戏就停止。所以我们需要计算从开始状态(空)出发,先遇到HHT还是先遇到TTH的概率。
我们可以建立方程。设p_s为从状态s出发,小明最终赢的概率(即HHT先出现)。状态s表示当前后缀与某个模式前缀的匹配情况。我们定义状态如下:
状态0:空(或没有匹配任何模式的前缀,即最后0个字符匹配?但更精确:我们跟踪最后最多两个字符,因为它们可能是前缀。实际上,因为模式长度3,我们只需要最后两个字符来确定下一步。但注意:如果最后两个是HH,那么下一个如果是T则小明赢;如果是H则仍然保持HH(因为最后两个变成HH)。如果最后两个是HT,那么下一个如果是T,则最后两个变成TT?但HT后跟T,则最后两个是TT?实际上,序列:... H T T,最后两个是TT,所以状态变成TT。如果最后两个是TH,那么下一个如果是H,则最后两个变成HH?TH后跟H,最后两个是HH?实际上:... T H H,最后两个是HH,所以状态变成HH。如果最后两个是TT,那么下一个如果是H则小红赢;如果是T则保持TT。如果最后两个是HH,那么下一个如果是T则小明赢;如果是H则保持HH。如果最后两个是TH?但TH不是任何模式的前缀?对于HHT,前缀是H和HH,所以TH以H结尾,但前面是T,所以不匹配HH,但匹配H(因为最后一个字符是H)。所以状态应该记录我们匹配了多长的前缀。更系统的方法:使用自动机,其中状态是当前后缀与两个模式的最长前缀匹配的长度。但两个模式不同,所以我们需要考虑分别匹配两个模式的情况。但我们可以简化:因为模式只有两个,我们可以定义状态为当前最后几个字符,这些字符可能是一个模式的前缀。实际上,可能的状态有:""(空),"H","HH","T","TT"。为什么没有"HT"?因为"HT"不是HHT的前缀(HHT的前缀是"H"和"HH"),也不是TTH的前缀(TTH的前缀是"T"和"TT")。所以当我们有"HT"时,它不匹配任何模式的前缀,但最后一个字符是T,所以它匹配TTH的第一个字符T,因此状态应该是"T"。类似地,"TH"匹配HHT的第一个字符H,所以状态是"H"。所以实际上,状态总是最后最多两个字符,但只有当它们是一个模式的前缀时才需要记录两个字符;否则我们只记录最后一个字符(如果它匹配某个模式的首字符)。但为了统一,我们可以定义状态为:0:无匹配(即最后字符不是H也不是T?但最后字符总是H或T,所以实际上总是匹配某个模式的首字符?因为两个模式的首字符分别是H和T,所以任何抛掷结果要么是H要么是T,所以总是匹配至少一个模式的首字符?但注意:如果最后字符是H,它匹配HHT的首字符H,但不匹配TTH的首字符T;如果最后字符是T,它匹配TTH的首字符T,但不匹配HHT的首字符H。所以实际上,我们总是处于匹配某个模式的首字符的状态。但当我们有多个字符时,可能匹配更长的前缀。所以状态可以定义为:当前后缀与HHT的前缀匹配的长度(0,1,2)和与TTH的前缀匹配的长度(0,1,2)。但这两个是独立的吗?不,因为序列是同一个,所以这两个匹配长度是相关的。但我们可以定义状态为(i,j),其中i是当前后缀与HHT的前缀匹配的长度,j是与TTH的前缀匹配的长度。但这样状态空间可能较大。但注意,因为模式长度只有3,我们可以列出所有可能的有意义的状态。实际上,从开始状态(0,0)开始。抛一个H:则与HHT匹配长度变为1(因为H是HHT的第一个字符),与TTH匹配长度变为0(因为TTH以T开头,H不匹配)。所以状态变为(1,0)。抛一个T:则变为(0,1)。然后从(1,0):如果抛H,则与HHT匹配:当前后缀是HH,所以匹配长度变为2;与TTH:当前后缀是?最后两个是HH,但TTH以T开头,所以匹配长度0?但注意:我们考虑的是后缀与模式前缀的匹配,所以对于TTH,后缀"HH"与"T"不匹配,所以j=0。所以状态变为(2,0)。如果从(1,0)抛T,则当前后缀是HT。对于HHT:后缀"HT"与"HHT"的前缀比较:第一个字符H匹配,但第二个字符T与H不匹配,所以匹配长度退回到?实际上,当我们添加一个字符,我们需要计算新的后缀与模式前缀的最长匹配。对于HHT,模式是HHT,当前后缀是HT,它与HHT的前缀比较:前缀"H"匹配(因为HT以H开头?不,HT以H开头,但第二个字符是T,而HHT的第二个字符是H,所以不匹配,所以最长匹配是1?但注意:HT的第一个字符是H,所以匹配长度至少1?但我们需要连续的前缀。实际上,对于模式HHT,前缀有:"H"(长度1),"HH"(长度2)。后缀"HT"与"HH"不匹配(因为第二个字符不同),但与"H"匹配(因为第一个字符是H),所以匹配长度是1。但等等:当我们有状态(1,0)表示之前匹配了HHT的长度1(即最后一个字符是H),然后我们抛了一个T,所以现在最后两个是HT。对于HHT,我们检查后缀HT是否匹配HHT的某个前缀:HHT的前缀:位置1: H,位置2: HH。HT与H比较:第一个字符H匹配,所以匹配长度1?但注意:匹配必须是连续的从开头。所以HT与HHT的前缀比较:与第一个字符H匹配,但第二个字符T与HHT的第二个字符H不同,所以匹配长度是1。但之前的状态是匹配长度1(最后一个字符是H),现在添加T后,我们得到HT,匹配长度仍然是1?但严格来说,我们应该重新计算:当前整个后缀(可能多个字符)与模式前缀的最长匹配。但通常我们只关心最近的一些字符,因为模式长度有限。对于HHT,如果我们最后两个是HT,那么它匹配HHT的前缀长度1(因为第一个字符H匹配)。但注意:如果我们最后是HT,那么下一个如果是H,则变成HTH,对于HHT,HTH的后缀:最后两个是TH,对于HHT,TH与H不匹配(第一个字符T≠H),所以匹配长度0?但如果我们最后是HT,然后抛H,得到HTH,最后两个是TH,对于HHT,TH不以H开头,所以匹配长度0。但如果我们最后是HT,然后抛T,得到HTT,最后两个是TT,对于HHT,TT不以H开头,所以匹配长度0。所以从状态(1,0)抛T后,对于HHT,匹配长度变为0?但之前我们以为是1,但仔细想:当我们有状态(1,0)时,表示当前后缀与HHT匹配了长度1,即最后一个字符是H。然后我们添加一个T,现在最后两个是HT。我们需要计算HT与HHT的前缀的最长匹配。HHT的前缀:长度1: "H",长度2: "HH"。HT与"H"匹配(因为第一个字符是H),所以匹配长度是1?但注意:匹配必须是后缀与前缀的匹配,但这里我们考虑的是整个序列的结尾部分。实际上,当我们说“当前后缀与模式前缀匹配”,我们是指序列的最后k个字符等于模式的前k个字符,对于某个k。所以对于HT,最后1个字符是T,不等于H(模式第一个字符),所以k=0?等等:最后1个字符是T,而模式第一个字符是H,所以不匹配。但最后2个字符是HT,与模式前2个字符HH不匹配。所以实际上,HT与HHT的任何前缀都不匹配?因为模式第一个字符是H,而HT的第一个字符是H?但注意:当我们看最后两个字符HT,我们考虑的是整个后缀,但匹配必须从模式开头连续。所以对于后缀HT,我们检查它是否等于模式的前缀:模式前缀长度1是"H",但HT不等于"H"(因为HT有两个字符),所以我们不能比较长度2的后缀与长度1的前缀?通常,我们比较的是后缀与模式前缀,但后缀长度可以大于前缀长度?不,我们比较的是:对于k=1,2,...,序列的最后k个字符是否等于模式的前k个字符。所以对于k=1:最后1个字符是T,模式第一个字符是H,不等。对于k=2:最后2个字符是HT,模式前2个字符是HH,不等。所以确实,HT与HHT的任何前缀都不匹配,所以匹配长度为0。但之前从状态(1,0)(表示最后一个字符是H)添加T后,我们得到HT,匹配长度应该变为0。所以我的前面分析有误。类似地,对于TTH:从状态(0,1)(最后一个字符是T)添加H,得到TH,对于TTH,模式前缀:长度1: T,长度2: TT。TH:最后1个字符是H,不等于T;最后2个字符是TH,不等于TT,所以匹配长度0。所以实际上,当我们添加一个字符后,匹配长度可能重置为0或变为1或2,取决于添加的字符。
因此,我们需要正确计算状态转移。让我们定义状态为当前后缀与HHT匹配的长度(0,1,2)和与TTH匹配的长度(0,1,2)。但注意,这两个匹配长度不是独立的,因为序列相同。但我们可以定义状态为(i,j),其中i是当前后缀与HHT的最长前缀匹配长度,j是与TTH的最长前缀匹配长度。但可能有些组合不可能出现?例如,如果i=2,表示最后两个是HH,那么j是多少?最后两个是HH,对于TTH,最后两个HH与TT不匹配,与T也不匹配(因为第一个字符H≠T),所以j=0。所以(i,j)=(2,0)是可能的。类似地,如果j=2,最后两个是TT,那么i=0。所以状态空间有限。另外,如果i=1,表示最后一个字符是H,但倒数第二个不是H(否则i=2),所以最后两个可能是?可能是TH或HH?但如果是HH,则i=2,所以i=1时,最后两个不能是HH,所以可能是TH或?也可能是?如果最后两个是HH,i=2;如果最后两个是TH,则最后一个字符是H,但倒数第二个是T,所以对于HHT,最后两个TH:检查匹配:长度1:最后1个是H,匹配H,所以i至少1;长度2:最后两个TH与HH不匹配,所以i=1。所以i=1时,最后两个可能是TH或?也可能是?如果最后两个是HH,i=2;如果最后两个是HT,则最后1个是T,所以i=0。所以i=1时,最后两个必须是TH?也可能是?如果最后两个是HH,i=2;如果最后两个是TH,i=1;如果最后两个是HT,i=0;如果最后两个是TT,i=0。所以i=1时,最后两个只能是TH。类似地,j=1时,最后两个只能是HT?因为j=1表示最后一个字符是T,但倒数第二个不是T,所以最后两个是HT?也可能是?如果最后两个是TT,j=2;如果最后两个是HT,j=1;如果最后两个是TH,j=0;如果最后两个是HH,j=0。所以j=1时,最后两个是HT。所以实际上,状态(i,j)完全由最后两个字符决定?但注意,i和j可能同时非零吗?例如,最后两个是?如果最后两个是?假设最后两个是?如果最后两个是HH,则i=2,j=0;如果最后两个是TT,则i=0,j=2;如果最后两个是TH,则i=1,j=0?检查TH:对于HHT,最后两个TH:长度1匹配(H),所以i=1;对于TTH,最后两个TH:长度1:最后1个是H,不等于T,所以j=0。所以(1,0)。如果最后两个是HT:对于HHT,最后两个HT:长度1:最后1个是T≠H,所以i=0;对于TTH,最后两个HT:长度1:最后1个是T,匹配T,所以j=1?但长度2:HT与TT不匹配,所以j=1。所以(0,1)。所以确实,状态(i,j)完全由最后两个字符决定,并且只有四种可能:HH -> (2,0);TT -> (0,2);TH -> (1,0);HT -> (0,1)。但还有状态(0,0)吗?(0,0)表示最后两个字符既不匹配HHT的任何前缀也不匹配TTH的任何前缀。但根据上面,最后两个字符只能是HH, TT, TH, HT之一。HH匹配HHT长度2;TT匹配TTH长度2;TH匹配HHT长度1;HT匹配TTH长度1。所以似乎没有状态(0,0)?但开始时,还没有抛掷,我们可以认为状态是(0,0)。抛第一次后,我们得到一个字符,比如H,那么最后两个?实际上,我们只有最后一个字符,但为了状态转移,我们可能需要考虑只有一个字符的情况。所以我们应该定义状态为当前后缀与模式前缀的匹配长度,但后缀长度可以小于2。所以我们需要包括只有一个字符的状态。例如,开始状态:没有字符,匹配长度都是0。抛一个H:则对于HHT,匹配长度1;对于TTH,匹配长度0。所以状态(1,0)。抛一个T:状态(0,1)。然后从(1,0)再抛一个H:得到HH,状态(2,0);抛一个T:得到HT,状态(0,1)?但注意:从(1,0)抛T,我们得到序列最后两个是HT,如上所述,对于HHT匹配长度0,对于TTH匹配长度1,所以状态(0,1)。类似地,从(0,1)抛H:得到TH,状态(1,0);抛T:得到TT,状态(0,2)。所以实际上,我们只需要状态:(0,0)初始,(1,0),(0,1),(2,0),(0,2)。但注意:从(2,0)抛H:得到HHH,最后两个是HH,所以状态仍然是(2,0)?但检查:HHH,对于HHT,最后两个是HH,匹配长度2;对于TTH,最后两个HH,匹配长度0。所以状态还是(2,0)。从(2,0)抛T:得到HHT,此时HHT出现,小明赢,所以是吸收态。类似地,从(0,2)抛T:得到TTT,状态(0,2);抛H:得到TTH,小红赢。所以吸收态是:小明赢(HHT出现)和小红赢(TTH出现)。所以我们需要计算从初始状态(0,0)出发,到达小明赢吸收态的概率。
但注意:从(0,0)开始,第一次抛掷后,我们必然进入(1,0)或(0,1),各概率1/2。所以实际上,我们可以从状态(1,0)和(0,1)开始计算,然后乘以1/2。所以设P_A为从状态(1,0)出发小明赢的概率,P_B为从状态(0,1)出发小明赢的概率。则从初始状态小明赢的概率为 (1/2)*P_A + (1/2)*P_B。
现在,我们需要建立方程。设状态:
S1 = (1,0) // 最后字符H,且不是HH(即倒数第二个不是H,或者只有一个字符H)
S2 = (0,1) // 最后字符T,且不是TT
S3 = (2,0) // 最后两个HH
S4 = (0,2) // 最后两个TT
注意:S1和S2是只有一个字符匹配的状态?但根据上面,S1实际上对应最后两个是TH?不,从(0,0)抛H得到(1,0),但此时只有一个字符H,所以最后两个?我们可以认为最后两个是?实际上,我们只关心最后两个字符,但只有一个字符时,我们可以认为倒数第二个是空的?但为了状态转移的一致性,我们定义状态基于最后最多两个字符,但当我们只有一个字符时,我们将其视为最后两个中有一个是空?但这样可能复杂。更好的方法是:我们定义状态为当前后缀与模式前缀匹配的长度,但允许长度0,1,2。但注意,匹配长度i表示最后i个字符等于HHT的前i个字符。类似地j表示最后j个字符等于TTH的前j个字符。但i和j可能同时非零吗?例如,如果最后两个是?假设最后两个是?如果最后两个是?对于HHT,前缀是H, HH;对于TTH,前缀是T, TT。所以如果最后两个是?如果最后两个是HT,则对于HHT,匹配长度0(因为最后1个是T≠H);对于TTH,匹配长度1(最后1个是T匹配)。所以(0,1)。如果最后两个是TH,则(1,0)。如果最后两个是HH,则(2,0);如果最后两个是TT,则(0,2)。如果最后两个是?还有可能最后两个是?只有这四种可能。但如果我们只有一个字符,比如最后一个是H,那么对于HHT匹配长度1,对于TTH匹配长度0,所以(1,0)。但此时,我们不知道倒数第二个字符,但状态(1,0)也可能由最后两个是TH产生。所以实际上,状态(1,0)可能对应两种情况:要么只有一个字符H,要么最后两个是TH。但在这两种情况下,下一步转移是一样的吗?检查:如果当前状态是(1,0)且只有一个字符H,那么再抛一个H,得到HH,状态变为(2,0);抛一个T,得到HT,状态变为(0,1)。如果当前状态是(1,0)且最后两个是TH,那么再抛一个H,得到THH,最后两个是HH,状态变为(2,0);抛一个T,得到THT,最后两个是HT,状态变为(0,1)。所以转移是一样的!所以我们可以将这两种情况合并为同一个状态(1,0)。类似地,状态(0,1)可能对应只有一个字符T或最后两个是HT,转移也一样。所以我们的状态定义是合理的。
因此,我们有状态:S0: (0,0) 初始;S1: (1,0);S2: (0,1);S3: (2,0);S4: (0,2);以及两个吸收态:WinA(小明赢),WinB(小红赢)。
从S0:抛H -> S1;抛T -> S2。所以P0 = 0.5 * P1 + 0.5 * P2,其中P0是从S0出发小明赢的概率,P1是从S1出发,P2是从S2出发。
从S1:抛H -> S3;抛T -> S2。所以 P1 = 0.5 * P3 + 0.5 * P2。
从S2:抛H -> S1;抛T -> S4。所以 P2 = 0.5 * P1 + 0.5 * P4。
从S3:抛H -> S3(因为HHH,最后两个还是HH,所以仍在S3);抛T -> WinA(小明赢)。所以 P3 = 0.5 * P3 + 0.5 * 1。解:P3 = 0.5 P3 + 0.5 => 0.5 P3 = 0.5 => P3 = 1。所以从S3,小明最终一定赢?但等等,从S3抛H,我们停留在S3,但游戏还没有结束,因为还没有出现HHT。但理论上,从S3,我们最终一定会抛到T吗?是的,因为硬币是公平的,抛到T的概率为1/2,但可能需要无限次抛掷?但概率上,从S3,小明赢的概率是1,因为最终一定会出现T,从而出现HHT。但注意:在S3,序列最后是HH,如果我们一直抛H,我们永远看不到T,所以游戏永远不会结束?但问题中游戏是连续抛直到出现其中一个模式。如果一直抛H,那么HHT永远不会出现,但TTH也不会出现(因为TTH需要T,但一直没有T)。所以实际上,从S3,如果一直抛H,游戏永远不会结束,所以概率上,小明赢的概率不是1,而是小于1?但等等,在无限次抛掷中,出现T的概率是1(几乎必然),所以最终会出现T,从而出现HHT。所以从S3,小明赢的概率确实是1。类似地,从S4,小红赢的概率是1?从S4,最后是TT,如果一直抛T,则永远不会出现H,所以TTH永远不会出现,但HHT也不会出现(因为HHT需要H)。所以从S4,小红赢的概率也是1?但注意:从S4抛T,我们停留在S4,抛H则小红赢。所以从S4,小红赢的概率也是1?但等等,如果一直抛T,游戏永远不会结束,所以小红赢的概率不是1?但同样,几乎必然最终会出现H,所以小红赢的概率是1。所以P4 = 0?因为P4是从S4出发小明赢的概率,从S4,小明赢只有当先出现HHT,但S4最后是TT,要出现HHT,需要先出现H,但一旦出现H,就出现TTH(因为最后是TT,加H就是TTH),所以小红赢。所以从S4,小明赢的概率是0。所以P4 = 0。
但根据方程:从S4:抛H -> WinB(小红赢),所以小明赢概率0;抛T -> S4。所以 P4 = 0.5 * 0 + 0.5 * P4 => P4 = 0.5 P4 => P4=0。所以确实P4=0。
从S3:抛T -> WinA,所以小明赢概率1;抛H -> S3。所以 P3 = 0.5 * 1 + 0.5 * P3 => P3 = 0.5 + 0.5 P3 => 0.5 P3 = 0.5 => P3=1。所以正确。
现在我们有:
P3 = 1
P4 = 0
P1 = 0.5 * P3 + 0.5 * P2 = 0.5 * 1 + 0.5 * P2 = 0.5 + 0.5 P2
P2 = 0.5 * P1 + 0.5 * P4 = 0.5 * P1 + 0.5 * 0 = 0.5 P1
所以代入:P1 = 0.5 + 0.5 * (0.5 P1) = 0.5 + 0.25 P1 => P1 - 0.25 P1 = 0.5 => 0.75 P1 = 0.5 => P1 = 0.5 / 0.75 = 2/3 ≈ 0.6667
然后 P2 = 0.5 * P1 = 0.5 * (2/3) = 1/3 ≈ 0.3333
所以从S1出发,小明赢的概率是2/3;从S2出发,小明赢的概率是1/3。
现在从初始状态S0:P0 = 0.5 * P1 + 0.5 * P2 = 0.5*(2/3) + 0.5*(1/3) = (1/3) + (1/6) = 1/2?计算:0.5*(2/3)=1/3,0.5*(1/3)=1/6,和=1/3+1/6=1/2。所以从开始,小明赢的概率是1/2?但等等,这似乎公平?但根据Penney's game,通常两个不同的三元模式,概率不相等。但这里我们得到1/2?可能我算错了?让我们验证。
实际上,在Penney's游戏中,对于模式A和B,概率不一定是1/2。例如,经典例子:HHH vs THH,THH有优势。但这里模式是HHT和TTH。我们计算得到P0=1/2。但直觉上,可能不公平?让我们手动模拟一些情况。
从开始:第一次抛掷:H或T各1/2。
如果第一次H:状态S1。从S1,第二次抛:如果H,则进入S3(HH),然后第三次抛:如果T,则HHT,小明赢;如果H,则HHH,仍在S3,继续。从S3,最终小明赢概率1。所以从S1,如果第二次是H,则小明最终赢概率1。如果第二次是T,则进入S2(HT)。从S2,第三次抛:如果H,则进入S1(TH);如果T,则进入S4(TT)。从S4,小红最终赢概率1。所以从S2,如果第三次是T,则小红赢;如果第三次是H,则回到S1。所以从S1,路径:HH -> 小明赢(最终);HT -> 进入S2,然后从S2,可能回到S1或小红赢。所以从S1,小明赢的概率:直接HH后 eventually 小明赢(概率1),或者HT后从S2回来再赢。我们计算得到P1=2/3。类似地,从S2:第一次T,第二次如果T,则进入S4,小红赢;如果H,进入S1,然后从S1有2/3概率小明赢。所以P2=1/3。所以从开始,如果第一次H(概率1/2),则小明赢概率2/3;如果第一次T(概率1/2),则小明赢概率1/3;总概率=1/22/3+1/21/3=1/3+1/6=1/2。所以确实公平?但等等,这似乎对称?但模式HHT和TTH不是对称的?实际上,HHT和TTH是互为“反序”吗?HHT的反序是THH,不是TTH。但这里我们得到公平,可能因为某种对称性?注意:如果我们把H和T互换,HHT变成TTH,TTH变成HHT。所以两个模式在硬币公平的情况下是对称的?但注意:模式不是完全对称,因为HHT以HH开头,TTH以TT开头。但硬币公平,所以正面和反面对称,所以可能确实公平。但经典Penney's游戏中,对于两个模式,总有一个有优势,除非模式相同?但这里两个模式不同,却得到公平?可能我漏掉了什么?在Penney's游戏中,通常两个玩家选择模式后,第二个玩家可以选择一个相对于第一个玩家有优势的模式。但这里如果第一个玩家选HHT,第二个玩家选TTH,那么第二个玩家有优势吗?根据计算,第一个玩家赢的概率是1/2,所以公平。但经典例子:如果第一个玩家选HHH,第二个玩家选THH,则第二个玩家赢的概率是7/8?不,是7/8?实际上,对于HHH vs THH,THH赢的概率是7/8?我回忆:对于模式A=HHH,B=THH,B先出现的概率是7/8?还是8/7?实际上,标准结果是:对于模式A,B的“优势”可以通过构造一个数来比较。对于A=HHH,B=THH,B相对于A的优势是:取A的后两位加上B的第一位?公式:如果A=a1a2a3,B=b1b2b3,则B相对于A的优势概率为:如果b2b3 = a1a2,则B有优势?具体公式:概率P(B先于A) = [如果b2b3=a1a2则1/2^{k}否则0]?我不确定。但我知道对于HHH vs THH,THH赢的概率是7/8?实际上,我计算过:从开始,HHH先于THH的概率是1/8?所以THH赢的概率是7/8。所以不对称。但这里HHT vs TTH,我们得到1/2,可能因为模式之间没有重叠?或者因为对称性?让我们检查模式之间的重叠:HHT和TTH,它们有没有共同的前后缀?HHT的后缀HT是TTH的前缀吗?TTH的前缀是T和TT,HT不是TTH的前缀。HHT的后缀T是TTH的前缀吗?TTH的前缀是T,所以是。但注意:当我们有HHT时,它已经结束了,所以不考虑重叠。但可能影响概率。实际上,在Penney's游戏中,模式之间的重叠关系决定了优势。有一个已知结论:对于两个三元模式,如果第二个模式是第一个模式的“反序”加一个符号?这里HHT的反序是THH,不是TTH。但TTH是HHT的某种“移位”?可能没有直接关系。但我们的计算似乎正确。我们可以用另一种方法验证:模拟所有可能的前几次抛掷直到出现模式。
考虑序列直到出现HHT或TTH。注意:游戏可能在3次抛掷内结束,也可能更长。列出所有可能的前几次抛掷结果,并判断谁赢。
可能的前3次抛掷:
HHH:没有HHT(因为HHT需要第三位是T),也没有TTH(需要前两位TT),所以继续。
HHT:小明赢。
HTH:没有HHT(因为第三位是H,但前三位是HTH,不是HHT),没有TTH(前三位是HTH,不是TTH),继续。
HTT:没有HHT(前三位HTT,不是HHT),没有TTH(前三位HTT,不是TTH),但注意:HTT中,后三位?我们只考虑连续的三位?但游戏是观察整个序列,一旦出现连续的三位是HHT或TTH就结束。所以HTT中,没有HHT或TTH,继续。
THH:没有HHT(前三位THH,不是HHT),没有TTH(前三位THH,不是TTH),继续。
THT:没有HHT,没有TTH,继续。
TTH:小红赢。
TTT:没有TTH(因为第三位是T,不是H),没有HHT,继续。
所以前3次可能不结束。我们需要考虑更长的序列。但我们可以考虑状态转移,我们已经做了。
另一种方法:使用无限级数求和。但我们的状态方程应该正确。
但等等,从S3,我们得出P3=1,但这是基于最终几乎必然出现T。但严格来说,从S3,如果一直抛H,游戏永远不会结束,所以概率上,小明赢的概率是小于1的?但概率论中,在无限次独立抛掷中,出现T的概率是1(因为每次抛T的概率1/2,无限次抛掷中至少出现一次T的概率是1)。所以确实,从S3,小明赢的概率是1。类似地,从S4,小红赢的概率是1。所以P3=1,P4=0正确。
但这样,从S1,如果第二次抛H,则进入S3,小明赢概率1;如果第二次抛T,则进入S2,从S2小明赢概率1/3。所以P1=0.51+0.5(1/3)=0.5+1/6=2/3。从S2,如果第二次抛T,则进入S4,小明赢概率0;如果第二次抛H,则进入S1,小明赢概率2/3。所以P2=0.50+0.5(2/3)=1/3。所以从开始,第一次抛H(概率1/2)则小明赢概率2/3;第一次抛T(概率1/2)则小明赢概率1/3;总概率=1/22/3+1/21/3=1/3+1/6=1/2。所以公平。
但这是否意味着游戏公平?但注意:我们假设硬币是公平的。所以如果硬币公平,则小明和小红赢的概率都是1/2。但问题问:“游戏公平吗?谁赢的几率大?”所以答案可能是公平,几率一样大。
但让我们再想想:在Penney's游戏中,通常两个玩家选择的模式不同,概率不相等。但这里为什么相等?可能因为模式HHT和TTH是“对偶”的?如果我们把H和T互换,HHT变成TTH,TTH变成HHT。所以两个模式在硬币公平的情况下是对称的。所以确实应该公平。但经典Penney's游戏中,如果第一个玩家选HHH,第二个玩家选THH,那么不对称,因为THH可以利用HHH的HH前缀。但这里,HHT的前缀是HH,TTH的前缀是TT。如果第一个玩家选HHT,第二个玩家选TTH,那么TTH能利用HHT的什么?HHT的前缀HH,TTH的前缀TT,没有重叠。所以可能没有优势。实际上,在Penney's游戏中,优势来自于第二个模式可以利用第一个模式的前两个字符。例如,如果A=HHH,那么B=THH利用了A的前两个HH。但这里,A=HHT,前两个是HH,B=TTH,前两个是TT,没有利用。所以可能公平。但如果我们检查:如果A=HHT,那么一个能利用它的模式可能是?比如,如果B=HHH?但这里B是TTH。所以可能确实公平。
但让我们用已知的Penney's game公式验证。对于两个三元模式A和B,B先于A的概率可以计算为:考虑A的“后缀”与B的“前缀”的关系。具体公式:设A=a1a2a3,B=b1b2b3。定义对于k=1,2,3,如果b1b2...bk = a_{3-k+1}...a3,则B有优势。更精确的公式:P(B先于A) = 如果b2b3 = a1a2,则1/2^{m},其中m是满足b1...bk = a_{3-k+1}...a3的最大k?我不太记得了。但有一个简单的方法:构造一个数:对于模式A,定义其“优势数”为:将A的每个字符映射为数字:H=0, T=1?或者反过来?然后对于B,计算一个数。但我不确定。
另一种方法:使用马尔可夫链,我们已经做了,应该正确。
但让我们手动计算一些序列的概率,看看小明赢的总概率是否确实是1/2。
考虑前几次抛掷,直到出现模式。我们可以列出所有可能的结果序列,并计算小明赢的概率。但序列可能无限长,所以我们需要考虑所有可能路径。
从开始,我们可能经过的状态序列。我们可以考虑游戏在n步内结束的概率。但可能复杂。
但我们可以考虑:从开始,第一次抛掷后,我们处于S1或S2。从S1,有1/2概率直接进入S3(第二次抛H),然后从S3,最终小明赢概率1。所以这部分贡献:1/2 * 1/2 * 1 = 1/4。从S1,有1/2概率进入S2(第二次抛T),然后从S2,可能回到S1或进入S4。从S2,有1/2概率进入S4(第三次抛T),然后小红赢,所以小明赢概率0;有1/2概率进入S1(第三次抛H),然后从S1又重复。所以从S1进入S2后,小明赢的概率是:从S2,小明赢的概率是P2=1/3。所以从S1,总概率:1/21 + 1/2P2 = 1/2 + 1/2*(1/3)=1/2+1/6=2/3,一致。
从S2,类似:1/2概率进入S4(第二次抛T?从S2,第二次抛?注意:从S2,我们已经在第二次抛后?实际上,从开始,第一次抛T后进入S2,然后第二次抛:如果T,进入S4;如果H,进入S1。所以从S2,有1/2概率直接进入S4(小红赢),有1/2概率进入S1(然后小明赢概率2/3)。所以P2=1/20+1/2(2/3)=1/3。
所以从开始,第一次抛H(概率1/2)则小明赢概率2/3;第一次抛T(概率1/2)则小明赢概率1/3;总概率1/2。所以公平。
但等等,我们假设从S3小明赢概率1,从S4小红赢概率1。但这是基于几乎必然最终出现T或H。但严格来说,在有限步内,概率小于1,但极限是1。所以从S3,小明赢的概率确实是1。所以没问题。
因此,游戏是公平的,小明和小红赢的概率都是1/2。
但问题可能期望我们回答不公平?因为通常Penney's游戏不公平。但这里可能因为模式对称而公平。让我们检查模式:HHT和TTH。如果我们把H和T互换,HHT变成TTH,TTH变成HHT。所以两个模式在公平硬币下是对称的。所以确实应该公平。所以答案应该是公平,几率一样大。
但让我们确认一下:如果硬币是公平的,那么正面和反面对称,所以模式HHT和TTH只是将H和T互换,所以概率应该相同。所以公平。
因此,回答:游戏公平,小明和小红赢的几率一样大,都是1/2。
但问题说:“小明小红玩游戏,连续不断抛一个硬币,在序列中,如果正正反,小明赢,如果反反正,小红赢,游戏公平吗?谁赢的几率大?”所以答案:公平,几率一样大。
但可能有人会认为不公平,因为HHT和TTH不是完全对称?但如上所述,它们是通过交换H和T对称的。所以公平。
所以最终答案:游戏公平,小明和小红赢的概率都是1/2。
但让我们用另一种方法:计算小红赢的概率。从对称性,也应该1/2。或者直接计算小红赢的概率:从开始,小红赢的概率Q0。类似地,设Q1为从S1小红赢的概率,Q2从S2,Q3从S3,Q4从S4。显然Q3=0(因为从S3小明必赢),Q4=1。然后Q1 = 0.5Q3 + 0.5Q2 = 0.50 + 0.5Q2 = 0.5 Q2;Q2 = 0.5Q1 + 0.5Q4 = 0.5Q1 + 0.51。所以Q2 = 0.5 Q1 + 0.5。代入Q1:Q1 = 0.5*(0.5 Q1 + 0.5) = 0.25 Q1 + 0.25 => Q1 - 0.25 Q1 = 0.25 => 0.75 Q1 = 0.25 => Q1 = 1/3。然后Q2 = 0.5*(1/3)+0.5 = 1/6+1/2=2/3。然后Q0 = 0.5Q1 + 0.5Q2 = 0.5*(1/3)+0.5*(2/3)=1/6+1/3=1/2。所以小红赢的概率也是1/2。一致。
所以确实公平。
因此,回答:游戏公平,小明和小红赢的几率一样大。
但问题可能希望我们解释一下。所以我们可以说:由于硬币是公平的,且两个模式通过交换正反面相互对称,因此游戏公平,双方获胜概率均为1/2。
所以最终答案。
游戏是公平的,小明和小红获胜的概率均为 1/2。
假设硬币是公平的,每次抛掷正面(H)和反面(T)的概率均为 1/2。游戏持续抛掷硬币,直到序列中出现“正正反”(HHT)或“反反正”(TTH)为止,分别对应小明和小红获胜。
通过建立状态转移模型(基于最近两次抛掷结果与目标模式前缀的匹配情况),可以计算从初始状态出发小明获胜的概率。关键状态包括:
设从各状态出发小明获胜的概率为 P1、P2、P3、P4,则有以下方程:
解得 P1 = 2/3,P2 = 1/3。初始状态第一次抛掷后等概率进入 S1 或 S2,因此小明获胜总概率为:
P0=21×32+21×31=21.
同理,小红获胜概率也为 1/2。
两个模式 HHT 和 TTH 通过交换正面和反面相互对称,而硬币是公平的,因此双方获胜概率相等。