두 참가자 A와 B가 벌이는 2인 정규형 게임(normal-form game)은 다음 네 가지로 완전히 정의된다.
두 참가자는 행동을 동시에 선택한다. 예를 들어 A가 ai를, B가 bj를 선택했다고 하자. 이때 각 참가자의 보수는 보수 행렬에서 결정되어 A는 PA[i,j]를, B는 PB[i,j]를 받는다. 각 참가자의 목표는 자신의 보수를 최대화하는 것이다.
B가 특정 행동 bj를 골랐을 때, A의 최선 반응(best response) 은 A의 보수를 최대로 만드는 행동 ai, 즉 PA[i,j]=maxi′PA[i′,j]를 만족하는 모든 ai이다. 마찬가지로 A가 특정 행동 ai를 골랐을 때, B의 최선 반응은 PB[i,j]=maxj′PB[i,j′]를 만족하는 모든 bj이다.
행동의 쌍 (ai,bj)가 서로에게 최선 반응일 때, 즉 ai가 bj에 대한 최선 반응이고 동시에 bj가 ai에 대한 최선 반응일 때, 이 쌍을 순수 전략 내시 균형(pure-strategy Nash equilibrium) 이라 한다.
두 보수 행렬 PA와 PB가 주어질 때, 이 게임의 모든 순수 전략 내시 균형을 찾아 나열하여라.
입력은 여러 개의 테스트 케이스로 이루어진다.
각 테스트 케이스의 첫 줄에는 두 정수 m과 n이 주어진다 (1≤m,n≤20). 이어지는 m개의 줄에는 보수 행렬 PA의 각 행이, 그다음 m개의 줄에는 보수 행렬 PB의 각 행이 주어지며, 각 행은 n개의 정수로 이루어진다. 모든 보수 값은 −100 이상 100 이하의 정수이다.
입력의 끝은 0 0인 줄로 표시되며, 이 줄은 처리하지 않는다.
각 테스트 케이스에 대해, 게임의 순수 전략 내시 균형의 개수를 N이라 하자. 다음을 출력한다.
내시 균형은 사전식 순서로 나열해야 한다. 즉 i1<i2이거나, i1=i2이면서 j1<j2일 때 (ai1,bj1)을 (ai2,bj2)보다 먼저 출력한다.
참가자 A와 B가 각각 두 개의 행동을 가지며, 보수 행렬이 아래와 같은 게임을 생각해 보자.

A가 a1을 선택하면, B는 b1을 선택할 때 보수를 최대화한다. PB[1,1]=1>0=PB[1,2]이기 때문이다. 마찬가지로 B가 b1을 선택하면, A는 a1을 선택할 때 보수를 최대화한다. PA[1,1]=1>0=PA[2,1]이기 때문이다. 따라서 a1은 b1에 대한 최선 반응이고 그 반대도 성립하므로, (a1,b1)은 이 게임의 순수 전략 내시 균형이다.
반면 (a2,b2)는 내시 균형이 아니다. A가 a2를 선택하면 B의 최선 반응은 b1인데, PB[2,1]=5>3=PB[2,2]이기 때문이다.