Depending on the game of the billiards you usually have two tasks
Assess the situation on the table (get possible shots)
In perfect scenario (perfect aim, perfect shot) all possible shots are equally hard and if you consider only direct shots to one ball there will be only maximum of 6 holes x n balls situations that you need to analyse (analysing simple canons - hitting two balls requires only extra n^2 balls x 6 holes situations). For each of these situations establishing if they are possible requires simple analysis (unless you are doing very realistic collision simulations). So in very simple simulations you might want to try to construct all possible situations and rank them. To analyse shots off the bank you might want to mirror the balls and holes.
Alternatively in enumerating the possible situations you might simply do a line scan of the table, marking the areas which are illegal for shots and enumerating and building potential shots like...
angle1, ball1, pocket2
angle2, ball1, pocket3
angle3, ball1, ball2, pocket1
angle4, cushion2, ball2, pocket1
For nicer AI you want to simulate imperfections, for example the shot is played by hitting a ball at some point x (maybe defined as an angle away from direct hit), let's assume that there will be an error (due to bad aim, or bad hit, or anything) of dx - this in turn will cause the ball to have an error in direction which will increase with the distance to the pocket. This gives one way to rank the shots by difficulty - the sensitivity of the shot in terms of error in aim/shot (some shots are easier then others). This will depend on the length of the path from white to the ball and from the ball to the hole.
One more thing to look at is the risk of white ball going in the hole, or other illegal shots
Choosing the shot (not only based on difficulty, but also on potential gain)
- you will need to look at the strategy as well (an easy shot might leave you with nothing in the next round)
- it is not only how easy is it to make a first shot, but also how hard will be the second shot (for this you could run the assessment of that simulated situation again, and here you could make the player stronger or weaker depending on how many shots he is able too look ahead; you can also give your player personality - looking for solutions depth first or breadth first)
- in choosing strategy you should look for the combination of shots whose sum of difficulty is minimal (you might need to assess importance of the later shots taking into account probability that you will miss)
- depending on the game you might consider introducing safety shots which are purely positional game and the aim is not to pocket the ball immediately but to either force the opponent to make a mistake or to ease a situation for yourself (there are other situations when playing such shots would be beneficial - for example when you can not hit anything but would need to split few balls or move them away from cushion). in this case you will need to start from the end.
- all this gets much more complicated with realistic physics: spins, realistic collision, bounces, realistic cushions, cue slips, etc..