What are some better ways to encode these symbols? I was going through some tutorials on information theory. It had the following example concerning transmission of three symbols $A, B$ and $C$ such that 
$P(A) = 1/3 = P(B) = P(C)$
If we encode the events as $A = 0, B = 10, C = 11$ ; then we get on an average $1.66$ bits per symbol. But it mentioned that theoretically it's possible to send $1.58$ bits/symbol.
How would one go below $1.66$ bits / symbol ?
I thought of group encoding i.e. encoding $2$ symbols together. But it didn't give any decrement in bits/symbol.
Thanks. 
 A: For character-by-character encoding (i.e. using $3$ separate codes for $A$, $B$ and $C$), $1.66$ bits per symbol is the best you can do: the standard Huffman encoding algorithm is optimal for symbol-by-symbol encoding (see http://en.wikipedia.org/wiki/Huffman_encoding). 
Your idea of group encoding is exactly right: e.g. for encoding $2$ symbols together, there are $9$ bigrams to encode ($AA, AB, AC, BA, \dots$). Using $3$ bits allows us to encode $8$ of these, and then we split one of our encodings into two (by appending one extra bit) to encode all $9$ bigrams. So $7$ bigrams have length $3$ encodings and the remaining $2$ bigrams have length $4$ encodings, giving 1.61 bits per symbol.
More generally, the smallest possible value of bits/symbol is given by the Shannon entropy, which in this case is $1.58$.
A: Arithmetic coding is not hard to implement and achieves (within two bits over the entire transmission) the minimum average code length, which as Bryan rightly points out is the information entropy.
See the original paper for details:
R. C. Pasco, “Source coding algorithms for fast data compression,” Stanford University, 1976.
