See comments in the code for details.
Also added more extensive testing in various scenarios to make sure the optimal layout (with minimal branch cost or maximal fall through) is picked.
You mean in (C), right?
This is a little confusing, I think the condition should be:
So when checking Pred1, the backward threhold should be 0.66, when checking Pred2, the backward threshold should be 0.5?
But for the current implementation, I tried all testcase, and some other testcases with different triangle-diamond combination, and it always gives me optimal solution.
When computing backward probability, only BB->Succ and Pred2->Succ edges are considered, so the probability threshold
T = min(F1) /(min(F1) + F2) = (F2 + F3 )/(2*F2 + F3).
I will update the comments.
The answer is, in this case, it is better not to choose BB->Succ as the fall through.
Let's take a look at an example: suppose BB and Pred2 in example C has a predecessor 'S'. With your choice, the layout is
The optimal layout is in fact