用于查找一组用户之间的相互关系的算法

时间:2015-04-14 02:34:24

标签: java algorithm data-structures

我有一个csv文件及其格式:

user1;user2;0.3
user1;user7;0.8
user2;user7;0.3
.....
user78;user36;0.1

每一行都有三个元素:user_1_ID,user_2_ID和类似的值。我想写一个算法来找到一定数量的用户之间的相互关系。例如,正如我们所看到的,user1与user2(user1; user2; 0.3)有关系,user7(user1; user7; 0.8),user2与user7有关系(user2; user7; 0.3) )。因此,如果我们想要找到哪些三个用户具有相互关系,我们应该找到user1-user2-user7。三只是一个例子,只要这种关系存在,它可能是五个,八个。愿有人给我一些关于如何编写这个算法的想法。任何数据结构都是可以接受的,并且更喜欢在java中实现它。

1 个答案:

答案 0 :(得分:1)

class Node {
    public static void main(String[] args) {
        HashMap<String, Node> nodes = new HashMap<String, Node>();
        try {
            while (readLine()) {
                String user1 = "user1";
                String user2 = "user2" ;
                int value = 1;
                Node node1 = nodes.get(user1);
                if (node1 == null) {
                    node1 = new Node("user1");
                }
                Node node2 = new Node("user2");
                node1.getNodes().put(node2, value);
                nodes.put("user1", node1);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public HashMap getNodes() {
        return nodes;
    }

    public void setNodes(HashMap nodes) {
        this.nodes = nodes;
    }

    public Node(String key) {
        this.key = key;
    }
    private String key;
    private HashMap nodes = new HashMap<Node, Integer>();
}