symmetrische Gruppe

Neue Frage »

saralein1 Auf diesen Beitrag antworten »
symmetrische Gruppe
Hallo!

ich hätte eine frage..
gibt es eine Schema nach dem man die symmetrische Grupper erzeugen kann?
Ich muss das nämlich programmiern.. und weiß nicht wirklich wie ich das angehen soll.

viel könnt ihr mir helfen.. das wär toll..

lg saralein
JochenX Auf diesen Beitrag antworten »

inwiefern erzeugen!?
kannst du deine frage genauer formulieren?

jede symmetrische gruppe S_n wird zb. von den transpositionen erzeugt, aber ich weiß nicht, ob du sowas meinst....
saralein1 Auf diesen Beitrag antworten »

meine frage ist wie ich alle Elemente der symm. Gruppe bekomme.

dh... bei S3
123
132
213
231
312
321

aber ich bruach es halt bis zu S8 . dh will ich mir ein programm schreiben, damit ich das nicht mit der hand berechen muss... da das 40320 permutationen wären.
Meine frage ist nur wie ob mir wer helfen kann wie ich meinen algorithmus angehen soll...

lg saralein
Stellina Auf diesen Beitrag antworten »

Die Definition von symmetricher Gruppe sollte ja bekannt sein...
und die Frage hat sich glaub ich darauf bezogen, welches Schema zum Erzeugen existiert, damit man das schrittweise fürs Programmieren nachvollziehen kann.

Erst nachdenken, dann antworten...

Liebe Grüße
Leopold Auf diesen Beitrag antworten »

Hier eine Pascal-Prozedur aus meinem Vorrat. Sie berechnet zu einem Wort das lexikographisch nächste Wort. Wenn man also z.B. wort mit dem Wert 'NOT' übergibt, wird nach Ablauf der Prozedur in wort der Wert 'NTO' zurückgeliefert. Du kannst sie ja einmal umschreiben und auf deine Bedürfnisse anpassen. Nur Folgendes zur Erklärung: dec(i) verringert den Wert der Variable i um 1. Mit wort[i] wird der i-te Buchstabe des in wort enthaltenen Strings angesprochen. Die Numerierung in Pascal-Strings beginnt mit 1.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure naechstesWort(var wort: String);
var
  i,j,n:            Integer;
  start,gefunden:   Boolean;
  buchstabe,ersatz: Char;
begin
  n:=length(wort);
  i:=n;
  repeat
    dec(i);
    start:=i=0;
    if not start then gefunden:=wort[i]<wort[i+1];
  until start or gefunden;
  if not start
  then begin
    buchstabe:=wort[i];
    j:=n;
    while wort[j]<=buchstabe do dec(j);
    ersatz:=wort[j];
    wort[i]:=ersatz;
    wort[j]:=buchstabe;
  end;
  for j:=0 to (n-2-i) div 2 do
  begin
    buchstabe:=wort[n-j];
    wort[n-j]:=wort[i+1+j];
    wort[i+1+j]:=buchstabe;
  end;
end;
JochenX Auf diesen Beitrag antworten »

wäre glaube ich insgesamt im informatikerboard besser aufgehoben

geht es dir eigentlich nur um die ausgabe aller permutationen von 1,....,n (so etwas macht leopolds programm denke ich) oder willst du die permutation selbst haben (als abbildungen)?
deine schreibweise ist da meines erachtens etwas komisch.....

wenn es dir nur um die ausgabe aller mögliche aufzählungen nach vertauschung geht, würde ich alternativ zu leos programm vielleicht auch einfach eine rekursion vorschlagen.....

aber am besten gehst du wirklich zu den infos.....
 
 
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »