CFG análise utilizando espaço

18

Existem vários algoritmos que podem analisar uma gramática livre de contexto em . Usando a multiplicação de matrizes, pode-se até assintoticamente mais rápido que isso.O(n3)

No entanto, todos os algoritmos para analisar CFGs arbitrários que eu conheço têm um uso de espaço no pior dos casos de (embora, reconhecidamente, eu não tenha idéia do uso de espaço desse algoritmo de multiplicação de matrizes). Eu queria saber se existem algoritmos que melhoram esse uso do espaço (desconsiderando o tempo limite).Ω(n2)

A pergunta surgiu em minha mente depois de vincular mentalmente ao espaço vinculado a todos os algoritmos de análise de CFG que eu conhecia. Provavelmente não tem interesse prático, mas apenas algo que eu gostaria de saber.Ω ( n 2 )CSG=NDSPACE(n)DSPACE(n2)Ω(n2)

Alex ten Brink
fonte
5
Não conheço todos os outros algoritmos de análise, mas aqueles baseados na multiplicação de matrizes ocupam espaço ; Veja: cstheory.stackexchange.com/questions/1313/…Θ(n2)
Ryan Williams

Respostas:

14

A primeira metade desta resposta nada mais é do que uma reformulação eficiente ( a ) da resposta de David em termos teóricos da complexidade.log 2 ( n )log4(n)log2(n)

Linguagens livres de contexto vivem na classe de complexidadeEssa classe é caracterizada de maneira equivalente por circuitos semibordados de profundidade de toras . Estes são circuitos de tamanho polinomial, nos quais as portas OR possuem fan-in ilimitado e as portas AND possuem fan-in (por exemplo, 2). Ao aumentar a profundidade por um fator de log, podemos substituir todos os gateways OR de ventilação ilimitados por ORs de ventilação limitados. Isso colocou o problema emNão é difícil ver como pode ser avaliado por um , digamos, uma pesquisa em profundidade que mantém a sequência esquerda / direita de crianças nos portões explorados até agora. O resultado remonta ao artigo de Lewis-Hartmanis. E enquanto isso melhora o espaço limitado de David, isso pode levarLOGCFL.N C 2 D S P A C E ( log 2 ( n ) ) n log nNC2.NC2DSPACE(log2(n))nlognTempo. Nós não sabemos melhor.

A maneira tradicional de entender a troca de espaço no tempo é usar jogos de seixos. Existem alguns artigos sobre CYK; uma tentativa mais recente está na primeira parte desta apresentação . Aqui é mostrado que (a) o espaço linear pode ser alcançado no tempo exponencial e (b) se o tempo for restrito a , então o CYK usaria pelo menos espaço.n 2O(n2)n2

Certamente um problema muito interessante, digno de uma olhada.

V Vinay
fonte
Essa foi uma apresentação bastante interessante, obrigado pelo link.
Alex ten Brink
13

Qualquer linguagem livre de contexto pode ser descrita por uma gramática na Forma Normal de Chomsky e depois reconhecida por um algoritmo não determinístico que usa bits de memória: basta adivinhar a produção de nível superior ( bits) e o ponto de interrupção na cadeia de entrada entre os dois substrings correspondentes aos dois lados da produção ( bits), recursa no lado menor e continua não recursivamente no lado maior.O ( 1 ) O ( log n )O(log2n)O(1)O(logn)

Pelo teorema de Savitch, segue-se que o problema pode ser resolvido deterministicamente com bits de memória. O algoritmo resultante dessa técnica provavelmente seria bastante ineficiente.O(log4n)

David Eppstein
fonte
3
Acabei de encontrar um resultado semelhante de Lewis et al. aqui: ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5397245 . Ainda assim, deixa-se a questão de saber se podemos fazer melhor que o espaço quadrático usando apenas o tempo polinomial.
Alex10 Brink
8

As CFLs determinísticas podem ser analisadas no espaço e no tempo polinomial (ou seja, em ). Este é um resultado antigo do Cook . É um problema em aberto se CFLs não determinísticas também estão em SC (mas isso não diz nada sobre a existência de, digamos, algoritmos de espaço linear).S C 2O(log2n)SC2

Emil Jeřábek apoia Monica
fonte