I can't find the automata because I can only imagine it with multiple stacks or with intersections of set theory.
Find the pushdown automata of this language L={A^i B^j C^k | 2k <= i <= 3k OR j != (i+k) } with one stack
543 Views Asked by meightythree At
1
There are 1 best solutions below
Related Questions in PUSHDOWN-AUTOMATON
- Unable to create an DPDA that accepts strings in binary notation multiples of 3
- DFA for complement language of given language
- platform not supported exception in WinCE6.0 OS PDA
- Confusion on the Syntax of a Python Module named automata.pda.npda within automata -lib
- Pushdown Automata for the Language {wwR | w∈{0,1}*}
- How to use zero_copy with anchor in Solana PDAs
- PDA for language where order of letters does not count
- Why does the grammar I defined not use tokens?
- A specific push down automaton for a language (PDA)
- pda to accept the language L={a^n b^m | n<m}
- How to define delta in a PDA
- How to construct a pushdown automata for L= { w ∈ {a, b}* | w does not equal xx^R for some x ∈ {a, b}* }?
- Clarification regarding PDA for L = {a^nb^(2n) | n>=1}
- How can I write pushdown automata?
- PDA for {a^n b^m | n<=m<=2n}
Related Questions in JFLAP
- I am using JFLA .In mealy I want to accept alphabet except letter 's' . in finite automat I can write [a-z[^s]] but this line is not working for melay
- Build a Turing Machine that counts a's and b's
- binary search with JFLAP turing machine
- How can I represent the regular language ∑={a,b,c} with a regular expression in such a way that two characters 'b' cannot be next to each other?
- jflap duplicating states or transitions
- Let the user place Buttons in Java
- Why does JFlap fail to build a usable LL(1) parser from my calculator grammar?
- Non-deterministic finite automata
- Deterministic Finite Automata on JFLAP
- Let Σ = { a; b} How can I define a PDA in JFLAP which recognizes the following?
- Simulating Non Deterministic Turing machine with Deterministic Turing machine [JFLAP]
- Find the pushdown automata of this language L={A^i B^j C^k | 2k <= i <= 3k OR j != (i+k) } with one stack
- Does jflap support (+) operator in a regular expression?
- PushDown Automaton (PDA) for L={a^(n)b^(n)c^(n)|n>=1}
- The way to use JFLAP to do a Pushdown Automaton
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
The language:
L = { A^i B^j C^k | 2k <= i <= 3k OR j != (i+k) }This language is the union of two languages
L'andL'':If we figure out NPDAs for each of these languages, we can write down a new NPDA for the union of these two languages by:
q*f(q*,e,Z) = (q0',Z)andf(q*,e,Z) = (q0'',Z)whereeis epsilon/lambda,Zis the bottom of stack symbol andq0'andq0''are the start states of NPDAs forL'andL'', respectively.We have decomposed the harder problem into two simpler problems, and figured out how to put the answers to the easier problems together to answer the harder problem. This is the most important skill you can possibly develop when it comes to formal sciences such as computer science, mathematics and, to a large extent, computer programming.
What should a NPDA for
L'look like? It can read any number ofBs at all, provided they come in betweenAs andCs. We need to keep track of how manyAs we see, say by pushing anAonto the stack each time we see one; and we need to popAs off the stack once we start seeingCs. Assuming we want to accept by empty stack, we need to remove all theAs; but how do we know how many to remove? If we had2k = i, we would remove twoAs for everyCwe see. If we hadi = 3k, we would remove threeAs for everyCwe see. As it is, we are somewhere in between. This is conceptually difficulty. The notion of nondeterminism - the N in NPDA - is crucial here. We don't need to know exactly how the string will get accepted; we just need a process that can accept a string in the language, and can't accept one not in the language. We can guess whether we need to remove two or threeAs from the stack at any particular juncture; this will guarantee we don't exceed the2kand3kbounds, and it will also allow us to get any result in between. To make this work, we can simply crash or reject all failed executions of valid strings, provided one of the possible executions passes.Here is a NPDA based on this description, assuming acceptance by empty stack and accepting state:
In the above NPDA, transitions that would lead to a "dead" state are not shown. If you want to show it, add those transitions and call the state
qR. In the absence of those explicit transitions, the NPDA is customarily understood to "crash" and reject the input. For any string inL', there will be a way through thisNPDAthat ends in stateqAwith an empty stack.For the other language, we can break it down further.
L''is the union of two languagesR'andR'':Using the same construction outlined above, we can create a NPDA for
L''by finding NPDAs forR'andR''and putting those answers together.For
R', we can pushAs into the stack when we readAs; we can popAs, if any, or pushBs otherwise, when readingBs; and, finally, we can popBs, if any, or pushCs otherwise, when readingCs. We will havej < i + kif and only if there is either anAorCon top of the stack when we're done. Then, we can move to the accepting state and popAs andCs from the stack to get an empty stack.For
R'', we can do the same thing and look for aBon top of the stack. We can move to an accepting state and popBs to clear the stack.A NPDA for your original language is therefore the following:
Add to this all the other transitions given earlier and define acceptance to be by empty stack in any of the three accepting states
qA,qA'orqA''.