Skip to content

HAW-AI/AD-2011-WS

Repository files navigation

Algorithmen und Datenstrukturen 2011 WS

ADT

Type Permutation

Import int, String, Bool, Menge, Sequenz

Literals idn (für jede Permutationsgruppe Sn)

Operations

Permutation: Sequenz<int> ---> Permutation Erzeugt eine Permutation
Sequenz<Sequenz<int>> ---> Permutation
String -/-> Permutation Erzeugt eine Permutation aus einer Zykelschreibweise (1,2)(3)
getPermElement: int x Permutation -/-> int Gibt das gewählte Abbild, für 1 < n < Länge
cycle: Permutation x int -/-> Permutation> Gibt den gewählten Zyklus, für 1 < n < Zykelanzahl
allCycles: Permutation ---> Menge<Sequenz<int>> Gibt alle Zyklen aus der Permutation
cycleType: Permutation ---> Hashtabelle<int,int> Gibt den Zyklentyp der Permutation
fixedPoints: Permutation ---> Menge<Sequenz<int>> Gibt alle Fixpunkt aus der Permutation
inverse: Permutation ---> Permutation Gibt die invertierte Permutation
toString: Permutation ---> String Darstellung als String
toCycleNotationString: Permutation ---> String Darstellung der Zyklen als String
toCycleTypeString: Permutation ---> String Darstellung des Zyklentyps als String
equals: Permutation x Permutation ---> Bool Prüft strukturelle Gleichheit
compose: Permutation x Permutation -/-> Permutation Gibt die Komposition der beiden Permutation wieder, wenn in der gleichen Permutatiosnklasse
permutationClass: Permutation ---> int Gibt die Anzahl der Elemente der Permutation
permPower: Permutation x int ---> Permutation Gibt die Permutation^n an
order: Permutation ---> int Gibt die Ordnung der Permutation an
toTranspositions: Permutation ---> List<Permutation> Wandelt die Permutation in eine Transpositionsdarstellung um
toTranspositionString: Permutation ---> String Wandelt die Permutation in eine Transpositionsdarstellung in Stringform um
Sign: Permutation ---> [-1; 1] Gibt an ob die Permutation even(1) oder odd(-1) ist.
rank: Permutation ---> int Gibt den Rank der Permutation an.
unRank: Permutation x int ---> Permutation Gibt die Permutation für den gewählten Rank

Axioms

σ: Permutation σ ∈ S1

cycle(σ ,1) = fixedPoints(σ)

inverse(σ) = σ

inverse(σ) = compose(σ,σ)

compose(σ,inverse(σ)) = σ

equals(σ,σ) = true

σ1,σ2,σ3,id :Permutation σ1,σ2,σ3,id ∈ Sn

n : Integer n ∈N && n!=0

id(σ1) = id;

id(id) = id;

compose(σ1,compose(σ2,σ3)) = compose(compose(σ1,σ2),σ3)

!equals(id, σ1) => |fixedPoints(σ1)| < n

inverse(inverse(σ3)) = σ3

equals(σ1,σ2) = equals(σ2,σ1)

equals(σ1,σ2) = equals(cycle(σ1), cycle(σ2))

equals(σ1,σ2) => equals(inverse(σ1), inverse(σ2))

permPower(σ1,0) = id

permPower(σ1,1) = σ1

permPower(σ1,-1) = inverse(σ1)

permPower(σ1, order(σ1)) = id

permPower(σ1,-n) = permPower(inverse(σ1), n)

cycleType(id) = [1^permutationClass(id)]

rank(unRank(n)) = n

unRank(rank(σ1)) = σ1

id = id.rank(0)

rank(id) = 0

unRank(0) = id

rank(id(σ1)) = rank(id(σ2)) = 0