By virtue of their recursive construction in
Eqs. (??), tree-level 1POWs form a DAG and the
problem is to find the smallest DAG that corresponds to a given tree,
(i. e. a given sum of Feynman diagrams). O'Mega's algorithm
proceeds in four steps
-
Grow:
- starting from the external particles, build the tower of
all 1POWs up to a given height (the height
is less than the number of external lines for asymmetric
keystones and less than half of that for symmetric keystones)
and translate it to the equivalent DAG D.
- Select:
- from D, determine all possible
flavored keystones for the process under
consideration and the 1POWs appearing in them.
- Harvest:
- construct a sub-DAG D*Í D consisting
only of nodes that contribute to the 1POWs
appearing in the flavored keystones.
- Calculate:
- multiply the 1POWs as specified by the keystones
and sum the keystones.
By construction, the resulting expression contains no more
redundancies and can be translated to a numerical expression. In
general, asymmetric keystones create an expression that is smaller
by a few percent than the result from symmetric keystones, but it
is not yet clear which approach produces the numerically more robust
results.
The details of this algorithm as implemented in O'Mega are described
in the source code [1]. The persistent data
structures [10] used for the determination
of D* are very efficient so that the generation of, e. g. Fortran
code for amplitudes in the Standard Model is always much faster than
the subsequent compilation.