Berechnen Sie anhand der Dowker-Notation eines Knotens und seiner Kreuzungszeichen sein Klammerpolynom.
Obwohl es mehr technische Definitionen gibt, ist es für diese Herausforderung ausreichend, sich einen Knoten als etwas vorzustellen, das physikalisch hergestellt wird, indem die beiden Enden einer Schnur aneinander befestigt werden. Da Knoten in drei Dimensionen existieren, verwenden wir beim Zeichnen auf Papier Knotendiagramme - zweidimensionale Projektionen, bei denen die Kreuzungen genau aus zwei Linien bestehen, einer darüber und einer darunter.
Hier sind (b) und (c) verschiedene Diagramme desselben Knotens.
Wie stellen wir ein Knotendiagramm auf Papier dar? Die meisten von uns sind nicht Rembrandt, daher verlassen wir uns auf die Dowker-Notation , die wie folgt funktioniert:
Wählen Sie einen beliebigen Startpunkt auf dem Knoten. Bewegen Sie sich in eine beliebige Richtung entlang des Knotens und nummerieren Sie die Kreuzungen, auf die Sie stoßen, beginnend mit 1 mit der folgenden Änderung: Wenn es sich um eine gerade Zahl handelt und Sie gerade über die Kreuzung fahren, negieren Sie diese gerade Zahl. Wählen Sie abschließend die geraden Zahlen aus, die 1, 3, 5 usw. entsprechen.
Lassen Sie uns ein Beispiel versuchen:
Bei diesem Knoten haben wir "1" als Ausgangspunkt gewählt und sind weiter nach rechts oben gegangen. Jedes Mal, wenn wir über oder unter ein anderes Stück des Seils gehen, weisen wir dem Kreuzungspunkt die nächste natürliche Nummer zu. Wir negieren die geraden Zahlen, die Strängen entsprechen, die über eine Kreuzung gehen, zum Beispiel [3,-12]
im Diagramm. Dieses Diagramm würde also durch dargestellt [[1,6],[2,5],[3,-12],[-4,9],[7,8],[-10,11]]
. Das Auflisten der Freunde von 1, 3, 5, 7 usw. gibt uns[6,-12,2,8,-4,-10]
.
Hier sind einige Dinge zu beachten. Erstens ist die Dowker-Notation für einen bestimmten Knoten nicht eindeutig, da wir einen beliebigen Startpunkt und eine beliebige Richtung wählen können. Anhand der Notation kann man jedoch die Struktur des Knotens vollständig bestimmen (technisch bis hin zur Reflexion seiner Hauptknotenkomponenten). Während nicht alle Dowker-Notationen mögliche Knoten bilden können, können Sie in diesem Problem davon ausgehen, dass die Eingabe einen tatsächlichen Knoten darstellt.
Um die Mehrdeutigkeit zwischen den Reflexionen eines Knotens zu vermeiden und die Lösung der Herausforderung zu vereinfachen, erhalten Sie auch eine Liste von Kreuzungszeichen als Eingabe.
Bei einer positiven Kreuzung geht die untere Linie aus Sicht der oberen Linie nach links. Bei einer negativen Kreuzung geht es nach rechts. Beachten Sie, dass die Umkehr der Richtung des Knotens geht um (dh sowohl die Umkehrung über Leitung und unter Leitung) ändert nicht die Kreuzung Zeichen. In unserem Beispiel sind die Kreuzungszeichen [-1,-1,-1,1,-1,1]
. Sie werden in derselben Reihenfolge wie die Dowker-Notation angegeben, dh für Kreuzungen mit den Nummern 1, 3, 5, 7 usw.
Im obigen Bild kann die umrissene Kreuzung im ersten Diagramm, die von der Form ist , wie in der zweiten Figur (auch als positive Glättung bezeichnet ) oder wie in der dritten Figur ( negative Glättung bezeichnet ) umgewandelt werden.
Noch verwirrt? Lassen Sie uns ein Beispiel machen und versuchen, das Klammerpolynom von (Anmerkung: Dies sind zwei Knoten, die miteinander verknüpft sind. Diese Art von Diagramm ist in dieser Herausforderung keine potenzielle Eingabe, da es sich bei den Eingaben nur um Einzelknoten handelt Zwischenergebnis im Algorithmus.)
Wir wenden zuerst Regel 3 an
Wir wenden wieder Regel 3 für beide neuen Knoten an
Wir setzen diese 4 neuen Knoten in die erste Gleichung ein.
Wenn Sie die Regeln 1 und 2 auf diese 4 anwenden, teilen Sie uns dies mit
Also, das sagen Sie uns
Herzlichen Glückwunsch zum Abschluss Ihrer Einführung in die Knotentheorie!
Eingang
Zwei Listen:
Dowker-Notation, z
[6,-12,2,8,-4,-10]
. Die Nummerierung der Kreuzungen muss bei 1 beginnen. Die entsprechenden ungeraden Zahlen[1,3,5,7,...]
sind implizit und müssen nicht als Eingabe angegeben werden.Zeichen (
1
/-1
oder wenn Sie0
/1
oderfalse
/true
oder'+'
/ bevorzugen'-'
) für die Kreuzungen, die der Dowker-Notation entsprechen, z[-1,-1,-1,1,-1,1]
.
Anstelle eines Listenpaares könnten Sie auch eine Liste von Paaren haben, z [[6,-1],[-12,-1],...
Ausgabe
[[1,-2],[5,0],[1,1],[-1,3]]
[0,1,0,5,1,0,-1]
Regeln
Dies ist ein Code-Golf Herausforderung. Keine der Standardlücken kann verwendet werden, und Bibliotheken mit Werkzeugen zur Berechnung von Dowker-Notationen oder Bracket-Polynomen können nicht verwendet werden. (Eine Sprache, die diese Bibliotheken enthält, kann weiterhin verwendet werden, nur nicht die Bibliotheken / Pakete).
Tests
// 4-tuples of [dowker_notation, crossing_signs, expected_result, description]
[
[[],[],[[1,0]],"unknot"],
[[2],[1],[[-1,3]],"unknot with a half-twist (positive crossing)"],
[[2],[-1],[[-1,-3]],"unknot with a half-twist (negative crossing)"],
[[2,4],[1,1],[[1,6]],"unknot with two half-twists (positive crossings)"],
[[4,6,2],[1,1,1],[[1,-7],[-1,-3],[-1,5]],"right-handed trefoil knot, 3_1"],
[[4,6,2,8],[-1,1,-1,1],[[1,-8],[-1,-4],[1,0],[-1,4],[1,8]],"figure-eight knot, 4_1"],
[[6,8,10,2,4],[-1,-1,-1,-1,-1],[[-1,-7],[-1,1],[1,5],[-1,9],[1,13]],"pentafoil knot, 5_1"],
[[6,8,10,4,2],[-1,-1,-1,-1,-1],[[-1,-11],[1,-7],[-2,-3],[1,1],[-1,5],[1,9]],"three-twist knot, 5_2"],
[[4,8,10,2,12,6],[1,1,-1,1,-1,-1],[[-1,-12],[2,-8],[-2,-4],[3,0],[-2,4],[2,8],[-1,12]],"6_3"],
[[4,6,2,10,12,8],[-1,-1,-1,-1,-1,-1],[[1,-10],[2,-2],[-2,2],[1,6],[-2,10],[1,14]],"granny knot (sum of two identical trefoils)"],
[[4,6,2,-10,-12,-8],[1,1,1,1,1,1],[[1,-14],[-2,-10],[1,-6],[-2,-2],[2,2],[1,10]],"square knot (sum of two mirrored trefoils)"],
[[6,-12,2,8,-4,-10],[-1,-1,-1,1,-1,1],[[1,-2],[1,6],[-1,10]],"example knot"]
]
Externe Ressourcen
Nicht notwendig für die Herausforderung, aber wenn Sie interessiert sind:
Vielen Dank an @ChasBrown und @ H.Pwiz, dass sie einen Fehler in meiner Definition der Dowker-Notation entdeckt haben