Differences between revisions 3 and 4
Revision 3 as of 2014-04-20 18:03:31
Size: 3600
Editor: JendrikSeipp
Comment: add text for causal graph
Revision 4 as of 2016-12-21 12:41:54
Size: 0
Editor: MalteHelmert
Comment: The preprocessor is gone.
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Output of the Fast Downward preprocessor =

This page describes the output format of the preprocessor component of Fast Downward. The output has the filename {{{output}}}, but is sometimes called ''PRE''. The preprocessor takes the {{{output.sas}}} file generated by the translator and adds three sections. The common sections are described in TranslatorOutputFormat.

== Preprocessor file format ==

The following sections are added:

  1. [[#sg|Successor Generator section]]
  1. [[#dtg|Domain Transition Graphs section]]
  1. [[#cg|Causal Graph section]]

<<Anchor(sg)>>
=== Preprocessor file format: Successor Generator section ===

This section is a textual representation of the successor generator that is used when the search computes a state's successors.

<<Anchor(dtg)>>
=== Preprocessor file format: Domain Transition Graphs section ===

There is one section {{{begin_DTG ... end_DTG}}} for each variable of
the problem. The k-th section of this kind corresponds to the DTG for
variable #k.

Each section has the following structure:

{{{
begin_DTG
[Block for value 0]
[Block for value 1]
...
[Block for last value]
end_DTG
}}}

Each block describes the outgoing arcs of the corresponding node in
the DTG. So for example, the fifth block (#4) in the third (#2) DTG
section describes the outgoing transitions in the DTG for variable #2
for the value #4. Such a value block looks like follows:

{{{
number of transitions
[description of first transition]
[description of second transition]
...
[description of last transition]
}}}

Each description of a transition looks like the following:

{{{
target value
operator/axiom number
number of conditions for the transition
variable/value pair for the first transition condition
variable/value pair for the second transition condition
...
variable/value pair for the last transition condition
}}}

The "target value" is the value for the DTG variable that is achieved
by the transition.

The operator/axiom number is the number of the operator or axiom that
is associated with the transition. (Whether it refers to an axiom or
operator depends on whether the DTG variable is derived or not.)
Operators and axioms are numbered in the order in which they appear in
the PRE file; counting starts from 0 in both cases.

The description of the variable/value pairs is the same as elsewhere
(e.g. in operator preconditions).

For example, the description for a given transition could look like this:

{{{
1
16
2
4 0
40 0
}}}

This means that this transition reaches value #1, corresponds to
operator or axiom #16, and has two associated conditions: variable #4
must have the value 0, and variable #40 must also have the value 0.

<<Anchor(cg)>>
=== Preprocessor file format: Causal Graph section ===

This has a similar structure as a DTG description. It looks like this:

{{{
begin_CG
[Block for variable #0]
[Block for variable #1]
...
[Block for last variable]
end_CG
}}}

Each variable block describes the outgoing arcs for this vertex of the
graph, in this format:

{{{
number of arcs
[description of first arc]
[description of second arc]
...
[description of last arc]
}}}

Each arc description is a pair {{{target weight}}}
where target is the variable (i.e., causal graph vertex) that the arc
points to, and weight is a "weight" for this arc (the number of DTG transitions that induce this
arc). The weight information is not currently used for anything in
particular; it is included as an additional piece of information.