summaryrefslogtreecommitdiffstats
path: root/doc/dependency_resolution/decision_making.docbook
diff options
context:
space:
mode:
Diffstat (limited to 'doc/dependency_resolution/decision_making.docbook')
-rw-r--r--doc/dependency_resolution/decision_making.docbook65
1 files changed, 65 insertions, 0 deletions
diff --git a/doc/dependency_resolution/decision_making.docbook b/doc/dependency_resolution/decision_making.docbook
new file mode 100644
index 000000000..5bcf84388
--- /dev/null
+++ b/doc/dependency_resolution/decision_making.docbook
@@ -0,0 +1,65 @@
+<chapter id='dependency-resolution-decision-making'>
+<title>Decision Making</title>
+<sect1 id='dependency-resolution-decision-making-dependency-expression-evaluation'>
+ <title>Dependency Expression Evaluation</title>
+ <para>
+ In terms of boolean logic, a dependency expression can
+ be expressed in disjunctive normal form (DNF), which is
+ a disjunction of conjunctive clauses. Each conjunctive clause
+ represents one possible alternative combination of dependency
+ atoms capable of satisfying the dependency expression.
+ </para>
+</sect1>
+<sect1 id='dependency-resolution-decision-making-look-ahead'>
+ <title>Look-Ahead</title>
+ <para>
+ When there are multiple combinations to choose from,
+ a look-ahead mechanism will choose an optimal combination
+ to satisfy constraints and minimize cost. The
+ following package states influence the cost calculation for
+ a given combination:
+ <itemizedlist>
+ <listitem>
+ installed
+ </listitem>
+ <listitem>
+ selected (for installation)
+ </listitem>
+ <listitem>
+ not selected (for installation)
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ In cost calculations, virtual packages by themselves are
+ considered to cost nothing since they do not directly install anything.
+ It is the dependencies of a virtual package that contribute to it's cost.
+ </para>
+ <sect2 id='dependency-resolution-decision-making-look-ahead-constraint-propagation'>
+ <title>Constraint Propagation</title>
+ <para>
+ Combinations that include packages from the "installed" or
+ "selected" categories are less costly than those that
+ include packages from the "not selected" category.
+ When a package is chosen for installation, it transitions to the
+ "selected" state. This state change propagates
+ to the cost calculations of later decisions,
+ influencing later decisions to be consistent with earlier decisions.
+ This feedback mechanism serves to propagate constraints and can
+ influence the modeling process to
+ converge on a more optimal final state.
+ </para>
+ </sect2>
+ <sect2 id='dependency-resolution-decision-making-look-ahead-expanded-search-space'>
+ <title>Expanded Search Space</title>
+ <para>
+ When evaluating virtual atoms, an expanded search space is
+ considered which recursively traverses
+ the dependencies of virtual packages
+ from all slots matching a given virtual atom. All combinations in
+ this expanded search space are considered when choosing an optimal
+ combination to satisfy constraints with minimal cost.
+ </para>
+ </sect2>
+</sect1>
+</chapter>