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.

  1. Base case: For each sink vertex with label , set

  2. Inductive step: For vertex in layer : where is the vertex reached by following edge from .

  3. 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.