'Computes the adjacency distance between two permutations.
This metric counts the number of times a pair i,j of jobs is
adjacent in both p and p\'. If n_adj is this quantity then
the adjacency distance is n - n_adj - 1 [1]
[1] Reeves, Colin R. Landscapes, Operators and Heuristic search, Annals
of Operational Research, 86, pp 473-490. (1999)
Examples
>>> from sympy.combinatorics.permutations import Permutation
>>> p = Permutation([0, 3, 1, 2, 4])
>>> q = Permutation.josephus(4, 5, 2)
>>> p.get_adjacency_distance(q)
3
>>> r = Permutation([0, 2, 1, 4, 3])
>>> p.get_adjacency_distance(r)
4
See Also
get_precedence_matrix, get_precedence_distance, get_adjacency_matrix'

def get_adjacency_distance(self, other):

    if (self.size != other.size):
        raise ValueError('The    permutations    must    be    of    the    same    size.')
    self_adj_mat = self.get_adjacency_matrix()
    other_adj_mat = other.get_adjacency_matrix()
    n_adj = 0
    for i in range(self.size):
        for j in range(self.size):
            if (i == j):
                continue
            if ((self_adj_mat[(i, j)] * other_adj_mat[(i, j)]) == 1):
                n_adj += 1
    d = ((self.size - n_adj) - 1)
    return d
