In-class Exercises

Solutions

Specific to General

0. T=[small,red,ball]+    S=[[small,red,ball]] N = []
1. T=[large,blue,ball]+   S=[[X,Y,ball]]       N = [] % Generalize S to match [large,blue,ball]
2. T=[small,red,cube]-    S=[[X,Y,ball]]       N=[[small,red,cube]]
3. T=[large,white,brick]- S=[[X,Y,ball]]       N=[[small,red,cube],[large,white,brick]]
4. T=[small,white,brick]- S=[[X,Y,ball]]       N=[[small,red,cube],[large,white,brick],[small,white,brick]]
5. T=[small,white,ball]+  S=[[X,Y,ball]]       N=[[small,red,cube],[large,white,brick],[small,white,brick]]

It's a ball!

General to Specific

0.                        G=[[X,Y,Z]]       P = []
1. T=[small,red,ball]+    G=[[X,Y,Z]]       P = [[small,red,ball]]
2. T=[large,blue,ball]+   G=[[X,Y,Z]]       P = [[small,red,ball],[large,blue,ball]]
3. T=[small,red,cube]-    G=[[large,Y,Z],   
                             [X,blue,Z],
                             [X,white,Z],   %% Delete: doesn't match any positives
                             [X,Y,ball]
                             [X,Y,brick]]   %% Delete: doesn't match any positives
4. T=[large,white,brick]- G=[[large,red,Z], %% Delete: doesn't match any positives
                             [large,blue,Z],%% Delete: more specific than [X,blue,Z]
                             [X,blue,Z],    
                             [X,Y,ball]]
5. T=[small,white,brick]- G=[[X,blue,Z],    %% No change
                             [X,Y,ball]]
6. T=[small,white,ball]+  G=[[X,blue,Z],    %% Delete: doesn't match [small,white,ball]
                             [X,Y,ball]]    P = [[small,red,ball],[large,blue,ball],[small,white,ball]]
7. G=[[X,Y,ball]]


It's a ball!

Try these two examples using the PROLOG program PROLOG Version Space Search. To run the first example, load the program into PROLOG and type do_spec_to_gen. For the second example, type do_gen_to_spec.