A read-once branching program (ROBP) of width over alphabet is a layered directed graph with layers, where:
- Layer 0 has a single source vertex
- Each layer has at most vertices (representing bits of memory)
- Each non-sink vertex has outgoing edges (one per symbol)
- Sinks are labeled with field elements
Evaluation: Follow edges labeled from source to sink.
Computing the MLE (Holmgren-Rothblum 2018)
Process the branching program backwards (from sinks to source), computing the MLE of “the function starting from vertex ” for each vertex.
-
Base case: For each sink vertex with label , set
-
Inductive step: For vertex in layer : where is the vertex reached by following edge from .
-
Result:
For Boolean , the selects exactly one term (the edge actually taken). For field elements, it smoothly interpolates.
Cost: — per layer: to compute , then to combine values across vertices.
Used in Jagged Polynomial Commitments.