Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Комбинаторика – раздел математики, где ставится вопрос о подсчете числа вариантов выбора элементов из некоторого множества согласно определенным правилам.

В задании №8 в ЕГЭ по информатике присутствуют задачи по теме "Комбинаторика", которые могут быть решены как с помощью формул, так и средствами программирования. Как правило, на динамическое программирование задачи в данном задании отсутствуют. Используя сразу два метода при решении задачи, можно с высокой долей вероятности гарантировать получение верного ответа в случае его совпадения в обоих решениях.

Далее рассмотрим основные понятия и формулы по данной теме.

Размещение

Размещение – упорядоченный набор из k различных элементов некоторого n-элементного множества.

Ank=n!(nk)!

Размещение с повторением

Размещение с повторением – упорядоченный набор из k элементов некоторого n-элементного множества.

A‾‾‾nk=nk

Перестановка

Перестановка – последовательность и n различных элементов.

P n = n !

Перестановка с повторением

Перестановка с повторением – последовательность, содержащая n элементов из k типов.

P(n1,n2,..., nk)=n!n1!n2!...nk!

aa...an1 bb...bn2 ... xx...xnk 

Сочетание

Сочетанием из n элементов по k называются подмножества содержащие k элементов из n.

Cnk=n!k!(nk)! 

Следует также упомянуть ряд полезных формул с сочетаниями:

Cnk=Cnnk

Cnk=Cn1k1+Cn1k

Cn0+Cn1+...+Cnn=2n

(x+y)n=Cn0xny0+...+Cnkxnkyk+...+Cnnx0yn

Сочетание с повторением

Сочетанием с повторением называются наборы из k элементов n - элементного множества, возможно с повторяющимися элементами. Порядок элементов не учитывается.

C‾‾‾nk=Cn+k−1k=(n+k1)!k!(nk)! 

Вычисление факториала и сочетаний в Python

Самостоятельная реализация:

Реализация с использованием библиотеки math:

Генерация комбинаторных списков в Python

Библиотека itertools языка Python содержит функции, позволяющие генерировать комбинаторные списки:

Далее, более детально разберем приведенные выше генераторы:

Декартово произведение (product)

Перестановки (permutations)

Сочетания (combinations)

Сочетания с повторениями (combinations_with_replacement)



Красноярский краевой Дворец пионеров, (c)2006 - 2024, ИНН 246305493507, E-mail: admin@acmp.ru



Купить технику apple в Саратове   Контекстная реклама настройка рекламных объявлений в поисковой выдаче