Лучший способ сохранить DAWG(направленный ациклический граф Word) и выяснить, существует ли слово

Поэтому я написал код, чтобы построить Dawg. я хочу узнать, существует ли слово в языке или нет? после многих поисков я выясняю, что лучший способ - использовать Доуг. Вот

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);
    }
}

Какой лучший способ посмотреть, если слово существует. Подумайте, я хочу реализовать игру в скрэббл в собственном приложении. Я понимаю, что количество узлов может быть сведено к минимуму, но в чем дело. 1- сохранение узлов и ребер в отдельных файлах? как? 2- конвертировать каждый раз большой текст в dawg и искать в нем? пожалуйста помоги

0 ответов

Другие вопросы по тегам