Abschlussprüfung unter Umkehrung der von Min-Heap-Automaten akzeptierten Sprachen


16

Dies ist eine Folgefrage von diesem .

In einer früheren Frage zu exotischen Zustandsautomaten haben sich Alex ten Brink und Raphael mit den Rechenfähigkeiten einer besonderen Art von Zustandsautomaten befasst: Min-Heap-Automaten. Sie konnten zeigen, dass die Menge der von solchen Maschinen akzeptierten Sprachen ( ) weder eine Teilmenge noch eine Obermenge der Menge der kontextfreien Sprachen ist. In Anbetracht der erfolgreichen Lösung und des offensichtlichen Interesses an dieser Frage stelle ich weiterhin mehrere Anschlussfragen.HEINL

Es ist bekannt, dass die regulären Sprachen unter einer Vielzahl von Operationen geschlossen werden (wir beschränken uns möglicherweise auf grundlegende Operationen wie Vereinigung, Schnittmenge, Ergänzung, Differenz, Verkettung, Kleene-Stern und Umkehrung), während die kontextfreien Sprachen unterschiedliche Schließungen aufweisen Eigenschaften (diese sind unter Vereinigung, Verkettung, Kleene-Stern und Umkehrung geschlossen).

Ist HAL wegen Stornierung geschlossen?


Was sind die Verwendungszwecke solcher Maschinen? Oder ist das eine akademische Übung?
Dave Clarke

@ DaveClark Nun, es handelt sich meistens um eine akademische Übung (soweit ich weiß, habe ich sie nur in der verknüpften Frage erfunden). Sie können jedoch auf dieselbe Weise rechnen wie andere Computer (DFAs, TMs usw.), sodass sie möglicherweise verwendet werden können.
Patrick87

Diese Frage zeigt, warum Sie Grammatiken zu Ihren Automaten hinzufügen möchten. Arr, mein Gehirn!
Raphael

4
Ich habe versucht, es mit einer Sprache des Formats zu beweisen , aber es hat zu lange gedauert und ich habe aufgegeben. Vielleicht würde diese Idee jemandem helfen. {xyy is a lexicographically sorted copy of x}
Ran G.

@RanG .: Ich denke das sollte funktionieren. Ich freue mich, die Bounty für eine Antwort zu vergeben, die beweist, dass die Sprache in und eine anständige Begründung liefert, dass die Umkehrung nicht der Fall ist. HEINL
Raphael

Antworten:


4

Betrachte die Sprache (wobei # 0 ( x ) die Anzahl der Nullen in x angibt ).

L×2={xyzx,y,z{0,1},#0(x)=#0(y) und |x|+|y|=z}
#0(x)x

Mit einer HAL-Maschine ist es einfach, zu bestimmen. Beachten Sie , dass die Maschine zwei Eigenschaften verfolgen muss: die Anzahl der Nullen in x vs y und die Länge von x , y (vs z ). Es kann a für jede in x angezeigte Null in den Heap schieben (und später für jede in y angezeigte Null popen ). Zusätzlich wird für jedes Bit in x , y gedrückt (und später für jedes Bit in z ). Da alle s den Haufen runtergeschoben werden, stören sie die Zählung nicht. Die L×2xyx,yz0x0y1x,y1z10 dient als Begrenzer und kann praktisch ignoriert werden.

Sei nun , die umgekehrte Sprache. Das heißt, L = { z y y x x , y , z { 0 , 1 } , # 0 ( x ) = # 0 ( y )  und  | x | + | y | = z } Wir werden zeigen, dass keine HAL-Maschine L entscheiden kann .L=L×2R

L={zyxx,y,z{0,1},#0(x)=#0(y) und |x|+|y|=z}
L

Die Intuition ist die folgende. Wie oben muss die Maschine sowohl die Länge von als auch die Anzahl der Nullen in x , y verfolgen . In diesem Fall müssen sie jedoch gleichzeitig verfolgt werden . Dies kann nicht über einen Heap erfolgen. Im Detail enthält der Heap nach dem Lesen von z Informationen über die Länge von | x | + | y | . Beim Lesen von y muss die Maschine auch die Anzahl der Nullen in y auf dem Haufen halten . Diese Informationen können jedoch nicht mit den Informationen interferieren, die der Heap bereits über die erwartete Länge von x verfügtzx,yz|x|+|y|yyxsein. Sehr intuitiv ist entweder die Information über die Anzahl der Nullen "unter" der Information über die Länge von , und dann können wir nicht darauf zugreifen, während wir x lesen , oder es ist "über" dieser Information, wodurch letzterer unzugänglich wird, oder Zwei Informationen werden "gemischt" und werden bedeutungslos.xx

Formal werden wir eine Art "Pumping" -Argument verwenden. Das heißt, wir nehmen eine sehr lange Eingabe und zeigen, dass sich der "Zustand" der Maschine während der Verarbeitung dieser Eingabe wiederholen muss, wodurch wir die Eingabe "ersetzen" können, sobald die Maschine ihren "Zustand" wiederholt.

ε1cc


HL4n|x|=|y|=n|z|=2nz,y#0(y)=n/2(nn/2)xzyxL

zy3ncΓ(nn/2)xsx1,x2

  1. n/2x1x2
  2. n/2xx1x2x1,x2n20.8n2x1,x2(3.5cn)|Γ||Q|3

zyx1px2sx1pxn/2x2sx2x1px2sx1x2#0(y)x1x2

1
2 x1n/2n/4log(nk)nH(k/n)H()H(1/4)0.81(nn/4)>20.8nn
3 Γ|Γ|nnn(n+1|Γ|1)n|Γ||Γ|


Nett! Muss den formalen Teil später noch einmal lesen. 1) Ad ¹: Siehe auch hier . 2) Das Argument bricht zusammen, wenn wir eine nicht deterministische Auswahl des zurückgegebenen Heap-Symbols (unter allen Symbolen mit derselben Priorität) zulassen.
Raphael
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.