# Branching Factor

## Informal Definitions

• The branching factor is the number of successors generated by a given node.
• The effective branching factor is the number of successors generated by a "typical" node for a given search problem.

## Formal Definition

• `N`: Total number of nodes processed.
• `d`: Depth at which the solution node was found.
• `b*`: Effective branching factor.
• `N = b* + (b*)2 + ... + (b*)d`

## Calculating `b*`

• No closed-form solution
• Solution 1: A Close Guess
• `N(1/d)`
• Solution 2: Binary Search
• Requires `N` and `d`
• Select an error tolerance
• Select a high and low estimate
• Average the estimates to provide a guess for `b*`
• Calculate `N'` using the guess for `b*` and `d`
• If `abs(N' - N) > error`, modify the low or high estimate accordingly
• Otherwise, it is within the error, so return the guess for `b*`

## Pros and Cons

• Strengths of each approach:
• Solution 1 is quicker to calculate
• Solution 2 has a provable error bound
• Weaknesses of each approach:
• Solution 1 has a relatively loose error bound
• Solution 2 is subject to floating-point overflow for large values of `d`