Determining the neighbours in Conways Game of Life is trivial. The whole cellular automata is just a big 2D array, so you can look up adjacent items by incrementing/decrementing co-ordinates. Details depend on the implementation language, but you'd probably have some code similar to the following...
count := previous[x-1,y] + previous[x+1,y] + previous[x,y-1] + previous[x,y+1];
next [x,y] := 1 if ((count >= MIN) and (count <= MAX)) else 0;
One issue I've glossed over is bounds checking - making sure that only in-range co-ordinates are used. Cellular automata are often built for speed, so you probably wouldn't put checks in your inner loops - you'd have special case code for doing the corners and for looping along the edges.
This isn't what I'd call an algorithm to find an objects neighbour. One approach to the nearest neighbour problem is to construct an index based on a Voronoi diagram.