Eine grundlegende Frage zur Mathematik
Diese Antwort wurde neu organisiert, nachdem das OP genauere Angaben zur Bedeutung und Absicht seiner Frage gemacht hatte. Ich kommentiere hier auch andere Antworten, da es schwierig ist, dies im üblichen Kommentarformat zu tun. Wenn Sie sie kommentieren, erhalten Sie auch einen zusätzlichen Einblick in die relevanten Themen.
In einer Nussschale
Ihre Intuition ist ganz richtig, dass die leere Zeichenfolge eine besondere Rolle beim Studium von Zeichenfolgen und formalen Sprachen spielt, und das ist der Grund, warum sie häufig einen speziellen Namen oder eine spezielle Notation erhält. Zeichenfolgen über einem bestimmten Satz von Symbolen bilden eine algebraische Struktur, die als Monoid bezeichnet wird, wobei die Verkettungsoperation ein neutrales Element aufweist: die leere Zeichenfolge. Siehe die Antwort von J.-E. Pin .
Sie haben auch Recht, dass es viele andere Notationen oder Darstellungen dafür geben könnte. Die Wahl der Darstellung wird durch Zweckmäßigkeit, Übersichtlichkeit und Vereinfachung des Diskurses, der Argumentation und der Berechnung bestimmt.
Wie Sie sich zu Recht fragen, besteht eine solche Annehmlichkeit darin, für alle Zeichenfolgen, einschließlich der leeren Zeichenfolge, eine einheitliche Notation zu haben. Dies kann auf verschiedene Arten erreicht werden, ob auf Papier oder im Computer. Das Beenden von Zeichenfolgen mit einem speziellen Symbol, das nicht zu den in den Zeichenfolgen enthaltenen Symbolen gehören soll, ist eine Möglichkeit, dies zu tun. Ich denke, das schlagen Sie mit EOL vor. Dies wurde vor etwa 45 Jahren von Denis Ritchie für die Programmiersprache C durchgeführt, außer dass er das Byte 0, ebenfalls NUL oder ^ @, anstelle von EOL verwendete.
Im Text kann dies mit umgebenden Anführungszeichen oder mit einem endgültigen Drehstil erfolgen ⊣. Beachten Sie jedoch, dass während der⊣allein bezeichnet die leere Zeichenfolge, es werden dann alle Zeichenfolgen beendet, was bei der Verwendung des Buchstabens ε nicht der Fall ist. Sie spielen nicht genau die gleiche syntaktische Rolle.
Grundsätzlich kann ein solches Beendigungssymbol wie EOL, ^ @ oder ⊣ kann nicht auch ein Symbol sein, das zu einer Zeichenfolge gehört, es sei denn, Sie fügen komplexere Darstellungsmechanismen hinzu.
Auf dem Computer kann die Nullreferenzzeichenfolge verwendet werden, um die leere Zeichenfolge darzustellen. Ansonsten ist es nur ein Programmierkonzept, das nichts mit dem abstrakten Konzept des Strings zu tun hat.
Ihre Frage war jedoch etwas verwirrend und nicht zu gut formuliert. Die Rede von einem " separaten Konzept " deutet eher auf semantische Fragen als auf syntaktische Repräsentation hin. Und Sie mischten gedruckte Textdarstellungen, die ε, aber nicht EOL verwenden, mit Computerdarstellungen, die das Gegenteil bewirken.
Mit vielen weiteren Details
Das ist eine seltsame Frage. Auf seine Weise wirft es auch ein oder zwei grundlegende Fragen zur Mathematik auf.
Das Verständnis solcher Probleme ist nicht offensichtlich, wie die Unzulänglichkeiten einiger Antworten offensichtlich kompetenter Benutzer und die Unzulänglichkeiten der Frage selbst belegen. Das hat mich zu dieser Frage hingezogen.
Diese beiden Themen betreffen:
richtiges Verständnis der jeweiligen Rollen und Verwendungen von Syntax und Semantik in Mathematik und Programmierung;
richtiges Verständnis der Wirkung des "Entfernens eines Konzepts aus einer bestehenden Theorie" .
Das zweite Problem, das mit Semantik zu tun hat, wurde wahrscheinlich von Logikern und möglicherweise von Wissenschaftshistorikern angesprochen. Aber ich kann mich nicht erinnern, dass ich es formell angesprochen habe (oder möglicherweise habe ich es nicht erkannt).
Eine Verwechslung zwischen Syntax und Semantik ergab sich wahrscheinlich aus der Tatsache, dass das OP von einem " separaten Konzept " spricht, bei dem er eher von einer " separaten Notation " sprechen sollte . Ein solcher Fehler ist in seinem Fall wahrscheinlich fair, da er versucht, Probleme zu verstehen. Aber es verwirrte einige Benutzer weiter, die antworteten, eindeutig Yuval Filmus und ich, als wir das Wort "Konzept" für das nahmen, was es bedeuten soll.
Über Semantik
Mir ist jetzt klar, dass es im nächsten Absatz nicht um die von Ihnen beabsichtigte Frage geht. Aber es ist die Frage, die Sie geschrieben haben und die als Semantik zu verstehen ist und die von mehreren Personen gestellt wurde, während Sie Syntax meinten (die im folgenden Syntaxteil behandelt werden soll).
Beginnen wir mit Ihrer Frage " Warum brauchen Sie ein separates Konzept, das der 'leeren Zeichenfolge'? ", Das ich so verstand: "Können wir Zeichenfolgen theoretisch und in der Programmierung verwenden, ohne jemals die leere Zeichenfolge zu berücksichtigen?" wie anscheinend Yuval Filmus.
Tatsache ist, dass wir die leere Zeichenfolge oft nicht benötigen , aber es ist im Allgemeinen bequemer, sie zu haben. Der größte Teil der Theorie könnte wahrscheinlich entwickelt werden, ohne jemals leere Strings zu berücksichtigen. Immerhin viel
wurde von den Griechen Arithmetik entwickelt, ohne Null als Zahl zu betrachten. Zero wurde nur wenige Jahrhunderte später in Indien syntaktisch und semantisch eingeführt. Durch die Erweiterung des Zahlensystems werden nicht nur neue Konzepte eingeführt, sondern auch das Verständnis und die Verwendung alter Konzepte vereinfacht. Die Einführung von Null und den negativen Zahlen erleichterte das Verständnis der Eigenschaften der natürlichen positiven Zahlen und so weiter. Einige Eigenschaften von Funktionen auf den Reals (wie die Konvergenz von Reihen) sind viel einfacher zu analysieren und zu verstehen, wenn Sie die Erweiterung auf komplexe Zahlen betrachten.
Die Einführung neuer Konzepte und Erweiterungen in der Mathematik ist daher oft eine gute Möglichkeit, Theorien zu vereinfachen (und in der Regel leistungsfähiger, um Probleme auszudrücken).
Die Einführung der leeren Zeichenfolge zusammen mit "natürlichen Zeichenfolgen" vereinfacht Theorien, die auf Zeichenfolgen basieren, und das ist Grund genug. Wie in anderen Antworten angegeben, können wir mit der leeren Zeichenfolge normalerweise Zeichenfolgen als Repräsentanten (Modelle) bekannter algebraischer Strukturen (Monoide) betrachten und alle bekannten Ergebnisse über solche Strukturen direkt anwenden. In der Tat, wie von J.-E. Pin, die leere Zeichenfolge steht in direktem Zusammenhang mit der Verkettungsoperation für Zeichenfolgen (und ich würde hinzufügen, genauso wie Null mit der Hinzufügung von Ganzzahlen zusammenhängt).
Wir brauchen oder brauchen den leeren String nicht, aber es ist viel bequemer, damit zu rechnen als ohne. Dies gilt auch für die Programmierung (eine Form der Mathematik, die darauf abzielt, konstruktive Beweise zu erstellen).
Eine Frage der Beständigkeit
Allerdings stimme ich mit der Antwort von Yuval Filmus in Bezug auf die Wirkung der nicht für das Konzept einer leeren Zeichenfolge ermöglicht, auf die gleiche Art und Weise , dass die Griechen nicht eine Zahl Null in Betracht ziehen. Die Einführung von Null als neue Zahl wäre nicht akzeptabel gewesen, wenn die bekannten Ergebnisse der Arithmetik geändert worden wären. Bestenfalls wäre es eine andere Theorie mit eigenem Zweck gewesen.
In ähnlicher Weise sollte eine Zeichenfolgentheorie konsistente Ergebnisse liefern, unabhängig davon, ob die leere Zeichenfolge zulässig ist oder nicht. Beide Ansätze sollten jedoch einheitliche Definitionen verwenden, damit dies offensichtlich und sinnvoll ist, und Yuval Filmus hat dies nicht getan.
Wenn die leere Zeichenfolge zulässig ist , lautet die übliche Definition des Präfix :
Ein String u ist ein Präfix eines Strings v, wenn es einen String w gibt, so dass uw = v ist
Dabei bezeichnet der Punkt die Zeichenfolgenverkettung. Dies ermöglicht, dass eine Zeichenfolge ein Präfix für sich selbst ist, indem w = ε (die leere Zeichenfolge) verwendet wird. Dann können Sie definieren:
Ein String u ist ein richtiges Präfix eines Strings v, wenn es ein Präfix von v ist und nicht gleich v ist.
Allerdings , wenn die leere Zeichenkette nicht erlaubt ist , müssen Sie konsequent diese Definitionen angeben, aber anders. Zum Beispiel:
Ein String u ist ein richtiges Präfix eines Strings v, wenn es einen String w gibt, so dass uw = v ist
Beachten Sie, dass w mindestens ein Symbol haben muss. Dann können Sie definieren:
Eine Zeichenfolge u ist ein Präfix einer Zeichenfolge v, wenn u ein geeignetes Präfix von v oder u = v ist.
Bei solchen konsistenten Definitionen bleibt ein Wort ein Präfix für sich selbst, selbst wenn die leere Zeichenfolge in der Theorie nicht zulässig ist.
Es muss also nicht darauf hingewiesen werden, dass das Nichtzulassen der leeren Zeichenfolge die Eigenschaften von Zeichenfolgen ändert (zumindest nicht auf eine so triviale Weise), wie von Yuval Filmus behauptet. Der Punkt ist viel mehr, dass es das Studium von Strings komplizierter macht, genauso wie die Arithmetik komplizierter ist, wenn man nicht von Null sprechen kann.
Informationen zur Syntax
Das zweite Problem ist syntaktisch. Wie sollen Zeichenfolgen auf Papier oder im Computer dargestellt werden? Unter der Annahme, dass wir uns einig sind, dass es nützlich ist, das Konzept einer leeren Zeichenfolge zu haben, wie sollte es syntaktisch dargestellt werden, damit wir darüber sprechen oder schreiben können.
Tatsächlich stellt sich für alle mathematischen Konzepte die Frage: Wie sollen sie dargestellt werden, damit wir darüber sprechen oder schreiben können, und dies so bequem wie möglich. Ein Großteil der Entwicklung der Mathematik hängt auch mit der Verbesserung der Syntax und der Darstellung von Konzepten zusammen. Ein triviales Beispiel ist die Unbeholfenheit, mit der antiken römischen Darstellung von ganzen Zahlen zu rechnen.
Eine erste Antwort bezüglich der leeren Zeichenfolge lautet, dass Sie möchten, dass diese mit der Darstellung anderer Zeichenfolgen übereinstimmt. In der Regel enthält die Darstellung einer Zeichenfolge die Folge von Symbolen in den Zeichenfolgen sowie eine zusätzliche Notation, z. B. Anführungszeichen: " gattaca ". Es wird dann ganz natürlich, die leere Zeichenfolge als "" darzustellen.
Wenn Sie das obige Beispiel lieber als Gattaca darstellen⊣, dann ist die natürliche Darstellung für die leere Zeichenfolge ⊣ (wie implizit von David Richerby erwähnt).
Die Frage nach der Notwendigkeit, eine separate Notation einzuführen
(anstelle eines separaten Konzepts , wie es tatsächlich geschrieben wurde), hat also eine negative Antwort. Nein, es wird nicht benötigt. Eine einheitliche Notation und einheitliche Darstellung ist für alle Zeichenfolgen möglich, einschließlich der leeren Zeichenfolge.
Wenn Sie die Zeichenfolge jedoch einfach durch die Folge der enthaltenen Symbole wie Gattaca ohne andere Zeichen darstellen, wird die leere Zeichenfolge syntaktisch unsichtbar, was ziemlich unpraktisch ist. Dann ist es notwendig, eine bestimmte Notation einzuführen, wie den griechischen Buchstaben ε oder einen anderen Namen.
In ähnlicher Weise ist es beim abstrakten Studium von Zeichenfolgen etwas umständlich, "" zur Darstellung der leeren Zeichenfolge zu verwenden, schon allein deshalb, weil es in der mündlichen Rede keine schönen und klaren Sätze ergibt, wenn Wissenschaftler miteinander sprechen, was passieren soll bei Gelegenheit. Daher ist es schöner, ihm einen Namen zu geben. Das Sagen einer leeren Zeichenfolge reicht möglicherweise aus, ist jedoch schriftlich umständlich. Daher die Gewohnheit, ein einzelnes Buchstabensymbol zu verwenden, wie es in der Mathematik häufig verwendet wird, um Entitäten von spezifischer Relevanz zu bezeichnen.
Der Vorschlag, das leere Wort durch EOL darzustellen, entspricht im Wesentlichen dem Vorschlag, es durch darzustellen ⊣. Es ist einfach eine Darstellung von Zeichenfolgen mit einem speziellen Abschlusszeichen. EOL ist nur ein Sonderzeichen "irgendwie in Computern verfügbar".
Wie oben für die römische Ganzzahlarithmetik erwähnt, sollte die Wahl einer Darstellung durch Bequemlichkeit bestimmt werden, insbesondere in einer algorithmischen Umgebung. Es gibt viele Möglichkeiten, Zeichenfolgen im Allgemeinen und die leere Zeichenfolge im Besonderen im Computer darzustellen. Aus theoretischer Sicht spielt es keine Rolle, welche Sie wählen. Aus praktischer Sicht ist es wichtig, eine zu wählen, die String-Operationen und Manipulationen effizienter macht. Dies ist ein grundlegendes Problem in jeder Klasse zu Algorithmen und Datenstrukturen.
Über die Verwechslung von Syntax und Semantik
Die Antwort von David Richerby ist interessant für die Verwechslung von Syntax und Semantik.
Er versucht, die in der Frage vorgeschlagene syntaktische Verwendung von EOL einzuführen, die er durch das Symbol ersetzt ⊣, aber er mischt es seltsamerweise mit der Definition der semantischen Domäne von Strings und macht das, was nur eine Notation sein soll, zu einem Teil dieser semantischen Domäne.
Seine zweite Definition hätte eigentlich folgende sein sollen:
Ein Alphabet ist eine endliche MengeΣvon Symbolen. Eine
Zeichenfolge s über das Alphabet Σ ist eine endliche Folge von ℓ Symbole si, wo 0≤ℓ, 1≤i≤ℓ und
si∈Σ für alle Werte von i. Es ist notierts1…sℓ⊣ wo ⊣ ist ein Sonderzeichen, das kein Symbol in bezeichnet Σ. Wir schreiben|s|für die Länge von
s, definiert von |s1…sℓ⊣|=ℓ. Ein Teilstring vons1…sℓ⊣ ist eine beliebige Zeichenfolge si…sj⊣, wo 1≤i≤j≤ℓ. Die Verkettung von Stringss1…sℓ⊣
und t1…tm⊣ ist die Zeichenfolge s1…sℓt1…tm⊣ von Länge ℓ+m.
Beachten Sie, dass infolgedessen die eindeutige Zeichenfolge mit der Länge Null bezeichnet wird ⊣.
Diese Definition ist nur eine notatorische Variante der konventionellen Definition von David Richerby. Es führt keine Komplexität oder " zusätzliche Fummelei " ein und ändert nichts an der Automatentheorie, aus dem einfachen Grund, dass⊣ist Teil der Notation, kein Symbol in den Zeichenfolgen. Und es gibt eine einheitliche Notation für alle Zeichenfolgen, einschließlich der leeren.
Yuval Filmus macht in seiner zweiten Bemerkung einen ähnlichen Fehler , da EOL als syntaktisches Notationsinstrument zur Darstellung von Strings gedacht ist, nicht als Symbol in Strings{0,1} betrifft die Liste der Symbole, die semantisch Zeichenfolgen bilden können.
Antworten zusammenfassen
J.-E. Die Antwort von Pin ist ganz richtig, aber sie behandelt nur einen Teil der Frage in Bezug auf die Wichtigkeit der leeren Zeichenfolge. Die Möglichkeit einer einheitlichen Notation wird nicht angesprochen.
Die Antworten von Yuval Filmus und David Richerby verwirren Syntax und Semantik und lehnen damit fälschlicherweise den Vorschlag der OPś-Frage ab, EOL zu verwenden. Auch das Argument von Yuval Filmus, die semantische Bedeutung der leeren Zeichenfolge zu behaupten, ist sehr umstritten. Obwohl dies durchaus sinnvoll ist, ist David Richerbys Bemerkung zur Verwendung der Nullreferenz ebenfalls etwas ungerechtfertigt: Sie könnte durchaus zur Darstellung der leeren Zeichenfolge verwendet werden, sofern der Code entsprechend geschrieben ist.
Die Antwort von Pseudonym ist ein theoretischer Overkill in Bezug auf die Bedeutung der leeren Zeichenfolge in der formalen Sprache, erörtert jedoch nicht die durch die Frage aufgeworfenen Fragen.
Was meine eigene Antwort , kann ich nur hoffen , dass es ausreichend die Probleme adressiert und enthält keine Fehler, aber es ist lange weit zu weit.