Automaton recognizing ambiguously accepted words of another automaton
$begingroup$
Let $A$ be a nondeterministic automaton. Let $X(A)$ the set of words for which there at least two accepting paths.
In one of the previous exam, for which no answers are available, it is required to prove that there exist a deterministic automaton whose language is $X(A)$. Furthermore, if the original automaton has $k$ states, then the new automaton should have $3^k$ states.
I have tried multiples approaches to no avail:
- Make an automata that keeps track of which path was taken, but the size of the automata grew infinitely because of cycles...
- An automaton for each state I also kept track of which state it came from, but it was just a scaled down version of previous attempt. Which didn't work if the path started to converge early.
- Tried an automaton where I encoded each state with the set of all the states from automaton $A$. And for each state I included whether I went through that state 0, 1 or more than 2 times.
automata regular-languages finite-automata
New contributor
$endgroup$
add a comment |
$begingroup$
Let $A$ be a nondeterministic automaton. Let $X(A)$ the set of words for which there at least two accepting paths.
In one of the previous exam, for which no answers are available, it is required to prove that there exist a deterministic automaton whose language is $X(A)$. Furthermore, if the original automaton has $k$ states, then the new automaton should have $3^k$ states.
I have tried multiples approaches to no avail:
- Make an automata that keeps track of which path was taken, but the size of the automata grew infinitely because of cycles...
- An automaton for each state I also kept track of which state it came from, but it was just a scaled down version of previous attempt. Which didn't work if the path started to converge early.
- Tried an automaton where I encoded each state with the set of all the states from automaton $A$. And for each state I included whether I went through that state 0, 1 or more than 2 times.
automata regular-languages finite-automata
New contributor
$endgroup$
add a comment |
$begingroup$
Let $A$ be a nondeterministic automaton. Let $X(A)$ the set of words for which there at least two accepting paths.
In one of the previous exam, for which no answers are available, it is required to prove that there exist a deterministic automaton whose language is $X(A)$. Furthermore, if the original automaton has $k$ states, then the new automaton should have $3^k$ states.
I have tried multiples approaches to no avail:
- Make an automata that keeps track of which path was taken, but the size of the automata grew infinitely because of cycles...
- An automaton for each state I also kept track of which state it came from, but it was just a scaled down version of previous attempt. Which didn't work if the path started to converge early.
- Tried an automaton where I encoded each state with the set of all the states from automaton $A$. And for each state I included whether I went through that state 0, 1 or more than 2 times.
automata regular-languages finite-automata
New contributor
$endgroup$
Let $A$ be a nondeterministic automaton. Let $X(A)$ the set of words for which there at least two accepting paths.
In one of the previous exam, for which no answers are available, it is required to prove that there exist a deterministic automaton whose language is $X(A)$. Furthermore, if the original automaton has $k$ states, then the new automaton should have $3^k$ states.
I have tried multiples approaches to no avail:
- Make an automata that keeps track of which path was taken, but the size of the automata grew infinitely because of cycles...
- An automaton for each state I also kept track of which state it came from, but it was just a scaled down version of previous attempt. Which didn't work if the path started to converge early.
- Tried an automaton where I encoded each state with the set of all the states from automaton $A$. And for each state I included whether I went through that state 0, 1 or more than 2 times.
automata regular-languages finite-automata
automata regular-languages finite-automata
New contributor
New contributor
edited 2 hours ago
Yuval Filmus
194k14183347
194k14183347
New contributor
asked 2 hours ago
truvakingtruvaking
284
284
New contributor
New contributor
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
Construct an NFA which will simulate (nodeterministically) two runs of the original NFA on the input. The NFA also remembers one bit – whether the two runs have diverged so far or not. If the bit is off and the NFA chooses two different transitions, then you turn it on. The NFA accepts if both runs accept and the bit is on.
If the original NFA has $k$ states, then the new NFA will have $2k^2$ states. You can convert it to a DFA with $4^{k^2}$ states.
We can reduce the number of states in the corresponding DFA by performing the powerset construction directly. At each step, we will remember, for each step, whether (i) it is impossible to be at that state, (ii) it is possible to be at that state, but there is a unique such run, (iii) it is possible to be at the state, and there are at least two such runs. A state is accepting if there is an accepting states of type (iii), or at least two accepting states of type (ii). This construction uses only $3^k$ states, and so matches your hint.
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "419"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
truvaking is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f105377%2fautomaton-recognizing-ambiguously-accepted-words-of-another-automaton%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Construct an NFA which will simulate (nodeterministically) two runs of the original NFA on the input. The NFA also remembers one bit – whether the two runs have diverged so far or not. If the bit is off and the NFA chooses two different transitions, then you turn it on. The NFA accepts if both runs accept and the bit is on.
If the original NFA has $k$ states, then the new NFA will have $2k^2$ states. You can convert it to a DFA with $4^{k^2}$ states.
We can reduce the number of states in the corresponding DFA by performing the powerset construction directly. At each step, we will remember, for each step, whether (i) it is impossible to be at that state, (ii) it is possible to be at that state, but there is a unique such run, (iii) it is possible to be at the state, and there are at least two such runs. A state is accepting if there is an accepting states of type (iii), or at least two accepting states of type (ii). This construction uses only $3^k$ states, and so matches your hint.
$endgroup$
add a comment |
$begingroup$
Construct an NFA which will simulate (nodeterministically) two runs of the original NFA on the input. The NFA also remembers one bit – whether the two runs have diverged so far or not. If the bit is off and the NFA chooses two different transitions, then you turn it on. The NFA accepts if both runs accept and the bit is on.
If the original NFA has $k$ states, then the new NFA will have $2k^2$ states. You can convert it to a DFA with $4^{k^2}$ states.
We can reduce the number of states in the corresponding DFA by performing the powerset construction directly. At each step, we will remember, for each step, whether (i) it is impossible to be at that state, (ii) it is possible to be at that state, but there is a unique such run, (iii) it is possible to be at the state, and there are at least two such runs. A state is accepting if there is an accepting states of type (iii), or at least two accepting states of type (ii). This construction uses only $3^k$ states, and so matches your hint.
$endgroup$
add a comment |
$begingroup$
Construct an NFA which will simulate (nodeterministically) two runs of the original NFA on the input. The NFA also remembers one bit – whether the two runs have diverged so far or not. If the bit is off and the NFA chooses two different transitions, then you turn it on. The NFA accepts if both runs accept and the bit is on.
If the original NFA has $k$ states, then the new NFA will have $2k^2$ states. You can convert it to a DFA with $4^{k^2}$ states.
We can reduce the number of states in the corresponding DFA by performing the powerset construction directly. At each step, we will remember, for each step, whether (i) it is impossible to be at that state, (ii) it is possible to be at that state, but there is a unique such run, (iii) it is possible to be at the state, and there are at least two such runs. A state is accepting if there is an accepting states of type (iii), or at least two accepting states of type (ii). This construction uses only $3^k$ states, and so matches your hint.
$endgroup$
Construct an NFA which will simulate (nodeterministically) two runs of the original NFA on the input. The NFA also remembers one bit – whether the two runs have diverged so far or not. If the bit is off and the NFA chooses two different transitions, then you turn it on. The NFA accepts if both runs accept and the bit is on.
If the original NFA has $k$ states, then the new NFA will have $2k^2$ states. You can convert it to a DFA with $4^{k^2}$ states.
We can reduce the number of states in the corresponding DFA by performing the powerset construction directly. At each step, we will remember, for each step, whether (i) it is impossible to be at that state, (ii) it is possible to be at that state, but there is a unique such run, (iii) it is possible to be at the state, and there are at least two such runs. A state is accepting if there is an accepting states of type (iii), or at least two accepting states of type (ii). This construction uses only $3^k$ states, and so matches your hint.
answered 2 hours ago
Yuval FilmusYuval Filmus
194k14183347
194k14183347
add a comment |
add a comment |
truvaking is a new contributor. Be nice, and check out our Code of Conduct.
truvaking is a new contributor. Be nice, and check out our Code of Conduct.
truvaking is a new contributor. Be nice, and check out our Code of Conduct.
truvaking is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Computer Science Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f105377%2fautomaton-recognizing-ambiguously-accepted-words-of-another-automaton%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown