I think the answer lies here but i never studied genometry in school :
Taken from http://www.northeastraces.com/runningstatic/pcas/
Removing the overlaps
Many of these polygons overlap. This means a polygon has at least one vertex from a neighbouring polygon inside its area.
I call such a vertex an insider. If you like the polygon is taking a shortcut across the territory of its neighbour.
In some ways it would be better to alter the polygon so that the offending side of the polygon were bent to go round the insider.
The problem is widespread: the 120 polygons contain 1488 insiders.
Here is my improvement algorithm that alters each polygon so that it goes round the insiders:
for each postcode area
let "current polygon" be the polygon of this postcode area
for each postcode area other than the current one
for each vertex of the polygon of this postcode area
if the vertex is inside the current polygon,
then add it to a set of "insiders"
while the set is not empty
choose the insider that causes fewer points to be insiders if
the chosen insider were added to the current polygon
for each side of the current polygon
determine the distance of this insider from the side
let "grafting point" be the point at the start of the side that
has the smallest distance
add the point of this insider to the polygon after the grafting point
remove this insider from the set of insiders
remove any points that are no longer insiders from the set of insiders
