Ответы пользователя по тегу Алгоритмы
  • Минимизация фактов выплат/перевозок?

    @mithraen
    Вы усложнили себе задачу.

    В этой задаче цепочки передачи денег не имеют смысла — они не уменьшают количество транзакций. Скажем у A и B баланс отрицательный, у C — положительный. A может передать деньги B, чтобы он передал C все одной транзакций, а могут передавать их каждый сам напрямую C, от этого ничего не изменится.

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

    Я бы предложил простой алгоритм, хотя доказать его оптимальность я не могу:

    1. Ищем есть ли у нас пары получатель/отправитель с одинаковым по модулю балансу. Если есть — прекрасно, делаем платежку и обнуляем их балансы (забываем про них).
    2. Находим того, кто должен больше всех (отправитель)
    3. Находим того, кому должны наибольшую сумму (получатель)
    4. Делаем платежку на сумму, наименьшую из этих двух (если у нас есть отправитель который должен суммарно 20, а самый крупный получатель должен получить 11 — делаем платежку от отправителя к получателю на 11)
    5. Повторяем, пока не останется ни одной задолженности
    Ответ написан
    2 комментария
  • Система чемпионата. Как из трёх команд выявить две лучших? Чтоб было по-честному?

    @mithraen
    Если считать отношение, то будет проблема с делением на ноль.
    Логичнее тогда уж считать разницу между счетом деленную на сумму счета.

    Тогда у проигравшего будет отрицательный результат.

    Недостаток этой системы будет лишь в том, что счет 0:1 и 0:100 приведет к идентичному результату в рейтинге.
    Ответ написан
    Комментировать