|
|
|
strlen |
|
|||
Unregistered |
Задача такова:
имеются N туристов и K гостиниц. Необходимо разместить всех туристов в гостиницах. Ограничения: - туристы состоят из семей. Семья может состоять из одного или более человек. - каждая гостиница имеет минимум и максимум вместительности (минимум означает, что хозяин гостиницы не согласен поселить меньше минимума) - одна отдельно взятая семья обязана быть поселена в одну гостиницу Также дано: - общее количество свободных мест в гостиницах больше или равно количеству туристов - всего M семей Пример: туристы: 1, 1, 1, 1, 1, 1, 4, 1, 1, 7, 1, 2, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 1, 1, 2 свободные места в корпусах: [10], [2..6], [5..10], [11], [8], [12..17], [4], [1], [2] ,[1] [10] - хозяин гостиницы согласен поселить у себя только 10 человек (не меньше и не больше) [2..6] - хозяин гостиницы согласен поселить у себя от 2 до 6 человек Как расселить туристов? Разумееться речь идет об алгоритме, который потом можно будет применить на практике. Если это уже известная проблема, то это, конечно, прекрасно. Если нет, подскажите как подобную проблему можно решить. Заранее благодарен за любую помошь. |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 453 |
см. классическую задачу рюкзака.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
strlen |
|
|||
Unregistered |
Огромное спасибо!
В принципе, единственным значимым отличием данной задачи от задачи о рюкзаке является количество рюкзаков: здесь их K, а в задаче о рюкзаке рюкзак один, что немного усложняет задачу. Еще раз спасибо, попробую разобраться. |
|||
|
||||
strlen |
|
|||
Unregistered |
В данный момет, после семичасового поиска в интернете имею следущее:
Но, разумеется, ни одна из выше указанных задач не подходит под определение "задачи о туристах". Есть сходства, конечно. На мой взгляд болше всех подходит задача о суммах подмножеств. Проблема в том , что задача решает проблему для лишь одного натурального числа, а необходимо решить задачу для n-чисел, при этом состовляя суммы подмножеств из одной и той же группы элементов. Привожу решение для одного натурального числа:
|
|||
|
||||
strlen |
|
|||
Unregistered |
Вчера пытаясь заснуть я все таки пришел к тому, что это, дейсвительно, проблема о рюкзаке, точнее о рюкзаках.
Гостиницы - это рюкзаки (у каждого своя вместительность) Семьи туристов - это вещи, которые мы кладем в рюкзаки (у каждой вещи свой объём) объем, как параметер, я беру лишь для ясности, так как понятие вместительности рюкзака легче связать с вместительностю гостиниц - на самом деле правельнее было взять вес Ограничение таково: если рюкзак i может вместить Vi объём, то необходимо найти такие вещи, сумма объемов которых S точно равна Vi: Vi=S, иначе, если рюкзак i может вместить минимум Vi1 объёма, а максимум Vi2 объёма, то найти такие вещи, сумма объемов которых не меньше Vi1, но не превышает Vi2: Vi1 <= S <= Vi2. У кого-нибудь есть идеи как решаеться задача о нескольких рюкзаках (хотя бы без этого ограничения)? |
|||
|
||||
podval |
|
|||
Где я? Кто я? Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Правильно. В целевую функцию просто добавится еще одна сумма (по количеству "рюкзаков") + ограничения.
Применяй методы целочисленного линейного програмимрования. Тут количество рюкзаков не так важно, методология та же, что для большинства целочисленных задач комбинаторного типа. Последнее ограничение-неравенство справедливо именно в таком виде, если ставится условие, что в одну гостиницу обязательно должен быть хоть кто-то поселен. |
|||
|
||||
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |