您好,我需要一些有关 php 中以下场景的帮助。我有一个用户数据库,每个用户都有一个 ID、have_card 和 want_card。我知道如何进行直接匹配(一个用户与另一个用户交易)。但是如果没有直接匹配但是有循环交换,比如:
用户#1 有卡 A 想要卡 B
用户#2 有卡 B 想要卡 C
用户#3 有卡 C 想要卡 A
在这种情况下,两个用户之间没有直接匹配。但是如果:
用户 #1 将他的卡交给用户 #3
用户 #3 将他的卡交给用户 #2
用户 #2 将他的卡交给用户 #1
每个人都很开心。
我必须从用户 #1 开始的所有信息如何找到用户 #2 和用户 #3?
感谢大家的回答。
最佳答案
有趣的是,我遇到了与 BoardGameGeek Maths Trade 类似的事情.基本上,每个人都指定他们想要游戏或拥有游戏,算法会最大化交易,包括循环依赖。
这正是您想要的。
这是一个 explanation of how TradeMaximizer works .它使用 Dijkstra's algorithm和 skew heaps找到最小匹配解决方案(即较小的圆比较大的圆更可取)。
虽然这是用 Java 创建的,但算法是通用的,您可以根据需要重新创建它,尤其是在您了解它的作用和原因之后。
关于php - 循环匹配。 PHP/MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/385052/