Pushdown Automata (PDA) yra skaičiavimo įrenginiai, plačiai naudojami skaičiavimo sudėtingumo teorijos srityje. PDA yra baigtinių automatų tipas, kuris praplečia įprasto automato galimybes įtraukdamas krūvą, leidžiančią apdoroti kalbas be konteksto. Yra du pagrindiniai PDA tipai: deterministiniai nuspaudimo automatai (DPDA) ir nedeterministiniai išspaudimo automatai (NPDA). Šie du tipai skiriasi savo galia ir būdu, kaip apdoroja įvesties eilutes.
1. Deterministinis nuspaudimo automatas (DPDA):
DPDA yra nuspaudimo automatas, kuris veikia deterministiškai, o tai reiškia, kad kiekvienam įvesties simboliui ir kamino simboliui yra daugiausia vienas galimas perėjimas. Kitaip tariant, kitą DPDA žingsnį vienareikšmiškai lemia dabartinė jo būsena, skaitomas įvesties simbolis ir krūvos viršuje esantis simbolis. Dėl šio deterministinio DPDA pobūdžio juos lengviau analizuoti ir suprasti.
DPDA būdinga perėjimo funkcija, kuri dabartinę būseną, įvesties simbolį ir dėklo simbolį susieja su kita būsena ir atliekama dėklo operacija. Krūvos operacijos gali būti arba stumti (pridėti simbolį į krūvos viršų), pop (pašalinti simbolį iš krūvos viršaus) arba likti (laikyti krūvą nepakeistą). Stack leidžia DPDA sekti kontekstą įvesties eilutėje ir atitinkamai priimti sprendimus.
Pavyzdžiui, apsvarstykite DPDA, kuris atpažįsta kalbą L = {a^nb^n | n ≥ 0}. Šią kalbą sudaro eilutės, turinčios vienodą skaičių „a“ simbolių, po kurių seka tiek pat „b“ simbolių. DPDA gali išlaikyti „a“ simbolių skaičių įstumdamas „a“ į krūvą ir paspaudęs „a“ kiekvienam aptiktam „b“ simboliui. Jei įvesties pabaigoje krūva tampa tuščia, DPDA priima eilutę; kitu atveju jis jį atmeta.
2. Nedeterministiniai nuspaudimo automatai (NPDA):
Skirtingai nuo DPDA, NPDA gali turėti kelis galimus tam tikro įvesties simbolio ir kamino simbolių derinio perėjimus. Šis nedeterministinis elgesys leidžia NPDA vienu metu ištirti kelis kelius skaičiavimo metu. NPDA yra išraiškingesni ir galingesni nei DPDA, tačiau juos taip pat sudėtingiau analizuoti.
NPDA būdinga perėjimo funkcija, kuri dabartinę būseną, įvesties simbolį ir dėklo simbolį susieja su galimų kitų būsenų ir krūvos operacijų rinkiniu. Stacko operacijos vis tiek gali būti stumdymas, iššokimas arba sustabdymas, tačiau galimų kitų būsenų rinkinys leidžia skaičiavime atlikti išsišakojimą ir grįžti atgal.
Pavyzdžiui, apsvarstykite NPDA, atpažįstančią kalbą L = {ww^R | w yra „a“ ir „b“ eilutė. Ši kalba susideda iš eilučių, kurios yra palindromai, o tai reiškia, kad jos skaitomos vienodai į priekį ir atgal. NPDA gali nedeterministiškai atspėti, kur yra eilutės vidurys, ir tada patikrinti, ar abiejose pusėse esantys simboliai sutampa, įstumdamas simbolius į krūvą ir išmesdamas juos atvirkštine tvarka. Jei visi simboliai atitinka ir krūva tampa tuščia, NPDA priima eilutę; kitu atveju jis jį atmeta.
DPDA ir NPDA yra dviejų tipų automatai, kurie skiriasi savo galia ir būdu, kaip apdoroja įvesties eilutes. DPDA veikia deterministiškai, o NPDA gali veikti nedeterministiškai. DPDA lengviau analizuoti, bet turi mažiau išraiškos galios, o NPDA yra galingesni, bet sudėtingiau analizuoti.
Kiti naujausi klausimai ir atsakymai apie EITC/IS/CCTF skaičiavimo sudėtingumo teorijos pagrindai:
- Kokie yra pagrindiniai matematiniai apibrėžimai, žymėjimai ir įvadai, reikalingi skaičiavimo sudėtingumo teorijos formalizmui suprasti?
- Kodėl skaičiavimo sudėtingumo teorija yra svarbi norint suprasti kriptografijos ir kibernetinio saugumo pagrindus?
- Koks yra rekursijos teoremos vaidmuo įrodant bankomato neapibrėžtumą?
- Turint omenyje PDA, galintį nuskaityti palindromus, ar galėtumėte išsamiai aprašyti krūvos raidą, kai įvestis, pirma, yra palindromas, o antra, ne palindromas?
- Atsižvelgiant į nedeterministinius PDA, būsenų superpozicija yra įmanoma pagal apibrėžimą. Tačiau nedeterministiniai PDA turi tik vieną krūvą, kuri negali būti kelių būsenų vienu metu. Kaip tai įmanoma?
- Koks yra PDA, naudojamo tinklo srautui analizuoti ir modeliams, rodantiems galimus saugumo pažeidimus, pavyzdys?
- Ką reiškia, kad viena kalba yra galingesnė už kitą?
- Ar Turingo mašina atpažįsta kontekstui jautrias kalbas?
- Kodėl kalba U = 0^n1^n (n>=0) yra netaisyklinga?
- Kaip apibrėžti FSM, atpažįstantį dvejetaines eilutes su lyginiu simbolių skaičiumi '1', ir parodyti, kas su juo atsitinka apdorojant įvesties eilutę 1011?
Peržiūrėkite daugiau klausimų ir atsakymų EITC/IS/CCTF skaičiavimo sudėtingumo teorijos pagrinduose