I'm programming a role playing game for fun and to learn. I am planning on having an overall game world and in that game world I plan on having "zones" that players and monsters can move around on. Let's just say the "zones" are 20x20 grids and each "tile" on this grid is 64 pixels wide. A player or monster can occupy one 1x1 tile and move about in steps of 1 tile per step.
How do I go about monsters and players knowing about each other as the gameplay happens? I have no idea what sort of data structures I'd use or how I'd spawn monsters and have them wandering around in zones.
Note: I've seem mentions of using some sort of tree structures (quad trees) but I don't really understand how they would be applied.