powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Интересная задачка.
10 сообщений из 35, страница 2 из 2
Интересная задачка.
    #34751096
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mainframe_старыйон решает узкую задачу обеспечения некой суммарной сложности из некоторого набора вопросов - а уж откуда и какие это вопросы - это решаеют на основании других правил
OK. В такой постановке - спасибо, понятно и недоумения не вызывает.
...
Рейтинг: 0 / 0
Интересная задачка.
    #34751100
Mainframe_старый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer MAES2 Mainframe_старый опиши алгоритм.
Если не ошибаюсь, для этой задачи оптимально сработает жадный алгоритм - то есть отсортировать значения по уменьшению, а дальше идти следующим образом:

- если очередное значение можно положить в первую кучку, то положить
- если очередное значение можно положить во вторую кучку, то положить
- ...
- если очередное значение некуда класть, то начать им новую кучку
- перейти к следующему

Оптимально - это значит, разложит таким образом, что сумма (N - вес кучки) для всех кучек будет минимальна. Впрочем, строго доказывать (или опровергать) эту гипотезу, если честно, лениво.

Что-то типа того, похоже. Я уже не помню более точно сама. Писали лет 5 назад, освежать мне тоже лениво, так как задача решена и больше неинтересна.
...
Рейтинг: 0 / 0
Интересная задачка.
    #34751465
MAES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот в принцыпе о чём я говорил:
Таблтчка JO_Test(id,val,group_id)
Вот алгоритм.
while exists ( select val from JO_Test where ISNULL(group_id,0)=0 )
loop
set @id = 0;
SELECT FIRST tst.id,(select max(val) from JO_TEST where id = tst.id) as max_v into @id,@value FROM JO_TEST as tst where ISNULL(group_id,0)=0 and val < @ostatok
order by val desc;
if @id<>0 then
update JO_TEST set group_id = @group_id where id = @id;
set @ostatok = @ostatok - @value;
else
set @group_id = @group_id + 1;
set @ostatok = @max;
end if
end loop;
Есть замечания по оптимизации?
...
Рейтинг: 0 / 0
Интересная задачка.
    #34751572
HHD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HHD
Гость
MAESЕсть множество чисел.
Необходимо эти числа распределить по группам. Группа представляет из себя елементы с общей сумой максимально приближенной но не более какого-то заранее определённого значения.

Всё это надо сделать на SQL.
Например: таблица с полями ID,VALUE,Group_ID...дальше я думаю понятно.

P.S. Вот уже неделю страдаю :) Первые алгоритмы работали до 40 минут на 400 записей :)
Сейчас уже 5 мин, но это очень много...

Мне кажется что это напоминает известную задачу упаковки в контейнеры. Или я ошибаюсь?
...
Рейтинг: 0 / 0
Интересная задачка.
    #34751582
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAESЕсть замечания по оптимизации?
Ээ.... а с каких пор то, что Вы написали, относится к "чистому SQL", как Вы хотели? Точнее даже

MAESпошевелить мозгом. решить её скажем так в чистом SQL, без циклов и переборов.
...
Рейтинг: 0 / 0
Интересная задачка.
    #34751636
MAES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если бы я был уверен что имею все знания необходимые для решения этой задачи средствами SQL сервера я бы и не писал сюда. может быть я выбрал не ту тему.
Да, задача про контейнеры, просто я до этого не слышал о ней.

То что я написал (код выше) - это моё субъективное решение.
...
Рейтинг: 0 / 0
Интересная задачка.
    #34751667
Фотография BULK INSERT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT MyRates.MyRate, MyArray.MyValues
FROM MyArray, MyRates
WHERE (((MyArray.MyValues)<[MyRates].[MyRate]))
ORDER BY MyRates.MyRate;


MyArray - Массив значений
MyRates - Границы диапазонов

запрос возвращает все диапазоны и все значения которые в них входят при заданном условии (значение < границы)

может быть я не правильно понял вопрос, хотя перечел четыре раза) но ИМХО неделю думать тут не над чем
...
Рейтинг: 0 / 0
Интересная задачка.
    #34751749
MAES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://ru.wikipedia.org/wiki/Задача_об_упаковке_в_контейнеры
Речь идёт об оптимальности.

Проще сказать что есть например числовое множество из n элементов.
Есть правило для комбинации элементов по их сумме.
И цель в том чтобы сгруппировать все элементы множества так чтобы колличество групп было наименьшим.
...
Рейтинг: 0 / 0
Интересная задачка.
    #34752032
kittn2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересный топик.
Я думаю, что на будущее MAES себе учтет, что постановка задачи пользователем не имет ничего общего с тем, что нужно сделать на самом деле
...
Рейтинг: 0 / 0
Интересная задачка.
    #35189979
MAES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kittn2Интересный топик.
Я думаю, что на будущее MAES себе учтет, что постановка задачи пользователем не имет ничего общего с тем, что нужно сделать на самом деле
Я и так абстрагировал как мог :)

В данный момент система уже внедрена :)
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Интересная задачка.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]