systematic way to determine best bit mapping policy So in class, we've been asked to find the best bit mapping policy for QAM modulation schemes (4-QAM, 8-QAM, 128-QAM, etc). Best meaning the one that will provide the lowest bit error Probability ($P_{be}$). I think I understand the concept, which is for each point closest to a given point, try to change the fewest number of bits. The absolute best case is gray coding, but that would only be possible for 4-QAM.

For example, I can come up with the best bit mapping policy for the star 8-QAM constellation below. ( the points are numbered in red)



for outside points (points 1,3,5, and 7) I'm making sure that the two closest points to each only 1 bit changes. So point 1 = 000, and point 2 = 100 (only the Most significant bit changed) and points 8 = 001 (only the least significant bit changed). For the 8-QAM, it's small enough that Just pick a random bit combination for the outside points, and then try to only change 1 bit to get to the center, but for a 16-QAM, for even a 256-QAM this starts getting difficult to just go about picking at random. 

So my question is this; Is there a systematic way to go about selecting the bit mapping for these larger constellations?

Also, once we find the bit mapping policy, how can we calculate the bit error probability $P_{be}$? I know how to find the symbol error probability $P_{es}$, and i know for gray coding $P_{be} = \frac{P_{es}}{log_2 M}$ where $M$ is the number of symbols (for 8-QAM $M = 8$). but since everything higher than 4-QAM can only be partial gray coding, how do we determine $P_{be}$ in terms of $P_{es}$?
For $2^{2n}$-QAM, Gray code labeling often assigns the odd-numbered bits to one axis (I or Q) and the even-numbered bits to the other axis (Q or I) and uses $n$-bit Gray code labeling along each axis. Alternatively, the first $n$ bits could be assigned to I (or Q) and the last $n$ bits to Q (or I). Depending on the structure of the modulator (e.g. 8 bits entering the modulator on a serial line versus 8 bits entering the modulator simultaneously on a 8-bit-wide bus), one method might be preferable over the other. It is important to note that it is not necessary to convert the data into Gray code; just to use the Gray code labeling.  An extensive discussion of this last point can be found here on Google Groups.