Wie hängt das Stapeln von Orangen in 24 Dimensionen mit dem Empfang und der Dekodierung von Signalen der Voyager zusammen?

Ich habe Sphere Packing Solved in Higher Dimensions gehört ; Ein ukrainischer Mathematiker hat das jahrhundertealte Sphärenpackungsproblem in den Dimensionen acht und 24 gelöst und dort die Abschrift gelesen.

Mathematiker untersuchen Kugelpackungen seit mindestens 1611, als Johannes Kepler vermutete, dass die dichteste Art, gleich große Kugeln im Weltraum zusammenzupacken, die bekannte pyramidenförmige Anhäufung von Orangen ist, die man in Lebensmittelgeschäften sieht. Trotz der scheinbaren Einfachheit des Problems wurde es erst 1998 gelöst, als Thomas Hales , jetzt von der University of Pittsburgh, schließlich Keplers Vermutung auf 250 Seiten mathematischer Argumente in Kombination mit Mammut-Computerberechnungen bewies .

später:

Höherdimensionale Kugelpackungen sind schwer zu visualisieren, aber sie sind äußerst praktische Objekte: Dichte Kugelpackungen sind eng mit den fehlerkorrigierenden Codes verbunden, die von Mobiltelefonen, Raumsonden und dem Internet verwendet werden, um Signale durch verrauschte Kanäle zu senden . Eine hochdimensionale Kugel ist einfach zu definieren – es ist einfach die Menge von Punkten im hochdimensionalen Raum, die einen festen Abstand von einem bestimmten Mittelpunkt entfernt sind.

und später

Das Leech-Gitter ist ähnlich aufgebaut, indem Kugeln zu einer weniger dichten Packung hinzugefügt werden, und es wurde fast im Nachhinein entdeckt. In den 1960er Jahren untersuchte der britische Mathematiker John Leech eine 24-dimensionale Packung, die aus dem „Golay“-Code konstruiert werden kann, einem fehlerkorrigierenden Code, der später verwendet wurde, um die historischen Fotos von Jupiter und Saturn zu übertragen, die von den Voyager-Sonden aufgenommen wurden . Kurz nachdem Leechs Artikel über diese Packung in Druck ging, bemerkte er, dass in den Löchern der Packung Platz für zusätzliche Kugeln war, wodurch sich die Packungsdichte verdoppeln würde.

Frage: Wie hängt das Stapeln von Orangen in 24 Dimensionen mit dem Empfang und der Dekodierung von Signalen von den Voyagern zusammen? Ist es möglich , der Space SE-Community auf relativ einfache Weise zu erklären, oder eine Quelle zu finden, die die für diese Site geeignete Verbindung erklärt ?


Thomas Hales, abgebildet im Jahr 1998, benutzte einen Computer, um eine berühmte Vermutung über die dichteste Art, Kugeln zu stapeln, zu beweisen.

Thomas Hales, abgebildet im Jahr 1998, benutzte einen Computer, um eine berühmte Vermutung über die dichteste Art, Kugeln zu stapeln, zu beweisen.

Besser geeignet für die Math SE. Die Frage vereinfacht sich zu "Was ist die Verbindung zwischen 24-dimensionaler Kugelpackung und Golay-Code ?"
Ich stimme zu, dass dies entweder an Mathematik SE oder Signalverarbeitung SE gehen sollte - dafür gibt es die Experten.
@asdfex die Experten dort werden Antworten schreiben, die ich nicht verstehe. Ich habe hier darum gebeten, eine Erklärung aus Sicht der Voyager-Hardware und -Algorithmen zu erhalten. Diese Leute werden nicht zurückgehen und sich die NASA-Technologie der 1970er Jahre ansehen und aus dieser Perspektive schreiben. In Zukunft, sobald ich es besser verstehe, könnte ich (oder auch nicht) eine tiefergehende Frage zum 21. Jahrhundert wagen. Deshalb habe ich geschrieben : "Ist es möglich, der Space SE-Community auf relativ einfache Weise zu erklären, oder eine Quelle zu finden, die die für diese Site geeignete Verbindung erklärt?" FYI Ich habe einen Link im DSP SE-Chatraum gepostet.
@RussellBorogove siehe meinen Kommentar oben. Diese Frage , wie sie geschrieben wurde , ist aus den erläuterten Gründen hier besser geeignet. Im Chatroom von DSP SE habe ich diese Frage gepostet und Asked in Space SE hinzugefügt, um nach einer Antwort zu suchen, die für dieses Publikum geeignet ist.
Daran ist nichts spezifisch für Raumsonden. Sie sind nur ein gutes Beispiel für Geräte, die Fehlerkorrekturcodes in der Kommunikation verwenden (terrestrische Kommunikation stört sich oft nicht daran, weil es einfacher ist, Fehler zu erkennen und erneut zu übertragen). Aber die Kommunikation mit entfernten Sonden hat eine so geringe Bandbreite, dass dies unerschwinglich wäre.
@Barmar Ihr dritter Satz erklärt genau, warum Ihr erster Satz nicht richtig ist.
@uhoh Aber wie das Zitat sagt, wird diese Technologie auch in Mobiltelefonen und im Internet verwendet, wenn auch nicht so häufig.
@Barmar, aber tauchen die 24-Bit-Wörter (in Bezug auf 24 Dimensionen), die die Voyager verwenden, sehr oft in anderen Kontexten auf? Derzeit übertragen sie in der Größenordnung von 20 Bit pro Sekunde , es gibt nicht allzu viele Beispiele für diese Art von niedriger Datenrate außer LoRa
@uhoh Ich denke, sie sprechen nur über die allgemeine mathematische Theorie der dichten Kugelpackung, nicht speziell über 24 Dimensionen.
Ich verstehe, Sie sprechen speziell über den Golay-Code, nicht über die allgemeinere Mathematik.
@uhoh (&Barmar), das Überwältigende ist in der Tat, wie diese Männer und Frauen die Verbindungen zwischen so weit entfernten Feldern hergestellt haben (die ich immer noch nicht begreifen kann). Diese Fehlercodes, so "perfekt" sie auch sind (in ihrer Sphärenverpackungsleistung), sind nach heutigen Maßstäben ziemlich schwach (siehe die Umfrage von Costello The road to Channel Capacity ). Dank uhoh habe ich eine weitere Facette von Keplers Brillanz entdeckt. Ich erfuhr, dass er die Kugelpackungsgrenze (für Dimension 3) vermutete und berechnete, während er versuchte, die Form von Schneeflocken zu erklären. Exquisit!

Antworten (1)

All die unterschiedlichen Datenworte, die ein Sender senden und ein Empfänger erkennen kann, kann man sich als Punkte vorstellen, die in einem großen Raum angeordnet sind.

Bei der Auswahl einer Datencodierung zur Fehlererkennung und -korrektur geht es darum, gültige Codewörter in einem bestimmten Abstand voneinander zu halten. Infolgedessen lässt eine geringfügige Änderung ("Bewegung") eines gültigen Worts es nicht wie ein anderes gültiges Wort aussehen.

Da ich keine Zeichnungen von 24-dimensionalen Kugeln und Hyperwürfeln machen werde, werde ich diese Antwort auf drei Dimensionen beschränken.

3-Bit-Beispiel

Stellen Sie sich ein Datenwort vor, das aus drei Binärziffern besteht. Wir können sie in Form eines Würfels anordnen, indem wir jede Ziffer als Koordinate in einer Dimension behandeln:

Jeder Übertragungsfehler, also ein Bit, das eine '0' mit einer '1' verwechselt oder umgekehrt, entspricht einer Bewegung um einen Schritt entlang einer der Kanten dieses Würfels.

Bei normaler, alltäglicher Kommunikation mit ausreichend niedrigen Fehlerraten können wir alle Codepunkte als valide behandeln:

Aber jedes umgedrehte Bit führt zu einem anderen gültigen Wort. Wenn wir also jedes zweite gültige Wort entfernen, erhalten wir Folgendes:

Jetzt sind alle gültigen Wörter zwei Kanten voneinander entfernt. Ein umgedrehtes Bit bringt uns zu einem ungültigen Wort und wir wissen, dass ein Fehler aufgetreten ist, aber wir können ihn nicht korrigieren, weil es drei mögliche Bits gibt, die umgedreht sein könnten. Dies wird als Code "0 Fehler korrigierend, 1 Fehler erkennend" bezeichnet.

Um die Robustheit zu verbessern, entfernen Sie zwei weitere gültige Codewörter:

Jetzt sind alle gültigen Wörter drei Kanten voneinander entfernt. Wenn ein Bit umkippt, gelangen wir zu einem ungültigen Wort, aber wir können immer noch sagen, woher wir kamen. Wenn zwei Bits vertauscht sind, können wir das Wort nicht korrigieren, da ein anderes gültiges Wort näher am falschen Code liegt als das richtige Wort. Daher wird dieser Code "1 Fehlerkorrektur, 2 Bit-Erkennung" [*] genannt. Das ist das Beste, was wir mit unseren einfachen 3-Bit-Codewörtern erreichen können.

4-Bit-Code-Erweiterung

Wenn Sie ein weiteres Bit hinzufügen, um 4-Bit-Codewörter zu haben, können Sie den Abstand zwischen gültigen Punkten auf drei Kanten des dann 4-dimensionalen Würfels erhöhen. Dies ergibt eine weitere Ebene der Fehlerminderung: Wenn zwei Bits vertauscht werden, erreicht man ein ungültiges Wort genau „in der Mitte“ mehrerer gültiger Wörter. Sie können sich nicht entscheiden, welches das richtige sein könnte, aber zumindest wissen Sie, dass zwei Bits umgedreht sind. Diese Art von Code wird "1 Fehlerkorrektur, 3 Fehlererkennung" genannt.

Reisender

Im Fall von Voyager würde dies nicht ausreichen, also entschied man sich für ein 24 Bit langes Codewort. Von den insgesamt 16 Millionen Codewörtern haben sie nur 4096 als gültig definiert. Dh 12 Bits tragen eigentliche Informationen und weitere 12 werden zur Fehlerkorrektur verwendet. Dies führte zu einem Code "3 Fehler korrigieren, 7 Fehler erkennen". Dh wenn in irgendeinem Wort 3 Bit falsch empfangen wurden, könnte es noch richtig korrigiert werden und wenn bis zu 7 Bit gekippt werden; Zumindest wäre bekannt, dass etwas nicht stimmt. Dieser Code könnte auf die gleiche Weise dargestellt werden, wie ich es oben als die Ecken eines 24-dimensionalen Hyperwürfels getan habe.

Wie hängt das nun mit dem Packen von Kugeln zusammen? Tatsächlich zeigen die drei Bilder die dichteste Packung von Kugeln mit Durchmessern von 1 , 2 Und 3 unter der Bedingung, dass ihre Mittelpunkte an den Ecken des Würfels liegen müssen.[**]

Das sieht natürlich nicht besonders spektakulär aus, wird aber deutlich anspruchsvoller, wenn wir nicht auf digitale, binäre Daten schauen, sondern einen Sender verwenden, der auch Werte dazwischen unterstützt, zB indem er kein einfaches Ein/Aus verwendet Modulation, aber fügen Sie noch eine Amplitudenmodulation hinzu. Indem wir in unserem Beispiel für jede der drei Ziffern einen weiteren Schritt (z. B. Ausschalten/Niedrig/Hoch) hinzufügen, haben wir nicht acht gültige Codewörter, sondern tatsächlich 3 3 = 27 - Beginnen Sie, Ihre Kugeln auf dieses Gitter zu packen!


[*] Beachten Sie, dass "Erkennen" nicht bedeutet, dass Sie genau sagen können, wie viele Bitfehler es gibt. Es bezieht sich auf die Anzahl von Bitfehlern, die auftreten können, bevor Sie mit einem anderen gültigen Codewort enden.

[**] Streng genommen haben wir es hier nicht mit Kugeln in einem regulären euklidischen Raum zu tun, sondern mit Hamming-Kugeln - diese werden durch die Menge der Ecken definiert, die eine bestimmte Anzahl von Kanten von ihrem Zentrum entfernt sind. Dies erklärt die Tatsache, dass in einer binären Welt nur die Ecken des Würfels gültige Punkte darstellen, während jeder andere Punkt Bruchkoordinaten hätte und einfach nicht existiert. In den hier angegebenen Beispielen gibt es praktisch keinen Unterschied zwischen den beiden.

Wie können Sie im Würfelbeispiel Fehler beheben? Sie wissen nicht, ob ein Bit oder zwei Bits umgedreht wurden. Dh der Empfang von 101 könnte 100 mit einem umgedrehten Bit sein, aber es könnte auch 011 mit zwei umgedrehten Bits sein. Auch wenn das erste wahrscheinlicher ist, ist es immer noch mehrdeutig. Ich kann nicht sehen, wie hier eine Fehlerkorrektur durchgeführt werden kann, nur erkannt.
@Innovine Ich glaube, Sie können in diesem Beispiel alle Ein-Bit-Fehler korrigieren, aber Sie können keine Zwei-Bit-Fehler erkennen. Alle Zwei-Bit-Fehler sind von einem Ein-Bit-Fehler des gegenüberliegenden Wortes nicht zu unterscheiden. Ein Zwei-Bit-Fehler wird also auf das entgegengesetzte Wort des gesendeten Wortes "korrigiert".
Indem alle Nullen und alle Einsen als ungültiger Code vorliegen (wie oben gezeigt), erkennt dieser Ansatz auch diesen großen Fehler.
Die Antwort veranschaulicht einen 3,1-Hamming-Code, der bis zu 2 Fehlerbits erkennen oder 1 Fehlerbit korrigieren kann, aber nicht beides . Durch Hinzufügen eines zusätzlichen Paritätsbits können 1-Bit-Fehler korrigiert und 2-Bit-Fehler erkannt werden, jedoch auf Kosten eines zusätzlichen Bits. de.wikipedia.org/wiki/…
@LawnmowerMan Ja. Ebenso kann der binäre Golay-Code 3 Fehler korrigieren oder bis zu 6 Fehler erkennen, aber nicht beides. (Dies ist ein Code mit Wörtern von 23 Bits.) Der erweiterte binäre Golay-Code (mit 24-Bit-Wörtern) kann 3 Fehler korrigieren und 4 Fehler erkennen. Wenn Sie nur eine Fehlererkennung wünschen, kann der erweiterte Code bis zu 7 Fehler erkennen.
In vielen realen Systemen würde der Sender saubere 0 und 1 senden, aber der Empfänger würde einen analogen Wert lesen. Dann wäre zB (0.9, 0.3, 0.6) eher 100 als 011.
Um den Zusammenhang mit „Orange Stacking“ herzustellen, müssen Sie das geometrische Konzept der „Hamming-Distanz“ einführen. So kann man zeigen, dass Hamming-Codes (und Golay-Codes) "perfekte" Lösungen des mathematischen Problems der "Kugelpackung" sind.
@NgPh Die Antwort tut dies, indem sie tatsächlich die gültigen Punkte in den Codes zeichnet. Ich denke, es könnte den Zeichnungen Orangen hinzufügen. Ich meine, grüne Kugeln? Was hat das mit Orangen zu tun? (ich scherze)
@OrganicMarble Nun, verwenden Sie image.spreadshirtmedia.com/image-server/v1/mp/compositions/… aber ersetzen Sie 1 durch 24.
@Yakk, die besagten Zeichnungen können verwirrend sein. Einige Leser übersehen möglicherweise den Punkt, dass der "Abstand" zwischen den Codepunkten die Anzahl der Kanten ist (NICHT der übliche euklidische Abstand). Zum Beispiel bedeckt in der letzten Zeichnung eine Kugel der "Größe 2", die auf (100) zentriert ist, (111), aber nicht (011). Sie können versuchen, "Orangen" (Kugeln) in diese Hamming-Geometrie zu zeichnen, und mal sehen, was Sie erreichen können.
@asdfex, Sie haben gewarnt, dass Ihre obige Antwort nur ein Anfang ist (trotzdem Kudos). Es reichte jedoch aus, um zu zeigen, wie herausfordernd Uohs Frage ist. Und diese Art von Herausforderung wird hier erklärt .
@NgPh Eigentlich ist es egal, ob wir hier von euklidischer Distanz oder Hamming sprechen - solange wir binär bleiben, müssen Sie nur die Distanz N durch ersetzen N .
@asdfex, nicht wirklich, wenn Sie in der binären Fehlerkorrektur ("harte" Fehler) arbeiten. Sie dürfen sich in Ihrem "Raum" nur in ganzzahligen Schritten von einem Punkt zum anderen bewegen. Wenn der Decoder eine Nachricht empfängt, wählt er das Codewort, das dieser Nachricht am nächsten liegt (in Bezug auf die Hamming-Distanz). Ein Fehlerabstand von 1,5 Bit hat für diesen Decoder keine Bedeutung. Es ist sehr wichtig, genau zu bestimmen, welche Entfernungsmetrik Sie beim allgemeinen Problem der "Kugelpackung" verwenden.
@NgPh Man sollte klar sein, dass das Kugelpackungsproblem, das durch das Leech-Gitter gelöst wird, die euklidische Version ist, nicht die Hamming-Version. Es ist wahr, dass die Vereinigung von Hamming-Sphären mit Radius 3, die die Golay-Codewörter umgeben, den Satz von Wörtern der Länge 23 über einem binären Alphabet vollständig abdeckt, was den Code perfekt macht. Es ist ebenso richtig, dass der erweiterte Code (von 24 Dimensionen) verwendet werden kann, um das Leech-Gitter und damit die optimale euklidische Packung zu konstruieren. Es gibt zwei unterschiedliche Kugelpackungsprobleme, die durch zwei unterschiedliche, aber verwandte Objekte (den Golay-Code und das Leech-Gitter) gelöst werden.
Ausgezeichnete Antwort. Ich würde vorschlagen zu ergänzen: Das 24 Bit lange Codewort hat 12 Datenbits und 12 ECC-Bits.
@ Will Orrick, ich darf hinzufügen, dass die Demonstration von Marina Viazoska für die Dimension 8 ebenfalls von der Ähnlichkeit zwischen dem Hamming-Code (8,4,4) und dem Gitter E8 inspiriert zu sein scheint (obwohl sie Hamming nicht erwähnt hat). Beide mathematischen Objekte erreichen ihre Kugelpackungsgrenze in ihrer jeweiligen Geometrie (Hamming vs. Euklidisch). Das ist vielleicht der Zusammenhang?
@asdfex, behalte die Ausdauer. Niemand hat bisher das Kugelpackungsproblem in euklidischen Geometrien für die Dimensionen N=4,5,6,7,9 bis 23 und >24 demonstriert!
@NgPh Ist das größer als 24 oder größer als 24 Fakultät?
@Matt Dunn, gut gesehen. Größer als 24.
Wenn ein Code 3 Fehler korrigiert und nicht mehr, dann bedeutet das, dass mindestens ein Paar Codepunkte in einem Abstand von genau 6 oder 7 voneinander entfernt ist, richtig? Andernfalls wäre der Code entweder mehr oder weniger fehlerkorrigierend. So verstehe ich zumindest diese Antwort. Aber während ein solcher Code entweder 3 oder 4 Fehler erkennen kann, sehe ich nicht, wie es 7 Fehler erkennen könnte. Das Umdrehen von mehr als 4 Bits könnte eine unentdeckte Fehlinterpretation eines Elements des zuvor erwähnten Paars als das andere erzeugen.
@JohnBollinger Ihr Verständnis scheint richtig zu sein. Beachten Sie, dass "7-Fehlererkennung" nicht bedeutet, dass Sie feststellen können, dass 7 Bits umgedreht sind - es bedeutet nur, dass Sie zufällig keinen anderen gültigen Code erhalten, wenn 7 Bits umgedreht sind. Es kann durchaus sein, dass ein Wort mit 7 umgedrehten Bits zu einem anderen, falschen, gültigen Codewort korrigiert wird.
Ja ich verstehe. Der Punkt ist, dass diese Antwort besagt: „ Dies führte zu einem Code „3 Fehler korrigieren, 7 Fehler erkennen“. zumindest wäre bekannt, dass etwas nicht stimmt “, aber das scheint widersprüchlich.
@JohnBollinger Wenn Sie das besser schreiben können ... bis zu 3 Fehler -> Korrigieren zum richtigen Wort, 4 Fehler -> Fehler, nicht korrigierbar, 5-7 Fehler: Korrigiert zum falschen Wort, 8 Fehler: gültiges Wort, kein Fehler erkannt
Wäre die Terminologie nicht ein "3 Fehler korrigierender, 4 Fehler erkennender Code"? Ich halte es für wenig relevant für die Nomenklatur, dass die Fehlerkorrekturlogik bei 5-, 6- und 7-Bit-Fehlern eingreift (was einen Gesamtwortfehler erzeugt), da diese nicht von 3-, 2- und 1-Bit-Fehler ohne Vergleich mit der Quelle. Warum wäre Ihr Vier-Bit-Code sonst nicht "1 Fehlerkorrektur, 3 Fehlererkennung"?
@JohnBollinger Die "Erkennungszahl" zählt alle Fälle, einschließlich derer, die korrigiert werden können. Im Vier-Bit-Fall habe ich es vermasselt.
DANKE, dies ist die eleganteste Erklärung für Fehlererkennung/-korrektur und Hamming-Codes, die ich gesehen habe. Habe es bisher noch nie verstanden. Toll
@John Bollinger, interpretiere es wie folgt. Wenn Sie Golay als KORREKTUR-Code verwenden, sind bis zu 3 Fehlerkorrekturen garantiert (und die Anzahl der Fehler wird auch angegeben). ALTERNATIV können Sie ihn auch als ERKENNUNGSCODE verwenden. Die Erkennung ist bis zu 7 Fehler garantiert (obwohl es Ihnen nicht sagt, wie viele). Wenn Sie es zur Korrektur verwenden, wird es bei 4 Fehlern (systematisch) ein falsches Codewort zurückgeben. Gleiches gilt für 5,6,7-Fehler. Wenn Sie es zur Erkennung verwenden, wird es mit 8 Fehlern das Codewort gerne als gültig "zertifizieren" (was natürlich falsch ist).
Eine kleine Korrektur: Für die 4-Bit-Code-Erweiterung sollten Sie sagen, dass "Sie den Abstand zwischen gültigen Punkten auf vier Kanten erhöhen können".
@JohnBollinger In Bezug auf die Terminologie ist Wikipedia nur ein Datenpunkt, aber der Artikel Blockcode besagt, dass es sich um einen Code mit Mindestabstand handelt D erkennen kann D 1 Fehler und dass es korrigieren kann ( D 1 ) / 2 Fehler. Ich denke, die Verwirrung entsteht, wenn man sagt, dass der erweiterte [8,4] Hamming-Code "1 Fehlerkorrektur, 3 Fehlererkennung" ist. Das Komma deutet darauf hin, dass der Code beides gleichzeitig tun kann, was er nicht kann – er kann nur das eine oder das andere tun. Ich denke, es ist besser, das Komma durch das Wort "oder" zu ersetzen.