Dies ist zum Teil das Ergebnis eines unglücklichen Austauschs auf Worldbuilding Meta :
@HDE226868 hahahaha. Keine Mathematik erlaubt. – James gestern
Ich werde einen Weg finden! – HDE 226868 gestern
Ich denke ich habe.
Dies basiert auf dem Problem des Handlungsreisenden , bei dem es darum geht, die kürzeste Entfernung zwischen einer bestimmten Anzahl von Punkten zu finden. Das ist, wie Mathematiker schnell herausfanden, viel schwieriger als es scheint.
Das Szenario:
In einer mittelerdähnlichen Welt ist ein Zauberer dafür verantwortlich, ein Netzwerk kleiner Dörfer zu patrouillieren, um die Menschen in der Gegend vor Schaden zu bewahren. Die Dorfbewohner wissen nichts von seinen Fähigkeiten, nur dass er ein exzentrischer alter Mann ist, der herumwandert. Sie wollen auch nicht mit ihm interagieren, weil sie ihn fürchten – insgesamt sind sie ziemlich fremdenfeindlich.
Eines Tages erleidet der Zauberer jedoch einen Anfall von Amnesie. Er erinnert sich an vieles, wer er ist, aber er vergisst, wie man am schnellsten zwischen den Dörfern hin- und herkommt. Er merkt schnell, dass es mehrere Wege von einem Dorf zum anderen gibt, aber nur einer der kürzeste ist.
Wie kann er herausfinden, welche Route er durchfahren soll? Er verwendet eine Annäherung: Reise in das nächstgelegene Dorf, in dem er noch nicht war.
Einige Einschränkungen:
Hinweis: Ich hatte nicht vor, Magie zuzulassen. Das heißt, ich habe das ursprünglich nicht angegeben, daher halte ich Cort Ammons Antwort für vollkommen in Ordnung, zumal sie ziemlich clever ist. Zukünftige Antworten: Bitte verwende keine Magie! Danke schön.
Jeder Zauberer, der sich bewusst ist, dass er Kräfte hat, sollte wahrscheinlich sehr freundlich zu jedem sein, dem er begegnet. Du weißt nie, wen du vielleicht in der Vergangenheit beleidigt hast, also ist es ratsam, Wiedergutmachung zu leisten, bis du dich an mehr erinnerst.
Nachdem Sie zu jedem, den Sie treffen, freundlich sind (zumindest zu den wenigen, die sich Ihnen nähern) und im Allgemeinen versuchen, gutes Karma zu verdienen, werden Sie vielleicht feststellen, dass ein Naturzauberer auf Sie zukommt. Er fragt höflich, warum du ständig drei Meter in die Luft springst, weil es die Streifenhörnchen stört. Wenn sie sich nicht auf den Winter vorbereiten, werden sie verhungern.
Du erklärst dem Naturzauberer deinen Wunsch nach einem Weg zwischen allen Dörfern. Er fängt an, eine Karte und ein paar Zahlen zu kritzeln, aber du schüttelst den Kopf. Du erklärst, dass du nicht weißt warum, aber du bist dir ziemlich sicher, dass du Mathe nicht benutzen darfst. Er hebt eine Augenbraue und fragt: „Alles Mathe?“ Sie zucken mit den Schultern und erwähnen, dass Sie der Meinung sind, dass die Aufgabe wahrscheinlich schwierig genug ist, um einen mathematischen Ansatz zuzulassen. Du denkst, es wäre in Ordnung, wenn wir ein wenig schummeln und den Kompass und das Lineal verwenden, das du bequem zur Hand hast, um den Kreis zu quadrieren, wenn es als Teil der Lösung helfen würde, aber mehr Schummeln kannst du nicht zulassen. Leider haben Sie vergessen, wie man die Quadratur des Kreises macht, also ist es vielleicht nicht so hilfreich für einen Cheat.
Der Naturzauberer klatscht in die Hände und lächelt! "Die Natur macht alle möglichen erstaunlichen Dinge ohne Mathematik!" ruft er aus. Er beschwört etwas Magie herauf und Ameisen strömen aus mehreren Ameisenhaufen hervor. Er erklärt den Ameisen das Problem und gibt ihnen die Aufgabe, den kürzesten Weg für dich zu finden!
Sie danken dem Zauberer für seine Bemühungen und er fordert Sie auf, ein paar Stunden zu warten, bis die Ameisen das Land erkundet und den besten Weg gefunden haben. Er schlängelt sich davon, während Sie darüber nachdenken, wie viele Sieben-Sekunden-Intervalle es dauern wird, um Ihre Füße für ein paar Stunden von diesem von Ameisen verseuchten Boden fernzuhalten.
Ameisen sind erstaunlich gut darin, Wege in euklidischen Räumen zu finden. Tatsächlich sind sie so gut, dass wir ihren pheromonbasierten Ansatz oft in unseren Optimierungsalgorithmen nachahmen; sie funktionieren genauso gut!
Ich habe gerade mit einer Schnur herumgespielt und bin auf diese gekommen. Ich habe keine Ahnung, wie gut es in allen Fällen funktioniert. Es scheint für den Beispielfall, den ich hatte, zu funktionieren. Wenn jemand weiß, wo ich mehr Informationen über diese Art von Dingen finden kann, würde ich gerne in den Kommentaren hören.
Damit aus dem Weg, weiter mit der Show:
Mithilfe einer Karte (er geht in den örtlichen Kartenladen, der Dorfbewohner rennt weg, er nimmt die Karte) findet er alle Dörfer, die er besuchen muss.
Befestige an jedem Dorf eine Sicherheitsnadel, Schlaufe oder einen Haken. (Ich habe Sicherheitsnadeln verwendet, da ich welche zur Hand hatte)
Führen Sie eine Schnur entlang der Straßen oder Wege zwischen den einzelnen Dörfern. Binden Sie jedes Ende an die Sicherheitsnadel / Schlaufe / Haken.
Fügen Sie jeder Stecknadel ein Etikett mit dem Namen des Dorfes hinzu. Der Grund dafür wird klar werden.
Ihre Karte sollte ungefähr so darüber stehen:
Nehmen Sie nun den längsten Pfad auf. Halten Sie es so hoch, dass die beiden Sicherheitsnadeln an jedem Ende auf gleicher Höhe sind.
Schütteln Sie das Netz aus, nehmen Sie dann die unterste Aufhängeschlaufe und heben Sie sie auf und halten Sie sie hoch, sodass die Stifte an beiden Enden auf gleicher Höhe mit den Stiften der ersten Schlaufe sind.
Wiederholen Sie diesen Vorgang, bis Sie die Mindestanzahl von Strings übrig haben.
Haken Sie die Saiten, die Sie über der Linie halten, aus dem Netz aus. Das war ein bisschen schwierig, sie alle zu entwirren.
Sie sollten jetzt eine einzelne Reihe von Sicherheitsnadeln haben, die jede Stadt verbindet.
Die Nachteile dieser Methode:
Die Einrichtung dauert ziemlich lange.
Sie müssen eine Karte stehlen.
Es ist sehr einfach, mit dem Netz in einem vollständigen Knoten zu enden.
Ich bin nicht davon überzeugt, dass es Ihnen immer die richtige Antwort geben wird. (Aber es scheint nah)
Er sollte eine Variation eines genetischen Algorithmus verwenden . Dies ist eine Technik, die natürliche Evolutionspfade nachahmt, um Probleme zu lösen, die ansonsten äußerst schwierig sind.
Nehmen wir an, es gibt vier Dörfer, zwischen denen sich jeweils drei Pfade unterschiedlicher Länge befinden.
Beim ersten Mal wählt der Assistent zufällig aus: AB1 -> BC2 -> CD3 -> DA1
Das nächste Mal wählt er andere Routen: AB2 -> BD3 -> DC1 -> CA2
Und beim dritten Mal: AC3 -> CD2 -> DB3 -> BA1
Jetzt holt er alle seine Notizen heraus und wie lange er für jeden Weg gebraucht hat, und er beginnt, die besten Routen zu kombinieren und zu mischen. Er verwirft diejenigen, die viel zu lange gedauert haben, und behält und mischt nur die Muster, die relativ schneller waren. Dann beginnt er wieder bei Schritt 1, aber mit seinen neuen gemischten Mustern, und wiederholt dies mehrmals.
Irgendwann wird er eine Reihe sehr guter Pfade haben – sie werden nicht unbedingt optimal sein, aber sie werden nahe beieinander liegen.
Ein einfacher Algorithmus, den ich für eine relativ kleine Anzahl von Stopps verwende, ist dieser:
Dies gibt nicht die optimale Antwort , aber es gibt eine gute. Wenn die Anzahl der Städte kleiner ist (z. B. < 10), ist es manchmal offensichtlich, wie die Route verkürzt werden kann.
Es stellt sich heraus, dass mein selbst entwickelter Ansatz eine Variante des Minimum-Spanning-Tree-Ansatzes ist .
Monika Cellio