Frage

Dies ist eher eine Frage der Informatik als eine Programmierung, aber ich Figur, dass dies der beste Ort, aus allen verwandten Seiten, dies zu fragen.

Wenn ich Reguläre Ausdrücke entdeckt und sah den Begriff bis ich davon aus, dass diese Eigenschaft der „Regelmäßigkeit“ verweist auf die Tatsache, dass die Sprache des Ausdrucks ein definierbares Strukturmuster aufweist. Doch über das Thema in das Lesen und die Theorie hinter dieser ich gelernt, dass es Arten von Sprachen, die nicht regelmäßig sind, und doch von der Art, wie sie definiert sind, ist es klar, dass ein Muster auf sie angepasst werden kann. Eine solche Sprache ist (a ^ n) (b ^ n). Natürlich ist dies ein Muster, und doch ist dies nicht eine reguläre Sprache. So, jetzt frage ich mich doch, was geht es um reguläre Sprachen, die sie regelmäßig macht, und diese Sprache nicht?

War es hilfreich?

Lösung

Die Etymologie des Namens stammt aus Kleenes 1950er Jahre arbeiten beschreibt regelmäßige Sätze mit seiner mathematischen Notation für den Zweck geschaffen. Siehe diese .

Andere Tipps

Intuitiv Informatik zu erklären ist ... schwierig. Ich werde es versuchen, aber denken Sie daran, dass einige dies wird „nahe genug“ sein, aber nicht theoretisch streng.

eine reguläre Sprache ist eine, die von einer Maschine bestimmt werden kann, die Rechen äquivalent zu einem endlichen Automaten (DFA / Ndfa) ist. Eineine endlichen Automaten können als eine Maschine betrachtet werden, die rein in Staaten, keine Lagerung arbeitet. So Sie, dass ein sehen n b n kann nicht regelmäßig sein, da es eine Maschine benötigt, die die Anzahl der a und bs zählen können (und somit unendlich * Speicherkapazität haben muß) um sie zu vergleichen.

Zum Vergleich (abc) n regelmäßig, weil die Anzahl der Wiederholungen ist irrelevant.

Für eine strengere (und entsprechend dichte Ansicht) überprüfen Sie die Wikipedia-Artikel und verlinkten Seiten .

* Die unendliche spielt hier keine Rolle, aber ich erwähne es auf Vollständigkeit. Es könnte einfacher sein, daran zu denken, wie „zum Glück immer gerade genug, um“ Speicher.

Vielleicht ist der Wikipedia-Artikel über reguläre Sprachen können es besser erklären als wir können. Aber ich werde es einen Schuss.

Aus theoretischer Sicht eine reguläre Sprache (Saitensatz) ist eine, die erzeugt werden kann, indem ein endliche Automaten . In Programmierer Hinsicht ist dies äquivalent zu sagen, es kann erzeugt werden unter Verwendung von regulären Ausdrücken . Somit sind alle endlichen Sprachen (Sätze von Saiten) sind regelmäßig, aber es gibt einige unendliche Sprachen, wie zum Beispiel ein n b n (die Sprache aller Saiten des na gefolgt von der n b), die erkannt werden können, keine FSA oder mit regulären Ausdrücken. Es sind leistungsfähige Rechengeräte (wie moderne Computer, die modelliert werden mit Turingmaschinen ), das können erkennen diese Sprachen.

Der Grund, reguläre Ausdrücke in der Programmierung für String-Suche so viel verwendet werden, ist, dass sie die große Mehrheit der Saiten erkennen können, die Programmierer die uns wichtig sind, und die gleichzeitig durchgeführt werden können suchen sehr mit schnell endlichen Automaten.

Das Wort regular in regular expression bezieht sich auf das mathematische Konzept der regelmäßigen, nicht dem englischen Begriff. Genau wie wie das Wort prime in Mathematik wenig mit prime Rindfleisch tragen.

Es ist geerbt von CS (das ist ein Zweig der Mathematik ist) zu einem spezifischeren Konzept vorgelegt: http : //en.wikipedia.org/wiki/Regular_language

regulärer Ausdruck ist nicht wirklich regelmäßig, der Name etymologisch ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top