Number of binary strings of length $n$, where every $1$, if any, is followed by at most $k$ $0$s
Clash Royale CLAN TAG#URR8PPP
up vote
1
down vote
favorite
This question is similar to the one asked here by another user, but I want to ask it again since it was worded poorly there and not enough context was provided.
Actually, this question was asked as a coding problem in a placement test (which is over now of course), where the input is given as two numbers $n$ and $k$, and we have to output the number of binary strings of length $n$, where every $1$ in the binary string, if any exists, is followed by at most $k$ zeroes.
For eg. for $n = 5, k = 0$, output must be $6$, which is the set $(00000, 00001, 00011, 00111, 01111, 11111)$.
I believe this can be done using dynamic programming, by developing a recurrence relation between a larger problem instance $f(n, k)$ and smaller ones, for eg. $f(n, k-1), f(n-1, k-1)$ etc., but I haven't been able to find one.
Base cases are easy to see: $f(n, 0) = n + 1$ $forall n$, $f(0, k) = 0$ $forall k$; and $f (n , k) = 2^n$ for $k geq n - 1$
Solution for a non-trivial instance - $f(6, 2) = 52$
Edit: I realized that Mike Earnest has found a solution in the linked question, based on combinatorics, so I am only interested in a recurrence relation. Also, from an algorithmic point of view, the time complexity of computing $n choose k$ is much higher than a polynomial solution that can be found with a recurrence relation, by building bottom-up from the base cases.
combinatorics recurrence-relations contest-math binary dynamic-programming
add a comment |Â
up vote
1
down vote
favorite
This question is similar to the one asked here by another user, but I want to ask it again since it was worded poorly there and not enough context was provided.
Actually, this question was asked as a coding problem in a placement test (which is over now of course), where the input is given as two numbers $n$ and $k$, and we have to output the number of binary strings of length $n$, where every $1$ in the binary string, if any exists, is followed by at most $k$ zeroes.
For eg. for $n = 5, k = 0$, output must be $6$, which is the set $(00000, 00001, 00011, 00111, 01111, 11111)$.
I believe this can be done using dynamic programming, by developing a recurrence relation between a larger problem instance $f(n, k)$ and smaller ones, for eg. $f(n, k-1), f(n-1, k-1)$ etc., but I haven't been able to find one.
Base cases are easy to see: $f(n, 0) = n + 1$ $forall n$, $f(0, k) = 0$ $forall k$; and $f (n , k) = 2^n$ for $k geq n - 1$
Solution for a non-trivial instance - $f(6, 2) = 52$
Edit: I realized that Mike Earnest has found a solution in the linked question, based on combinatorics, so I am only interested in a recurrence relation. Also, from an algorithmic point of view, the time complexity of computing $n choose k$ is much higher than a polynomial solution that can be found with a recurrence relation, by building bottom-up from the base cases.
combinatorics recurrence-relations contest-math binary dynamic-programming
add a comment |Â
up vote
1
down vote
favorite
up vote
1
down vote
favorite
This question is similar to the one asked here by another user, but I want to ask it again since it was worded poorly there and not enough context was provided.
Actually, this question was asked as a coding problem in a placement test (which is over now of course), where the input is given as two numbers $n$ and $k$, and we have to output the number of binary strings of length $n$, where every $1$ in the binary string, if any exists, is followed by at most $k$ zeroes.
For eg. for $n = 5, k = 0$, output must be $6$, which is the set $(00000, 00001, 00011, 00111, 01111, 11111)$.
I believe this can be done using dynamic programming, by developing a recurrence relation between a larger problem instance $f(n, k)$ and smaller ones, for eg. $f(n, k-1), f(n-1, k-1)$ etc., but I haven't been able to find one.
Base cases are easy to see: $f(n, 0) = n + 1$ $forall n$, $f(0, k) = 0$ $forall k$; and $f (n , k) = 2^n$ for $k geq n - 1$
Solution for a non-trivial instance - $f(6, 2) = 52$
Edit: I realized that Mike Earnest has found a solution in the linked question, based on combinatorics, so I am only interested in a recurrence relation. Also, from an algorithmic point of view, the time complexity of computing $n choose k$ is much higher than a polynomial solution that can be found with a recurrence relation, by building bottom-up from the base cases.
combinatorics recurrence-relations contest-math binary dynamic-programming
This question is similar to the one asked here by another user, but I want to ask it again since it was worded poorly there and not enough context was provided.
Actually, this question was asked as a coding problem in a placement test (which is over now of course), where the input is given as two numbers $n$ and $k$, and we have to output the number of binary strings of length $n$, where every $1$ in the binary string, if any exists, is followed by at most $k$ zeroes.
For eg. for $n = 5, k = 0$, output must be $6$, which is the set $(00000, 00001, 00011, 00111, 01111, 11111)$.
I believe this can be done using dynamic programming, by developing a recurrence relation between a larger problem instance $f(n, k)$ and smaller ones, for eg. $f(n, k-1), f(n-1, k-1)$ etc., but I haven't been able to find one.
Base cases are easy to see: $f(n, 0) = n + 1$ $forall n$, $f(0, k) = 0$ $forall k$; and $f (n , k) = 2^n$ for $k geq n - 1$
Solution for a non-trivial instance - $f(6, 2) = 52$
Edit: I realized that Mike Earnest has found a solution in the linked question, based on combinatorics, so I am only interested in a recurrence relation. Also, from an algorithmic point of view, the time complexity of computing $n choose k$ is much higher than a polynomial solution that can be found with a recurrence relation, by building bottom-up from the base cases.
combinatorics recurrence-relations contest-math binary dynamic-programming
combinatorics recurrence-relations contest-math binary dynamic-programming
edited Sep 2 at 13:22
asked Sep 2 at 12:14
ab123
1,417421
1,417421
add a comment |Â
add a comment |Â
2 Answers
2
active
oldest
votes
up vote
1
down vote
accepted
Let $a_n$ be the number of strings of length $n$ where every $1$ is followed by at most $k$ zeroes. There are two cases; either the string has a one, or it doesn't. In the former case, the maximal run of zeroes at the end must be of length at most $k$. Therefore, for all $n>k+1$,
$$
a_n = 1+a_n-1+a_n-2+dots+a_n-k-1
$$
As you said, the base cases are $a_n=2^n$ for $nle k+1$. (Note the base case $a_0=1$, because there is one valid string of length $0$, namely the empty string).
For example, when $k=0$, the recurrence is $a_n=a_n-1+1$, which implies $a_n=n+1$. Also,
$$
f(4,2) = 1+f(3,2) + f(2,2) + f(1,2) =1+8 + 4 + 2 = 15\
f(5,2) = 1+f(4,2) + f(3,2) + f(2,2) =1+15+8+4= 28\
f(6,2) = 1+f(5,2) + f(4,2) + f(3,2) =1+28+15+8= 52
$$
You can even simplify this recurrence a bit more. The recurrence when $n$ is replaced with $n-1$ is
$$
a_n-1 = 1+a_n-2+a_n-3+dots+a_n-k-2tag$n>k+2$
$$
Subtracting these equations
$$
boxeda_n=2a_n-1-a_n-k-2.
$$
You can compute $a_n$ in $O(k^3log n)$ time if you are careful. The last recurrence can be written as a matrix equation, which I illustrate when $k=2$:
$$
beginbmatrixa_n \ a_n-1 \ a_n-2 \a_n-3endbmatrix=
beginbmatrix 2 & 0 & 0 & -1 \ 1 & 0 & 0 & 0 \0 & 1 & 0 & 0 \0 & 0 & 1 & 0 endbmatrix
beginbmatrix a_n-1 \ a_n-2 \a_n-3\a_n-4endbmatrix
$$
Letting $A$ be the $(k+2)times (k+2)$ matrix, iterating the recurrence implies
$$
beginbmatrixa_n \ a_n-1 \ vdots \a_n-k-1endbmatrix=A^n-k-2beginbmatrixa_k+2 \ a_k+1 \ vdots \a_1endbmatrix
$$
Therefore, you can compute the vector on the left by computing a power of the matrix $A$. Using exponentiation by squaring, this takes only $O(log n)$ matrix multiplication, each of which naively takes $O(k^3)$ arithmetic operations.
Thanks for the detailed answer, but I don't understand this part - "In the latter case, the maximal run of zeroes at the end must of length at most $n$. Therefore, for all $n>k+1, a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$". Isn't the latter case the strings with no '1', so just the zero string $000dots0$
â ab123
Sep 5 at 10:13
So does $a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$ mean that we are adding $1$ for string with all zeroes, then we append zeroes from left to each of the smaller string $a_n -1, a_n - 2, dots , a_n - k -1 $ to make them of length $n$, for eg. add 2 zeroes in beginnning of any string belonging to $a_n - 2$, etc. , so that every '1' is still followed by no more than $k$ zeroes and this covers all possible strings.
â ab123
Sep 5 at 13:21
@ab123 Pretty much. Except you are not just appending zeroes, you are appending a single "1" followed by "0"s. The case $a_n-2$ counts all valid strings of length $n-2$ with a "10" added to the end.
â Mike Earnest
Sep 5 at 13:25
But if I let $k = 3$ and $n = 6$, $1000$ belongs to $a_4 (= a_n - 2)$, if I add $10$ at the end of it, then I will get $100010$, but it does not belong to $a_n$ because the first "1" now has $4 (> k)$ zeroes after it
â ab123
Sep 5 at 13:38
@ab123 I was interpreting "followed by $k$ zeroes" to mean "followed by $k$ zeroes in a row". I thought $100010$ is legal because the first "1" is only followed by three zeroes in a row.
â Mike Earnest
Sep 5 at 13:41
 |Â
show 2 more comments
up vote
0
down vote
Let $f(n)$ denote the number of valid strings of length which end with $1$.
Base case $f(0)$ shall be equal to $1$.
$$f(n)= sum_i=0^k+1 f(n-i)$$
Now the final answer shall be the sum of all $f(i)$'s, i.e ans$ = sum_i=0^n f(i)$.
The given algorithm would take quadratic time. To enhance it further we can use a prefix array to store sums of previously calculated subproblems so that the RHS can be computed in constant time.
How exactly do you define $f(0)$, and how is $f(0) = 1$? Your solution isn't clear. Does it provide correct answers for $(5, 0)$ and $(6, 2)$?
â ab123
Sep 2 at 13:16
f(0) is basically covers the case of all 0's,since the other f(i)'s in my definition won't cover that particular case. And yes,my optimal substructure gives the correct answer for the two cases you mentioned.
â Akash Verma
Sep 3 at 10:45
add a comment |Â
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
Let $a_n$ be the number of strings of length $n$ where every $1$ is followed by at most $k$ zeroes. There are two cases; either the string has a one, or it doesn't. In the former case, the maximal run of zeroes at the end must be of length at most $k$. Therefore, for all $n>k+1$,
$$
a_n = 1+a_n-1+a_n-2+dots+a_n-k-1
$$
As you said, the base cases are $a_n=2^n$ for $nle k+1$. (Note the base case $a_0=1$, because there is one valid string of length $0$, namely the empty string).
For example, when $k=0$, the recurrence is $a_n=a_n-1+1$, which implies $a_n=n+1$. Also,
$$
f(4,2) = 1+f(3,2) + f(2,2) + f(1,2) =1+8 + 4 + 2 = 15\
f(5,2) = 1+f(4,2) + f(3,2) + f(2,2) =1+15+8+4= 28\
f(6,2) = 1+f(5,2) + f(4,2) + f(3,2) =1+28+15+8= 52
$$
You can even simplify this recurrence a bit more. The recurrence when $n$ is replaced with $n-1$ is
$$
a_n-1 = 1+a_n-2+a_n-3+dots+a_n-k-2tag$n>k+2$
$$
Subtracting these equations
$$
boxeda_n=2a_n-1-a_n-k-2.
$$
You can compute $a_n$ in $O(k^3log n)$ time if you are careful. The last recurrence can be written as a matrix equation, which I illustrate when $k=2$:
$$
beginbmatrixa_n \ a_n-1 \ a_n-2 \a_n-3endbmatrix=
beginbmatrix 2 & 0 & 0 & -1 \ 1 & 0 & 0 & 0 \0 & 1 & 0 & 0 \0 & 0 & 1 & 0 endbmatrix
beginbmatrix a_n-1 \ a_n-2 \a_n-3\a_n-4endbmatrix
$$
Letting $A$ be the $(k+2)times (k+2)$ matrix, iterating the recurrence implies
$$
beginbmatrixa_n \ a_n-1 \ vdots \a_n-k-1endbmatrix=A^n-k-2beginbmatrixa_k+2 \ a_k+1 \ vdots \a_1endbmatrix
$$
Therefore, you can compute the vector on the left by computing a power of the matrix $A$. Using exponentiation by squaring, this takes only $O(log n)$ matrix multiplication, each of which naively takes $O(k^3)$ arithmetic operations.
Thanks for the detailed answer, but I don't understand this part - "In the latter case, the maximal run of zeroes at the end must of length at most $n$. Therefore, for all $n>k+1, a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$". Isn't the latter case the strings with no '1', so just the zero string $000dots0$
â ab123
Sep 5 at 10:13
So does $a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$ mean that we are adding $1$ for string with all zeroes, then we append zeroes from left to each of the smaller string $a_n -1, a_n - 2, dots , a_n - k -1 $ to make them of length $n$, for eg. add 2 zeroes in beginnning of any string belonging to $a_n - 2$, etc. , so that every '1' is still followed by no more than $k$ zeroes and this covers all possible strings.
â ab123
Sep 5 at 13:21
@ab123 Pretty much. Except you are not just appending zeroes, you are appending a single "1" followed by "0"s. The case $a_n-2$ counts all valid strings of length $n-2$ with a "10" added to the end.
â Mike Earnest
Sep 5 at 13:25
But if I let $k = 3$ and $n = 6$, $1000$ belongs to $a_4 (= a_n - 2)$, if I add $10$ at the end of it, then I will get $100010$, but it does not belong to $a_n$ because the first "1" now has $4 (> k)$ zeroes after it
â ab123
Sep 5 at 13:38
@ab123 I was interpreting "followed by $k$ zeroes" to mean "followed by $k$ zeroes in a row". I thought $100010$ is legal because the first "1" is only followed by three zeroes in a row.
â Mike Earnest
Sep 5 at 13:41
 |Â
show 2 more comments
up vote
1
down vote
accepted
Let $a_n$ be the number of strings of length $n$ where every $1$ is followed by at most $k$ zeroes. There are two cases; either the string has a one, or it doesn't. In the former case, the maximal run of zeroes at the end must be of length at most $k$. Therefore, for all $n>k+1$,
$$
a_n = 1+a_n-1+a_n-2+dots+a_n-k-1
$$
As you said, the base cases are $a_n=2^n$ for $nle k+1$. (Note the base case $a_0=1$, because there is one valid string of length $0$, namely the empty string).
For example, when $k=0$, the recurrence is $a_n=a_n-1+1$, which implies $a_n=n+1$. Also,
$$
f(4,2) = 1+f(3,2) + f(2,2) + f(1,2) =1+8 + 4 + 2 = 15\
f(5,2) = 1+f(4,2) + f(3,2) + f(2,2) =1+15+8+4= 28\
f(6,2) = 1+f(5,2) + f(4,2) + f(3,2) =1+28+15+8= 52
$$
You can even simplify this recurrence a bit more. The recurrence when $n$ is replaced with $n-1$ is
$$
a_n-1 = 1+a_n-2+a_n-3+dots+a_n-k-2tag$n>k+2$
$$
Subtracting these equations
$$
boxeda_n=2a_n-1-a_n-k-2.
$$
You can compute $a_n$ in $O(k^3log n)$ time if you are careful. The last recurrence can be written as a matrix equation, which I illustrate when $k=2$:
$$
beginbmatrixa_n \ a_n-1 \ a_n-2 \a_n-3endbmatrix=
beginbmatrix 2 & 0 & 0 & -1 \ 1 & 0 & 0 & 0 \0 & 1 & 0 & 0 \0 & 0 & 1 & 0 endbmatrix
beginbmatrix a_n-1 \ a_n-2 \a_n-3\a_n-4endbmatrix
$$
Letting $A$ be the $(k+2)times (k+2)$ matrix, iterating the recurrence implies
$$
beginbmatrixa_n \ a_n-1 \ vdots \a_n-k-1endbmatrix=A^n-k-2beginbmatrixa_k+2 \ a_k+1 \ vdots \a_1endbmatrix
$$
Therefore, you can compute the vector on the left by computing a power of the matrix $A$. Using exponentiation by squaring, this takes only $O(log n)$ matrix multiplication, each of which naively takes $O(k^3)$ arithmetic operations.
Thanks for the detailed answer, but I don't understand this part - "In the latter case, the maximal run of zeroes at the end must of length at most $n$. Therefore, for all $n>k+1, a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$". Isn't the latter case the strings with no '1', so just the zero string $000dots0$
â ab123
Sep 5 at 10:13
So does $a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$ mean that we are adding $1$ for string with all zeroes, then we append zeroes from left to each of the smaller string $a_n -1, a_n - 2, dots , a_n - k -1 $ to make them of length $n$, for eg. add 2 zeroes in beginnning of any string belonging to $a_n - 2$, etc. , so that every '1' is still followed by no more than $k$ zeroes and this covers all possible strings.
â ab123
Sep 5 at 13:21
@ab123 Pretty much. Except you are not just appending zeroes, you are appending a single "1" followed by "0"s. The case $a_n-2$ counts all valid strings of length $n-2$ with a "10" added to the end.
â Mike Earnest
Sep 5 at 13:25
But if I let $k = 3$ and $n = 6$, $1000$ belongs to $a_4 (= a_n - 2)$, if I add $10$ at the end of it, then I will get $100010$, but it does not belong to $a_n$ because the first "1" now has $4 (> k)$ zeroes after it
â ab123
Sep 5 at 13:38
@ab123 I was interpreting "followed by $k$ zeroes" to mean "followed by $k$ zeroes in a row". I thought $100010$ is legal because the first "1" is only followed by three zeroes in a row.
â Mike Earnest
Sep 5 at 13:41
 |Â
show 2 more comments
up vote
1
down vote
accepted
up vote
1
down vote
accepted
Let $a_n$ be the number of strings of length $n$ where every $1$ is followed by at most $k$ zeroes. There are two cases; either the string has a one, or it doesn't. In the former case, the maximal run of zeroes at the end must be of length at most $k$. Therefore, for all $n>k+1$,
$$
a_n = 1+a_n-1+a_n-2+dots+a_n-k-1
$$
As you said, the base cases are $a_n=2^n$ for $nle k+1$. (Note the base case $a_0=1$, because there is one valid string of length $0$, namely the empty string).
For example, when $k=0$, the recurrence is $a_n=a_n-1+1$, which implies $a_n=n+1$. Also,
$$
f(4,2) = 1+f(3,2) + f(2,2) + f(1,2) =1+8 + 4 + 2 = 15\
f(5,2) = 1+f(4,2) + f(3,2) + f(2,2) =1+15+8+4= 28\
f(6,2) = 1+f(5,2) + f(4,2) + f(3,2) =1+28+15+8= 52
$$
You can even simplify this recurrence a bit more. The recurrence when $n$ is replaced with $n-1$ is
$$
a_n-1 = 1+a_n-2+a_n-3+dots+a_n-k-2tag$n>k+2$
$$
Subtracting these equations
$$
boxeda_n=2a_n-1-a_n-k-2.
$$
You can compute $a_n$ in $O(k^3log n)$ time if you are careful. The last recurrence can be written as a matrix equation, which I illustrate when $k=2$:
$$
beginbmatrixa_n \ a_n-1 \ a_n-2 \a_n-3endbmatrix=
beginbmatrix 2 & 0 & 0 & -1 \ 1 & 0 & 0 & 0 \0 & 1 & 0 & 0 \0 & 0 & 1 & 0 endbmatrix
beginbmatrix a_n-1 \ a_n-2 \a_n-3\a_n-4endbmatrix
$$
Letting $A$ be the $(k+2)times (k+2)$ matrix, iterating the recurrence implies
$$
beginbmatrixa_n \ a_n-1 \ vdots \a_n-k-1endbmatrix=A^n-k-2beginbmatrixa_k+2 \ a_k+1 \ vdots \a_1endbmatrix
$$
Therefore, you can compute the vector on the left by computing a power of the matrix $A$. Using exponentiation by squaring, this takes only $O(log n)$ matrix multiplication, each of which naively takes $O(k^3)$ arithmetic operations.
Let $a_n$ be the number of strings of length $n$ where every $1$ is followed by at most $k$ zeroes. There are two cases; either the string has a one, or it doesn't. In the former case, the maximal run of zeroes at the end must be of length at most $k$. Therefore, for all $n>k+1$,
$$
a_n = 1+a_n-1+a_n-2+dots+a_n-k-1
$$
As you said, the base cases are $a_n=2^n$ for $nle k+1$. (Note the base case $a_0=1$, because there is one valid string of length $0$, namely the empty string).
For example, when $k=0$, the recurrence is $a_n=a_n-1+1$, which implies $a_n=n+1$. Also,
$$
f(4,2) = 1+f(3,2) + f(2,2) + f(1,2) =1+8 + 4 + 2 = 15\
f(5,2) = 1+f(4,2) + f(3,2) + f(2,2) =1+15+8+4= 28\
f(6,2) = 1+f(5,2) + f(4,2) + f(3,2) =1+28+15+8= 52
$$
You can even simplify this recurrence a bit more. The recurrence when $n$ is replaced with $n-1$ is
$$
a_n-1 = 1+a_n-2+a_n-3+dots+a_n-k-2tag$n>k+2$
$$
Subtracting these equations
$$
boxeda_n=2a_n-1-a_n-k-2.
$$
You can compute $a_n$ in $O(k^3log n)$ time if you are careful. The last recurrence can be written as a matrix equation, which I illustrate when $k=2$:
$$
beginbmatrixa_n \ a_n-1 \ a_n-2 \a_n-3endbmatrix=
beginbmatrix 2 & 0 & 0 & -1 \ 1 & 0 & 0 & 0 \0 & 1 & 0 & 0 \0 & 0 & 1 & 0 endbmatrix
beginbmatrix a_n-1 \ a_n-2 \a_n-3\a_n-4endbmatrix
$$
Letting $A$ be the $(k+2)times (k+2)$ matrix, iterating the recurrence implies
$$
beginbmatrixa_n \ a_n-1 \ vdots \a_n-k-1endbmatrix=A^n-k-2beginbmatrixa_k+2 \ a_k+1 \ vdots \a_1endbmatrix
$$
Therefore, you can compute the vector on the left by computing a power of the matrix $A$. Using exponentiation by squaring, this takes only $O(log n)$ matrix multiplication, each of which naively takes $O(k^3)$ arithmetic operations.
edited Sep 5 at 13:09
answered Sep 4 at 14:17
Mike Earnest
18.2k11850
18.2k11850
Thanks for the detailed answer, but I don't understand this part - "In the latter case, the maximal run of zeroes at the end must of length at most $n$. Therefore, for all $n>k+1, a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$". Isn't the latter case the strings with no '1', so just the zero string $000dots0$
â ab123
Sep 5 at 10:13
So does $a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$ mean that we are adding $1$ for string with all zeroes, then we append zeroes from left to each of the smaller string $a_n -1, a_n - 2, dots , a_n - k -1 $ to make them of length $n$, for eg. add 2 zeroes in beginnning of any string belonging to $a_n - 2$, etc. , so that every '1' is still followed by no more than $k$ zeroes and this covers all possible strings.
â ab123
Sep 5 at 13:21
@ab123 Pretty much. Except you are not just appending zeroes, you are appending a single "1" followed by "0"s. The case $a_n-2$ counts all valid strings of length $n-2$ with a "10" added to the end.
â Mike Earnest
Sep 5 at 13:25
But if I let $k = 3$ and $n = 6$, $1000$ belongs to $a_4 (= a_n - 2)$, if I add $10$ at the end of it, then I will get $100010$, but it does not belong to $a_n$ because the first "1" now has $4 (> k)$ zeroes after it
â ab123
Sep 5 at 13:38
@ab123 I was interpreting "followed by $k$ zeroes" to mean "followed by $k$ zeroes in a row". I thought $100010$ is legal because the first "1" is only followed by three zeroes in a row.
â Mike Earnest
Sep 5 at 13:41
 |Â
show 2 more comments
Thanks for the detailed answer, but I don't understand this part - "In the latter case, the maximal run of zeroes at the end must of length at most $n$. Therefore, for all $n>k+1, a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$". Isn't the latter case the strings with no '1', so just the zero string $000dots0$
â ab123
Sep 5 at 10:13
So does $a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$ mean that we are adding $1$ for string with all zeroes, then we append zeroes from left to each of the smaller string $a_n -1, a_n - 2, dots , a_n - k -1 $ to make them of length $n$, for eg. add 2 zeroes in beginnning of any string belonging to $a_n - 2$, etc. , so that every '1' is still followed by no more than $k$ zeroes and this covers all possible strings.
â ab123
Sep 5 at 13:21
@ab123 Pretty much. Except you are not just appending zeroes, you are appending a single "1" followed by "0"s. The case $a_n-2$ counts all valid strings of length $n-2$ with a "10" added to the end.
â Mike Earnest
Sep 5 at 13:25
But if I let $k = 3$ and $n = 6$, $1000$ belongs to $a_4 (= a_n - 2)$, if I add $10$ at the end of it, then I will get $100010$, but it does not belong to $a_n$ because the first "1" now has $4 (> k)$ zeroes after it
â ab123
Sep 5 at 13:38
@ab123 I was interpreting "followed by $k$ zeroes" to mean "followed by $k$ zeroes in a row". I thought $100010$ is legal because the first "1" is only followed by three zeroes in a row.
â Mike Earnest
Sep 5 at 13:41
Thanks for the detailed answer, but I don't understand this part - "In the latter case, the maximal run of zeroes at the end must of length at most $n$. Therefore, for all $n>k+1, a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$". Isn't the latter case the strings with no '1', so just the zero string $000dots0$
â ab123
Sep 5 at 10:13
Thanks for the detailed answer, but I don't understand this part - "In the latter case, the maximal run of zeroes at the end must of length at most $n$. Therefore, for all $n>k+1, a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$". Isn't the latter case the strings with no '1', so just the zero string $000dots0$
â ab123
Sep 5 at 10:13
So does $a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$ mean that we are adding $1$ for string with all zeroes, then we append zeroes from left to each of the smaller string $a_n -1, a_n - 2, dots , a_n - k -1 $ to make them of length $n$, for eg. add 2 zeroes in beginnning of any string belonging to $a_n - 2$, etc. , so that every '1' is still followed by no more than $k$ zeroes and this covers all possible strings.
â ab123
Sep 5 at 13:21
So does $a_n = 1+a_n-1+a_n-2+dots+a_n-k-1$ mean that we are adding $1$ for string with all zeroes, then we append zeroes from left to each of the smaller string $a_n -1, a_n - 2, dots , a_n - k -1 $ to make them of length $n$, for eg. add 2 zeroes in beginnning of any string belonging to $a_n - 2$, etc. , so that every '1' is still followed by no more than $k$ zeroes and this covers all possible strings.
â ab123
Sep 5 at 13:21
@ab123 Pretty much. Except you are not just appending zeroes, you are appending a single "1" followed by "0"s. The case $a_n-2$ counts all valid strings of length $n-2$ with a "10" added to the end.
â Mike Earnest
Sep 5 at 13:25
@ab123 Pretty much. Except you are not just appending zeroes, you are appending a single "1" followed by "0"s. The case $a_n-2$ counts all valid strings of length $n-2$ with a "10" added to the end.
â Mike Earnest
Sep 5 at 13:25
But if I let $k = 3$ and $n = 6$, $1000$ belongs to $a_4 (= a_n - 2)$, if I add $10$ at the end of it, then I will get $100010$, but it does not belong to $a_n$ because the first "1" now has $4 (> k)$ zeroes after it
â ab123
Sep 5 at 13:38
But if I let $k = 3$ and $n = 6$, $1000$ belongs to $a_4 (= a_n - 2)$, if I add $10$ at the end of it, then I will get $100010$, but it does not belong to $a_n$ because the first "1" now has $4 (> k)$ zeroes after it
â ab123
Sep 5 at 13:38
@ab123 I was interpreting "followed by $k$ zeroes" to mean "followed by $k$ zeroes in a row". I thought $100010$ is legal because the first "1" is only followed by three zeroes in a row.
â Mike Earnest
Sep 5 at 13:41
@ab123 I was interpreting "followed by $k$ zeroes" to mean "followed by $k$ zeroes in a row". I thought $100010$ is legal because the first "1" is only followed by three zeroes in a row.
â Mike Earnest
Sep 5 at 13:41
 |Â
show 2 more comments
up vote
0
down vote
Let $f(n)$ denote the number of valid strings of length which end with $1$.
Base case $f(0)$ shall be equal to $1$.
$$f(n)= sum_i=0^k+1 f(n-i)$$
Now the final answer shall be the sum of all $f(i)$'s, i.e ans$ = sum_i=0^n f(i)$.
The given algorithm would take quadratic time. To enhance it further we can use a prefix array to store sums of previously calculated subproblems so that the RHS can be computed in constant time.
How exactly do you define $f(0)$, and how is $f(0) = 1$? Your solution isn't clear. Does it provide correct answers for $(5, 0)$ and $(6, 2)$?
â ab123
Sep 2 at 13:16
f(0) is basically covers the case of all 0's,since the other f(i)'s in my definition won't cover that particular case. And yes,my optimal substructure gives the correct answer for the two cases you mentioned.
â Akash Verma
Sep 3 at 10:45
add a comment |Â
up vote
0
down vote
Let $f(n)$ denote the number of valid strings of length which end with $1$.
Base case $f(0)$ shall be equal to $1$.
$$f(n)= sum_i=0^k+1 f(n-i)$$
Now the final answer shall be the sum of all $f(i)$'s, i.e ans$ = sum_i=0^n f(i)$.
The given algorithm would take quadratic time. To enhance it further we can use a prefix array to store sums of previously calculated subproblems so that the RHS can be computed in constant time.
How exactly do you define $f(0)$, and how is $f(0) = 1$? Your solution isn't clear. Does it provide correct answers for $(5, 0)$ and $(6, 2)$?
â ab123
Sep 2 at 13:16
f(0) is basically covers the case of all 0's,since the other f(i)'s in my definition won't cover that particular case. And yes,my optimal substructure gives the correct answer for the two cases you mentioned.
â Akash Verma
Sep 3 at 10:45
add a comment |Â
up vote
0
down vote
up vote
0
down vote
Let $f(n)$ denote the number of valid strings of length which end with $1$.
Base case $f(0)$ shall be equal to $1$.
$$f(n)= sum_i=0^k+1 f(n-i)$$
Now the final answer shall be the sum of all $f(i)$'s, i.e ans$ = sum_i=0^n f(i)$.
The given algorithm would take quadratic time. To enhance it further we can use a prefix array to store sums of previously calculated subproblems so that the RHS can be computed in constant time.
Let $f(n)$ denote the number of valid strings of length which end with $1$.
Base case $f(0)$ shall be equal to $1$.
$$f(n)= sum_i=0^k+1 f(n-i)$$
Now the final answer shall be the sum of all $f(i)$'s, i.e ans$ = sum_i=0^n f(i)$.
The given algorithm would take quadratic time. To enhance it further we can use a prefix array to store sums of previously calculated subproblems so that the RHS can be computed in constant time.
edited Sep 3 at 11:01
Arnaud D.
14.9k52142
14.9k52142
answered Sep 2 at 13:01
Akash Verma
111
111
How exactly do you define $f(0)$, and how is $f(0) = 1$? Your solution isn't clear. Does it provide correct answers for $(5, 0)$ and $(6, 2)$?
â ab123
Sep 2 at 13:16
f(0) is basically covers the case of all 0's,since the other f(i)'s in my definition won't cover that particular case. And yes,my optimal substructure gives the correct answer for the two cases you mentioned.
â Akash Verma
Sep 3 at 10:45
add a comment |Â
How exactly do you define $f(0)$, and how is $f(0) = 1$? Your solution isn't clear. Does it provide correct answers for $(5, 0)$ and $(6, 2)$?
â ab123
Sep 2 at 13:16
f(0) is basically covers the case of all 0's,since the other f(i)'s in my definition won't cover that particular case. And yes,my optimal substructure gives the correct answer for the two cases you mentioned.
â Akash Verma
Sep 3 at 10:45
How exactly do you define $f(0)$, and how is $f(0) = 1$? Your solution isn't clear. Does it provide correct answers for $(5, 0)$ and $(6, 2)$?
â ab123
Sep 2 at 13:16
How exactly do you define $f(0)$, and how is $f(0) = 1$? Your solution isn't clear. Does it provide correct answers for $(5, 0)$ and $(6, 2)$?
â ab123
Sep 2 at 13:16
f(0) is basically covers the case of all 0's,since the other f(i)'s in my definition won't cover that particular case. And yes,my optimal substructure gives the correct answer for the two cases you mentioned.
â Akash Verma
Sep 3 at 10:45
f(0) is basically covers the case of all 0's,since the other f(i)'s in my definition won't cover that particular case. And yes,my optimal substructure gives the correct answer for the two cases you mentioned.
â Akash Verma
Sep 3 at 10:45
add a comment |Â
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
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f2902659%2fnumber-of-binary-strings-of-length-n-where-every-1-if-any-is-followed-by%23new-answer', 'question_page');
);
Post as a guest
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
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
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