Прошу совета по комбинаторике.
Задача. Найти число слов длины
, составленных из букв алфавита
, причём каждую букву
можно использовать не более
раз (
).
Например, посчитать слова (цепочки букв) длины 2, которые можно составить из букв слова "МАТЕМАТИКА" (букву К можно использовать только 1 раз, а букву М два раза).
Тривиальный переборный алгоритм:
Перебирать все мультиподмножества заданного мультимножества, имеющие заданную мощность
, и суммировать число их перестановок ("перестановок с повторениями", ибо мультимножества).
Другими словами, перебирать неотрицательные кортежи
, такие что
и
, и суммировать величины
.
Как называется эта задача? Есть ли эффективный способ решения (алгоритм полиномиальной сложности)?