Tutte le lingue regolari e senza contesto sono decidibili in modo efficace?


12

Mi sono imbattuto in questa figura che mostra che le lingue regolari e libere da contesto sono (proprio) sottoinsiemi di problemi efficienti (presumibilmente ). Capisco perfettamente che i problemi efficienti sono un sottoinsieme di tutti i problemi decidibili perché possiamo risolverli ma potrebbe richiedere molto tempo.P

Perché tutte le lingue regolari e senza contesto sono decidibili in modo efficace? Significa che risolverli non ci vorrà molto tempo (voglio dire che lo sappiamo senza più contesto)?

inserisci qui la descrizione dell'immagine


3
Per curiosità, dove hai trovato questa figura? Può essere utile avere un contesto da spiegare, poiché "efficiente" non è una nozione formale e persone diverse potrebbero usarlo per significare cose diverse.
Gilles 'SO- smetti di essere malvagio' il

2
Se "efficiente" significa " " (come è comune), "efficiente" non significa "non molto tempo" poiché anche i polinomi producono valori enormi. Nota un risultato di base nella complessità è che ci sono infinite sequenze di problemi, ognuna propriamente più semplice della successiva. Questo vale sia all'interno che all'esterno della P . PP
Raffaello

@Raphael: In questo contesto, efficiente è una classe di lingue che sono decidibili in tempi polinomiali. Ho usato "potrebbe volerci molto tempo" per i problemi decidibili rispetto a quelli indecidibili per i quali non possiamo trovare soluzioni per un tempo limitato.
Gigili

il modo tecnico corretto per dire questo è che determinare se w∈L dove w è una parola e L è una lingua è in P. ie / aka "riconoscimento della lingua"
vzn

Risposte:


15

O(n)

O(n3)

PEXPTIMEP


2
Potresti voler menzionare l'algoritmo di moltiplicazione della matrice per i grammi senza contesto che ha un tempo di esecuzione migliore e che questo algoritmo funziona in modo molto efficiente (in modo lineare) su praticamente qualsiasi grammatica pratica senza contesto: sciencedirect.com/science/article/pii / 030439759190180A
Alex ten Brink

@AlextenBrink Non credo che questa domanda richieda una granularità più fine del "polinomio o no".
Raffaello

1
O(n)

1
In effetti, per le lingue normali, non hai nemmeno bisogno esplicitamente di automi deterministici. Simulate tutti i calcoli in parallelo tenendo traccia di tutti gli stati in quel modo imitando la costruzione del powerset.
Hendrik Jan,

1
@Dave: lineare nella lunghezza della stringa di input, per un linguaggio regolare fisso, come le altre complessità qui fornite.
Hendrik Jan

1

Perfezionamento / "stampa fine" su risposta di DC: tutti i CFL sotto forma di Chomsky Normal Form possono essere analizzati in modo efficiente con l' algoritmo CYK e tutti i CFL possono essere convertiti in CNF. Tuttavia, la conversione di un CFL arbitrario in CNF può occupare spazio esponenziale nel peggiore dei casi a seconda di alcuni algoritmi. (Non sono a conoscenza di un algoritmo che garantisca la conversione del P-time qui, qualcun altro? Bisogna considerare tutti i casi limite / peggiori come CFL non deterministici o ambigui .) Stati di Wikipedia nella sezione CNF Ordine delle trasformazioni

|G|222|G|

Pertanto sembra che possano esistere CFL che non sono analizzabili in modo efficiente. La maggior parte dei linguaggi di programmazione sono efficientemente convertibili in CNF (o forse per lo più definiti in CNF o quasi-CNF), pertanto l'analisi di CFL per linguaggi "tipici" è "praticamente" in P. C'è probabilmente qualche ricerca moderna su questa complessità del caso peggiore (ma non trovare articoli recenti su di esso nella ricerca rapida). Ad esempio, questo vecchio documento di ricerca (1973) di Greibach sembra indicare che le prestazioni del caso peggiore potrebbero non essere limitate da P. vedi ad es.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.