Agreed. Given access to the SOURCE of the opponent, you can just RUN the opponent and observe what they’ll do this round. Of course, given, say, 10 seconds to calculate between rounds, the wise opponent just ensures it will take exactly 10 seconds to run their code, that way you can either calculate your own move OR the opponent’s, but not both.
Then you get in to the complexities of whether you have enough time at any given point to attempt to OPTIMIZE your opponent’s equation (“Roll dice for 9.99 seconds then select rock” is very easy to optimize down to “select rock”), and at that point I think we’re sufficiently outside the simplified domain of the post :)
So, basically, you’re right, but I don’t think it’s actually a relevant critique. I would enjoy seeing it addressed in the post, though, because it bugged me enough that I was going to post about it myself :)
Given access to the SOURCE of the opponent, you can just RUN the opponent and observe what they’ll do this round.
Main problem: if you’re playing against yourself, this creates an infinite loop of you simulating you simulating you simulating...
Fortunately, it’s often possible to prove things about other programs without running them.
Of course, given, say, 10 seconds to calculate between rounds, the wise opponent just ensures it will take exactly 10 seconds to run their code, that way you can either calculate your own move OR the opponent’s, but not both.
In a Prisoner’s Dilemma, TDT would defect if it couldn’t deduce anything in time about the other player. The only way to achieve mutual cooperation is to make it easy for the other player to deduce what you’re doing in that circumstance. (I’ll cover this in more depth in the TDT section.) This doesn’t mean “always cooperating”, nor does it mean giving up mixed strategies in zero-sum games.
Agreed. Given access to the SOURCE of the opponent, you can just RUN the opponent and observe what they’ll do this round. Of course, given, say, 10 seconds to calculate between rounds, the wise opponent just ensures it will take exactly 10 seconds to run their code, that way you can either calculate your own move OR the opponent’s, but not both.
Then you get in to the complexities of whether you have enough time at any given point to attempt to OPTIMIZE your opponent’s equation (“Roll dice for 9.99 seconds then select rock” is very easy to optimize down to “select rock”), and at that point I think we’re sufficiently outside the simplified domain of the post :)
So, basically, you’re right, but I don’t think it’s actually a relevant critique. I would enjoy seeing it addressed in the post, though, because it bugged me enough that I was going to post about it myself :)
Main problem: if you’re playing against yourself, this creates an infinite loop of you simulating you simulating you simulating...
Fortunately, it’s often possible to prove things about other programs without running them.
In a Prisoner’s Dilemma, TDT would defect if it couldn’t deduce anything in time about the other player. The only way to achieve mutual cooperation is to make it easy for the other player to deduce what you’re doing in that circumstance. (I’ll cover this in more depth in the TDT section.) This doesn’t mean “always cooperating”, nor does it mean giving up mixed strategies in zero-sum games.