Frage

Ich bin auf der Suche über meinen Lehrplan für meine theoretische Informatik Klasse und innerhalb der Überschrift Context Free Grammatiken es „Abschlusseigenschaften“ aufgelistet ist. Ich habe zu diesem Thema durch mein Lehrbuch gesucht und gefunden recht wenig. Der kleine es hat ein bisschen über meinen Kopf im Moment (ich den Kurs noch nicht stattgefunden haben), aber ich verstehe ein wenig.

Ich frage mich, ob diese Idee von Verschlüssen im Zusammenhang freier Grammatiken, die gleich oder im Zusammenhang mit der Idee von Verschlüssen innerhalb der funktionalen Programmierung ist. Er spricht über Grammatiken und Lösung von Überschneidungen, soweit ich sagen kann, zu kombinieren. Es gibt viele Teile auf den Abschnitt innerhalb des Buches verstehe ich noch nicht, also bin ich nicht sicher, ob diese Ideen sind gleich.

(Ein wenig mehr Kontext. Ich bin eine E-Mail an den Professor schriftlich gefragt werden, ob der Kurs nach Ruby oder Python von Perl geschaltet werden, wenn diese Begriffe verwandt sind, das könnte ein weiterer Grund sein, wir Rubin über Perl verwenden sollten. )

War es hilfreich?

Lösung

Der Begriff „Verschluss“ verwendet wird, ein eine Vielzahl von Möglichkeiten, vor allem zurück auf eine mathematische Konzept der Fertigstellung, in gewissem Sinne zu verfolgen.

  • Ein Operator ist ein Satz von Werten „über geschlossen“, wenn diesen Operator auf Werte aus der Menge der Anwendung immer einen Wert aus der gegebenen Menge erzeugt. Zum Beispiel kann zusätzlich über die ganzen Zahlen geschlossen ist, aber nicht Division ist (4/2 ist integral, aber 5/2 nicht ist). So Zugabe von ganzen Zahlen ist irgendwie „vollständig“ in dem Sinne, dass Teilung nicht.

  • Die „transitiv“ Schließung einer Beziehung „vervollständigt“, um die Beziehung, die durch folgende (alle möglichen) mehrere Anwendungen. Im alltäglichen Bedingung „ist ein Nachkomme von“ das Konzept der die transitive Schließung der Beziehung „ist ein Kind“.

  • A functional "closure" ist "abgeschlossen" von z.B. angibt, wie die freien Variablen aufgelöst werden sollen. Im Pseudocode Ausdruck:

    bump = function(x) (x + y)
    

    x ist das Argument bump, aber die Definition scheint „offen“ die Frage nach der Lösung y zu verlassen. Auf der anderen Seite, wenn wir definieren:

    bumper = function(y) (function(x) (x + y))
    

    dann bumper Aufruf gibt eine Funktion, die das ursprüngliche Argument von bumper auf die geschaffenen Funktion Argument fügt hinzu, so dass:

    add3 = bumper(3)
    

    ist äquivalent zu definieren:

    add3 = function(x) (x + 3)
    

    Die verschachtelte Definition ist "geschlossen over" (oder abgeschlossen durch) die Variablen an der Stelle seiner Definition zur Verfügung.

So in der Tat haben die Verwendung von „closure“ vor allem verschiedene spezifische Bedeutungen haben, und auf den ersten Blick scheinen in keinem Zusammenhang, aber es gibt eine subtile zugrunde liegende Beziehung.

Andere Tipps

Ein Verschluss Eigenschaft ist wie folgt: wenn L und M kontextfreie Sprachen sind, dann so L | M. Funktionsverschlüsse sind eine Möglichkeit, erstklassige Funktionen zu implementieren. Also nein, sie haben so ziemlich nichts miteinander zu tun.

Warum die gleichen Namen, dann? Eine Funktion Verschluss ist ‚geschlossen über‘ seine freien Variablen:

def adder(n): return lambda m: n + m

Hier n ist eine freie Variable des Lambda. Der Name betont dies, weil Lisp ursprünglich nicht in der Nähe über freie Variablen -. Sie ihren Wert nehmen würden aus, was auch immer auf dem Stapel war verbindlich, wenn die innere Funktion aufgerufen wurde

Closure Immobilien in Mathe ist ein bisschen mehr auf der Hand: Wenn ein Satz unter einer Operation geschlossen ist, dann innerhalb dieses Satzes, dass der Betrieb der Anwendung werden Sie nicht aus ihm heraus nehmen. Wenn Sie Zahlen addieren, was Sie bekommen, ist nach wie vor eine ganze Zahl.

Darius ist richtig; „Verschlusseigenschaften“ haben nichts mit „Funktion Schließungen“ zu tun. Es gibt nur so viele Worte zu gehen um: - (

Die Idee der Schließung Eigenschaften wird ganz über Informatik angewandt, aber es ist eine Menge auf verschiedene Klassen von Sprachen angewandt. Die verschiedenen Klassen von Sprachen sind wichtig, weil Sie andere Technologie benötigen zu scannen oder eine Äußerung zu erkennen. Zum Beispiel können Sie reguläre Ausdrücke sagen, wenn Sie ein reserviertes Wort haben, aber sie können nicht sagen, ob Sie einen Ausdruck mit symmetrischen Klammern haben --- für, dass Sie eine kontextfreie Grammatik benötigen.

Die Menschen sind in der Regel daran interessiert, ob wenn Sie ein bestimmtes Langauge und Sie schneiden oder Vereinigung mit einer anderen Sprache oder einfach die Sprache ergänzen, haben Sie eine andere Sprache in der gleichen Klasse erhalten. Zum Beispiel ist es möglich, einen regulären Ausdruck zu schreiben, die genau die Token übereinstimmt, sind nicht Worte reserviert? Wir können eine klare „Ja“ beantworten, weil reguläre Sprachen unter Ergänzung geschlossen sind, das heißt, das Komplement einer regulären Sprache ist selbst eine reguläre Sprache. Dies ist ein Beispiel für eine Schließung Eigenschaft. Normalerweise ist der Beweis ist konstruktiv, das heißt, nicht nur es Ihnen nicht sagen, dass es existiert ein regulärer Ausdruck alle Token beschreiben, die nicht Worte reserviert, der Beweis für die Schließung Eigenschaft wird Ihnen sagen, wie man eine solche regulären Ausdruck.

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