Final homework of Discrete Mathematics
Question
将好友关系(双向关系)形成关系矩阵,通过矩阵的自乘和去自反,赋权重等操作实现简单的好友推荐算法。
Solution
首先将用户用阿拉伯数字1,2等标号。如果两者具有好友关系,比如1和2是好友,则将矩阵中的(1,2)和(2,1)元素赋值为1,没有好友关系的元素默认为0。通过矩阵的自乘相加可以得到通往某个好友关系的可能路径数量,如果在自乘后乘以权重,可以模拟出通往某个好友关系的“路径长度”,比如A和B是好友,B和C是好友,C和D是好友,B和D是好友,那么A与D能成为好友的“路径长度”可以为1+1×1/2,1/2是人为设置的权重。将最终运算结果按每行对每列元素进行便利从大到小排序。取“路径长度”较大的几人输出,便可以得到推荐某人添加的好友。最后,可以将程序运行结果与实际添加结果进行比对,若输出的几人中某人成功被指定的某人添加,则模型加1分,最终根据模型得分针对特定社交平台选取特定的自乘次数和权重比例,实现简单的最优推荐算法。
Note
本程序使用了JAMA包来进行矩阵运算,官网地址:https://math.nist.gov/javanumerics/jama/
Site
代码链接:https://github.com/codeYu233/Study/tree/main/Final%20homework-DM