Aller au contenu

L’algorithme utilisé par des applications comme Tricount ou Splitwise pour simplifier les comptes est basé sur un principe d’optimisation mathématique. L’objectif n’est pas seulement de calculer qui doit quoi, mais de minimiser le nombre total de transactions pour éviter que tout le monde doive faire un virement à tout le monde.
Voici comment fonctionne cet algorithme, souvent appelé « Simplification de la dette ».

1. Calcul du « Solde Net » de chaque personne
Avant de chercher qui doit payer qui, l’algorithme calcule le bilan de chaque participant. C’est l’étape la plus simple :
* On additionne tout ce qu’une personne a payé.
* On soustrait sa part totale des dépenses.
* Résultat : Chaque personne se retrouve avec un chiffre unique.
* Positif (+) : La personne a trop payé et doit recevoir de l’argent (Créancier).
* Négatif (-) : La personne n’a pas assez payé et doit de l’argent (Débiteur).
* Zéro (0) : La personne est à l’équilibre.
> Note importante : La somme de tous les soldes nets est toujours égale à zéro.

2. La stratégie du « Glouton » (Greedy Algorithm)
Pour minimiser les transferts, on utilise généralement un algorithme glouton. L’idée est de faire correspondre le plus gros débiteur avec le plus gros créancier à chaque étape.
Le processus étape par étape :
* Classement : On crée deux listes. Une liste de ceux qui doivent de l’argent (du plus gros montant au plus petit) et une liste de ceux qui doivent en recevoir (du plus gros montant au plus petit).
* Mise en relation : On prend la personne qui doit le plus d’argent (A) et celle à qui on doit le plus d’argent (B).
* Transaction : A donne à B le maximum possible pour épurer l’une des deux dettes.
exemple : Si A doit 100€ et que B doit recevoir 80€ : A donne 80€ à B. B sort de la liste (son solde est à 0), et A ne doit plus que 20€.
* Répétition : On recommence avec les nouveaux soldes jusqu’à ce que tout le monde soit à zéro.

3. Pourquoi est-ce efficace ?
Sans cet algorithme, si une dizaine personnes partent en vacances, on pourrait se retrouver avec plusieurs dizaines de micro-virements.
Avec cette méthode :
* Le nombre maximum de transactions est de N – 1 (où N est le nombre de participants).
* Souvent, c’est même beaucoup moins si les montants s’annulent parfaitement.