Supponiamo che tu abbia n persone, ognuna delle quali si deve dei soldi. In generale dovrebbe essere possibile ridurre la quantità di transazioni che devono essere effettuate. cioè se X deve Y £ 4 e Y deve X £ 8, allora Y deve solo pagare X £ 4 (1 transazione invece di 2).Chi deve l'ottimizzazione del denaro
Questo diventa più difficile quando X deve Y, ma Y deve anche Z che deve anche X. Posso vedere che puoi facilmente calcolare un ciclo particolare. Mi aiuta quando lo considero un grafo completamente connesso, con i bordi come la somma che ogni persona deve.
Il problema sembra essere NP-completo, ma che tipo di algoritmo di ottimizzazione posso fare, tuttavia, per ridurre la quantità totale di transazioni ? Non deve essere così efficiente, dato che N è abbastanza piccola per me.
Edit:
Lo scopo di questo problema sarebbe quello di essere in grado di avere nel sistema contabile qualcosa che può dire a ogni persona, quando il log-in "È possibile rimuovere M quantità di transazioni, semplicemente pagando qualcuno X importo e qualcun altro importo Y ". Quindi la soluzione bancaria (anche se ottimale se tutti pagano allo stesso tempo) non può essere realmente utilizzata qui.
Sembra Expensure hanno risolto questo problema. Vedi la loro voce faq [Circular Debt Resolution ™] (http://expensure.com/home/faq). – marcog
Se non ci sono costi di transazione, esiste una soluzione semplice che coinvolge una banca. Se ci sono costi di transazione, è molto più difficile. –
Possiamo modificare il problema per eliminare il problema bancario. Aggiungiamo il vincolo: "una persona può essere coinvolta in al più (N-1) transazioni". Quindi nessuna banca, nessun candidato. –