Neighbourhood
Signature
Neighbourhood
Description
The Neighbourhood
type represents a particular neighbourhood
structure defined over the decision space of a given problem
instance. Neighbourhood structures are constructive or destructive if
they work with partial candidate solutions and local if they work with
complete solutions. Constructive neighbourhood structures consist of
changes that add components to partial candidate solutions yielding
partial or complete solutions. Destructive neighbourhoods structures
consist of changes that remove components from complete or partial
solutions yielding partial solutions. Local neighbourhood structures
consist of changes that leave solutions complete.
Formally, a neighbourhood structure \(\cal N\) can be defined as:
- a function \(N : S_{\pi} \to 2^{S_{\pi}}\)
- a function \(N : S_{\pi} \times S_{\pi} \to {T , F } \)
- a subset of pairs of candidate solutions \(N \subseteq S_{\pi} \times S_{\pi}\)
- a subset of candidate solutions for every solution \(s\): \(N(s) := {s' \in S | N (s, s')}\)
Neighbourhoods are also characterised by:
- their size defined as \(|N(s)|\)
- symmetricity if \(s' \in N(s) \implies s \in N(s')\)
- neighbourhood graph of \((S, N, \pi)\) a directed graph: \(G_N := (V , A)\) with \(V = S\) and \((uv) \in A \iff v \in N(u)\) (if symmetric neighbourhood then undirected graph)
Use cases
The algorithms will need to access the Neighbourhood
instances
associated with the problem. The related operations
construction_neighbourhood
, destruction_neighbourhood
and
local(-search)-neighbourhoods
are used by algorithms to determine
the instances of the Neighbourhood
types implemented.
See also
Problem, Solution, Move, construction_neighbourhood, destruction_neighbourhood, local_neighbourhood, moves.