2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Максимально возможное количество людей
Сообщение09.06.2016, 15:28 


22/07/12
560
Есть набор характеристик людей $x_1, x_2, x_3$, есть правило, что нам нужно не более 30 человек с $x_1$, не более 20 с $x_2$ и не более 1 с $x_3$. При этом каждый человек должен удовлетворять 2 характеристикам одновременно. Сколько максимально возможное количество людей мы можем получить? В данном случае ответ 21, это случай, когда придут 20 человек с $x_1$ и $x_2$, и 1 человек с $x_2$ и $x_3$. Итак, это был пример, теперь эта же задача в обобщенном виде, есть $n$ характеристик $x_1, ..., x_n$, на каждую их них стоит ограничение на количество людей с соотвтетствующей характеристикой: $m_1, ..., m_n$, каково максимально возможное количество людей удовлетяворяющих одновременном $p$ характеристикам, где $p \leq n$.

 Профиль  
                  
 
 Re: Максимально возможное количество людей
Сообщение09.06.2016, 17:25 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Перенумеруем характеристики так, чтобы было
$m_1\leqslant m_2\leqslant \cdots \leqslant m_{n-1}\leqslant m_n$
Далее берём первого человека и наделяем его характеристиками $m_1,\cdots,m_p$. Так же поступаем со вторым, третьим... до тех пор, пока количество людей с $m_1$ не достигнет ограничения.
Потом берём следующего человека и наделяем его характеристиками $m_2,\cdots,m_{p+1}$, пока количество людей с $m_2$ не достигнет ограничения.
Следующих людей наделяем характеристиками $m_3,\cdots,m_{p+2}$, пока лимит на $m_3$ не исчерпается.
И так далее.

 Профиль  
                  
 
 Re: Максимально возможное количество людей
Сообщение09.06.2016, 17:36 


22/07/12
560
Да, это был 1 из моих вариантов, но вот случай, когда он не работает: есть 3 характеристики, 3 ограничения по 100, $p = 2$, заполняем до упора 1 и 2, в итоге имеем, что характеристики 1 и 2 заполнены и у нас 100 человек. Больше мы получить людей не сможем. Но максимальное количество не 100, а 150. Достигается это так, 50 человек заполняют 1 и 2 характеристику, затем 50 заполняют 2 и 3, и затем 50 заполняют 1 и 3, в итоге 150 человек.

 Профиль  
                  
 
 Re: Максимально возможное количество людей
Сообщение09.06.2016, 17:38 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Да, Вы правы! Не работает.

 Профиль  
                  
 
 Re: Максимально возможное количество людей
Сообщение09.06.2016, 19:54 
Заслуженный участник


26/05/14
981
svv в сообщении #1130357 писал(а):
Да, Вы правы! Не работает.
Зато работает модификация вашего алгоритма: отсортируем $m_i$ по убыванию. Выберем первые $p$ членов. Соответствующие номера $m_i$ уменьшим на единицу, нули выбросим и снова отсортируем $m_i$ по убыванию. Будем повторять пока в списке хотя бы $p$ членов.

 Профиль  
                  
 
 Re: Максимально возможное количество людей
Сообщение09.06.2016, 20:57 


22/07/12
560
slavav, да, спасибо, я как раз к этому и пришел, и даже этот алгоритм можно модифицировать, не прибавлять по единице, а прибавлять прям кусками. Просто это некий итеративный алгоритм, и как вариант Б мне этого хватит для текущей практической задачи. Но спортивный интерес заставляет меня поискать решение этой задачи одной формулой. Но видимо её не существует. Или все-таки можно что-то придумать?

 Профиль  
                  
 
 Re: Максимально возможное количество людей
Сообщение09.06.2016, 21:29 
Заслуженный участник


26/05/14
981
Есть простая формула, если все $m_i$ варьируются не более чем на единицу. Можно показать, что приведённый алгоритм сохраняет это свойство как инвариант. В конце мы получим вектор из менее чем $p$ единиц. Тогда $K = \left\lfloor\frac{\Sigma m_i}{p}\right\rfloor$.

 Профиль  
                  
 
 Re: Максимально возможное количество людей
Сообщение17.06.2016, 10:54 


22/07/12
560
Есть более продвинутый алгоритм, но я не знаю, как его доказать.
1. Сортируем в обратном порядке
2. Считаем сумму всех элементов, назовем ее $S$
3. $i = 1$
3. Если $p = 1$ или $i > n$ или $m_i \leq \frac{S-m_i}{p - 1}$, переходим к шагу 8
4. $S = S - m_i$
5. $p = p - 1$
6. $i = i + 1$
7. Переходим к шагу 3
8. Ответ равен: $[\frac{S}{p}]$

Есть ли идеи как это доказать?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group