Перейти до основного вмісту

Зірки і смуги

Зірки і смуги — це математичний прийом для розв'язання певних комбінаторних задач. Він виникає щоразу, коли ми хочемо підрахувати кількість способів згрупувати однакові об'єкти.

Коли підходить цей алгоритм?
  • Чи розподіляємо nn однакових (нерозрізнюваних) об'єктів по kk різних скриньках?
  • Чи задача зводиться до кількості розв'язків рівняння x1+x2+⋯+xk=nx_1 + x_2 + \dots + x_k = n у цілих числах із нижніми межами (xi≥0x_i \ge 0 або xi≥aix_i \ge a_i)?
  • Чи потрібні ще й верхні межі на xix_i? (якщо так → Принцип включення-виключення; а якщо об'єкти різні — це просто біноміальний коефіцієнт)

Теорема​

Кількість способів розкласти nn однакових об'єктів у kk позначених скриньок дорівнює

(n+k−1n).\binom{n + k - 1}{n}.

Доведення полягає в тому, щоб перетворити об'єкти на зірки і відокремити скриньки за допомогою смуг (звідси й назва). Наприклад, записом ★∣★★∣ ∣★★\bigstar | \bigstar \bigstar |~| \bigstar \bigstar можна зобразити таку ситуацію: у першій скриньці один об'єкт, у другій скриньці два об'єкти, третя порожня, а в останній скриньці два об'єкти. Це один зі способів розподілити 5 об'єктів у 4 скриньки.

Має бути цілком очевидно, що кожний розподіл можна зобразити за допомогою nn зірок і k−1k - 1 смуг, і що кожна перестановка зірок і смуг із nn зірок та k−1k - 1 смуг відповідає одному розподілу. Отже, кількість способів розподілити nn однакових об'єктів у kk позначених скриньок дорівнює кількості перестановок nn зірок і k−1k - 1 смуг. Біноміальний коефіцієнт дає нам бажану формулу.

Кількість сум невід'ємних цілих чисел​

Ця задача є прямим застосуванням теореми.

Ми хочемо підрахувати кількість розв'язків рівняння

x1+x2+⋯+xk=nx_1 + x_2 + \dots + x_k = n

за умови xi≥0x_i \ge 0.

Знову ж таки, розв'язок можна зобразити за допомогою зірок і смуг. Наприклад, розв'язок 1+3+0=41 + 3 + 0 = 4 для n=4n = 4, k=3k = 3 можна зобразити як ★∣★★★∣\bigstar | \bigstar \bigstar \bigstar |.

Легко бачити, що це саме теорема про зірки і смуги. Отже, розв'язком є (n+k−1n)\binom{n + k - 1}{n}.

Кількість сум додатних цілих чисел​

Друга теорема дає гарну інтерпретацію для додатних чисел. Розглянемо розв'язки рівняння

x1+x2+⋯+xk=nx_1 + x_2 + \dots + x_k = n

за умови xi≥1x_i \ge 1.

Ми можемо розглянути nn зірок, але цього разу між зірками можна поставити щонайбільше одну смугу, оскільки дві смуги між зірками означали б xi=0x_i=0, тобто порожню скриньку. Між зірками є n−1n-1 проміжок для розміщення k−1k-1 смуг, тому розв'язком є (n−1k−1)\binom{n-1}{k-1}.

Кількість сум цілих чисел з нижніми межами​

Це легко узагальнити на суми цілих чисел з різними нижніми межами. Тобто ми хочемо підрахувати кількість розв'язків рівняння

x1+x2+⋯+xk=nx_1 + x_2 + \dots + x_k = n

за умови xi≥aix_i \ge a_i.

Після заміни xi′:=xi−aix_i' := x_i - a_i ми отримуємо видозмінене рівняння

(x1′+ai)+(x2′+ai)+⋯+(xk′+ak)=n(x_1' + a_i) + (x_2' + a_i) + \dots + (x_k' + a_k) = n ⇔  x1′+x2′+⋯+xk′=n−a1−a2−⋯−ak\Leftrightarrow ~ ~ x_1' + x_2' + \dots + x_k' = n - a_1 - a_2 - \dots - a_k

за умови xi′≥0x_i' \ge 0. Отже, ми звели задачу до простішого випадку з xi′≥0x_i' \ge 0 і знову можемо застосувати теорему про зірки і смуги.

Кількість сум цілих чисел з верхніми межами​

За допомогою принципу включень-виключень можна також обмежити цілі числа верхніми межами. Дивіться розділ Number of upper-bound integer sums у відповідній статті.

Задачі для практики​

Відеоматеріали​