Columns A and B represent the current Q-output state of each of the D-Flip-Flops
Columns P and Q represent the next Q-output state of D-Flip-Flops A and B respectively.
When you present the next Q-output state on the D-inputs, the sequence of states is:

Code:

0 -> 2 -> 1 -> 3 -> 0 ...

By inspection:

Code:

P = .NOT. A
Q = A .XOR. B = (A .AND. .NOT. B) .OR. (.NOT. A .AND. B)

P and Q could, of course, be any functions of two boolean variables, and the sequences would change accordingly.
[Question] What sequence do you get if you swap the functions for P and Q?