5.322. permutation

DESCRIPTIONLINKSGRAPH
Origin

Derived from πšŠπš•πš•πšπš’πšπšπšŽπš›πšŽπš—πš_πšŒπš˜πš—πšœπšŽπšŒπšžπšπš’πšŸπšŽ_πšŸπšŠπš•πšžπšŽπšœ.

Constraint

πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Argument
πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚πšŒπš˜πš•πš•πšŽπšŒπšπš’πš˜πš—(πšŸπšŠπš›-πšπšŸπšŠπš›)
Restrictions
πš›πšŽπššπšžπš’πš›πšŽπš(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚,πšŸπšŠπš›)
πš–πš’πš—πšŸπšŠπš•(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)=1
πš–πšŠπš‘πšŸπšŠπš•(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|
Purpose

Enforce all variables of the collection πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚ to take distinct values between 1 and the total number of variables.

Example
(3,2,1,4)

The πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš— constraint holds since all the values 3, 2, 1 and 4 are distinct, and since they all belong to interval [1,4] where 4 is the total number of variables.

Typical
|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|>2
Symmetries
  • Items of πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚ are permutable.

  • Two distinct values of πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš› can be swapped.

Usage

See Usage slot of πšŠπš•πš•πšπš’πšπšπšŽπš›πšŽπš—πš.

Algorithm

See Algorithm slot of πšŠπš•πš•πšπš’πšπšπšŽπš›πšŽπš—πš.

Counting
Length (n)2345678910
Solutions26241207205040403203628803628800

Number of solutions for πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—: domains 0..n

ctrs/permutation-1-tikz

ctrs/permutation-2-tikz

See also

implied by: πš™πš›πš˜πš™πšŽπš›_πšŒπš’πš›πšŒπšžπš’πš.

implies: πšŠπš•πš•πšπš’πšπšπšŽπš›πšŽπš—πš_πšŒπš˜πš—πšœπšŽπšŒπšžπšπš’πšŸπšŽ_πšŸπšŠπš•πšžπšŽπšœ.

Keywords

characteristic of a constraint: all different, disequality, sort based reformulation.

combinatorial object: permutation.

constraint type: value constraint.

final graph structure: one_succ.

Cond. implications

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πš‹πšŠπš•πšŠπš—πšŒπšŽ(𝙱𝙰𝙻𝙰𝙽𝙲𝙴,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  𝙱𝙰𝙻𝙰𝙽𝙲𝙴=0.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πšŒπš‘πšŠπš—πšπšŽ(𝙽𝙲𝙷𝙰𝙽𝙢𝙴,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚,π™²πšƒπš)

Β Β Β  whenΒ  𝙽𝙲𝙷𝙰𝙽𝙢𝙴=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|-1

Β Β Β  andΒ Β  π™²πšƒπšβˆˆ[β‰ ].

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πšŒπš’πš›πšŒπšžπš•πšŠπš›_πšŒπš‘πšŠπš—πšπšŽ(𝙽𝙲𝙷𝙰𝙽𝙢𝙴,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚,π™²πšƒπš)

Β Β Β  whenΒ  𝙽𝙲𝙷𝙰𝙽𝙢𝙴=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|

Β Β Β  andΒ Β  π™²πšƒπšβˆˆ[β‰ ].

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πš•πšŽπš—πšπšπš‘_πš•πšŠπšœπš_πšœπšŽπššπšžπšŽπš—πšŒπšŽ(𝙻𝙴𝙽,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  𝙻𝙴𝙽=1.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πš•πšŽπš—πšπšπš‘_πšπš’πš›πšœπš_πšœπšŽπššπšžπšŽπš—πšŒπšŽ(𝙻𝙴𝙽,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  𝙻𝙴𝙽=1.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πš•πš˜πš—πšπšŽπšœπš_πšŒπš‘πšŠπš—πšπšŽ(πš‚π™Έπš‰π™΄,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚,π™²πšƒπš)

Β Β Β  whenΒ  πš‚π™Έπš‰π™΄=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|

Β Β Β  andΒ Β  π™²πšƒπšβˆˆ[β‰ ].

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πš–πšŠπš‘_πš—(π™Όπ™°πš‡,πšπ™°π™½π™Ί,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  π™Όπ™°πš‡=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|-πšπ™°π™½π™Ί.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πš–πš’πš—_πš—(𝙼𝙸𝙽,πšπ™°π™½π™Ί,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  𝙼𝙸𝙽=πšπ™°π™½π™Ί+1.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πš–πš’πš—_πš—πšŸπšŠπš•πšžπšŽ(𝙼𝙸𝙽,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  𝙼𝙸𝙽=1.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πš–πš’πš—_πšœπš’πš£πšŽ_πšπšžπš•πš•_πš£πšŽπš›πš˜_πšœπšπš›πšŽπšπšŒπš‘(π™Όπ™Έπ™½πš‚π™Έπš‰π™΄,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  π™Όπ™Έπ™½πš‚π™Έπš‰π™΄=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πš—πš’πš—πšπšŽπš›πšŸπšŠπš•(π™½πš…π™°π™»,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚,πš‚π™Έπš‰π™΄_π™Έπ™½πšƒπ™΄πšπš…π™°π™»)

Β Β Β  whenΒ  π™½πš…π™°π™»=(|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|+πš‚π™Έπš‰π™΄_π™Έπ™½πšƒπ™΄πšπš…π™°π™»)/πš‚π™Έπš‰π™΄_π™Έπ™½πšƒπ™΄πšπš…π™°π™».

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πš›πšŠπš—πšπšŽ_πšŒπšπš›(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚,π™²πšƒπš,𝚁)

Β Β Β  whenΒ  π™²πšƒπšβˆˆ[≀]

Β Β Β  andΒ Β  𝚁=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies 𝚜𝚘𝚏𝚝_πšŠπš•πš•πšπš’πšπšπšŽπš›πšŽπš—πš_πšŒπšπš›(𝙲,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚).

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies 𝚜𝚘𝚏𝚝_πšŠπš•πš•_πšŽπššπšžπšŠπš•_πš–πšŠπš‘_πšŸπšŠπš›(𝙽,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  𝙽≀|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|-1.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies 𝚜𝚘𝚏𝚝_πšŠπš•πš•_πšŽπššπšžπšŠπš•_πš–πš’πš—_πšŸπšŠπš›(𝙽,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  𝙽β‰₯|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|-1.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β implies πšœπšžπš–_πšŒπšπš›(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚,π™²πšƒπš,πš…π™°πš)

Β Β Β  whenΒ  π™²πšƒπšβˆˆ[=]

Β Β Β  andΒ Β  πš…π™°πš=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|*(|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|+1)/2.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  withΒ  |πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|>2

Β Β Β  andΒ Β  πšπš’πš›πšœπš(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)>πš–πš’πš—πšŸπšŠπš•(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)

Β Β Β  andΒ Β  πš•πšŠπšœπš(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)>πš–πš’πš—πšŸπšŠπš•(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)

Β Β implies πšπšŽπšŽπš™πšŽπšœπš_πšŸπšŠπš•πš•πšŽπš’(π™³π™΄π™Ώπšƒπ™·,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  π™³π™΄π™Ώπšƒπ™·=πš–πš’πš—πšŸπšŠπš•(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›).

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  withΒ  |πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|>2

Β Β Β  andΒ Β  πšπš’πš›πšœπš(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)=1

Β Β implies πšπšŽπšŽπš™πšŽπšœπš_πšŸπšŠπš•πš•πšŽπš’(π™³π™΄π™Ώπšƒπ™·,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  π™³π™΄π™Ώπšƒπ™·=2.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  withΒ  |πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|>2

Β Β Β  andΒ Β  πš•πšŠπšœπš(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)=1

Β Β implies πšπšŽπšŽπš™πšŽπšœπš_πšŸπšŠπš•πš•πšŽπš’(π™³π™΄π™Ώπšƒπ™·,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  π™³π™΄π™Ώπšƒπ™·=2.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  withΒ  |πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|>2

Β Β Β  andΒ Β  πšπš’πš›πšœπš(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)<πš–πšŠπš‘πšŸπšŠπš•(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)

Β Β Β  andΒ Β  πš•πšŠπšœπš(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)<πš–πšŠπš‘πšŸπšŠπš•(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)

Β Β implies πš‘πš’πšπš‘πšŽπšœπš_πš™πšŽπšŠπš”(π™·π™΄π™Έπ™Άπ™·πšƒ,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  π™·π™΄π™Έπ™Άπ™·πšƒ=πš–πšŠπš‘πšŸπšŠπš•(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›).

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  withΒ  |πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|>2

Β Β Β  andΒ Β  πšπš’πš›πšœπš(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|

Β Β implies πš‘πš’πšπš‘πšŽπšœπš_πš™πšŽπšŠπš”(π™·π™΄π™Έπ™Άπ™·πšƒ,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  π™·π™΄π™Έπ™Άπ™·πšƒ=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|-1.

β€’ πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš—(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  withΒ  |πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|>2

Β Β Β  andΒ Β  πš•πšŠπšœπš(πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚.πšŸπšŠπš›)=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|

Β Β implies πš‘πš’πšπš‘πšŽπšœπš_πš™πšŽπšŠπš”(π™·π™΄π™Έπ™Άπ™·πšƒ,πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚)

Β Β Β  whenΒ  π™·π™΄π™Έπ™Άπ™·πšƒ=|πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚|-1.

Arc input(s)

πš…π™°πšπ™Έπ™°π™±π™»π™΄πš‚

Arc generator
πΆπΏπΌπ‘„π‘ˆπΈβ†¦πšŒπš˜πš•πš•πšŽπšŒπšπš’πš˜πš—(πšŸπšŠπš›πš’πšŠπš‹πš•πšŽπšœ1,πšŸπšŠπš›πš’πšŠπš‹πš•πšŽπšœ2)

Arc arity
Arc constraint(s)
πšŸπšŠπš›πš’πšŠπš‹πš•πšŽπšœ1.πšŸπšŠπš›=πšŸπšŠπš›πš’πšŠπš‹πš•πšŽπšœ2.πšŸπšŠπš›
Graph property(ies)
πŒπ€π—_𝐍𝐒𝐂𝐂≀1

Graph class
𝙾𝙽𝙴_πš‚πš„π™²π™²

Graph model

We generate a clique with an equality constraint between each pair of vertices (including a vertex and itself) and state that the size of the largest strongly connected component should not exceed one. Finally the restrictions express the fact that all values are between 1 and the total number of variables.

PartsΒ (A) andΒ (B) of FigureΒ 5.322.1 respectively show the initial and final graph associated with the Example slot. Since we use the πŒπ€π—_𝐍𝐒𝐂𝐂 graph property we show one of the largest strongly connected component of the final graph. The πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš— holds since all the strongly connected components have at most one vertex: a value is used at most once.

Figure 5.322.1. Initial and final graph of the πš™πšŽπš›πš–πšžπšπšŠπšπš’πš˜πš— constraint
ctrs/permutationActrs/permutationB
(a) (b)