Алгоритмическая стратегия выбора минимального количества корзин - PullRequest
0 голосов
/ 06 декабря 2018

Пример: у вас есть 4 корзины с именами P, Q, R, S.У вас есть 4 предмета в этих корзинах с именами A, B, C, D.

Состав корзин следующий: PIC

- ABCD

P 6 4 0 7

Q 6 4 1 1

R 4 63 6

S 4 6 2 3

Корзина P имеет 6A, 4B, нет C и 7D.

Предположим, вы получаете следующие запросы: Вынужно выдать 10А, 10В, 3С и 8D.

Минимальное количество корзин, необходимое для обработки запроса, равно 2 (P, R).

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

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Был алгоритм размещения королев в местах прав на шахматной доске, и было правило, что они не должны угрожать друг другу.Ваша проблема выглядит так для меня.Вы можете создать рекурсивную структуру, как показано ниже:

Найдите первые строки, которые соответствуют требованиям: В вашем примере P и Q (потому что 6 + 6> 10) Итак, вы обработали первый столбец, затем перейдите ко второму и проверьтеесли вместимость корзин P и Q может соответствовать требованию: в вашем случае они не соответствуют (потому что 4 + 4 <10) </p>

Здесь вернитесь к первому шагу (вызовите ту же рекурсивную функцию для первого столбца).увеличив указатель, который раньше показывал B) и найдите вторые строки, которые соответствуют требованиям.P и R для вашего примера.(6 + 4 = 10) Затем выполните второй шаг для P и R.

Таким образом, идея состоит в том, чтобы в каждом столбце найти корзины, которые соответствуют требованию, а затем перейти ко второму столбцу.Если вы можете найти строки, которые соответствуют требованиям, перейдите к 3. Если вы не можете найти строки на 3-м шаге, вернитесь к 2-му шагу и снова, если ни одна из комбинаций строк, выбранных вами на 2-м шаге, не удовлетворяет требованиям, чем перейти ксначала и повторяем.

Я не мог бы дать вам псевдокод правильно, но я думаю, что основная идея ясна и не так сложна для реализации.

0 голосов
/ 06 декабря 2018

Создание ориентированного графа (сети) следующим образом:

enter image description here

У источника есть ребра со стоимостью = 1 и емкостью = большим значением P, Q, R, S узлы

P имеют ребра со стоимостью = 0 и емкостью 6,4,7 до A, B, D, то же самое для других корзин.

A, B, C, D имеют ребрас затратами = 0 и пропускной способностью = 10,10,3,8 для стока

Теперь решите Задача с минимальными затратами для потока 10 + 10 + 3 + 8.

...