Это своего рода более общий вопрос, не зависит от языка. Подробнее об идее и алгоритме использования.
Система выглядит следующим образом:
Он регистрирует небольшие займы между группами друзей. Alice и Bill собираются обедать, Билл-карта не работает, поэтому Алиса платит за еду, 10 долларов.
На следующий день Bill и Charles встречаются друг с другом на железнодорожной станции, у Chales нет денег на билет, поэтому Bill покупает его один за 5 долларов.
Позже этот день Alice заимствует $5 от Charles и $1 от Bill, чтобы купить другу подарок.
Теперь, считая, что все они зарегистрировали транзакции в системе, это выглядит так:
Alice -> Bill $10
Bill -> Alice $1
Bill -> Charles $5
Charles -> Alice $5
Итак, теперь только то, что нужно сделать, - это Bill, дающее Alice $4 (он дал ей $1 и Charlie перевел свои $5 в Alice alredy), и они находятся в исходном состоянии.
Если мы масштабируем это для многих разных людей, имея несколько транзакций, каков будет лучший алгоритм, чтобы получить как можно меньше транзакций?