Зірки і смуги
Зірки і смуги — це математичний прийом для розв'язання певних комбінаторних задач. Він виникає щоразу, коли ми хочемо підрахувати кількість способів згрупувати однакові об'єкти.
- Чи розподіляємо однакових (нерозрізнюваних) об'єктів по різних скриньках?
- Чи задача зводиться до кількості розв'язків рівняння у цілих числах із нижніми межами ( або )?
- Чи потрібні ще й верхні межі на ? (якщо так → Принцип включення-виключення; а якщо об'єкти різні — це просто біноміальний коефіцієнт)
Теорема
Кількість способів розкласти однакових об'єктів у позначених скриньок дорівнює
Доведення полягає в тому, щоб перетворити об'єкти на зірки і відокремити скриньки за допомогою смуг (звідси й назва). Наприклад, записом можна зобразити таку ситуацію: у першій скриньці один об'єкт, у другій скриньці два об'єкти, третя порожня, а в останній скриньці два об'єкти. Це один зі способів розподілити 5 об'єктів у 4 скриньки.
Має бути цілком очевидно, що кожний розподіл можна зобразити за допомогою зірок і смуг, і що кожна перестановка зірок і смуг із зірок та смуг відповідає одному розподілу. Отже, кількість способів розподілити однакових об'єктів у позначених скриньок дорівнює кількості перестановок зірок і смуг. Біноміальний коефіцієнт дає нам бажану формулу.
Кількість сум невід'ємних цілих чисел
Ця задача є прямим застосуванням теореми.
Ми хочемо підрахувати кількість розв'язків рівняння
за умови .
Знову ж таки, розв'язок можна зобразити за допомогою зірок і смуг. Наприклад, розв'язок для , можна зобразити як .
Легко бачити, що це саме теорема про зірки і смуги. Отже, розв'язком є .
Кількість сум додатних цілих чисел
Друга теорема дає гарну інтерпретацію для додатних чисел. Розглянемо розв'язки рівняння
за умови .
Ми можемо розглянути зірок, але цього разу між зірками можна поставити щонайбільше одну смугу, оскільки дві смуги між зірками означали б , тобто порожню скриньку. Між зірками є проміжок для розміщення смуг, тому розв'язком є .
Кількість сум цілих чисел з нижніми межами
Це легко узагальнити на суми цілих чисел з різними нижніми межами. Тобто ми хочемо підрахувати кількість розв'язків рівняння
за умови .
Після заміни ми отримуємо видозмінене рівняння
за умови . Отже, ми звели задачу до простішого випадку з і знову можемо застосувати теорему про зірки і смуги.
Кількість сум цілих чисел з верхніми межами
За допомогою принципу включень-виключень можна також обмежити цілі числа верхніми межами. Дивіться розділ Number of upper-bound integer sums у відповідній статті.
Задачі для практики
- Codeforces - Array
- Codeforces - Kyoya and Coloured Balls
- Codeforces - Colorful Bricks
- Codeforces - Two Arrays
- Codeforces - One-Dimensional Puzzle