Determinare le capacità di un min-heap (o di altre macchine esotiche)


44

Vedere la fine di questo post per alcuni chiarimenti sulla definizione (i) degli automi min-heap.

Si può immaginare di utilizzare una varietà di strutture di dati per archiviare informazioni per l'uso da parte di macchine a stati. Ad esempio, gli automi push-down archiviano le informazioni in uno stack e le macchine Turing utilizzano un nastro. Le macchine a stati che usano le code e quelle che usano due pile o nastri multipli hanno dimostrato di essere equivalenti in potenza alle macchine di Turing.

Immagina una macchina heap min. Funziona esattamente come un automa push-down, con le seguenti eccezioni:

  1. Invece di guardare l'ultima cosa che hai aggiunto all'heap, puoi solo guardare l'elemento più piccolo (con l'ordinamento definito su una base per macchina) attualmente nell'heap.
  2. Invece di rimuovere l'ultima cosa che hai aggiunto all'heap, puoi solo rimuovere uno degli elementi più piccoli (con l'ordinamento definito su una base per macchina) attualmente nell'heap.
  3. Invece di aggiungere un elemento nella parte superiore dell'heap, è possibile solo aggiungere un elemento all'heap, con la sua posizione determinata in base agli altri elementi nell'heap (con l'ordinamento definito su una base per macchina).

Questa macchina può accettare tutte le lingue normali, semplicemente non usando l'heap. Può anche accettare la lingua {anbn{a,b}n0} aggiungendo a 'h all'heap e rimuovendo a ' h dall'heap quando legge b '. Può accettare una varietà di altre lingue senza contesto. Tuttavia, non può accettare, ad esempio, {w{a,b}w=wR}(dichiarato senza prove). EDIT: o può? Non credo che possa, ma sono stato sorpreso prima, e sono sicuro che continuerò a essere sorpreso quando i miei presupposti continueranno a farmi un ... beh.

Può accettare lingue sensibili al contesto o complete di Turing?

Più in generale, quali ricerche sono state condotte in questa direzione? Quali risultati ci sono, se ce ne sono? Sono anche interessato ad altre varietà di macchine a stati esotici, forse quelle che utilizzano altre strutture di dati per l'archiviazione o vari tipi di restrizioni di accesso (ad esempio, come le LBA sono restrizioni alle TM). I riferimenti sono apprezzati. Mi scuso in anticipo se questa domanda sta dimostrando ignoranza.


Definizione formale:

Fornisco qui alcune definizioni più dettagliate degli automi min-heap al fine di chiarire ulteriori discussioni in domande che fanno riferimento a questo materiale.

Definiamo un automa non heap non deterministico di tipo 1 come una 7 tupla dove ...

(Q,q0,A,Σ,Γ,Z0,δ)
  1. è un insieme finito di stati non vuoti;Q
  2. è lo stato iniziale;q0Q
  3. è l'insieme degli stati accettanti;AQ
  4. è un alfabeto di input finito, non vuoto;Σ
  5. è un alfabeto di input finito, non vuoto, in cui il peso di un simbolo γ Γ , w ( γ ) N , è tale che w ( γ 1 ) = w ( γ 2 )ΓγΓw(γ)N ;w(γ1)=w(γ2)γ1=γ2
  6. è il simbolo speciale della parte inferiore dell'heap;Z0Γ
  7. è la funzione di transizione.δ:Q×(Σ{ϵ})×(Γ{Z0})P(Q×Γ)

La funzione di transizione funziona presupponendo un heap inizialmente vuoto costituito solo da . La funzione di transizione può aggiungere al mucchio una raccolta arbitraria (finita, ma possibilmente vuoto o con ripetizioni) di elementi y 1 , γ 2 , . . . , γ kΓ . In alternativa, la funzione di transizione può rimuovere un'istanza dell'elemento γ con il peso più basso w ( γ )Z0γ1,γ2,...,γkΓγw(γ)di tutti gli elementi rimanenti sull'heap (ovvero l'elemento sopra l'heap). La funzione di transizione può usare solo l'istanza di simbolo più in alto (cioè di peso minimo) per determinare una data transizione.

Inoltre, definire un automa deterministico di heap min di tipo 1 come un automa non deterministico di heap di tipo 1 che soddisfa la seguente proprietà: per tutte le stringhe tale che | x | = n e σ Σ , | δ n + 1 ( q 0 , x σ y , Z 0 ) | 1 .xσyΣ|x|=nσΣ|δn+1(q0,xσy,Z0)|1

Definire anche un automa non heap non deterministico di tipo 2 esattamente uguale a un automa heap min non deterministico di tipo 1, ad eccezione delle seguenti modifiche:

  1. è un alfabeto di input finito, non vuoto, in cui il peso di un simbolo γ Γ , w ( γ ) N , è tale che w ( γ 1 ) = w ( γ 2 ) non implica necessariamente γ 1 = γ 2 ; in altre parole, diversi simboli heap possono avere lo stesso peso.ΓγΓw(γ)Nw(γ1)=w(γ2)γ1=γ2
  2. Quando all'heap vengono aggiunte istanze di simboli heap distinti con lo stesso peso, il loro ordine relativo viene conservato in base a un ordinamento simile a stack last-in, first-out (LIFO).

Grazie a Raffaello per aver sottolineato questa definizione più naturale, che cattura (ed estende) le lingue senza contesto.


Alcuni risultati hanno dimostrato finora:

  1. Gli automi min-heap di tipo 1 riconoscono un insieme di lingue che non è né un sottoinsieme né un superset delle lingue senza contesto. [ 1 , 2 ]
  2. Gli automi min-heap di tipo 2, per definizione, riconoscono un insieme di lingue che è un corretto superset delle lingue senza contesto, nonché un superset adeguato delle lingue accettate dagli automi min-heap di tipo 1.
  3. Le lingue accettate dagli automi min-heap di tipo 1 sembrano essere chiuse sotto unione, concatenazione e stella di Kleene, ma non sotto complementazione [ 1 ], intersezione o differenza;
  4. Le lingue accettate dagli automi non heap non deterministici di tipo 1 sembrano essere un vero e proprio insieme di lingue accettate dagli automi deterministici heap min di tipo 1.

Potrebbero esserci alcuni altri risultati che ho perso. Altri risultati sono (probabilmente) in arrivo.


Domande di follow-up

  1. Chiusura invertita? -- Aperto
  2. Chiusura sotto integrazione? -- No!
  3. Il non determinismo aumenta il potere? -- Sì?
  4. HALCSL
  5. L'aggiunta di heap aumenta la potenza per il tipo 1? - per (?)HAL1HAL2=HALkk>2
  6. L'aggiunta di uno stack aumenta la potenza per il tipo 1? -- Aperto

1
Ottima domanda a proposito. Sono tentato di scavare per un lemma di pompaggio per questi automi.
Raffaello

@Raphael: Penso che tu possa usare la mia (aggiornata) prova per un tale lemma: qualsiasi linguaggio per il quale devi 'ricordare' più di una quantità lineare di informazioni in alcune sottostringhe per abbinare correttamente una sottostringa successiva non può essere analizzato da automi min-heap. Non sono sicuro che sia possibile un vero lemma in stile pompaggio - potrebbe anche essere un caso speciale del mio lemma.
Alex ten Brink

@AlextenBrink Poiché è possibile utilizzare combinazioni di numeri di simboli heap per codificare elementi, non sono sicuro che sia sufficiente un limite lineare.
Raffaello

Risposte:


25

È possibile riconoscere il linguaggio canonico non privo di contesto (ma sensibile al contesto) con questo tipo di macchina a stati. Il punto cruciale è che si aggiunge gettoni al mucchio per ogni personaggio, e durante l'analisi dei caratteri, si aggiunge token 'grandi' al mucchio, così finiscono solo fino al fondo del mucchio dopo aver analizzato tutti i personaggi.{anbncn | n1}abb

I simboli heap sono e , dove . Noi consumiamo tutte le simboli sull'ingresso e aggiungere simbolo al mucchio. Se incontriamo una , cambiamo strategia: per ogni che incontriamo successivamente rimuoviamo una dall'heap e aggiungiamo una all'heap. Quando incontriamo una avremmo dovuto esaurire s per rimuoverla, quindi per ogni nell'input rimanente rimuoviamo una dall'heap. Se l'heap è vuoto alla fine, la stringa è nella lingua. Ovviamente, rifiutiamo se qualcosa va storto.aba<baabbabcacb

Aggiornare:

La lingua non può essere riconosciuto dagli automi min-heap. Supponiamo di avere un automa min-heap in grado di riconoscere . Osserviamo lo 'stato' in cui si trova l'automa dopo aver letto (la prima parte dell'ingresso, quindi è il prossimo). L'unico stato che abbiamo sono i contenuti del cumulo e la particolare stato della automa è in. Ciò significa che, dopo aver riconosciuto , questo esigenze degli statali per contenere informazioni sufficienti per corrispondere .EPAL={wwR|w{a,b}}EPALwwRwwR

In particolare, per fare ciò, ci devono essere possibili diversi 'stati' (dove ), in quanto vi sono parole possibili costituite da e caratteri. Poiché ci sono solo un numero finito di stati e solo un numero finito di caratteri heap, ciò implica che esiste una parola per la quale l'heap contiene un numero esponenziale di alcuni caratteri heap, diciamo .2nn=|w|2nabwx

Dimostriamo innanzitutto il teorema per gli automi deterministici dell'heap min, quindi estendiamo questa dimostrazione agli automi non deterministici dell'heap min. In particolare, gli automi deterministici che riconoscono un certo linguaggio non si inseriranno in un ciclo infinito, che è una proprietà utile.

Dimostreremo che l'heap può contenere al massimo solo un numero di token heap che è lineare nel numero di caratteri letti dall'input. Ciò esclude immediatamente che appare un numero esponenziale di volte sull'heap, il che completa la prova che non può essere riconosciuto dagli automi min-heap.xEPAL

Poiché abbiamo solo un numero finito di stati nel nostro automa e poiché un automa deterministico non si inserirà in un ciclo infinito, leggendo un segnale di input aggiungerà al massimo un numero costante di caratteri heap sull'heap. Allo stesso modo, consumando qualche simbolo di heap , può solo aggiungere al massimo un numero costante di caratteri heap che sono strettamente più grandi di e può solo ridurre il numero di simboli nello stack (altrimenti otteniamo un ciclo infinito).yyy

Il consumo di simboli heap può quindi causare un (enorme) accumulo di simboli heap più grandi, ma poiché esiste solo un numero costante di diversi tipi di simboli heap, questo è solo un numero costante non dipendente da . Ciò implica che il numero di simboli heap è al massimo alcune (grandi) costanti volte il numero di simboli di input letti finora. Questo completa la prova per il caso deterministico.n

Nel caso non deterministico, la dimostrazione è simile, ma un po 'più complicata: invece di aggiungere al massimo un numero costante di token heap all'heap, aggiunge un numero arbitrario di token heap all'heap. Tuttavia, il punto cruciale è che questo numero non dipende da . In particolare, se possiamo ottenere in modo non deterministico esattamente i simboli di heap giusti sull'heap dopo aver riconosciuto (giusto per riconoscere ), possiamo anche scegliere in modo non deterministico i simboli di heap che corrispondono ad altre parole , e quindi riconoscere , contraddicendo così che l'automa min-heap riconosce esattamente .nwwRwwwREPAL

Aggiornamento 3: renderò rigoroso l'ultimo argomento (sul non determinismo). Con l'argomento precedente, deve esistere un insieme infinito di paroletale che per ogni, dopo aver riconosciuto, l'heap contieneelementi ( nota che possiamo parlare didato che abbiamo un insieme infinito di parole). Dato che non possiamo ottenere così tanti elementi sull'heap con mezzi deterministici, dobbiamo aver avuto una qualche forma di loop in cui abbiamo prima scelto in modo non deterministico di aggiungere più elementi all'heap (senza consumare input), e successivamente abbiamo scelto di uscire da questo loop, e dobbiamo aver attraversato questo loopvolte.W{a,b}wWwω(|w|)O(f(|w|))ω(1)

Prendere l'insieme di tutti questi loop utilizzati da . Poiché esistono solo stati , la dimensione di questo set è e anche l'insieme di tutti i suoi sottoinsiemi è . Ora nota che la parte "deterministica" dei percorsi di esecuzione può solo contribuire a dei token, il che significa che gran parte del numero esponenziale di parole diverse deve avere percorsi di esecuzione le cui parti "deterministiche" contribuiscono allo stesso token al mucchio. In particolare, l'unico modo per ottenere più token è prendere i loop che abbiamo identificato sopra.WO(1)O(1)O(1)O(|w|)

Combinando queste osservazioni, ciò significa che in , e devono essere presenti due parole distinte , la cui parte "deterministica" dei percorsi di esecuzione contribuisce con gli stessi token e che si differenziano prendendo alcuni sottogruppi dei loop sopra un numero diverso di volte, ma che usano lo stesso sottoinsieme di loop (ricordate che ci sono solo di questi loop).Ww1w2O(1)

Ora possiamo mostrare che può essere riconosciuto anche dall'automa min-heap: seguiamo il percorso di esecuzione per come sopra, ma attraversiamo i loop lo stesso numero di volte che il percorso di esecuzione per li attraversa. Questo riempie il min-heap di token in modo tale che sia accettato come suffisso, completando così la prova.w1w2w1w2w2

Aggiornamento 2:

Mi è appena venuto in mente che quanto sopra significa che possiamo simulare un automa deterministico dell'heap min usando solo lo spazio logaritmico: manteniamo un contatore per ogni tipo di personaggio nell'heap min. Come mostrato sopra, questo contatore sarà al massimo e quindi può essere memorizzato usando solo lo spazio (poiché esiste solo un numero costante di questi contatori). Questo ci dà:O(n)O(logn)

DHALL

HALNL

dove è l'insieme di lingue riconosciute da alcuni automi deterministici dell'heap min.DHAL


1
+1 per una visione eccellente, sembra che tu abbia capito completamente il mio significato. Ho ragione nella mia valutazione che tali macchine non sono in grado di riconoscere i palindromi? Poiché l'ordine dei simboli aggiunti non viene conservato, non sembra possibile.
Patrick87

@ Patrick87: sto pensando a quel problema in questo momento :)
Alex ten Brink

@Raphael Osservazioni molto interessanti sulle macchine di Turing con vincoli logaritmici di risorse, entrambi avete fatto un ottimo lavoro nello studio di questi automi. Sai, ho appena lanciato l'automa min-heap come una specie di esempio di ciò a cui ero interessato, ma sembra che sia stato ben accolto. A quali altre domande si può rispondere su tali automi? DHAL è HAL? Quali sono le proprietà di chiusura di HAL? Sono utili ulteriori esplorazioni e, in tal caso, dovrebbero rimanere qui o essere posti in una nuova domanda? Grazie ancora per le eccellenti intuizioni.
Patrick87

1
@Raphael: ho reso quella parte completamente rigorosa. Hai ragione sul fatto che deve essere sufficientemente grande: ho controllato alcuni dettagli a destra e a sinistra. n
Alex ten Brink

1
@Raphael: Anzi, lo fa. , quindi dal teorema della gerarchia spaziale e alcune inclusioni. CSL=NLINSPACEDHALCSL
Alex ten Brink,

19

Ecco cosa sappiamo (crediamo):

  • HALCFL (tipo-1, tipo-2)
  • CFLHAL (tipo-1)
  • CFLHAL (tipo-2, per definizione)
  • CSLHAL (tipo-1, tipo-2)

Vedi i dettagli e alcune altre note di seguito.


HALCFL

Questa parte della risposta riguarda sia il tipo 1 che il tipo 2.

Un automa min-heap (HA) con alfabeto heap finito, totalmente ordinato accetta .L={anbncnnN}CSLCFL

Presupposti: simile al PDA, la nostra funzione di transizione consuma il simbolo di heap più in alto e riscrive un numero arbitrario di simboli di heap. L'heap inizialmente contiene un simbolo distinto che è più grande di tutti gli altri simboli heap.$

Sia un automa min-heap conA=(Q,ΣI,ΣH,,q0,QF)

  • Q={q0,q1,q2,qf} l'insieme di stati
  • ΣI={a,b,c} l'alfabeto di input.
  • ΣH=a,b,$ l'alfabeto heap con l'ordinamento .a<b<$
  • QF={qf}
  •  (Q×ΣI×ΣH)×(Q×ΣH) con
    • (q0,a,σ)(q0,aσ) per tuttiσΣH
    • (q0,b,a)(q1,b)
    • (q1,b,a)(q1,b)
    • (q1,c,b)(q2,ε)
    • (q2,c,b)(q2,ε)
    • (q2,c,$)(qf,ε)

L'automa scrive uno al mucchio per ogni nell'input. Quando si verifica una , consuma tante quante sono state , scrivendo una nell'heap per ogni trovata . Questo non disturba il conteggio perché l'heap mantiene convenientemente in cima. Solo dopo che tutte le sono state prese dall'heap sono accettate ; solo dopo quanti come (e con esso come ) si trovano, non accetta con mucchio vuoto e stato finale.aabbabbaaccbaA

Pertanto, .L(A)=L


CFLHAL

Questa parte della risposta riguarda solo il tipo 1.

Considerare l'insieme di palindromi pari e assumere c'è HA con .EPAL={wwRw{a,b}}AL(A)=L

Congettura: troviamo con etale che è nello stesso stato e ha lo stesso contenuto di heap dopo aver letto rispettivamente e . Poiché accetta sia sia , accetta quindi anche (e ), che è una contraddizione in .w1,w2{a,b}w1w2|w1|=|w2|Aw1w2A w 2 w R 2 w 1 w R 2E P A L w 2 w R 1w1w1Rw2w2Rw1w2REPALw2w1RL(A)=EPAL


CSLHAL

Questa parte della risposta riguarda sia il tipo 1 che il tipo 2.

Lo stesso ragionamento che abbiamo usato su (per il tipo-1) può essere usato per mostrare che il linguaggio sensibile al contesto non è in . { w w w { a , b } } H A LEPAL{www{a,b}}HAL


HAL?CSL

Questo è ancora aperto sia per il tipo 1 che per il tipo 2.


Ulteriori Factoidi

L'HA sembra essere ortogonale a un sottoinsieme dei linguaggi leggermente sensibili al contesto accettati dagli Embedded Pushdown Automata : mentre l'HA può simulare un numero limitato di stack impilati, non possono simularne arbitrariamente molti (come l'EPA). Tuttavia, HA può accedere ai simboli principali delle pile attualmente non in cima (cosa che l'EPA non può).


+1, risposta eccellente. Essenzialmente equivalente al metodo di Brink, giusto? Tuttavia, il rigore e la precisione sono eccezionali. Hai mai pensato se tali macchine possono accettare tutti i CFL? Sembra impossibile, dal momento che le informazioni sull'ordine vengono perse dall'heap ...
Patrick87

È la stessa idea di Alex, sì. Sono contento che tu possa ottenere qualcosa da esso comunque. Ho aggiunto un'idea per l'altra direzione ma c'è un divario (enorme?). Devo pensarci domani con la testa chiara e forse beccare alcuni colleghi.
Raffaello

Sento che avrei dovuto includere una prova di correttezza per guadagnare crediti extra per il rigore. ;) Non dovrebbe essere troppo difficile per induzione su , immagino. n
Raffaello

Il profilo di prova che etichetti come congettura è quello che avevo in mente, e lo trovo abbastanza convincente ... inoltre, e questo è un punto tecnico secondario, penso che tu stia usando il linguaggio dei palindromi di lunghezza pari, non tutti palindromi ... anche se la prova funziona sicuramente in entrambi i modi (nota che funziona anche per palindromi semplici, quindi HAL non è nemmeno forte come DPDA, un altro risultato).
Patrick87

@ Patrick87 Il problema è che potrebbero esserci più configurazioni possibili in cui un determinato HA può trovarsi dopo aver letto simboli di quante siano le parole, in particolare se consentiamo transizioni che mettono simboli sull'heap. εnε
Raffaello
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.