Question: Just a d\*mb question on Lie algebras:

Given a Dynkin diagram of a root system (or a Cartan Matrix), how do I know which combination of simple roots are roots?

Eg. Consider the root system of G\_2, let a be the short root and b be the long one, it is clear that a, b, b+a, b+2a, b+3a are positive roots. But it is not clear to me that 2b+3a is a root just from the Dynkin diagram.

Answer: 
Here's an answer in the simply-laced case. Its proof, and generalization to non-simply-laced, are left to the reader.

1) Start with a simple root, and think of it as a labeling of the Dynkin diagram with a 1 there and 0s elsewhere.

2) Look for a vertex whose label is < 1/2 the sum of the surrounding labels. Increment that label. You've found a root!

3) Go back to (2), unless there is no such vertex anymore. You've found the highest root!

Take the union over all such games, and you get all the positive roots. Include their negatives, and you have all roots.

If you start with a non-Dynkin-diagram, the game doesn't terminate. This is part of a way to classify the Dynkin diagrams.

[EDIT: yes it can terminate. There's a variant, where you replace the vertex label by the sum of the surrounding, minus the original label. *That* game terminates only for Dynkin diagrams.]

BTW at the highest root, most of the vertices have labels = 1/2 the surrounding sum. If you put in a new vertex, connected to those vertices with > 1/2 the sum, you get the affine Dynkin diagram.
There is also a succinct description of the algorithm in he very last paragraph of §11.1 in page 56 of Humphrey's *Introduction to Lie algebras and representation theory*.

Here's the oblgatory [Google Books link](http://books.google.com/books?id=mSD4DvUFa6QC&lpg=PP1&dq=Humphreys%20Lie%20algebras&client=safari&pg=PA56#v=onepage&q=Coxeter%20graphs%20and%20Dynking%20diagrams&f=false).

I remember writing for fun a Fortran program (later translated to C) to compute the roots given a Cartan matrix. The algorithm has the virtue that if you input the Cartan matrix of an affine Kac-Moody algebra, say, it will still compute the roots level by level, except that, of course, it will never stop running :)