Скажите, что у вас есть русские люди, каждый из которых обязан друг другу деньгами. В общем случае должно быть возможно уменьшить количество транзакций, которые должны иметь место. т.е. если X равно Y £ 4, а Y равно X £ 8, то Y нужно только заплатить X £ 4 (1 транзакция вместо 2).
Это становится сложнее, когда X должен Y, но Y должен Z, которому также нужен X. Я вижу, что вы можете легко вычислить один конкретный цикл. Это помогает мне, когда я думаю об этом как о полностью связанном графе, причем ребра - это сумма, которой должен обладать каждый человек.
Проблема кажется NP-полной, но какой алгоритм оптимизации я мог бы сделать, тем не менее, для сокращения количества транзакций всего? Не нужно быть таким эффективным, поскольку N для меня довольно мало.
Edit:
Цель этой проблемы состояла бы в том, чтобы иметь в системе бухгалтерского учета то, что может сказать каждому человеку при входе в систему. "Вы можете удалить M транзакций, просто заплатив кому-то сумму X, а кому-то сумму Y". Следовательно, решение банка (хотя и оптимальное, если все платят одновременно) не может быть действительно использовано здесь.