Well, obviously the result depends on what the algorithms actually do. If you’re going to be playing against an opponent with access to your source code, you’d quite like to be a nice simple “always-stand-firm” program, which even a very stupid opponent can prove will not flinch. But of course that leads to all algorithms doing that, and then everybody dies.
It’s not clear that this is avoidable. While it’s interesting to think in the abstract about programs analysing one another’s code, I think that in practice programs clever enough to do anything nontrivial with one another’s code are almost inevitably much too difficult to analyse, and unless there are big disparities in computational resource available simulation isn’t much help either. So we’re left with doing trivial things with one another’s code: e.g., perhaps you could say “if facing an exact copy of myself, flinch with probability p; else stand firm unconditionally”, and anything that makes a halfway-serious attempt at analysis will see that it isn’t going to win. (What’s the best value of p? Depends on the exact payoffs. With classical Chicken where “neither flinch” ⇒ “both die”, it’s probably very close to 1. But then with classical Chicken the best meta-algorithm is not to play the damn game in the first place.)
This makes me curious what happens when two algorithms, both of whom have access to the others source code, both play chicken.
Well, obviously the result depends on what the algorithms actually do. If you’re going to be playing against an opponent with access to your source code, you’d quite like to be a nice simple “always-stand-firm” program, which even a very stupid opponent can prove will not flinch. But of course that leads to all algorithms doing that, and then everybody dies.
It’s not clear that this is avoidable. While it’s interesting to think in the abstract about programs analysing one another’s code, I think that in practice programs clever enough to do anything nontrivial with one another’s code are almost inevitably much too difficult to analyse, and unless there are big disparities in computational resource available simulation isn’t much help either. So we’re left with doing trivial things with one another’s code: e.g., perhaps you could say “if facing an exact copy of myself, flinch with probability p; else stand firm unconditionally”, and anything that makes a halfway-serious attempt at analysis will see that it isn’t going to win. (What’s the best value of p? Depends on the exact payoffs. With classical Chicken where “neither flinch” ⇒ “both die”, it’s probably very close to 1. But then with classical Chicken the best meta-algorithm is not to play the damn game in the first place.)