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:
- 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.
- 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.
- 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 aggiungendo 'h all'heap e rimuovendo ' h dall'heap quando legge '. Può accettare una varietà di altre lingue senza contesto. Tuttavia, non può accettare, ad esempio, (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 ...
- è un insieme finito di stati non vuoti;
- è lo stato iniziale;
- è l'insieme degli stati accettanti;
- è un alfabeto di input finito, non vuoto;
- è un alfabeto di input finito, non vuoto, in cui il peso di un simbolo γ ∈ Γ , w ( γ ) ∈ N , è tale che w ( γ 1 ) = w ( γ 2 ) ;
- è il simbolo speciale della parte inferiore dell'heap;
- è la funzione di transizione.
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 ( γ )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 .
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:
- è 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.
- 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:
- 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 ]
- 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.
- 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;
- 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