# Raven's Progressive Matrix Problems

# RPM

This semester I am taking a class called Knowledge Based AI (KBAI). You ever solve this kind of problem?

This is the easiest problem of the bunch but the answer here is 2. The project challenges you by asking “how do you know the answer is 2?” And there are different approaches here too. For example, you could coult the number of edges in each image (A, B, C, D) and compare that to the number of edges in each of the possible answers; 5 for answer 1, 4 for answer 2, 3 for answer 3, 2 for answer 4, 10 for answer 5, ??? for answer 6 :P. The most likely answer then, is answer 2. Another approach you could take is look at image A and check how likely it is to match image B. In this case the match is 100%. Then you say, “what image in each answer will get me an image that is a 100% match for image C?” The answer is image 2. Which of those two types of operations seem like would be more performant for a machine to do? An identity operation like the latter or edge counting. I haven’t analyzed it, but I’m willing to put my money on the identity operation (image transform) operation.

Image transformation, or affine transformation, is the approach I took for this project using only Python 3.x, PIL, and numpy. These transforms may not solve all problems but they are very performant compared to the solutions by my peers that take up to 30 minutes, whereas this approach only takes < 2 seconds. I believe a middle ground exists to try transforms and then more complex operations after the fact.

For example, I don’t believe transforms will get you far in this sort of problem. The answer here is 3 but how would you get that through transforms and translations? Here, I think a different approach is necessary; what that approach is, I don’t know yet since this is the last part of the assignment :P