Skip to main content
\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)
Mathematics LibreTexts

1.5: Stars and Bars

  • Page ID
    15319
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \def\d{\displaystyle}\)
    \( \newcommand{\f}[1]{\mathfrak #1}\)
    \( \newcommand{\s}[1]{\mathscr #1}\)
    \( \def\N{\mathbb N}\)
    \( \def\B{\mathbf{B}}\)
    \( \def\circleA{(-.5,0) circle (1)}\)
    \( \def\Z{\mathbb Z}\)
    \( \def\circleAlabel{(-1.5,.6) node[above]{$A$}}\)
    \( \def\Q{\mathbb Q}\)
    \( \def\circleB{(.5,0) circle (1)}\)
    \( \def\R{\mathbb R}\)
    \( \def\circleBlabel{(1.5,.6) node[above]{$B$}}\)
    \( \def\C{\mathbb C}\)
    \( \def\circleC{(0,-1) circle (1)}\)
    \( \def\F{\mathbb F}\)
    \( \def\circleClabel{(.5,-2) node[right]{$C$}}\)
    \( \def\A{\mathbb A}\)
    \( \def\twosetbox{(-2,-1.5) rectangle (2,1.5)}\)
    \( \def\X{\mathbb X}\)
    \( \def\threesetbox{(-2,-2.5) rectangle (2,1.5)}\)
    \( \def\E{\mathbb E}\)
    \( \def\O{\mathbb O}\)
    \( \def\U{\mathcal U}\)
    \( \def\pow{\mathcal P}\)
    \( \def\inv{^{-1}}\)
    \( \def\nrml{\triangleleft}\)
    \( \def\st{:}\)
    \( \def\~{\widetilde}\)
    \( \def\rem{\mathcal R}\)
    \( \def\sigalg{$\sigma$-algebra }\)
    \( \def\Gal{\mbox{Gal}}\)
    \( \def\iff{\leftrightarrow}\)
    \( \def\Iff{\Leftrightarrow}\)
    \( \def\land{\wedge}\)
    \( \def\And{\bigwedge}\)
    \( \def\entry{\entry}\)
    \( \def\AAnd{\d\bigwedge\mkern-18mu\bigwedge}\)
    \( \def\Vee{\bigvee}\)
    \( \def\VVee{\d\Vee\mkern-18mu\Vee}\)
    \( \def\imp{\rightarrow}\)
    \( \def\Imp{\Rightarrow}\)
    \( \def\Fi{\Leftarrow}\)
    \( \def\var{\mbox{var}}\)
    \( \def\Th{\mbox{Th}}\)
    \( \def\entry{\entry}\)
    \( \def\sat{\mbox{Sat}}\)
    \( \def\con{\mbox{Con}}\)
    \( \def\iffmodels{\bmodels\models}\)
    \( \def\dbland{\bigwedge \!\!\bigwedge}\)
    \( \def\dom{\mbox{dom}}\)
    \( \def\rng{\mbox{range}}\)
    \( \def\isom{\cong}\)
    \(\DeclareMathOperator{\wgt}{wgt}\)
    \( \newcommand{\vtx}[2]{node[fill,circle,inner sep=0pt, minimum size=4pt,label=#1:#2]{}}\)
    \( \newcommand{\va}[1]{\vtx{above}{#1}}\)
    \( \newcommand{\vb}[1]{\vtx{below}{#1}}\)
    \( \newcommand{\vr}[1]{\vtx{right}{#1}}\)
    \( \newcommand{\vl}[1]{\vtx{left}{#1}}\)
    \( \renewcommand{\v}{\vtx{above}{}}\)
    \( \def\circleA{(-.5,0) circle (1)}\)
    \( \def\circleAlabel{(-1.5,.6) node[above]{$A$}}\)
    \( \def\circleB{(.5,0) circle (1)}\)
    \( \def\circleBlabel{(1.5,.6) node[above]{$B$}}\)
    \( \def\circleC{(0,-1) circle (1)}\)
    \( \def\circleClabel{(.5,-2) node[right]{$C$}}\)
    \( \def\twosetbox{(-2,-1.4) rectangle (2,1.4)}\)
    \( \def\threesetbox{(-2.5,-2.4) rectangle (2.5,1.4)}\)
    \( \def\ansfilename{practice-answers}\)
    \( \def\shadowprops

    ParseError: EOF expected (click for details)
    Callstack:
        at (Template:MathJaxLevin), /content/body/div/p[1]/span, line 1, column 11
        at template()
        at (Bookshelves/Combinatorics_and_Discrete_Mathematics/Book:_Discrete_Mathematics_(Levin)/1:_Counting/1.5:_Stars_and_Bars), /content/body/p[1]/span, line 1, column 22
        at wiki.page()
        at (Courses/Saint_Mary's_College,_Notre_Dame,_IN/SMC:_MATH_339_-_Discrete_Mathematics_(Rohatgi)/Text/1:_Counting/1.5:_Stars_and_Bars), /content/body/div/pre, line 2, column 10
    
    \)
    \( \renewcommand{\bar}{\overline}\)
    \( \newcommand{\card}[1]{\left| #1 \right|}\)
    \( \newcommand{\twoline}[2]{\begin{pmatrix}#1 \\ #2 \end{pmatrix}}\)
    \( \newcommand{\lt}{<}\)
    \( \newcommand{\gt}{>}\)
    \( \newcommand{\amp}{&}\)

    \( \newcommand{\hexbox}[3]{
      \def\x{-cos{30}*\r*#1+cos{30}*#2*\r*2}
      \def\y{-\r*#1-sin{30}*\r*#1}
      \draw (\x,\y) +(90:\r) -- +(30:\r) -- +(-30:\r) -- +(-90:\r) -- +(-150:\r) -- +(150:\r) -- cycle;
      \draw (\x,\y) node{#3};
    }\)

    \(\renewcommand{\bar}{\overline}\)
    \(\newcommand{\card}[1]{\left| #1 \right|}\)
    \(\newcommand{\twoline}[2]{\begin{pmatrix}#1 \\ #2 \end{pmatrix}}\)
    \(\newcommand{\lt}{<}\)
    \(\newcommand{\gt}{>;}\)
    \(\newcommand{\amp}{&}\)

    Investigate!

    Suppose you have some number of identical Rubik's cubes to distribute to your friends. Imagine you start with a single row of the cubes.

    1. Find the number of different ways you can distribute the cubes provided:

      1. You have 3 cubes to give to 2 people.
      2. You have 4 cubes to give to 2 people.
      3. You have 5 cubes to give to 2 people.
      4. You have 3 cubes to give to 3 people.
      5. You have 4 cubes to give to 3 people.
      6. You have 5 cubes to give to 3 people.
    2. Make a conjecture about how many different ways you could distribute 7 cubes to 4 people. Explain.

    3. What if each person were required to get at least one cube? How would your answers change?

    Consider the following counting problem:

    You have 7 cookies to give to 4 kids. How many ways can you do this?

    Take a moment to think about how you might solve this problem. You may assume that it is acceptable to give a kid no cookies. Also, the cookies are all identical and the order in which you give out the cookies does not matter.

    Before solving the problem, here is a wrong answer: You might guess that the answer should be \(4^7\) because for each of the 7 cookies, there are 4 choices of kids to which you can give the cookie. This is reasonable, but wrong. To see why, consider a few possible outcomes: we could assign the first six cookies to kid A, and the seventh cookie to kid B. Another outcome would assign the first cookie to kid B and the six remaining cookies to kid A. Both outcomes are included in the \(4^7\) answer. But for our counting problem, both outcomes are really the same – kid A gets six cookies and kid B gets one cookie.

    What do outcomes actually look like? How can we represent them? One approach would be to write an outcome as a string of four numbers like this:

    \begin{equation*} 3112, \end{equation*}

    which represent the outcome in which the first kid gets 3 cookies, the second and third kid each get 1 cookie, and the fourth kid gets 2 cookies. Represented this way, the order in which the numbers occur matters. 1312 is a different outcome, because the first kid gets a one cookie instead of 3. Each number in the string can be any integer between 0 and 7. But the answer is not \(7^4\text{.}\) We need the sum of the numbers to be 7.

    Another way we might represent outcomes is to write a string of seven letters:

    \begin{equation*} \mbox{ABAADCD} , \end{equation*}

    which represents that the first cookie goes to kid A, the second cookie goes to kid B, the third and fourth cookies go to kid A, and so on. In fact, this outcome is identical to the previous one—A gets 3 cookies, B and C get 1 each and D gets 2. Each of the seven letters in the string can be any of the 4 possible letters (one for each kid), but the number of such strings is not \(4^7\text{,}\) because here order does not matter. In fact, another way to write the same outcome is

    \begin{equation*} \mbox{AAABCDD} . \end{equation*}

    This will be the preferred representation of the outcome. Since we can write the letters in any order, we might as well write them in alphabetical order for the purposes of counting. So we will write all the A's first, then all the B's, and so on.

    Now think about how you could specify such an outcome. All we really need to do is say when to switch from one letter to the next. In terms of cookies, we need to say after how many cookies do we stop giving cookies to the first kid and start giving cookies to the second kid. And then after how many do we switch to the third kid? And after how many do we switch to the fourth? So yet another way to represent an outcome is like this:

    \begin{equation*} ***|*|*|** \end{equation*}

    Three cookies go to the first kid, then we switch and give one cookie to the second kid, then switch, one to the third kid, switch, two to the fourth kid. Notice that we need 7 stars and 3 bars – one star for each cookie, and one bar for each switch between kids, so one fewer bars than there are kids (we don't need to switch after the last kid – we are done).

    Why have we done all of this? Simple: to count the number of ways to distribute 7 cookies to 4 kids, all we need to do is count how many stars and bars charts there are. But a stars and bars chart is just a string of symbols, some stars and some bars. If instead of stars and bars we would use 0's and 1's, it would just be a bit string. We know how to count those.

    Before we get too excited, we should make sure that really any string of (in our case) 7 stars and 3 bars corresponds to a different way to distribute cookies to kids. In particular consider a string like this:

    \begin{equation*} |***||**** \end{equation*}

    Does that correspond to a cookie distribution? Yes. It represents the distribution in which kid A gets 0 cookies (because we switch to kid B before any stars), kid B gets three cookies (three stars before the next bar), kid C gets 0 cookies (no stars before the next bar) and kid D gets the remaining 4 cookies. No matter how the stars and bars are arranged, we can distribute cookies in that way. Also, given any way to distribute cookies, we can represent that with a stars and bars chart. For example, the distribution in which kid A gets 6 cookies and kid B gets 1 cookie has the following chart:

    \begin{equation*} ******|*|| \end{equation*}

    After all that work we are finally ready to count. Each way to distribute cookies corresponds to a stars and bars chart with 7 stars and 3 bars. So there are 10 symbols, and we must choose 3 of them to be bars. Thus:

    \begin{equation*} \mbox{ There are } {10 \choose 3}\mbox{ ways to distribute 7 cookies to 4 kids.} \end{equation*}

    While we are at it, we can also answer a related question: how many ways are there to distribute 7 cookies to 4 kids so that each kid gets at least one cookie? What can you say about the corresponding stars and bars charts? The charts must start and end with at least one star (so that kids A and D) get cookies, and also no two bars can be adjacent (so that kids B and C are not skipped). One way to assure this is to only place bars in the spaces between the stars. With 7 stars, there are 6 spots between the stars, so we must choose 3 of those 6 spots to fill with bars. Thus there are \({6 \choose 3}\) ways to distribute 7 cookies to 4 kids giving at least one cookie to each kid.

    Another (and more general) way to approach this modified problem is to first give each kid one cookie. Now the remaining 3 cookies can be distributed to the 4 kids without restrictions. So we have 3 stars and 3 bars for a total of 6 symbols, 3 of which must be bars. So again we see that there are \({6 \choose 3}\) ways to distribute the cookies.

    Stars and bars can be used in counting problems other than kids and cookies. Here are a few examples:

    Example \(\PageIndex{1}\)

    Your favorite mathematical pizza chain offers 10 toppings. How many pizzas can you make if you are allowed 6 toppings? The order of toppings does not matter but now you are allowed repeats. So one possible pizza is triple sausage, double pineapple, and onions.

    Solution

    We get 6 toppings (counting possible repeats). Represent each of these toppings as a star. Think of going down the menu one topping at a time: you see anchovies first, and skip to the next, sausage. You say yes to sausage 3 times (use 3 stars), then switch to the next topping on the list. You keep skipping until you get to pineapple, which you say yes to twice. Another switch and you are at onions. You say yes once. Then you keep switching until you get to the last topping, never saying yes again (since you already have said yes 6 times. There are 10 toppings to choose from, so we must switch from considering one topping to the next 9 times. These are the bars.

    Now that we are confident that we have the right number of stars and bars, we answer the question simply: there are 6 stars and 9 bars, so 15 symbols. We need to pick 9 of them to be bars, so there number of pizzas possible is

    \begin{equation*} {15 \choose 9}. \end{equation*}

    Example \(\PageIndex{2}\)

    How many 7 digit phone numbers are there in which the digits are non-increasing? That is, every digit is less than or equal to the previous one.

    Solution

    We need to decide on 7 digits so we will use 7 stars. The bars will represent a switch from each possible single digit number down the next smaller one. So the phone number 866-5221 is represented by the stars and bars chart

    \begin{equation*} |*||**|*|||**|*| \end{equation*}
    There are 10 choices for each digit (0-9) so we must switch between choices 9 times. We have 7 stars and 9 bars, so the total number of phone numbers is

    \begin{equation*} {16 \choose 9}. \end{equation*}

    Example \(\PageIndex{3}\)

    How many integer solutions are there to the equation

    \begin{equation*} x_1 + x_2 + x_3 + x_4 + x_5 = 13. \end{equation*}

    (An integer solution to an equation is a solution in which the unknown must have an integer value.)

    1. where \(x_i \ge 0\) for each \(x_i\text{?}\)
    2. where \(x_i > 0\) for each \(x_i\text{?}\)
    3. where \(x_i \ge 2\) for each \(x_i\text{?}\)
    Solution

    This problem is just like giving 13 cookies to 5 kids. We need to say how many of the 13 units go to each of the 5 variables. In other words, we have 13 stars and 4 bars (the bars are like the “+” signs in the equation).

    1. If \(x_i\) can be 0 or greater, we are in the standard case with no restrictions. So 13 stars and 4 bars can be arranged in \({17 \choose 4}\) ways.
    2. Now each variable must be at least 1. So give one unit to each variable to satisfy that restriction. Now there are 8 stars left, and still 4 bars, so the number of solutions is \({12 \choose 4}\text{.}\)
    3. Now each variable must be 2 or greater. So before any counting, give each variable 2 units. We now have 3 remaining stars and 4 bars, so there are \({7 \choose 4}\) solutions.

    Counting with Functions

    Many of the counting problems in this section might at first appear to be examples of counting functions. After all, when we try to count the number of ways to distribute cookies to kids, we are assigning each cookie to a kid, just like you assign elements of the domain of a function to elements in the codomain. However, the number of ways to assign 7 cookies to 4 kids is \({10 \choose 7} = 120\text{,}\) while the number of functions \(f: \{1,2,3,4,5,6,7\} \to \{a,b,c,d\}\) is \(4^7 = 16384\text{.}\) What is going on here?

    When we count functions, we consider the following two functions, for example, to be different:

    \[f = \twoline{1 \amp 2 \amp 3 \amp 4\amp 5 \amp 6 \amp 7}{a \amp b \amp c \amp c \amp c \amp c \amp c} \qquad g = \twoline{1 \amp 2 \amp 3 \amp 4\amp 5 \amp 6 \amp 7}{b \amp a \amp c \amp c \amp c \amp c \amp c}.\]

    But these two functions would correspond to the same cookie distribution: kids \(a\) and \(b\) each get one cookie, kid \(c\) gets the rest (and none for kid \(d\)).

    The point: elements of the domain are distinguished, cookies are indistinguishable. This is analogous to the distinction between permutations (like counting functions) and combinations (not).

    Contributors

    • Oscar Levin (School of Mathematical Science, University of Northern Colorado)

      \( \def\d{\displaystyle}\)
      \( \newcommand{\f}[1]{\mathfrak #1}\)
      \( \newcommand{\s}[1]{\mathscr #1}\)
      \( \def\N{\mathbb N}\)
      \( \def\B{\mathbf{B}}\)
      \( \def\circleA{(-.5,0) circle (1)}\)
      \( \def\Z{\mathbb Z}\)
      \( \def\circleAlabel{(-1.5,.6) node[above]{$A$}}\)
      \( \def\Q{\mathbb Q}\)
      \( \def\circleB{(.5,0) circle (1)}\)
      \( \def\R{\mathbb R}\)
      \( \def\circleBlabel{(1.5,.6) node[above]{$B$}}\)
      \( \def\C{\mathbb C}\)
      \( \def\circleC{(0,-1) circle (1)}\)
      \( \def\F{\mathbb F}\)
      \( \def\circleClabel{(.5,-2) node[right]{$C$}}\)
      \( \def\A{\mathbb A}\)
      \( \def\twosetbox{(-2,-1.5) rectangle (2,1.5)}\)
      \( \def\X{\mathbb X}\)
      \( \def\threesetbox{(-2,-2.5) rectangle (2,1.5)}\)
      \( \def\E{\mathbb E}\)
      \( \def\O{\mathbb O}\)
      \( \def\U{\mathcal U}\)
      \( \def\pow{\mathcal P}\)
      \( \def\inv{^{-1}}\)
      \( \def\nrml{\triangleleft}\)
      \( \def\st{:}\)
      \( \def\~{\widetilde}\)
      \( \def\rem{\mathcal R}\)
      \( \def\sigalg{$\sigma$-algebra }\)
      \( \def\Gal{\mbox{Gal}}\)
      \( \def\iff{\leftrightarrow}\)
      \( \def\Iff{\Leftrightarrow}\)
      \( \def\land{\wedge}\)
      \( \def\And{\bigwedge}\)
      \( \def\entry{\entry}\)
      \( \def\AAnd{\d\bigwedge\mkern-18mu\bigwedge}\)
      \( \def\Vee{\bigvee}\)
      \( \def\VVee{\d\Vee\mkern-18mu\Vee}\)
      \( \def\imp{\rightarrow}\)
      \( \def\Imp{\Rightarrow}\)
      \( \def\Fi{\Leftarrow}\)
      \( \def\var{\mbox{var}}\)
      \( \def\Th{\mbox{Th}}\)
      \( \def\entry{\entry}\)
      \( \def\sat{\mbox{Sat}}\)
      \( \def\con{\mbox{Con}}\)
      \( \def\iffmodels{\bmodels\models}\)
      \( \def\dbland{\bigwedge \!\!\bigwedge}\)
      \( \def\dom{\mbox{dom}}\)
      \( \def\rng{\mbox{range}}\)
      \( \def\isom{\cong}\)
      \(\DeclareMathOperator{\wgt}{wgt}\)
      \( \newcommand{\vtx}[2]{node[fill,circle,inner sep=0pt, minimum size=4pt,label=#1:#2]{}}\)
      \( \newcommand{\va}[1]{\vtx{above}{#1}}\)
      \( \newcommand{\vb}[1]{\vtx{below}{#1}}\)
      \( \newcommand{\vr}[1]{\vtx{right}{#1}}\)
      \( \newcommand{\vl}[1]{\vtx{left}{#1}}\)
      \( \renewcommand{\v}{\vtx{above}{}}\)
      \( \def\circleA{(-.5,0) circle (1)}\)
      \( \def\circleAlabel{(-1.5,.6) node[above]{$A$}}\)
      \( \def\circleB{(.5,0) circle (1)}\)
      \( \def\circleBlabel{(1.5,.6) node[above]{$B$}}\)
      \( \def\circleC{(0,-1) circle (1)}\)
      \( \def\circleClabel{(.5,-2) node[right]{$C$}}\)
      \( \def\twosetbox{(-2,-1.4) rectangle (2,1.4)}\)
      \( \def\threesetbox{(-2.5,-2.4) rectangle (2.5,1.4)}\)
      \( \def\ansfilename{practice-answers}\)
      \( \def\shadowprops

      ParseError: EOF expected (click for details)
      Callstack:
          at (Template:MathJaxLevin), /content/body/div/p[1]/span, line 1, column 11
          at template()
          at (Template:ContribLevin), /content/body/p[2]/span, line 1, column 22
          at template()
          at (Bookshelves/Combinatorics_and_Discrete_Mathematics/Book:_Discrete_Mathematics_(Levin)/1:_Counting/1.5:_Stars_and_Bars), /content/body/article[4]/div[2]/ul/li/span, line 1, column 22
          at wiki.page()
          at (Courses/Saint_Mary's_College,_Notre_Dame,_IN/SMC:_MATH_339_-_Discrete_Mathematics_(Rohatgi)/Text/1:_Counting/1.5:_Stars_and_Bars), /content/body/div/pre, line 2, column 10
      
      \)
      \( \renewcommand{\bar}{\overline}\)
      \( \newcommand{\card}[1]{\left| #1 \right|}\)
      \( \newcommand{\twoline}[2]{\begin{pmatrix}#1 \\ #2 \end{pmatrix}}\)
      \( \newcommand{\lt}{&lt;}\)
      \( \newcommand{\gt}{&gt;}\)
      \( \newcommand{\amp}{&amp;}\)

      \( \newcommand{\hexbox}[3]{
        \def\x{-cos{30}*\r*#1+cos{30}*#2*\r*2}
        \def\y{-\r*#1-sin{30}*\r*#1}
        \draw (\x,\y) +(90:\r) -- +(30:\r) -- +(-30:\r) -- +(-90:\r) -- +(-150:\r) -- +(150:\r) -- cycle;
        \draw (\x,\y) node{#3};
      }\)

      \(\renewcommand{\bar}{\overline}\)
      \(\newcommand{\card}[1]{\left| #1 \right|}\)
      \(\newcommand{\twoline}[2]{\begin{pmatrix}#1 \\ #2 \end{pmatrix}}\)
      \(\newcommand{\lt}{<}\)
      \(\newcommand{\gt}{>;}\)
      \(\newcommand{\amp}{&}\)