John | Projects | Zendo


HyperZendo

(Hypothesis-Refiner for Zendo Induction)

For my Saint Mary's Project, I developed an inductive logic program that plays the game Zendo. Zendo is a game in which one player invents a secret "rule" and another player (preferably several players) try to "guess" the "rule" by "creating hypothetical scenes" and discovering whether or not each scene follows the rule.

Given a series of examples which do and do not follow a rule, the hypothesis refiner attempts to create a guess as to what the rule is. Usually, the machine will find a sensible rule, ignoring other guesses that are more complex than 7 layers of abstraction. ("The scene must contain a red piece" being a much better rule for the same scenes than "The scene must have 3 pieces, unless one of the pieces it has is yellow, in which case it must not have a green piece or a large yellow piece.")

I haven't yet developed a user interface, so the creation of the scenes takes place in a PROLOG source file and the actual induction takes place directly through the PROLOG compiler. The utility of creating a user interface is limited, since I don't mind editing the source files and I doubt anyone else needs this program, unless they're trying to cheat at Zendo. Hey, maybe I'll make one some day anyway. Better still would be a module that creates scenes and submits them to test working hypotheses. If you are reading this and you're an AI major, I implore you to email me, and I assure you, I will talk you into doing this for your senior project. You will get an A.

The inductive engine used is HYPER, Ivan Bratko's Hypothesis Refiner (from "Prolog Programming for Artificial Intelligence, Second Edition." by Ivan Bratko, published by Addison-Wesley.) Incidentally, this is a fantastic book.

Download the source:

zendo.zip (readme.txt, SMP abstract, hyperzendo.pl, 6 example games each with positive and negative koan examples) - You'll need a prolog engine like SWI-prolog to make use of this.


email