存储DAWG(有向无环字图)和查找是否存在字的最佳方法

时间:2018-10-16 12:08:24

标签: java performance dawg

所以我写了一个代码来构造dawg。我想找出一个语言是否存在一个词?经过大量搜索后,我发现最好的方法是使用dawg。 here

public class DawgNode
{
    public DawgNode(int id)
    {
        Id = id;
    }
    public int Id { get; set; }

    public bool Final { get; set; }

    public Dictionary<char, DawgNode> Edges { get; set; } = new Dictionary<char, DawgNode>();

    public string Str()
    {
        var arr = new List<string>();
        if (Final) arr.Add("1");
        else arr.Add("0");
        foreach (var e in Edges)
        {
            arr.Add(e.Key.ToString());
            arr.Add(e.Value.Id.ToString());
        }
        return string.Join("-", arr);
    }
}

查找单词是否存在的最佳方式是什么?考虑到我想在React Native应用中实现拼字游戏。 我知道可以最大程度地减少节点数量,但是诀窍是什么。 1-将节点和边保存在单独的文件中?怎么样? 2-每次将大文本转换为dawg并进行搜索? 请帮助

0 个答案:

没有答案