Die Mathe-Redaktion - 27.01.2020 19:44 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte / Top 15
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
Listenpunkt? im neuen Schwätz
ListenpunktWerde Mathe-Millionär!
ListenpunktZur Award-Gala
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 804 Gäste und 19 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matroid mire2
Matroids Matheplanet Forum Index » Mathematische Software & Apps » Polygone zeichnen mit Programmierung
Druckversion
Druckversion
Antworten
Antworten
Autor
Universität/Hochschule Polygone zeichnen mit Programmierung
Jazzbazz
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 13.06.2016
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2018-03-01


Liebe Software-Experten,

vorweg: meine Programmierkenntnisse beschränkten sich auf Java, C und Matlab. Skilltechnisch eher nicht fortgeschritten.

Derzeit lese ich ein Paper über Rhombic Tilings of Polygons.
Ganz grob geht es dort um eine Bijektion zwischen bestimmten Permutationen und Polygonen.

Es wird ein Weg dargelegt, wie eine Permutation ein Polygon bestimmt. Zudem wie man es anschließend in Vierecke einteilt, diese Nummeriert und was und warum man anschließend mit den Wegen durch dieses Objekt machen kann.

Ich würde gerne ein Programm schreiben, dass dies alles selber macht.
Eingabe: Permutation
Ausgabe: Polygon, mögliche Einteilungen usw.

Ich kann mir vorstellen, dass es Programme gibt, die geeignet sind, um Code zeichnen zu lassen.

Habt ihr eine Idee welches Programm ich mir dazu mal ansehen könnte?

Vielen Dank!

Freundliche Grüße
Jazzbazz



  Profil  Quote  Link auf diesen Beitrag Link
hyperG
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.02.2017
Mitteilungen: 861
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2018-03-01


Hallo Jazzbazz,

die Sprache ist fast egal, solange sie frei programmierbar & nicht zu langsam ist. Wichtig ist die Mathematik dahinter.

Da mir auch viele Funktionalitäten fehlten, habe ich was eigenes universelles programmiert:

Universal Diagramm

"...was und warum man anschließend mit den Wegen durch dieses Objekt machen kann..." ???

Meintest Du 3D Grafik? Auch das geht universell, wie der
universelle 3D Plotter mit zig Beispielen zeigt.

Grüße Gerd




  Profil  Quote  Link auf diesen Beitrag Link
Jazzbazz
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 13.06.2016
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2018-03-01


Vielen Dank für Deine Antwort.

Ich möchte lediglich in 2D zeichnen.

Ich habe nur gedacht, dass es vielleicht schon Programmierumgebungen oder vllt eine "Sprache" gibt, die darauf ausgelegt sind, Objekte und Formen anzuordnen.

Bevor ist mit Eclipse versuche mit meinen Skills was zu basteln wollte ich erst mal nachforschen, wie man sowas grundsätzlich machen kann.

Im einfachsten Beispiel: Ein Dreiecke zeichnen (Anordnung, Größe, Winkeln usw).

Vielleicht drücke ich mich noch nicht konkret genug aus.

Viele Grüße

Jazzbazz



  Profil  Quote  Link auf diesen Beitrag Link
hyperG
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.02.2017
Mitteilungen: 861
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2018-03-01


Dann schau mal unter

html5

und schau Dir mit rechter Maus den Quellcode an.
LineTo ist einer der einfachsten Befehle zum Zeichnen. Du brauchst nur einen html5 fähigen Browser, was Google Chrome gut kann.

Ist das einfach genug?

Noch einfacher: Polyline

links Editor rechts Bild



  Profil  Quote  Link auf diesen Beitrag Link
mire2
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 29.08.2006
Mitteilungen: 4125
Aus: Köln-Koblenz
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2018-03-01


Hi Jazzbazz!  smile

Leider bin ich ja ein Programmier-Noob, aber vielleicht ist ja GeoGebra geeignet für das, was Du möchtest.
Wenn ich das richtig verstehe, dann möchtest Du aus einer vorgegebenen Permutation nach gewissen Regeln etwas Zweidimensionales zeichnen.

Das klingt für mich so, als ob Du eine geordnete Liste als Input hast und damit etwas zeichnen lassen möchtest.
Nun, GeoGebra kann sowohl mit Listen als auch Tabellen umgehen und zeichnen bekommt das Programm prinzipiell auch hin.  wink

Ich habe mal Deinen Fachterminus in die Materialdatenbank reingeschmissen - guckst Duhier
Vielleicht reicht das ja, um einen ersten Eindruck dafür zu bekommen, ob das Programm passen könnte.

Prinzipiell ist das Programm relativ leicht zu bedienen (klar, sonst würde ich es ja gar nicht gebacken bekommen), aber auch einigermaßen komfortabel und mächtig.

Du bekommst es hier in der meiner Meinung nach besten Version 5.

Gruß
mire2




-----------------
Beherrscher der Meta-Sprache
Narr und Weiser des Clans
Einziges Mitglied des Ältestenrates
Bester Freund Metas



  Profil  Quote  Link auf diesen Beitrag Link
Ex_Senior
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2018-03-02


2018-03-01 14:59 - Jazzbazz im Themenstart schreibt:
Ich würde gerne ein Programm schreiben, dass dies alles selber macht.
Eingabe: Permutation
Ausgabe: Polygon, mögliche Einteilungen usw.

Da müsstest Du mal konkret werden, etwa mit einem Beispiel.

Ansonsten kann man Polygone auch direkt in LaTeX zeichnen:
<math>
\begin{tikzpicture}[]

\begin{axis}[
xmin=0,ymin=0,
xlabel={$x$}, ylabel={$y$},
]
\addplot+[]  coordinates {(0,0) (1,3) (2,1) (3,1) (4,0) (5,3)};
\end{axis}

\end{tikzpicture}
</math>


€dit: Irgendwie dachte ich an Polygonzüge. Das braucht man hier aber nicht.
Zur Umsetzung des Gesuchten siehe Beitrag #8.



  Profil  Quote  Link auf diesen Beitrag Link
Jazzbazz
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 13.06.2016
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, vom Themenstarter, eingetragen 2018-03-02


Vielen Dank für die bisherigen Tipps, die werde ich mir mal in Ruhe ansehen.

Ich werde gerne auch noch mal konkreter.

Bildung des Polygons durch eine Permutation:
Sei dafür $\sigma \in \mathfrak{S}_n$ eine Permutation der Symmetrischen Gruppe. Das durch diese Permutation entstehende $2n$-Polygon bezeichnen wir als $X (\sigma)$. Die Seiten dieses $2n$-Polygones haben alle die Länge $1$. Wir suchen uns nun einen Startpunkt, von dem aus wir die Seiten zeichnen. Nennen wir diesen $M$ und legen ihn als obersten Eckpunkt fest. Von diesem zeichnen wir nun $n$ Kanten entlang eines Halbkreises gegen den Uhrzeigersinn bis zu unserem untersten Eckpunkt $M'$ ein. Daraus entsteht die Hälfte  eines regulären Polygons. Dabei sprechen wir von einem regulären Polygon, wenn dieses gleichseitig und auch gleichwinklig ist. Den eingezeichneten Kanten vergeben wir nun noch die Bezeichnungen $1,2, \ldots, n$ in der Reihenfolge wie wir sie eingezeichnet haben. Der Eckpunkt $M$ ist also inzidenzt zu der Kante $1$ und der Eckpunkt $M'$ ist inzident zu der Kante $n$. $M$ und $M'$ sind an dieser Stelle die einzigen Eckpunkt mit nur einer inzidenten Kante.\\
Anschließend können wir die übrigen $n$ Kanten von $M$ aus im Uhrzeigersinn einzeichnen. Diese erhalten die Bezeichnung $\sigma(1), \sigma(2), \ldots, \sigma(n)$, wobei wir mit $\sigma(1)$ starten. Dabei wird eine Kante $\sigma(i)$ für $i \in \lbrace1, \ldots, n\rbrace$ so eingezeichnet, dass sie parallel zu der Kante mit der gleichen Bezeichnung ist. Da Permuationen bijektiv sind, kann dies nur eine andere Kante sein. Ist dieser Vorgang abgeschlossen ist der Punkt $M$ zusätzlich zur Kante $\sigma(1)$ inzident und der Eckpunkt $M'$ zur Kante $\sigma(n)$.

Für die anschließende Einteilung in Vierecke, habe ich noch kein Verfahren. Es gibt für zum Beispiel $n=5$ bereits 63 mögliche Einteilung. Am liebsten sollte mein Programm alle erstellen können.

(Definition: Einen Weg von der Ecke $M$ zur gegenüberliegenden Ecke $M'$ mit genau $n$ Kanten nennen wir \textbf{Grenze}. Einen Weg finden wir nur über angrenzende Kanten.)

Angenommen wir haben nun eine mögliche Einteilung "ein Tiling" für eine Permutation.

Dann nummerieren wir die Vierecke wie folgt
1. Wir wählen die Grenze ganz links aus.
2. Suchen anschließend eine Kachel, welche mit zwei Kanten die Grenze berührt und weisen ihr die Zahl 1 zu.
3. Diese zwei Kanten in der Grenze tauschen wir nun gegen die beiden anderen Kanten der Kachel.
4. Suche wieder eine Kachel, welche die neue Grenze mit zwei Kanten von rechts aus berührt. Weise ihr die Zahl 2 zu.
5. Wir wiederholen das Prozedere bis die letzte Grenze ganz rechts liegt und wir somit keine unnummerierte Kachel im Tiling mehr haben.

Hier ein konkreter Beispiel:
Seien $\sigma_1 = \begin{pmatrix} 1& 2 & 3\\ 3 & 2 & 1 \end{pmatrix}$ und $\sigma_2 = \begin{pmatrix} 1& 2 & 3 & 4 & 5 & 6\\ 5 & 1 & 3 & 6 & 2 & 4 \end{pmatrix}$. Dann sehen die entsprechenden $2n$-Polygone wie folgt aus:


Die Nummerierung für ein mögliches Tiling von $\sigma_2$ läuft wie folgt:
www(dot)bilder-upload(dot)eu/show.php?file=6491dd-1519986719.png

Was soll das Programm also tun:
1. Eingabe: Permutation
2. Polygon zeichnen und Nummerieren
3. Alle möglichen Tilings finden
4. Alle oder einzelene Tilings nummerieren
(Noch nicht beschrieben: 5. Alle Kanten im inneren Nummerieren
6. Alle durch das obige Verfahren gefundenen Grenzen notieren)

Das ist leider viel Text geworden.
Vielen Dank an alle, die sich mit meinem Problem weiter beschäftigen.

Freundliche Grüße

Jazzbazz



  Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 26915
Aus: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, eingetragen 2018-03-02


Ok, Jazzbazz

die Konstruktion eines Polygons hast du gut beschrieben und es ist auch gut an den Beispielen nachvollziehbar. Daß dabei Zyklen in der Permutation unbeachtet bleiben ist anscheinend gewollt.

Aber dann kommst du mit Vierecken und Grenzen, und ich steh wieder im Dunkeln. Gib mal zwei oder drei Beispiele für eine Zerlegung von <math>X(\sigma_2)</math>. Wie entstehen die Vierecke?
Dein Beispiel ist da nicht sehr aufschlußreich..
Wenn du die Bilder nicht so gigantisch groß machen würdest [5020×3474 mit Dateigröße 1MB ist völlig übertrieben], könntest du sie problemlos auf den Matheplaneten hochladen; und was soll dieses unsinnige/lästige (dot) in dem Link?

Kannst du auch kurz sagen, was der Zweck des Ganzen ist?


-----------------
Bild



  Profil  Quote  Link auf diesen Beitrag Link
Ex_Senior
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, eingetragen 2018-03-04


Ich bin da bei der langen Beschreibung vielleicht noch nicht in allen Punkten durchgestiegen, z.B. ist mir gerade nicht klar, ob die Zahlen der unteren Zeile in $\sigma_2 = \begin{pmatrix} 1& 2 & 3 & 4 & 5 & 6\\ 5 & 1 & 3 & 6 & 2 & 4 \end{pmatrix}$ vorgegeben werden sollen oder auch irgendwie berechnet werden sollen.
Das dürfte auch gehen, allerdings eher mit LuaTeX.
Oder besser: man ermittelt die untere(n) Zeile(n) mit einem beliebigen CAS, z.B SageMath (Vorteil: SageTeX) oder Mathematica, und liest sie in TikZ ein.



Allerdings ist mir, denke ich, klar wie der Graph gezeichnet werden soll.



Mit den Eingabeparametern
% Eingaben ===========================
\def\PermutationsListe{5,1,3,6,2,4}  % 3,2,1  
\def\Titel{...}
\def\Bildbreite{7cm}
% =================================

bekomme ich

<math>

% Eingaben ===========================
\def\PermutationsListe{5,1,3,6,2,4}  % 3,2,1
\def\Titel{\hspace{-3cm} \mathbf{X(\sigma_2)}}
\def\Bildbreite{6cm}
% =================================

\tikzstyle{background rectangle}=
[draw=none, fill=white!99!black, rounded corners]

\begin{tikzpicture}[show background rectangle,
font=\footnotesize,
every path/.style={thick},
point/.style={circle, radius=0pt, fill=black, inner sep=1.5pt},
AussenSetzen/.style={shift={({90+(\n-1)*360/\Ecken}:2mm)}}
]

% Polygon zeichnen
\pgfmathtruncatemacro{\Ecken}{2*max(\PermutationsListe)}
\pgfmathtruncatemacro{\LinkeKanten}{\Ecken/2}
\pgfmathtruncatemacro{\LinkeEcken}{1+\Ecken/2}
%
\pgfmathsetmacro{\Drehwinkel}{360/(2*\Ecken)}
%
\node (pol) [
draw, very thin, dashed,
minimum size=\Bildbreite,
regular polygon, regular polygon sides=\Ecken,
rotate=\Drehwinkel,
]{\rotatebox{-\Drehwinkel}{$\Titel$}};


% Alle Ecken anzeigen (zur Orientierung)
\foreach[remember=\n as \i(initially \Ecken)] \n in {1,...,\Ecken}
\path[auto,swap]
(pol.corner \i)--(pol.corner \n)
%   node[midway,red]{\i}
%   node[point]{}
%   node[red, at end,draw]{\n}
;

% Linke Kanten
\foreach[evaluate={\N =int(\n+1)}] \n in {1,..., \LinkeKanten} {%
\draw[] (pol.corner \n) -- (pol.corner \N);
%
\node[point] at (pol.corner \n) {};
\node[] at ([AussenSetzen]pol.side \n) {\n};
}%
% Start- und Endecke
\node[point, name=rechts1] at (pol.corner 1) {};
\node[above] at (pol.corner 1) {M};
\node[point] at (pol.corner \LinkeEcken) {};
\node[below] at (pol.corner \LinkeEcken) {M"};
% Permutationskanten
\foreach[count= \mi,
evaluate={\M =int(\m+1)},
evaluate={\Mi =int(\mi+1)}
] \m in \PermutationsListe
\draw[] (rechts\mi)--+($(pol.corner \M)-(pol.corner \m)$)
node[point, name=rechts\Mi]{}
node[midway, auto]{\m};
\end{tikzpicture}
</math>

bzw.


<math>

% Eingaben ===========================
\def\PermutationsListe{3,2,1}  % 3,2,1
\def\Titel{\hspace{0cm} \mathbf{X(\sigma_1)}}
\def\Bildbreite{4cm}
% =================================

\tikzstyle{background rectangle}=
[draw=none, fill=white!99!black, rounded corners]

\begin{tikzpicture}[show background rectangle,
font=\footnotesize,
every path/.style={thick},
point/.style={circle, radius=0pt, fill=black, inner sep=1.5pt},
AussenSetzen/.style={shift={({90+(\n-1)*360/\Ecken}:2mm)}}
]

% Polygon zeichnen
\pgfmathtruncatemacro{\Ecken}{2*max(\PermutationsListe)}
\pgfmathtruncatemacro{\LinkeKanten}{\Ecken/2}
\pgfmathtruncatemacro{\LinkeEcken}{1+\Ecken/2}
%
\pgfmathsetmacro{\Drehwinkel}{360/(2*\Ecken)}
%
\node (pol) [
draw, very thin, dashed,
minimum size=\Bildbreite,
regular polygon, regular polygon sides=\Ecken,
rotate=\Drehwinkel,
]{\rotatebox{-\Drehwinkel}{$\Titel$}};


% Alle Ecken anzeigen (zur Orientierung)
\foreach[remember=\n as \i(initially \Ecken)] \n in {1,...,\Ecken}
\path[auto,swap]
(pol.corner \i)--(pol.corner \n)
%   node[midway,red]{\i}
%   node[point]{}
%   node[red, at end,draw]{\n}
;

% Linke Kanten
\foreach[evaluate={\N =int(\n+1)}] \n in {1,..., \LinkeKanten} {%
\draw[] (pol.corner \n) -- (pol.corner \N);
%
\node[point] at (pol.corner \n) {};
\node[] at ([AussenSetzen]pol.side \n) {\n};
}%
% Start- und Endecke
\node[point, name=rechts1] at (pol.corner 1) {};
\node[above] at (pol.corner 1) {M};
\node[point] at (pol.corner \LinkeEcken) {};
\node[below] at (pol.corner \LinkeEcken) {M"};
% Permutationskanten
\foreach[count= \mi,
evaluate={\M =int(\m+1)},
evaluate={\Mi =int(\mi+1)}
] \m in \PermutationsListe
\draw[] (rechts\mi)--+($(pol.corner \M)-(pol.corner \m)$)
node[point, name=rechts\Mi]{}
node[midway, auto]{\m};
\end{tikzpicture}
</math>



Man kann hier natürlich auch mit den Werten etwas rumspielen, z.B.
\def\PermutationsListe{9,8,6,7,2,1,4,3,5}
liefert

<math>

% Eingaben ===========================
\def\PermutationsListe{9,8,6,7,2,1,4,3,5}
\def\Titel{\hspace{-1cm} \mathbf{X}}
\def\Bildbreite{6cm}
% =================================

\tikzstyle{background rectangle}=
[draw=none, fill=white!99!black, rounded corners]

\begin{tikzpicture}[show background rectangle,
font=\footnotesize,
every path/.style={thick},
point/.style={circle, radius=0pt, fill=black, inner sep=1.5pt},
AussenSetzen/.style={shift={({90+(\n-1)*360/\Ecken}:2mm)}}
]

% Polygon zeichnen
\pgfmathtruncatemacro{\Ecken}{2*max(\PermutationsListe)}
\pgfmathtruncatemacro{\LinkeKanten}{\Ecken/2}
\pgfmathtruncatemacro{\LinkeEcken}{1+\Ecken/2}
%
\pgfmathsetmacro{\Drehwinkel}{360/(2*\Ecken)}
%
\node (pol) [
draw, very thin, dashed,
minimum size=\Bildbreite,
regular polygon, regular polygon sides=\Ecken,
rotate=\Drehwinkel,
]{\rotatebox{-\Drehwinkel}{$\Titel$}};


% Alle Ecken anzeigen (zur Orientierung)
\foreach[remember=\n as \i(initially \Ecken)] \n in {1,...,\Ecken}
\path[auto,swap]
(pol.corner \i)--(pol.corner \n)
%   node[midway,red]{\i}
%   node[point]{}
%   node[red, at end,draw]{\n}
;

% Linke Kanten
\foreach[evaluate={\N =int(\n+1)}] \n in {1,..., \LinkeKanten} {%
\draw[] (pol.corner \n) -- (pol.corner \N);
%
\node[point] at (pol.corner \n) {};
\node[] at ([AussenSetzen]pol.side \n) {\n};
}%
% Start- und Endecke
\node[point, name=rechts1] at (pol.corner 1) {};
\node[above] at (pol.corner 1) {M};
\node[point] at (pol.corner \LinkeEcken) {};
\node[below] at (pol.corner \LinkeEcken) {M"};
% Permutationskanten
\foreach[count= \mi,
evaluate={\M =int(\m+1)},
evaluate={\Mi =int(\mi+1)}
] \m in \PermutationsListe
\draw[] (rechts\mi)--+($(pol.corner \M)-(pol.corner \m)$)
node[point, name=rechts\Mi]{}
node[midway, auto]{\m};
\end{tikzpicture}
</math>






latex
%\documentclass[]{article}
\documentclass[border=5mm, tikz]{standalone}
\usetikzlibrary{shapes.geometric, calc}
\begin{document}
 
% Eingaben ===========================
\def\PermutationsListe{5,1,3,6,2,4}  % 3,2,1
\def\Titel{\hspace{-4cm} \mathbf{X(\sigma_2)}}
\def\Bildbreite{7cm}
% =================================
 
\begin{tikzpicture}[font=\footnotesize, 
every path/.style={thick},
point/.style={circle, radius=0pt, fill=black, inner sep=1.5pt},
AussenSetzen/.style={shift={({90+(\n-1)*360/\Ecken}:2mm)}}    
]
 
% Polygon zeichnen
\pgfmathtruncatemacro{\Ecken}{2*max(\PermutationsListe)}
\pgfmathtruncatemacro{\LinkeKanten}{\Ecken/2}
\pgfmathtruncatemacro{\LinkeEcken}{1+\Ecken/2}
%
\pgfmathsetmacro{\Drehwinkel}{360/(2*\Ecken)}
% 
\node (pol) [
draw, very thin, dashed, 
minimum size=\Bildbreite,
regular polygon, regular polygon sides=\Ecken,
rotate=\Drehwinkel, 
]{\rotatebox{-\Drehwinkel}{$\Titel$}}; 
 
 
% Alle Ecken anzeigen (zur Orientierung)
\foreach[remember=\n as \i(initially \Ecken)] \n in {1,...,\Ecken}
  \path[auto,swap]
    (pol.corner \i)--(pol.corner \n)
%   node[midway,red]{\i}
%   node[point]{}
%   node[red, at end,draw]{\n}
;
 
% Linke Kanten
\foreach[evaluate={\N =int(\n+1)}] \n in {1,..., \LinkeKanten} {%
\draw[] (pol.corner \n) -- (pol.corner \N);
%
\node[point] at (pol.corner \n) {};
\node[] at ([AussenSetzen]pol.side \n) {\n};
}%
% Start- und Endecke
\node[point, name=rechts1] at (pol.corner 1) {};
\node[above] at (pol.corner 1) {M};
\node[point] at (pol.corner \LinkeEcken) {};
\node[below] at (pol.corner \LinkeEcken) {M'};
 
% Rechte Permutationskanten
\foreach[count= \mi, 
evaluate={\M =int(\m+1)}, 
evaluate={\Mi =int(\mi+1)}
] \m in \PermutationsListe
\draw[] (rechts\mi)--+($(pol.corner \M)-(pol.corner \m)$) 
node[point, name=rechts\Mi]{} 
node[midway, auto]{\m};
\end{tikzpicture}
 
\end{document}


€dit: Zur Berechnung der Anzahl der Gesamteckenzahl habe ich 'dim(\PermutationsListe)' zu 'max(\PermutationsListe)' geändert, da sonst ab 1,2,...,10 Fehler auftreten.



  Profil  Quote  Link auf diesen Beitrag Link
Jazzbazz
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 13.06.2016
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, vom Themenstarter, eingetragen 2018-03-05


2018-03-02 16:49 - viertel in Beitrag No. 7 schreibt:
Ok, Jazzbazz

die Konstruktion eines Polygons hast du gut beschrieben und es ist auch gut an den Beispielen nachvollziehbar. Daß dabei Zyklen in der Permutation unbeachtet bleiben ist anscheinend gewollt.

Aber dann kommst du mit Vierecken und Grenzen, und ich steh wieder im Dunkeln. Gib mal zwei oder drei Beispiele für eine Zerlegung von <math>X(\sigma_2)</math>. Wie entstehen die Vierecke?
Dein Beispiel ist da nicht sehr aufschlußreich..
Wenn du die Bilder nicht so gigantisch groß machen würdest [5020×3474 mit Dateigröße 1MB ist völlig übertrieben], könntest du sie problemlos auf den Matheplaneten hochladen; und was soll dieses unsinnige/lästige (dot) in dem Link?

Kannst du auch kurz sagen, was der Zweck des Ganzen ist?
Hallo viertel, danke, dass du dich hier mit einklinkst.
Zykel spielen keine Rolle.

Die Einteilung des Polygons wird in dem Paper leider nicht beschrieben. Es werden allerdings ausschließlich zu der Polygonhülle parallele Kanten verwendet. Ich werde in anderen Papern mal nachsehen ob es ein konkretes Verfahren gibt, sonst müsste ich eines entwicklen, um alle möglichen Tilings herauszufinden.
Nun ja die Grenzen spielen ja dann erst ab einem gegebenen TIling eine Rolle und sind für das Programm erst mal nur für die Nummerierung wichtig.

Was ist der Sinn des Ganzen? Wir wollen einen Bijektion zwischen der Menge von Tilings und der Menge der $C_1$-Äquivalenzklasse von reduzierten Wörtern der Permutation beweisen. Dafür sehen wir die Symmetrische Gruppe als Coxeter Gruppe präsentiert durch Transpositionen an und $C_1$ sind dabei nicht nebeneinander liegende Transpositionen.


2018-03-04 07:17 - cis in Beitrag No. 8 schreibt:
Ich bin da bei der langen Beschreibung vielleicht noch nicht in allen Punkten durchgestiegen, z.B. ist mir gerade nicht klar, ob die Zahlen der unteren Zeile in $\sigma_2 = \begin{pmatrix} 1& 2 & 3 & 4 & 5 & 6\\ 5 & 1 & 3 & 6 & 2 & 4 \end{pmatrix}$ vorgegeben werden sollen oder auch irgendwie berechnet werden sollen.
Das dürfte auch gehen, allerdings eher mit LuaTeX.
Oder besser: man ermittelt die untere(n) Zeile(n) mit einem beliebigen CAS, z.B SageMath (Vorteil: SageTeX) oder Mathematica, und liest sie in TikZ ein.



Allerdings ist mir, denke ich, klar wie der Graph gezeichnet werden soll.


Hallo cis, auch dir vielen Dank für deine bisherige Mühe und deine Hilfe. Die untere Zeile in der Zweizeilennotation von Permutationen wird vorgegeben und nicht berechnet.

Dein mit Latex geschriebenes Programm ist super und klappt in bisher allen ausprobierten Fällen ohne Probleme. In der Form habe ich Latex noch nie benutzt und bin gerade fasziniert, welche Möglichkeiten es gibt. Vielen Dank.
Hälst du es grundsätzlich für möglich, ein Verfahren, dass die Polygone einteilt, mit Latex verwirklichen zu können?


Ich bin wirklich sehr froh über eure Hilfe, das bringt mich ungemein weiter.
Ich werde nun schnellstmöglich ein Verfahren zur Einteilung der Polygone suchen/entwerfen und liefern.



  Profil  Quote  Link auf diesen Beitrag Link
Ex_Senior
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, eingetragen 2018-03-05


2018-03-05 10:29 - Jazzbazz in Beitrag No. 9 schreibt:
A. Die untere Zeile in der Zweizeilennotation von Permutationen wird vorgegeben und nicht berechnet.

Dein mit Latex geschriebenes Programm ist super und klappt in bisher allen ausprobierten Fällen ohne Probleme.

B. In der Form habe ich Latex noch nie benutzt und bin gerade fasziniert, welche Möglichkeiten es gibt.

C. Hälst du es grundsätzlich für möglich, ein Verfahren, dass die Polygone einteilt, mit Latex verwirklichen zu können?

D. Ich werde nun schnellstmöglich ein Verfahren zur Einteilung der Polygone suchen/entwerfen und liefern.


A. Dann bist Du, im Grunde genommen, mit #8 schon fertig, was die graphische Umsetzung angeht (siehe aber auch D.).

Ich war jetzt der Auffassung, dass zur (einzigen) Eingabe $n$ im Resultat alle möglichen Permutationspolygone für $(1,2,\dots,n)$ ausgegeben werden sollen.

B. Das ist ein Fehler.  smile  Einmal googlen nach TikZ oder pgfplots oder auch ein Blick in die umfangreichen Handbücher der Pakete macht schnell klar, dass die Anwendungsmöglichkeiten allein durch das Einfallsreichtum des Nutzers begrenzt sind.

Etwa mathp oder Viertel erstellen so einen Graphen auch mit anderen Programmen; allerdings -schon einen Schritt weiter gedacht- sollen die "Permutationspolygone" dereinst sicher in einem Artikel auftauchen und da ist natürlich der erwartete Mindeststandard, dass die Graphen nahtlos und automatisch platziert in den Textsatz übergehen.

Übrigens eine interessante Möglichkeit, Pemutationen zu veranschaulichen. Ist "Permutationspolygon" ein offizieller Begriff?


C. Auf jeden Fall. Abgesehen von dem in B. Gesagten ist es möglich LaTeX mit dem CAS-System Sage(Math) zu verbinden (SageTeX). (Natürlich kann auch ein Wertevorrat als txt-Datei mit anderen Programm erstellt werden und später mit TikZ bzw. pgfplots verarbeitet werden.)

D. Da müsstest Du mal sagen, was Dir da genau im Sinne schwebt.

Mit Sage bekomme ich für die Eingabe "$3$"
Sage
P = Permutations(3)
P.list()
die Ausgabe
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Out[]

Mein Ziel wäre jetzt die (automatische) Ausgabe

<math>

\def\A{\begin{pmatrix} 1& 2 & 3\\ 1 & 2 & 3\end{pmatrix}}
\def\B{\begin{pmatrix} 1& 2 & 3\\ 1 & 3 & 2\end{pmatrix}}
\def\C{\begin{pmatrix} 1& 2 & 3\\ 2 & 1 & 3\end{pmatrix}}
\def\D{\begin{pmatrix} 1& 2 & 3\\ 2 & 3 & 1\end{pmatrix}}
\def\E{\begin{pmatrix} 1& 2 & 3\\ 3 & 1 & 2\end{pmatrix}}
\def\F{\begin{pmatrix} 1& 2 & 3\\ 3 & 2 & 1\end{pmatrix}}

\def\R{\rule{3cm}{2cm}}

\begin{matrix}
\A & \B  & \C \\[1em]
\R & \R  & \R \\[1em]
\D & \E  & \F \\[1em]
\R & \R  & \R \\
\end{matrix}
</math>

wobei eben anstelle der schwarzen Rechtecke die zugehörigen Permutationspolygone aufgeführt werden sollen.
Und wie gesagt, alles schön automatisch.

Leider bin ich in Sage zur Zeit noch nicht so sehr bewandert und muss noch forschen, wie man aus der o.g. Liste die benötigten Einträge ausliest und (mit SageTeX) weiterverarbeitet.



  Profil  Quote  Link auf diesen Beitrag Link
Jazzbazz
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 13.06.2016
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.11, vom Themenstarter, eingetragen 2018-03-05


2018-03-05 13:10 - cis in Beitrag No. 10 schreibt:
2018-03-05 10:29 - Jazzbazz in Beitrag No. 9 schreibt:
A. Die untere Zeile in der Zweizeilennotation von Permutationen wird vorgegeben und nicht berechnet.

Dein mit Latex geschriebenes Programm ist super und klappt in bisher allen ausprobierten Fällen ohne Probleme.

B. In der Form habe ich Latex noch nie benutzt und bin gerade fasziniert, welche Möglichkeiten es gibt.

C. Hälst du es grundsätzlich für möglich, ein Verfahren, dass die Polygone einteilt, mit Latex verwirklichen zu können?

D. Ich werde nun schnellstmöglich ein Verfahren zur Einteilung der Polygone suchen/entwerfen und liefern.


A. Dann bist Du, im Grunde genommen, mit #8 schon fertig, was die graphische Umsetzung angeht (siehe aber auch D.).

Ich war jetzt der Auffassung, dass zur (einzigen) Eingabe $n$ im Resultat alle möglichen Permutationspolygone für $(1,2,\dots,n)$ ausgegeben werden sollen.

B. Das ist ein Fehler.  :-)  Einmal googlen nach TikZ oder pgfplots oder auch ein Blick in die umfangreichen Handbücher der Pakete macht schnell klar, dass die Anwendungsmöglichkeiten allein durch das Einfallsreichtum des Nutzers begrenzt sind.

Etwa mathp oder Viertel erstellen so einen Graphen auch mit anderen Programmen; allerdings -schon einen Schritt weiter gedacht- sollen die "Permutationspolygone" dereinst sicher in einem Artikel auftauchen und da ist natürlich der erwartete Mindeststandard, dass die Graphen nahtlos und automatisch platziert in den Textsatz übergehen.

Übrigens eine interessante Möglichkeit, Pemutationen zu veranschaulichen. Ist "Permutationspolygon" ein offizieller Begriff?


C. Auf jeden Fall. Abgesehen von dem in B. Gesagten ist es möglich LaTeX mit dem CAS-System Sage(Math) zu verbinden (SageTeX). (Natürlich kann auch ein Wertevorrat als txt-Datei mit anderen Programm erstellt werden und später mit TikZ bzw. pgfplots verarbeitet werden.)

D. Da müsstest Du mal sagen, was Dir da genau im Sinne schwebt.

Mit Sage bekomme ich für die Eingabe "$3$"
Sage
P = Permutations(3)
P.list()
die Ausgabe
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Out[]

Mein Ziel wäre jetzt die (automatische) Ausgabe

<math>

\def\A{\begin{pmatrix} 1& 2 & 3\\ 1 & 2 & 3\end{pmatrix}}
\def\B{\begin{pmatrix} 1& 2 & 3\\ 1 & 3 & 2\end{pmatrix}}
\def\C{\begin{pmatrix} 1& 2 & 3\\ 2 & 1 & 3\end{pmatrix}}
\def\D{\begin{pmatrix} 1& 2 & 3\\ 2 & 3 & 1\end{pmatrix}}
\def\E{\begin{pmatrix} 1& 2 & 3\\ 3 & 1 & 2\end{pmatrix}}
\def\F{\begin{pmatrix} 1& 2 & 3\\ 3 & 2 & 1\end{pmatrix}}

\def\R{\rule{3cm}{2cm}}

\begin{matrix}
\A & \B  & \C \\[1em]
\R & \R  & \R \\[1em]
\D & \E  & \F \\[1em]
\R & \R  & \R \\
\end{matrix}
</math>

wobei eben anstelle der schwarzen Rechtecke die zugehörigen Permutationspolygone aufgeführt werden sollen.
Und wie gesagt, alles schön automatisch.

Leider bin ich in Sage zur Zeit noch nicht so sehr bewandert und muss noch forschen, wie man aus der o.g. Liste die benötigten Einträge ausliest und (mit SageTeX) weiterverarbeitet.


A. Ist lediglich $n$ die Eingabe, wäre die Ausgabe etwas zu groß, weil ich mich für Permutationen bis mindestes $n=6$, eher aber noch größere Interessiere.
Daher möchte ich als Eingabe eine bestimme Permutation $\sigma$ auf $S_n$ verwenden. Denn selbst dann, ist die Ausgabe noch genügend große. Denn je nachdem wie die Permutation aussieht, kann es unterschiedlich viele Tilings geben. Die größte Anzahl gibt es bei $\begin{pmatrix} 1& \cdots & n\\ n & \cdots & 1\end{pmatrix}$.

B. Von Permutationspolygonen habe ich bisher noch nicht gelesen, aber der Begriff gefällt mir :)
Schön, dass dieses Thema nicht nur mir gefällt. Interessant wird es dann innerhalb der Tilings die Grenzen zu betrachten wie diese dann die $C_1$-Äquivalenzklassen definieren. (Gerne erläutere ich bei Bedarf mehr dazu.) Vielleicht kann mein Programm am Ende diese sogar auch ausgeben. Da bin ich aber noch weit entfernt und muss mich jetzt genauer mit den Programmiermöglichkeiten auseinander setzen.

C. Dann werde ich mich jetzt darauf konzentrieren und die anderen vorgeschlagenen Programme als Plan B im Hinterkopf behalten. Ich hoffe, das halten alle, die sich die Mühe gemacht haben, mir einen Rat zu geben, für in Ordnung. (Kommasetzung...)

D. Angenommen wir haben für die Permutation $ \sigma = \begin{pmatrix} 1& \cdots & n\\ n & \cdots & 1\end{pmatrix}$ alle Tilings gefunden.
Angenommen wir möchten nun für eine beliebige Permutation $\sigma '$ aus der Symmetrischen Gruppe mit der gleichen Ordnung wie $\sigma$ alle Tilings finden. Dann müsste man "nur noch" das durch $\sigma '$ bestimmt Polygon über alle Tilings legen und den ausschneiden. Ist das so verständlich?
$\Rightarrow$ TODO: Finde alle mögliche Partitionen eines regulären Polygons mit gerader Anzahl an Ecken in Vierecke. Wobei lediglich zu dem gezeichneten Polygon parallele Kanten verwendet werden dürfen.
Das ist scheinbar schwieriger als gedacht und wohl ein NP-hartes Problem. Es soll wohl dazu Algorithmen geben. Da bin ich aber noch auf der Suche, insbesondere durchstöbere ich morgen mal die Bibliothek.



  Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 26915
Aus: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.12, eingetragen 2018-03-06


Hi

2018-03-05 10:29 - Jazzbazz in Beitrag No. 9 schreibt:
Es werden allerdings ausschließlich zu der Polygonhülle parallele Kanten verwendet.
Ich habe mal einen Anfang mit möglichen Zerlegungen gemacht (das Bild stammt aus Beitrag #8):

Im linken Bild ergeben sich Parallelogramme mit Seiten parallel zur <math>7</math>, rechts parallel zur <math>9</math>.
Natürlich kann man auch von unten her ein paar <math>9</math>er und von oben her den Rest mit <math>7</math>ern erzeugen.
Das gleiche Spielchen kann man auch mit dem linken Bogen des Polygons machen. Man kann ahnen, was sich da für ein Abgrund auftut frown

Und da systematisch alle Parkettierungen zu finden dürfte übel werden.



  Profil  Quote  Link auf diesen Beitrag Link
Ex_Senior
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.13, eingetragen 2018-03-06


Achtung, ich musste ein kleine Korrektur vornehmen, da sonst ab n>9 Fehler auftreten.

2018-03-04 07:17 - cis in Beitrag No. 8 schreibt:
€dit: Zur Berechnung der Anzahl der Gesamteckenzahl habe ich 'dim(\PermutationsListe)' zu 'max(\PermutationsListe)' geändert, da sonst ab 1,2,...,10 Fehler auftreten.




  Profil  Quote  Link auf diesen Beitrag Link
Ex_Senior
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.14, eingetragen 2018-03-06


2018-03-06 03:13 - viertel in Beitrag No. 12 schreibt:


Wenn man die parallelen Kanten braucht, kann man das leicht ergänzen mit einer weiteren Schleife.

Die Eingabe ist dann:
% Eingaben ===========================
\def\PermutationsListe{9,8,6,7,2,1,4,3,5} 
\def\Titel{\hspace{-4cm} X}
\def\Bildbreite{7cm}
%
\pgfmathtruncatemacro{\ParalleleKante}{7}
\def\ParalleleKanteAn{5,...,9}
% =================================

liefert z.B.

<math>

% Eingaben ===========================
\def\PermutationsListe{9,8,6,7,2,1,4,3,5}
\def\Titel{\hspace{-4cm} X}
\def\Bildbreite{7cm}
%
\pgfmathtruncatemacro{\ParalleleKante}{7}
\def\ParalleleKanteAn{5,...,9}
% =================================

\begin{tikzpicture}[font=\footnotesize,
every path/.style={thick},
point/.style={circle, radius=0pt, fill=black, inner sep=1.5pt},
AussenSetzen/.style={shift={({90+(\n-1)*360/\Ecken}:2mm)}}
]

% Polygon zeichnen
\pgfmathtruncatemacro{\Ecken}{2*max(\PermutationsListe)}
\pgfmathtruncatemacro{\LinkeKanten}{\Ecken/2}
\pgfmathtruncatemacro{\LinkeEcken}{1+\Ecken/2}
%
\pgfmathsetmacro{\Drehwinkel}{360/(2*\Ecken)}
%
\node (pol) [
draw, very thin, dashed,
minimum size=\Bildbreite,
regular polygon, regular polygon sides=\Ecken,
rotate=\Drehwinkel,
]{\rotatebox{-\Drehwinkel}{$\Titel$}};


% Alle Ecken anzeigen (zur Orientierung)
\foreach[remember=\n as \i(initially \Ecken)] \n in {1,...,\Ecken}
\path[auto,swap]
(pol.corner \i)--(pol.corner \n)
%   node[midway,red]{\i}
%   node[point]{}
%   node[red, at end,draw]{\n}
;

% Linke Kanten
\foreach[evaluate={\N =int(\n+1)}] \n in {1,..., \LinkeKanten} {%
\draw[] (pol.corner \n) -- (pol.corner \N);
%
\node[point] at (pol.corner \n) {};
\node[] at ([AussenSetzen]pol.side \n) {\n};
}%
% Start- und Endecke
\node[point, name=rechts1] at (pol.corner 1) {};
\node[above] at (pol.corner 1) {M};
\node[point] at (pol.corner \LinkeEcken) {};
\node[below] at (pol.corner \LinkeEcken) {M"};
% Permutationskanten
\foreach[count= \mi,
evaluate={\M =int(\m+1)},
evaluate={\Mi =int(\mi+1)}
] \m in \PermutationsListe
\draw[] (rechts\mi)--+($(pol.corner \M)-(pol.corner \m)$)
node[point, name=rechts\Mi]{}
node[midway, auto]{\m};
%
% Parallele Kanten
\pgfmathtruncatemacro{\ParalleleKantePlusEins}{\ParalleleKante+1}
\foreach[evaluate={\P =int(\p+1)}] \p in \ParalleleKanteAn {%
\draw[red] (rechts\P) --+ ($(pol.corner \ParalleleKante)-(pol.corner \ParalleleKantePlusEins)$)
node[point]{}
node[midway, auto=right]{\ParalleleKante};
}%

\end{tikzpicture}

</math>

oder

<math>
% Eingaben ===========================
\def\PermutationsListe{9,8,6,7,2,1,4,3,5}
\def\Titel{\hspace{-4cm} X}
\def\Bildbreite{7cm}
%
\pgfmathtruncatemacro{\ParalleleKante}{9}
\def\ParalleleKanteAn{4,5,6,7,8}
% =================================

\begin{tikzpicture}[font=\footnotesize,
every path/.style={thick},
point/.style={circle, radius=0pt, fill=black, inner sep=1.5pt},
AussenSetzen/.style={shift={({90+(\n-1)*360/\Ecken}:2mm)}}
]

% Polygon zeichnen
\pgfmathtruncatemacro{\Ecken}{2*max(\PermutationsListe)}
\pgfmathtruncatemacro{\LinkeKanten}{\Ecken/2}
\pgfmathtruncatemacro{\LinkeEcken}{1+\Ecken/2}
%
\pgfmathsetmacro{\Drehwinkel}{360/(2*\Ecken)}
%
\node (pol) [
draw, very thin, dashed,
minimum size=\Bildbreite,
regular polygon, regular polygon sides=\Ecken,
rotate=\Drehwinkel,
]{\rotatebox{-\Drehwinkel}{$\Titel$}};


% Alle Ecken anzeigen (zur Orientierung)
\foreach[remember=\n as \i(initially \Ecken)] \n in {1,...,\Ecken}
\path[auto,swap]
(pol.corner \i)--(pol.corner \n)
%   node[midway,red]{\i}
%   node[point]{}
%   node[red, at end,draw]{\n}
;

% Linke Kanten
\foreach[evaluate={\N =int(\n+1)}] \n in {1,..., \LinkeKanten} {%
\draw[] (pol.corner \n) -- (pol.corner \N);
%
\node[point] at (pol.corner \n) {};
\node[] at ([AussenSetzen]pol.side \n) {\n};
}%
% Start- und Endecke
\node[point, name=rechts1] at (pol.corner 1) {};
\node[above] at (pol.corner 1) {M};
\node[point] at (pol.corner \LinkeEcken) {};
\node[below] at (pol.corner \LinkeEcken) {M"};
% Permutationskanten
\foreach[count= \mi,
evaluate={\M =int(\m+1)},
evaluate={\Mi =int(\mi+1)}
] \m in \PermutationsListe
\draw[] (rechts\mi)--+($(pol.corner \M)-(pol.corner \m)$)
node[point, name=rechts\Mi]{}
node[midway, auto]{\m};
%
% Parallele Kanten
\pgfmathtruncatemacro{\ParalleleKantePlusEins}{\ParalleleKante+1}
\foreach[evaluate={\P =int(\p+1)}] \p in \ParalleleKanteAn {%
\draw[red] (rechts\P) --+ ($(pol.corner \ParalleleKante)-(pol.corner \ParalleleKantePlusEins)$)
node[point]{}
node[midway, auto=right]{\ParalleleKante};
}%


\end{tikzpicture}
</math>

latex
%\documentclass[]{article}
\documentclass[border=5mm, tikz]{standalone}
\usetikzlibrary{shapes.geometric, calc}
\begin{document}
 
% Eingaben ===========================
\def\PermutationsListe{9,8,6,7,2,1,4,3,5} 
\def\Titel{\hspace{-4cm} X}
\def\Bildbreite{7cm}
%
\pgfmathtruncatemacro{\ParalleleKante}{9}
\def\ParalleleKanteAn{4,5,6,7,8}
% =================================
 
\begin{tikzpicture}[font=\footnotesize, 
every path/.style={thick},
point/.style={circle, radius=0pt, fill=black, inner sep=1.5pt},
AussenSetzen/.style={shift={({90+(\n-1)*360/\Ecken}:2mm)}}    
]
 
% Polygon zeichnen
\pgfmathtruncatemacro{\Ecken}{2*max(\PermutationsListe)}
\pgfmathtruncatemacro{\LinkeKanten}{\Ecken/2}
\pgfmathtruncatemacro{\LinkeEcken}{1+\Ecken/2}
%
\pgfmathsetmacro{\Drehwinkel}{360/(2*\Ecken)}
% 
\node (pol) [
draw, very thin, dashed, 
minimum size=\Bildbreite,
regular polygon, regular polygon sides=\Ecken,
rotate=\Drehwinkel, 
]{\rotatebox{-\Drehwinkel}{$\Titel$}}; 
 
 
% Alle Ecken anzeigen (zur Orientierung)
\foreach[remember=\n as \i(initially \Ecken)] \n in {1,...,\Ecken}
  \path[auto,swap]
    (pol.corner \i)--(pol.corner \n)
%   node[midway,red]{\i}
%   node[point]{}
%   node[red, at end,draw]{\n}
;
 
% Linke Kanten
\foreach[evaluate={\N =int(\n+1)}] \n in {1,..., \LinkeKanten} {%
\draw[] (pol.corner \n) -- (pol.corner \N);
%
\node[point] at (pol.corner \n) {};
\node[] at ([AussenSetzen]pol.side \n) {\n};
}%
% Start- und Endecke
\node[point, name=rechts1] at (pol.corner 1) {};
\node[above] at (pol.corner 1) {M};
\node[point] at (pol.corner \LinkeEcken) {};
\node[below] at (pol.corner \LinkeEcken) {M'};
% Permutationskanten
\foreach[count= \mi, 
evaluate={\M =int(\m+1)}, 
evaluate={\Mi =int(\mi+1)}
] \m in \PermutationsListe
\draw[] (rechts\mi)--+($(pol.corner \M)-(pol.corner \m)$) 
node[point, name=rechts\Mi]{} 
node[midway, auto]{\m};
%
% Parallele Kanten
\pgfmathtruncatemacro{\ParalleleKantePlusEins}{\ParalleleKante+1}
\foreach[evaluate={\P =int(\p+1)}] \p in \ParalleleKanteAn {%
\draw[red] (rechts\P) --+ ($(pol.corner \ParalleleKante)-(pol.corner \ParalleleKantePlusEins)$) 
node[point]{}
node[midway, auto=right]{\ParalleleKante};
}%
 
 
\end{tikzpicture}
 
\end{document}



  Profil  Quote  Link auf diesen Beitrag Link
Jazzbazz
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 13.06.2016
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.15, vom Themenstarter, eingetragen 2018-03-09


An dieser Stelle stocke ich nun.
Wie ihr bereits erkannt habt, ist das ein Problem, das nicht eben mal so zu lösen.
Ich finde keine Gesetzmäßigkeiten, um einen Ansatz für einen Algorithmus zu haben.
Leider finde ich auch keinen bereits bestehenden Algortihmus für dieses Problem. Wobei ich gedacht hätte, dass sich es sicher einen dafür gibt.

Angenommen man verschiebt dieses Problem auf später.
Angenommen ich betrachte nun Permutationen bis <math>n=6</math> und schreibe eine Programm, dass mir händisch Tiling für Tiling ausgibt.
Wie kann man weiter machen?

Damit wir uns in einem Tiling von <math>X(\sigma)</math> orientieren können, möchten wir zunächst den Kacheln Nummerierungen zuweisen. Das machen wir wie folgt:
\begin{enumerate}
\item Wir wählen die Grenze ganz links aus.
\item Suchen anschließend eine Kachel, welche mit zwei Kanten die Grenze berührt und weisen ihr die Zahl 1 zu.
\item Diese zwei Kanten in der Grenze tauschen wir nun gegen die beiden anderen Kanten der Kachel.
\item Suche wieder eine Kachel, welche die neue Grenze mit zwei Kanten von rechts aus berührt. Weise ihr die Zahl 2 zu.
\item Wir wiederholen das Prozedere bis die letzte Grenze ganz rechts liegt und wir somit keine unnummerierte Kachel im Tiling mehr haben.
\end{enumerate}

So sieht das in der Praxis aus:
ibb.co/hO5ev7

Schöner ist es natürlich, wenn man alle Kanten beschriften hat. Dann kann man den Grenzen nämlich noch leichter die Kanten zuordnen.

Wie sollte das händische Programm für die Tilings aussehen um die Grenzen nach dem obigen Verfahren zu erfassen und auszugeben?

Denn mit der Ausgabe der Grenzen möchte ich dann wieder weiter arbeiten. Hieraus kann man nämlich die <math>C_1</math>-Äquivalenzklassen ablesen. Jeder Schritt aus dem obigen verfahren spiegelt nämlich eine Transposition in der vorgegeben Permutation wieder.



  Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 26915
Aus: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.16, eingetragen 2018-03-09


Warum in die Ferne schweifen, denn das Gute liegt so nah razz
Leg doch bitte die Bilder in vernünftiger Größe auf dem Planeten ab!



  Profil  Quote  Link auf diesen Beitrag Link
Jazzbazz
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 13.06.2016
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.17, vom Themenstarter, eingetragen 2018-03-10


2018-03-09 16:46 - viertel in Beitrag No. 16 schreibt:
Warum in die Ferne schweifen, denn das Gute liegt so nah :-P
Leg doch bitte die Bilder in vernünftiger Größe auf dem Planeten ab!

Wie kann ich mit meinem Mac Bilder verkleinern?
Wenn ich die mit Inkscape konstruiere werden die oft so groß.



  Profil  Quote  Link auf diesen Beitrag Link
Jazzbazz
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 13.06.2016
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.18, vom Themenstarter, eingetragen 2018-03-11


Ansatz: Alle Tilings eines regulären Polygons finden.

Fact: Sei <math>T(\sigma)</math> die Menge alle Tilings für <math>\sigma</math> in der Form <math>\left( \begin{matrix}1 & \cdots & n \\ n & \cdots & 1 \end{matrix} \right)</math>. Stellen wir uns diese Menge als Graphen vor. Dabei steht jedes Tiling für eine Ecke. Zwei Ecken sind miteinander durch eine Kante verbunden, wenn die entsprechenden Tilings gegenseitig voneinander erzeugt werden können durch Flippen eines Teil-Sechsecks bestehend aus drei Kacheln.


Dieser Graph ist zusammenhängend. Heißt wenn wir von einem beliebigen Tiling ausgehen können wir durch Flippen jedes andere Tiling erhalten.

Ansatz: Wir suchen uns für beliebiges <math>n</math> ein Standard-Tiling. Also finden ein Verfahren um für jeden Reguläres Polygon ein Tiling (beliebig) zu finden. Wenn man zum beispiel oben beginnt und immer erst die kleinen Rauten macht, den Rand dann auffüllt und dann in der Mitte die restlichen Rauten verteilt kommt so etwas raus: (Klappt auch für alle anderen großen Polygone)

Angenommen wir haben nun das Standartiling. Dann finden wir andere Tilings durch Flippen. Von den neuen aus dann wieder Flippen und mit den bereits gebildeten abgleichen. Neue Speichern. Wieder Flippen... Und so weiter bis man die erwartete Anzahl an Tilings gebildet hat.

Ist sowas ein Ansatz? Ist so ein Flippen und Formen abgleich und speicher in irgendeiner Form programmiertechnisch lösbar?



  Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 26915
Aus: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.19, eingetragen 2018-03-11


Ich habe keine Lust, wegen Bildern, die doppelte Bildschirmbreite haben, beim Lesen dauernd horizontal zu scrollen. Bin damit raus aus der Nummer (obwohl es mich interessiert), wenn du nicht willens oder in der Lage bist, die Bilder vernünftig zu skalieren (und nein, den Browser werde ich deswegen auch nicht wechseln).
 confused



  Profil  Quote  Link auf diesen Beitrag Link
Ex_Senior
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.20, eingetragen 2018-03-11


@ Jazzbazz

Du könntest die Bilder einfach intern erstellen. Mit wenigen Anpassungen/Ergänzungen des TikZ-Codes.



  Profil  Quote  Link auf diesen Beitrag Link
Jazzbazz
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 13.06.2016
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.21, vom Themenstarter, eingetragen 2018-03-12


@viertel schade, trotzdem vielen Dank für Deine Hilfe!

Ich glaube mein Problem liegt darin, euer Problem nicht identifizieren zu können. Die Bilder in den Forumbeiträgen sehen bei mir im Safari und im Firefox gut aus.
Klar, beispielsweise das Flip-Bild ist groß, aber wo entstehen da die Probleme?

Naja meine Schuld, dass wir deswegen vom Thema abschweifen.



  Profil  Quote  Link auf diesen Beitrag Link
mire2
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 29.08.2006
Mitteilungen: 4125
Aus: Köln-Koblenz
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.22, eingetragen 2018-03-12


2018-03-12 10:37 - Jazzbazz in Beitrag No. 21 schreibt:
@viertel schade, trotzdem vielen Dank für Deine Hilfe!

Ich glaube mein Problem liegt darin, euer Problem nicht identifizieren zu können. Die Bilder in den Forumbeiträgen sehen bei mir im Safari und im Firefox gut aus.
Klar, beispielsweise das Flip-Bild ist groß, aber wo entstehen da die Probleme?

Naja meine Schuld, dass wir deswegen vom Thema abschweifen.

Nur kurz zur Bildproblematik:

Auch ich hatte keine Probleme mit der Bildgröße unter FF, aber es gibt wohl Probleme bei einigen Browsern bei den Bildern aufgrund der sehr hohen Pixeldichte (Vermutung).
Ein Bild von Dir ist z. B. rund 3600 Pixel breit und wenn das eins zu eins auf dem Display angezeigt wird, dann ist das Bild, je nach Auflösung des Bildschirms, fast doppelt so breit wie dieser.
In so einem Fall dann natürlich - Happy Scrolling  razz
Deshalb habe ich diese mal bei Deinen Bildern deutlich runtergefahren.
Ich selbst sehe, da ich schon vorher keine Probleme hatte, natürlich keinen Unterschied, aber ich hoffe, dass es die Probleme bei anderen löst.
Mal aufs Feedback warten und wenn es daran liegen sollte, dann halt in Zukunft auf die Pixeldichte vor dem Upload achten.
Insofern entsteht der Ärger und das Unverständnis dadurch, dass Jazzbazz - ebenso wie ich - das Problem nicht "sieht", während viertel sich fragt, wie man denn so ein Bild mit diesen Eigenschaften posten kann.
Ich sehe was, was Du nicht siehst und das ist .... megabreit.  biggrin

Gruß
mire2


-----------------
Beherrscher der Meta-Sprache
Narr und Weiser des Clans
Einziges Mitglied des Ältestenrates
Bester Freund Metas



  Profil  Quote  Link auf diesen Beitrag Link
Jazzbazz
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 13.06.2016
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.23, vom Themenstarter, eingetragen 2018-03-12


2018-03-12 11:36 - mire2 in Beitrag No. 22 schreibt:
2018-03-12 10:37 - Jazzbazz in Beitrag No. 21 schreibt:
@viertel schade, trotzdem vielen Dank für Deine Hilfe!

Ich glaube mein Problem liegt darin, euer Problem nicht identifizieren zu können. Die Bilder in den Forumbeiträgen sehen bei mir im Safari und im Firefox gut aus.
Klar, beispielsweise das Flip-Bild ist groß, aber wo entstehen da die Probleme?

Naja meine Schuld, dass wir deswegen vom Thema abschweifen.

Nur kurz zur Bildproblematik:

Auch ich hatte keine Probleme mit der Bildgröße unter FF, aber es gibt wohl Probleme bei einigen Browsern bei den Bildern aufgrund der sehr hohen Pixeldichte (Vermutung).
Ein Bild von Dir ist z. B. rund 3600 Pixel breit und wenn das eins zu eins auf dem Display angezeigt wird, dann ist das Bild, je nach Auflösung des Bildschirms, fast doppelt so breit wie dieser.
In so einem Fall dann natürlich - Happy Scrolling  :-P
Deshalb habe ich diese mal bei Deinen Bildern deutlich runtergefahren.
Ich selbst sehe, da ich schon vorher keine Probleme hatte, natürlich keinen Unterschied, aber ich hoffe, dass es die Probleme bei anderen löst.
Mal aufs Feedback warten und wenn es daran liegen sollte, dann halt in Zukunft auf die Pixeldichte vor dem Upload achten.
Insofern entsteht der Ärger und das Unverständnis dadurch, dass Jazzbazz - ebenso wie ich - das Problem nicht "sieht", während viertel sich fragt, wie man denn so ein Bild mit diesen Eigenschaften posten kann.
Ich sehe was, was Du nicht siehst und das ist .... megabreit.  :-D

Gruß
mire2
Danke, dass du dich eingeschaltete hast.

Fact (Vielleicht gut im Hinterkopf zu haben): Alle Tilings haben die gleich Kacheln, lediglich die die Anordnung ist unterschiedlich.



  Profil  Quote  Link auf diesen Beitrag Link
Jazzbazz
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 13.06.2016
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.24, vom Themenstarter, eingetragen 2018-03-19


Falls noch jemand mitliest:

Sei $\sigma \in \mathfrak{S}_n$ eine Permutation. Jede Permutation kann durch ein Produkt von Transpositionen $\tau_i = (i,i+1)$ geschrieben werden.
Sei $\tau_{i_1} \tau_{i_2} \cdots \tau_{i_m}$ ein solches minimale Produkt, heißt $m$ ist möglichst klein. Dann nennen wir $z = (i_1,i_2, \ldots, i_m)$ reduziertes Wort.
Ein reduziertes Wort legt das Tiling fest.

Dafür fangen wir bei der Grenze ganz links an und fügen von rechts die die 1. Kachel an die $i_1$ Kante, dann die 2. Kachel an die $i_2$ Kante der Grenze und so weiter.. Dabei verschiebt sich die Grenze nach jedem Schritt über die Kachel.

Im Prinzip ist es das bereits oben beschriebene Verfahren, nur umgekehrt.

Finden wir also alle reduzierten Wörter, haben wir auch alle möglichen geordneten Tilings gefunden, wenn man dieses Kontruktionsprinzip überhaupt technisch umsetzen kann.

Finde alle reduzierten Wörter: Finde ein reduziertes Wort und führe alle möglichen $C_1$- und $C_2$-Äquivalenzen aus, auch bei allen neu gefundenen Wörter.
$C_1: t_it_j=t_jt_i$  wenn $\vert i-j \vert >1$
$C_2: t_it_{i+1}t_i = t_{i+1}t_it_{i+1}$ für alle $1 \leq i \leq n-1$

Finde ein reduziertes Wort: Standardwort: $z = (n-1, n-2, \ldots, 1, n-1, n-2, \ldots , 2, \ldots , n-1)$



  Profil  Quote  Link auf diesen Beitrag Link
Ehemaliges_Mitglied
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.25, eingetragen 2018-04-05


Mein Ziel wäre jetzt die (automatische) Ausgabe

<math> \def\A{\begin{pmatrix} 1& 2 & 3\\ 1 & 2 & 3\end{pmatrix}} \def\B{\begin{pmatrix} 1& 2 & 3\\ 1 & 3 & 2\end{pmatrix}} \def\C{\begin{pmatrix} 1& 2 & 3\\ 2 & 1 & 3\end{pmatrix}} \def\D{\begin{pmatrix} 1& 2 & 3\\ 2 & 3 & 1\end{pmatrix}} \def\E{\begin{pmatrix} 1& 2 & 3\\ 3 & 1 & 2\end{pmatrix}} \def\F{\begin{pmatrix} 1& 2 & 3\\ 3 & 2 & 1\end{pmatrix}} \def\R{\rule{3cm}{2cm}} \begin{matrix} \A & \B & \C \\[1em] \R & \R & \R \\[1em] \D & \E & \F \\[1em] \R & \R & \R \\ \end{matrix} </math>

biisi duster ;)
Die Permutationen 3 er Elemente sind deren automorphismengruppe
$S_3$ die 6 elemente hat



  Profil  Quote  Link auf diesen Beitrag Link
Jazzbazz hat die Antworten auf ihre/seine Frage gesehen.
Jazzbazz wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2019 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]