Найти в Дзене
programmer's notes (python and more)

Программирование на языке Python. Комбинаторные алгоритмы. Генерация размещений

Доброго времени суток, читатели, зрители моего канала programmer's notes, любители языка Python. Не забывайте подписываться и писать свои
комментарии к моим статьям и видео.

Python, комбинаторные алгоритмы | programmer's notes (python and more) | Дзен
Алгоритмы на Python | programmer's notes (python and more) | Дзен

Алгоритм генерации размещений на языке Python

Размещения из n по m означает следующее. Пусть имеется список из n элементов. Найдём все его подсписки, состоящие из m элементов. Для каждого подсписка найдём все его перестановки и в совокупности получим все размещения. Например, есть список

1 2 3

т.е. n=3. Найдём все размещения из 3 по 2 (m=2). Количество размещений вычисляется по формуле n!/(n-m)! в результате получаем 6. Найдём в начале все подсписки

1 2
2 3
1 3

с учётом всех перестановок получим ещё 3 списка

2 1
3 2
3 1

в совокупности это и будут все размещения.

Генерацию всех размещений легко получить из программы генерации перестановок. В сущности это обобщение генерации перестановок. При n==m мы должны получить генерацию перестановок. Для этого достаточно ввести ещё один параметр, определяющий m, и останавливать генерацию, когда для отрезка будет равна этому значению.

Текст программы см. ниже
Текст программы см. ниже
primer159.py

Результат выполнения

1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2

И вариант без использования в рекурсивной функции глобальных переменных

Текст программы см. ниже
Текст программы см. ниже
primer160.py

Следующая статья по комбинаторике на Python...

Предыдущая статья по комбинаторике на Python...

Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

"...и роща за рощей тешила взоры разнообразным размещением дерев." Н.В. Гоголь
"...и роща за рощей тешила взоры разнообразным размещением дерев." Н.В. Гоголь