Bob isn't giving you any actionable information. If Alice and Bob agree, you're more confident than you were before, but you're still going to be trusting Alice. If they disagree you're down to 50% confidence, but you still might as well trust Alice.
It depends on what you are doing with the guess. If it is just a question of how frequently you are right or wrong the second person doesn't help. But if you are, for example, betting on your guess the second person improves your odds of coming out ahead significantly, since you can put down a higher wager when they agree than when they disagree.
One way to think about this is you have a binomial distribution with p=0.8 and n=number of lying friends. Each time you increase n, you shift the probability mass of the distribution "to the right" but if n is even some of that mass has to land on the "tie" condition.
This kinda reminds me of error correction, and where at some level you can have detectable but not correctable error conditions. Adding Bob is just like adding a parity bit: can give you a good indication someone lied, but won't fix anything. Adding Charlie gives you the crudest ECC form, a repetition code (though for storing one bit, I don't think you can do better?)
F T (Alice)
F xx ????????
xx ????????
T ?? vvvvvvvv
?? vvvvvvvv
^ ?? vvvvvvvv
B ?? vvvvvvvv
o ?? vvvvvvvv
b ?? vvvvvvvv
v ?? vvvvvvvv
?? vvvvvvvv
(where "F" describes cases where the specified person tells you a Falsehood, and "T" labels the cases of that person telling you the Truth)
In the check-mark (v) region, you get the right answer regardless; they are both being truthful, and of course you trust them when they agree. Similarly you get the wrong answer regardless in the x region.
In the ? region you are no better than a coin flip, regardless of your strategy. If you unconditionally trust Alice then you win on the right-hand side, and lose on the left-hand side; and whatever Bob says is irrelevant. The situation for unconditionally trusting Bob is symmetrical (of course it is; they both act according to the same rules, on the same information). If you choose any other strategy, you still have a 50-50 chance, since Alice and Bob disagree and there is no reason to choose one over the other.
Since your odds don't change with your strategy in any of those regions of the probability space, they don't change overall.
In voting parity matters. In some cases, effects are interesting - like in some cases if the mafia/werewolf game, when adding a citizen/villager decreses their winning chance by sqrt(pi/2), vide https://arxiv.org/abs/1009.1031
In that case following Alice's input is still the best strategy, but you'll be worse off: you'd only be right if both tell the truth, at 80%80%=64%, or both lie, at 20%20%=4%, for a total of 68%.
In the general case of n intermediate occasional liars, the odds of the final result being accurate goes to 50% as n grows large, which makes sense, as it will have no correlation anymore to the initial input.
Thanks. I came up with this Python simulation that matches your 68%:
import random
def lying_flippers(num_flips=1_000_000):
"""
- Bob flips a coin and tells Alice the result but lies 20% of the
time.
- Alice tells me Bob's result but also lies 20% of the time.
- If I trust Bob, I know I'll be correct 80% of the time.
- If I trust Alice, how often will I be correct (assuming I don't
know Bob's result)?
"""
# Invert flip 20% of the time.
def maybe_flip_flip(flip: bool):
if random.random() < 0.2:
return not flip
return flip
def sum_correct(actual, altered):
return sum(1 if a == b else 0 for (b, a) in zip(actual, altered))
half_num_flips = num_flips // 2
twenty_percent = int(num_flips * 0.2)
actual_flips = [random.choice((True, False)) for _ in range(num_flips)]
num_heads = sum(actual_flips)
num_tails = num_flips - num_heads
print(f"Heads = {num_heads} Tails = {num_tails}")
bob_flips = [maybe_flip_flip(flip) for flip in actual_flips]
alice_flips = [maybe_flip_flip(flip) for flip in bob_flips]
bob_num_correct = sum_correct(actual_flips, bob_flips)
bob_percent_correct = bob_num_correct / num_flips
alice_num_correct = sum_correct(actual_flips, alice_flips)
alice_percent_correct = alice_num_correct / num_flips
# Trusting Bob should lead to being correct ~80% of the time.
# This is just a verification of the model since we already know the answer.
print(f"Trust Bob -> {bob_percent_correct:.1%}")
# Trusting Alice should lead to being correct ?% of the time.
# This model produces 68%.
print(f"Trust Alice -> {alice_percent_correct:.1%}")
print()
Let's pretend Alice tells the truth 100% of the time, and Bob is still at 20%. It's more easy to intuit that Bob's contribution is only noise.
Slide Alice's accuracy down to 99% and, again, if you don't trust Alice, you're no better off trusting Bob.
Interestingly, this also happens as a feature of them being independent. If Bob told the truth 20% of the time that Alice told a lie, or if Bob simply copied Alice's response 20% of the time and otherwise told the truth, then the maths are different.
Sailors in the past had a similar adage: “Never go to sea with two chronometers; take one or three.” They relied on precise clocks to calculate longitude.
I think it is different in the continuous case though, because you can average two (reasonably accurate) chronometers and get a better measurement. But we can't average true and false, at least not in the context of this problem definition.
But the chronometers are will sync with each other if you don't store them apart, which would result correlated noise that an average won't fix.
It's possible to navigate without being able to measure your longitude. Like if you're looking for an island, you should first navigate to the correct latitude and then sail along that latitude until you hit the island. The route is longer, obviously. But that's what you should do if your chronometers disagree.
The second liar often gives you information you never wanted! But that is offset by the excellent information of when the liars agree. Fascinating.
I didnt't math during the thinking pause, but my intuition was a second liar makes it worse (more likey to end up 50-50 situation) and additional liars make it better as you get to reduce noise.
Is there a scenario where the extra liar makes it worse, you would be better yelling lalalallala as they tell you the answer?
The betting-voting distinction is interesting and was on my mind while I was reading it.
So much of this breaks down when the binary nature of the variables involved becomes continuous or at least nonbinary.
It's an example of a more general interest of mine, how structural characteristics of an inferential scenario affect the value of information that is received.
I could also see this being relevant to diagnostic scenarios hypothetically.
It would be more straightforward to remove the permutations and just display the combinations and the symmetry between heads and tails. And solve it analytically Eg:
if p is the probability that the NPC is correct
P(A|AAAA) = p^4
P(A|BBBB) = (1-p)^4
Anyway, the apparent strangeness of the tie case comes from the fact that the binomial PMF is symmetric with respect to n (the number of participants) and n-k.
PMF = (n choose k) * p^k * (1-p)^(n-k)
So when k = n/2, the symmetry means that the likelihood is identical under p and 1-p, so we're not gaining any information. This is a really good illustration of that; interesting post! (edit: apparently i suck at formatting)
The triangulation effect with 3+ observers is fascinating, but there may be a weirder extension: what if the "third observer" isn't another person but the relationship coherence between two people?
Instead of three independent signals, you'd evaluate: given how Alice and Bob usually interact, does their agreement/disagreement pattern here tell you something? (E.g., if they're habitual contrarians, their agreement is the signal, not their disagreement.)
Take it further: human + LLM collaboration, where you measure the ongoing conversational dynamics—tone shifts, productive vs. circular disagreement, what gets bypassed, how contradictions are handled. The quality of the collaborative process itself becomes your truth signal.
You're not just aggregating independent observations anymore; you're reading the substrate of the interaction. The conversational structure as diagnostic.
>>> To establish this, let’s write a simple simulation. We’ll flip a coin a million times, ask our friends what they saw, and observe the results.
Either they agree, or they disagree.
If they agree, they're either both telling the truth or both lying. All you can do is go with what they agreed on. In this case, picking what they agreed on is the same as picking what one of them said (say, Alice).
If they disagree, then one is telling the truth and one is lying and you have no way to tell which. So just pick one, and it makes no difference if you pick the same one every time (say, Alice).
So you end up just listening to Alice all the time anyway.
Weirdly this reminds me of the Raft consensus protocol: two nodes cancel each other when failing consensus as you can't tell which is the valid one, three gives you better chances, if one fails you have the other two that can get consensus. Of course in the off chance you have two failures you cannot get consensus with the only living node. Adding another two nodes make you robust to two failures.
Now replace fail with lying and you have the exact same problem.
This principle is also highly relevant in safety critical systems for using redundant sensors. Just adding a second sensor is often not enough. Because if they disagree, which one do you trust.
41 comments
[ 4.1 ms ] story [ 71.7 ms ] threadI wrote a quick colab to help visualize this, adds a little intuition for what's happening: https://colab.research.google.com/drive/1EytLeBfAoOAanVNFnWQ...
In the check-mark (v) region, you get the right answer regardless; they are both being truthful, and of course you trust them when they agree. Similarly you get the wrong answer regardless in the x region.
In the ? region you are no better than a coin flip, regardless of your strategy. If you unconditionally trust Alice then you win on the right-hand side, and lose on the left-hand side; and whatever Bob says is irrelevant. The situation for unconditionally trusting Bob is symmetrical (of course it is; they both act according to the same rules, on the same information). If you choose any other strategy, you still have a 50-50 chance, since Alice and Bob disagree and there is no reason to choose one over the other.
Since your odds don't change with your strategy in any of those regions of the probability space, they don't change overall.
When it comes to the wisdom of crowds, see https://egtheory.wordpress.com/2014/01/30/two-heads-are-bett...
In the general case of n intermediate occasional liars, the odds of the final result being accurate goes to 50% as n grows large, which makes sense, as it will have no correlation anymore to the initial input.
Slide Alice's accuracy down to 99% and, again, if you don't trust Alice, you're no better off trusting Bob.
Interestingly, this also happens as a feature of them being independent. If Bob told the truth 20% of the time that Alice told a lie, or if Bob simply copied Alice's response 20% of the time and otherwise told the truth, then the maths are different.
But the chronometers are will sync with each other if you don't store them apart, which would result correlated noise that an average won't fix.
If the chronometer error rate is 1%, averaging two will give you a 2% error rate.
It's possible to navigate without being able to measure your longitude. Like if you're looking for an island, you should first navigate to the correct latitude and then sail along that latitude until you hit the island. The route is longer, obviously. But that's what you should do if your chronometers disagree.
This saying must originate with a landlubber...
I didnt't math during the thinking pause, but my intuition was a second liar makes it worse (more likey to end up 50-50 situation) and additional liars make it better as you get to reduce noise.
Is there a scenario where the extra liar makes it worse, you would be better yelling lalalallala as they tell you the answer?
So much of this breaks down when the binary nature of the variables involved becomes continuous or at least nonbinary.
It's an example of a more general interest of mine, how structural characteristics of an inferential scenario affect the value of information that is received.
I could also see this being relevant to diagnostic scenarios hypothetically.
Instead of three independent signals, you'd evaluate: given how Alice and Bob usually interact, does their agreement/disagreement pattern here tell you something? (E.g., if they're habitual contrarians, their agreement is the signal, not their disagreement.)
Take it further: human + LLM collaboration, where you measure the ongoing conversational dynamics—tone shifts, productive vs. circular disagreement, what gets bypassed, how contradictions are handled. The quality of the collaborative process itself becomes your truth signal.
You're not just aggregating independent observations anymore; you're reading the substrate of the interaction. The conversational structure as diagnostic.
at 4 heads, just randomly select a jury of 3. and you're back on track.
at a million heads, just sum up all their guesses, divide by one million, and then check the over/under of 0.50
Either they agree, or they disagree.
If they agree, they're either both telling the truth or both lying. All you can do is go with what they agreed on. In this case, picking what they agreed on is the same as picking what one of them said (say, Alice).
If they disagree, then one is telling the truth and one is lying and you have no way to tell which. So just pick one, and it makes no difference if you pick the same one every time (say, Alice).
So you end up just listening to Alice all the time anyway.
Now replace fail with lying and you have the exact same problem.
One example of this is in airplanes.