Это своего рода более общий вопрос, не зависит от языка. Подробнее об идее и алгоритме использования.
Система выглядит следующим образом:
Он регистрирует небольшие займы между группами друзей. 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), и они находятся в исходном состоянии.
Если мы масштабируем это для многих разных людей, имея несколько транзакций, каков будет лучший алгоритм, чтобы получить как можно меньше транзакций?