CFG-Analyse mit


18

Es gibt eine Vielzahl von Algorithmen, die eine kontextfreie Grammatik in analysieren können.. Mit der Matrixmultiplikation kann man sogar asymptotisch schneller gehen.O(n3)

Alle Algorithmen zum Parsen beliebiger CFGs, die ich kenne, haben jedoch eine schlechteste Raumnutzung von (obwohl ich zugegebenermaßen keine Ahnung habe, wie viel Raum dieser Matrixmultiplikationsalgorithmus verwendet). Ich habe mich gefragt, ob es Algorithmen gibt, die diese Speicherplatznutzung verbessern (also die Zeitgrenze außer Acht lassen).Ω(n2)

Die Frage tauchte in meinem Kopf auf, nachdem ich mental mit dem Ω ( n 2 ) -Raum verknüpft hatte, der für alle CFG-Parsing-Algorithmen gilt Ich wusste. Es ist wahrscheinlich nicht von praktischem Interesse, sondern nur etwas, das mich interessieren würde.CSG=NDSPACE(n)DSPACE(n2)Ω(n2)


5
Sie kennen nicht alle anderen Parsing-Algorithmen, aber diejenigen, die auf Matrixmultiplikation basieren, benötigen Platz. Siehe: cstheory.stackexchange.com/questions/1313/…Θ(n2)
Ryan Williams

Antworten:


14

Die erste Hälfte dieser Antwort ist nichts anderes als eine effiziente ( bis log 2 ( n ) ) Umformulierung von Davids Antwort in komplexitätstheoretischen Begriffen.log4(n)log2(n)

Kontextfreie Sprachen leben in der Komplexitätsklasse Diese Klasse ist äquivalent gekennzeichnet durch logarithmisch tiefe, halbbegrenzte Schaltungen. Hierbei handelt es sich um polynomgroße Schaltungen, bei denen ODER-Gatter einen unbegrenzten Fan-In und UND-Gatter einen begrenzten Fan-In aufweisen (z. B. 2). Durch Erhöhen der Tiefe um einen logarithmischen Faktor können wir jedes unbegrenzte Fan-In-ODER-Gatter durch begrenzte Fan-In-ODER-Gatter ersetzen. Dies brachte das Problem in N C 2 . Es ist nicht schwer zu erkennen, wie N C 2 mit einem D S P A C E ( log 2 (LOGCFL.NC2.NC2 etwa eine Tiefensuche, die die bisher untersuchte Links- / Rechtsreihenfolge der Kinder an den Toren beibehält. Das Ergebnis geht auf das Lewis-Hartmanis-Papier zurück. Und während dies Davids Platzbedarf verbessert, kann dies n log n Zeit in Anspruch nehmen. Wir wissen es nicht besser.DSPACE(log2(n))nlogn

Der traditionelle Weg, um den Zeit-Raum-Kompromiss zu verstehen, ist die Verwendung von Kieselspielen. Es gab einige Artikel über CYK; Ein neuerer Versuch befindet sich im ersten Teil dieser Präsentation . Hier wird gezeigt, dass (a) ein linearer Raum zur Exponentialzeit erreicht werden kann und (b) wenn die Zeit auf , dann würde CYK mindestens n 2 Raum verwenden.O(n2)n2

Mit Sicherheit ein sehr interessantes Problem, das einen Blick wert ist.


Das war eine sehr interessante Präsentation, danke für den Link.
Alex ten Brink


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.