Knowledge Representation and Reasoning
This project hailed from the Knowledge Representation and Reasoning side of Artificial Intelligence. Knowledge Representation and Reasoning is an area of Computer Science that aims to create intelligent machines through the use of facts, rules, and deductions (more facts). To put it plainly, a reasoner system takes an input set of facts, and it has rules that use those facts to generate more facts about the world. A simple example:
Socrates is a man - (isa, Socrates, man)
All men are mortal - ( (mortal, ?X), (isa, ?X, man) )
Therefore, Socrates is mortal - (mortal, Socrates)
It then adds those new facts to the original set of facts, and again runs its rules to generate more facts about the world. All qualitative knowledge about the world can be represented in these facts and rules.
Unlike Machine Learning, which is largely a black box as far as how its input was processed into the output, output of reasoner systems can be examined and traced back along the chain to determine how conclusions were reached. Another large advantage is that it is far easier and quicker to add knowledge we know for sure into the reasoner, without lengthy fine tuning and testing. Purists (and professors) would argue that this is the strategy by which true machine intelligence will one day be acheived.
Minesweeper
For our term project in this course, we set out to tackle Minesweeper, a game that is known to be hard because certain situations in the game have been proven NP-Complete to solve. Since logical reasoners are exponential in the number of variables in a rule, we got around this with creative rule writing such that no rule had more than four variables. That way, even though we are running exponential algorithms, they still complete in a reasonable amount of time. In some especially tricky situations, the reasoner has to make a guess. So, as with any AI, it's not 100% perfect.