{"id":6110,"date":"2023-06-29T16:06:34","date_gmt":"2023-06-29T19:06:34","guid":{"rendered":"https:\/\/elemarjr.com\/clube-de-estudos\/?p=6110"},"modified":"2023-10-21T21:34:53","modified_gmt":"2023-10-22T00:34:53","slug":"maximizando-a-eficiencia-da-busca-em-trie-algoritmos-e-tecnicas-para-acelerar-a-recuperacao-de-dados","status":"publish","type":"artigos","link":"https:\/\/elemarjr.com\/clube-de-estudos\/artigos\/maximizando-a-eficiencia-da-busca-em-trie-algoritmos-e-tecnicas-para-acelerar-a-recuperacao-de-dados\/","title":{"rendered":"Maximizando a Efici\u00eancia da Busca em Trie: Algoritmos e T\u00e9cnicas para Acelerar a Recupera\u00e7\u00e3o de Dados"},"content":{"rendered":"\n<p>A busca eficiente de informa\u00e7\u00f5es \u00e9 um desafio constante na ci\u00eancia da computa\u00e7\u00e3o, especialmente ao trabalhar com a estrutura de dados <em>Trie<\/em>. Neste artigo, discutiremos os principais desafios, t\u00e9cnicas e algoritmos que podem ser aplicados para maximizar a efici\u00eancia da busca em <em>Trie<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conceitos B\u00e1sicos da Estrutura de Dados Trie<\/h2>\n\n\n\n<p>Antes de adentrarmos nos detalhes das t\u00e9cnicas, \u00e9 importante relembrar o conceito de <em>Trie<\/em>. Basicamente, \u00e9 uma \u00e1rvore de pesquisa, utilizada para armazenar um conjunto de <em>strings<\/em>. Cada n\u00f3 de <em>Trie <\/em>corresponde ao conjunto de <em>strings<\/em> que compartilham um prefixo comum. Isso torna a <em>Trie <\/em>extremamente eficiente para opera\u00e7\u00f5es de busca e inser\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Desafios na Busca em Trie<\/h2>\n\n\n\n<p>A busca em<em> Trie<\/em> \u00e9 conhecida por sua efici\u00eancia e velocidade, mas tamb\u00e9m apresenta alguns desafios que precisam ser superados para aproveitar ao m\u00e1ximo essa estrutura de dados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Complexidade e Volume de Dados<\/h3>\n\n\n\n<p>Lidar com grandes volumes de dados \u00e9 um desafio na busca em <em>Trie<\/em>. \u00c0 medida que a quantidade de dados aumenta, a estrutura da <em>Trie<\/em> pode se tornar complexa e demandar mais recursos de mem\u00f3ria. Isso pode resultar em um aumento no tempo de constru\u00e7\u00e3o da <em>Trie<\/em> e na ocupa\u00e7\u00e3o de espa\u00e7o, afetando o desempenho da busca.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gerenciamento de Mem\u00f3ria<\/h3>\n\n\n\n<p>O gerenciamento eficiente da mem\u00f3ria \u00e9 essencial na busca em <em>Trie<\/em>. Como a Trie armazena cada caractere individualmente, pode ocorrer um consumo excessivo de mem\u00f3ria, especialmente quando h\u00e1 uma sobreposi\u00e7\u00e3o significativa de prefixos em palavras. Isso pode ser agravado quando lidamos com grandes conjuntos de dados, tornando necess\u00e1rio otimizar o uso da mem\u00f3ria para evitar problemas de desempenho.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Atualiza\u00e7\u00e3o Din\u00e2mica<\/h3>\n\n\n\n<p>A atualiza\u00e7\u00e3o din\u00e2mica da <em>Trie<\/em> tamb\u00e9m pode ser um desafio. Quando os dados s\u00e3o inseridos ou removidos da estrutura, \u00e9 necess\u00e1rio garantir a integridade da <em>Trie<\/em> e manter seu estado correto. Isso envolve atualizar os n\u00f3s correspondentes, adicionando ou removendo as arestas necess\u00e1rias, o que pode ser um processo complexo, especialmente quando h\u00e1 uma grande quantidade de altera\u00e7\u00f5es nos dados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Necessidade de Compacta\u00e7\u00e3o<\/h3>\n\n\n\n<p>A <em>Trie<\/em> pode se tornar ineficiente em termos de espa\u00e7o de armazenamento, especialmente quando muitos n\u00f3s terminais s\u00e3o alcan\u00e7ados apenas por um caminho espec\u00edfico. A compacta\u00e7\u00e3o da <em>Trie<\/em> \u00e9 uma t\u00e9cnica que pode ser aplicada para otimizar o espa\u00e7o de armazenamento, reduzindo a quantidade de n\u00f3s desnecess\u00e1rios e melhorando a efici\u00eancia da busca.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gerenciamento de Colis\u00f5es<\/h3>\n\n\n\n<p>Em casos de colis\u00e3o de chaves ou prefixos comuns, pode ser necess\u00e1rio implementar t\u00e9cnicas adicionais para lidar com essas situa\u00e7\u00f5es. Isso envolve estrat\u00e9gias como <em>hashing<\/em>, compress\u00e3o de prefixos ou o uso de estruturas de dados complementares para armazenar informa\u00e7\u00f5es adicionais.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmos e T\u00e9cnicas de Busca em Trie<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Poda de Ramos (<em>Pruning<\/em>)<\/h3>\n\n\n\n<p>A t\u00e9cnica de poda, ou <em>pruning<\/em>, \u00e9 um m\u00e9todo que busca remover ramos menos promissores da <em>Trie<\/em>, tornando a busca mais r\u00e1pida.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Compacta\u00e7\u00e3o de Trie<\/h3>\n\n\n\n<p>A compacta\u00e7\u00e3o de <em>Trie<\/em> \u00e9 outra t\u00e9cnica que busca reduzir o espa\u00e7o de armazenamento ocupado pela <em>Trie<\/em>, o que acelera as opera\u00e7\u00f5es de busca.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">C#<\/span><span role=\"button\" tabindex=\"0\" data-code=\"using System;\nusing System.Collections.Generic;\n\npublic class TrieNode\n{\n    public Dictionary&lt;char, TrieNode&gt; Children { get; }\n    public bool IsEndOfWord { get; set; }\n\n    public TrieNode()\n    {\n        Children = new Dictionary&lt;char, TrieNode&gt;();\n        IsEndOfWord = false;\n    }\n}\n\npublic class Trie\n{\n    private TrieNode root;\n\n    public Trie()\n    {\n        root = new TrieNode();\n    }\n\n    public void Insert(string word)\n    {\n        TrieNode currentNode = root;\n        foreach (char c in word)\n        {\n            if (!currentNode.Children.ContainsKey(c))\n            {\n                currentNode.Children[c] = new TrieNode();\n            }\n            currentNode = currentNode.Children[c];\n        }\n        currentNode.IsEndOfWord = true;\n    }\n\n    public bool Search(string word)\n    {\n        TrieNode currentNode = root;\n        foreach (char c in word)\n        {\n            if (!currentNode.Children.ContainsKey(c))\n            {\n                return false;\n            }\n            currentNode = currentNode.Children[c];\n        }\n        return currentNode.IsEndOfWord;\n    }\n\n    public void Prune(TrieNode node)\n    {\n        \/\/ Verifica se o n\u00f3 n\u00e3o tem filhos e n\u00e3o \u00e9 o n\u00f3 raiz\n        if (node.Children.Count == 0 &amp;&amp; node != root)\n        {\n            TrieNode parent = FindParentNode(node);\n            parent.Children.Remove(node);\n            \/\/ Verifica se o pai tamb\u00e9m \u00e9 um n\u00f3 sem filhos e pode ser podado\n            Prune(parent);\n        }\n    }\n\n    private TrieNode FindParentNode(TrieNode node)\n    {\n        TrieNode currentNode = root;\n        foreach (char c in node.Children.Keys)\n        {\n            if (node.Children[c] == node)\n            {\n                return currentNode;\n            }\n            currentNode = node.Children[c];\n        }\n        return null;\n    }\n}\n\npublic class Program\n{\n    public static void Main(string[] args)\n    {\n        Trie trie = new Trie();\n        trie.Insert(&quot;apple&quot;);\n        trie.Insert(&quot;banana&quot;);\n        trie.Insert(&quot;orange&quot;);\n\n        trie.Prune(trie.root);\n\n        Console.WriteLine(trie.Search(&quot;apple&quot;));   \/\/ Output: True\n        Console.WriteLine(trie.Search(&quot;banana&quot;));  \/\/ Output: True\n        Console.WriteLine(trie.Search(&quot;orange&quot;));  \/\/ Output: True\n\n        Console.WriteLine(trie.Search(&quot;apricot&quot;)); \/\/ Output: False\n        Console.WriteLine(trie.Search(&quot;grape&quot;));   \/\/ Output: False\n    }\n}\n\n\/\/ Fonte: ChatGPT\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #81A1C1\">using<\/span><span style=\"color: #D8DEE9FF\"> System<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">using<\/span><span style=\"color: #D8DEE9FF\"> System.Collections.Generic<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">TrieNode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> Dictionary<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #81A1C1\">char<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> TrieNode<\/span><span style=\"color: #ECEFF4\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> Children <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">get;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">bool<\/span><span style=\"color: #D8DEE9FF\"> IsEndOfWord <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">get;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">set;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">TrieNode<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">Children<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> Dictionary<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #81A1C1\">char<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> TrieNode<\/span><span style=\"color: #ECEFF4\">&gt;()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">IsEndOfWord<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">false;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Trie<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">private<\/span><span style=\"color: #D8DEE9FF\"> TrieNode root<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Trie<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">root<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> TrieNode<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">void<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Insert<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">string<\/span><span style=\"color: #D8DEE9FF\"> word<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        TrieNode currentNode <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">root<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">foreach<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">char<\/span><span style=\"color: #D8DEE9FF\"> c <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">word<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9\">currentNode<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Children<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ContainsKey<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">c<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #D8DEE9\">currentNode<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Children<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9\">c<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> TrieNode<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">currentNode<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">currentNode<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Children<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9\">c<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">currentNode<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">IsEndOfWord<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">true;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">bool<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Search<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">string<\/span><span style=\"color: #D8DEE9FF\"> word<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        TrieNode currentNode <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">root<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">foreach<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">char<\/span><span style=\"color: #D8DEE9FF\"> c <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">word<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9\">currentNode<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Children<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ContainsKey<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">c<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">false;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">currentNode<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">currentNode<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Children<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9\">c<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">currentNode<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">IsEndOfWord<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">void<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Prune<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">TrieNode node<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/ Verifica se o n\u00f3 n\u00e3o tem filhos e n\u00e3o \u00e9 o n\u00f3 raiz<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">node<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Children<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Count<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&amp;&amp;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">node<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">!=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">root<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            TrieNode parent <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">FindParentNode<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">node<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">parent<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Children<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Remove<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">node<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">            <\/span><span style=\"color: #616E88\">\/\/ Verifica se o pai tamb\u00e9m \u00e9 um n\u00f3 sem filhos e pode ser podado<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">Prune<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">parent<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">private<\/span><span style=\"color: #D8DEE9FF\"> TrieNode <\/span><span style=\"color: #88C0D0\">FindParentNode<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">TrieNode node<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        TrieNode currentNode <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">root<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">foreach<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">char<\/span><span style=\"color: #D8DEE9FF\"> c <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">node<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Children<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Keys<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">node<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Children<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9\">c<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">node<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">currentNode<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">currentNode<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">node<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Children<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9\">c<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">null;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">static<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">void<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Main<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">string<\/span><span style=\"color: #ECEFF4\">[]<\/span><span style=\"color: #D8DEE9FF\"> args<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        Trie trie <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> Trie<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">trie<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Insert<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">apple<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">trie<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Insert<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">banana<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">trie<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Insert<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">orange<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">trie<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Prune<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">trie<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">root<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">Console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">WriteLine<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">trie<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Search<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">apple<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #81A1C1\">;<\/span><span style=\"color: #D8DEE9FF\">   <\/span><span style=\"color: #616E88\">\/\/ Output: True<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">Console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">WriteLine<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">trie<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Search<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">banana<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #81A1C1\">;<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\">\/\/ Output: True<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">Console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">WriteLine<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">trie<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Search<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">orange<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #81A1C1\">;<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\">\/\/ Output: True<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">Console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">WriteLine<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">trie<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Search<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">apricot<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #81A1C1\">;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #616E88\">\/\/ Output: False<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">Console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">WriteLine<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">trie<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Search<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">grape<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #81A1C1\">;<\/span><span style=\"color: #D8DEE9FF\">   <\/span><span style=\"color: #616E88\">\/\/ Output: False<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">\/\/ Fonte: ChatGPT<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Neste exemplo, a classe <code>Trie<\/code> representa uma Trie com m\u00e9todos de inser\u00e7\u00e3o, busca e poda de ramos. A t\u00e9cnica de poda \u00e9 implementada no m\u00e9todo <code>Prune<\/code>, que verifica se um n\u00f3 n\u00e3o tem filhos e n\u00e3o \u00e9 o n\u00f3 raiz. Se isso for verdade, o n\u00f3 \u00e9 removido do seu pai e, em seguida, verifica-se se o pai tamb\u00e9m pode ser podado.<\/p>\n\n\n\n<p>No m\u00e9todo <code>Main<\/code>, s\u00e3o inseridas algumas palavras na Trie e, em seguida, a poda \u00e9 realizada chamando <code>trie.Prune(trie.root)<\/code>. Ap\u00f3s a poda, a busca \u00e9 realizada para verificar se as palavras ainda est\u00e3o presentes na Trie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00cdndices Adicionais<\/h3>\n\n\n\n<p>Outra abordagem \u00e9 a utiliza\u00e7\u00e3o de \u00edndices adicionais para acelerar a busca, armazenando informa\u00e7\u00f5es adicionais que podem acelerar a busca.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" style=\"font-size:.875rem;line-height:1.25rem\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">C#<\/span><span role=\"button\" tabindex=\"0\" data-code=\"using System;\nusing System.Collections.Generic;\n\npublic class Item\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public string Category { get; set; }\n}\n\npublic class IndexedSearch\n{\n    private Dictionary&lt;int, Item&gt; idIndex;\n    private Dictionary&lt;string, List&lt;Item&gt;&gt; categoryIndex;\n\n    public IndexedSearch()\n    {\n        idIndex = new Dictionary&lt;int, Item&gt;();\n        categoryIndex = new Dictionary&lt;string, List&lt;Item&gt;&gt;();\n    }\n\n    public void AddItem(Item item)\n    {\n        idIndex[item.Id] = item;\n\n        if (!categoryIndex.ContainsKey(item.Category))\n        {\n            categoryIndex[item.Category] = new List&lt;Item&gt;();\n        }\n        categoryIndex[item.Category].Add(item);\n    }\n\n    public Item GetItemById(int id)\n    {\n        if (idIndex.ContainsKey(id))\n        {\n            return idIndex[id];\n        }\n        else\n        {\n            return null;\n        }\n    }\n\n    public List&lt;Item&gt; GetItemsByCategory(string category)\n    {\n        if (categoryIndex.ContainsKey(category))\n        {\n            return categoryIndex[category];\n        }\n        else\n        {\n            return new List&lt;Item&gt;();\n        }\n    }\n}\n\npublic class Program\n{\n    public static void Main(string[] args)\n    {\n        IndexedSearch indexedSearch = new IndexedSearch();\n\n        \/\/ Adiciona itens\n        Item item1 = new Item { Id = 1, Name = &quot;Item 1&quot;, Category = &quot;Category A&quot; };\n        Item item2 = new Item { Id = 2, Name = &quot;Item 2&quot;, Category = &quot;Category B&quot; };\n        Item item3 = new Item { Id = 3, Name = &quot;Item 3&quot;, Category = &quot;Category A&quot; };\n        indexedSearch.AddItem(item1);\n        indexedSearch.AddItem(item2);\n        indexedSearch.AddItem(item3);\n\n        \/\/ Busca item pelo ID\n        Item foundItem = indexedSearch.GetItemById(2);\n        if (foundItem != null)\n        {\n            Console.WriteLine($&quot;Item found: {foundItem.Name}&quot;);\n        }\n        else\n        {\n            Console.WriteLine(&quot;Item not found.&quot;);\n        }\n\n        \/\/ Busca itens por categoria\n        List&lt;Item&gt; categoryItems = indexedSearch.GetItemsByCategory(&quot;Category A&quot;);\n        if (categoryItems.Count &gt; 0)\n        {\n            Console.WriteLine(&quot;Items in Category A:&quot;);\n            foreach (Item item in categoryItems)\n            {\n                Console.WriteLine(item.Name);\n            }\n        }\n        else\n        {\n            Console.WriteLine(&quot;No items found in Category A.&quot;);\n        }\n    }\n}\n\n\/\/ Fonte: ChatGPT\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #81A1C1\">using<\/span><span style=\"color: #D8DEE9FF\"> System<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">using<\/span><span style=\"color: #D8DEE9FF\"> System.Collections.Generic<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Item<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">int<\/span><span style=\"color: #D8DEE9FF\"> Id <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">get;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">set;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">string<\/span><span style=\"color: #D8DEE9FF\"> Name <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">get;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">set;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">string<\/span><span style=\"color: #D8DEE9FF\"> Category <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">get;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">set;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">IndexedSearch<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">private<\/span><span style=\"color: #D8DEE9FF\"> Dictionary<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #81A1C1\">int<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> Item<\/span><span style=\"color: #ECEFF4\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> idIndex<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">private<\/span><span style=\"color: #D8DEE9FF\"> Dictionary<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #81A1C1\">string<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> List<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">Item<\/span><span style=\"color: #ECEFF4\">&gt;&gt;<\/span><span style=\"color: #D8DEE9FF\"> categoryIndex<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">IndexedSearch<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">idIndex<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> Dictionary<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #81A1C1\">int<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> Item<\/span><span style=\"color: #ECEFF4\">&gt;()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">categoryIndex<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> Dictionary<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #81A1C1\">string<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> List<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">Item<\/span><span style=\"color: #ECEFF4\">&gt;&gt;()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">void<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">AddItem<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">Item item<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">idIndex<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9\">item<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Id<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">item<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9\">categoryIndex<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ContainsKey<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">item<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Category<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">categoryIndex<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9\">item<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Category<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> List<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">Item<\/span><span style=\"color: #ECEFF4\">&gt;()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">categoryIndex<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9\">item<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Category<\/span><span style=\"color: #ECEFF4\">].<\/span><span style=\"color: #88C0D0\">Add<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">item<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> Item <\/span><span style=\"color: #88C0D0\">GetItemById<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">int<\/span><span style=\"color: #D8DEE9FF\"> id<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">idIndex<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ContainsKey<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">id<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">idIndex<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9\">id<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">null;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> List<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">Item<\/span><span style=\"color: #ECEFF4\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">GetItemsByCategory<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">string<\/span><span style=\"color: #D8DEE9FF\"> category<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">categoryIndex<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ContainsKey<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">category<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">categoryIndex<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9\">category<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> List<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">Item<\/span><span style=\"color: #ECEFF4\">&gt;()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">static<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">void<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Main<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">string<\/span><span style=\"color: #ECEFF4\">[]<\/span><span style=\"color: #D8DEE9FF\"> args<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        IndexedSearch indexedSearch <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> IndexedSearch<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/ Adiciona itens<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        Item item1 <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> Item <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Id<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Name<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Item 1<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Category<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Category A<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        Item item2 <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> Item <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Id<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Name<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Item 2<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Category<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Category B<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        Item item3 <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> Item <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Id<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Name<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Item 3<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Category<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Category A<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">indexedSearch<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">AddItem<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">item1<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">indexedSearch<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">AddItem<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">item2<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">indexedSearch<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">AddItem<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">item3<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/ Busca item pelo ID<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        Item foundItem <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">indexedSearch<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">GetItemById<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">foundItem<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">!=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">null<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">Console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">WriteLine<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">$&quot;<\/span><span style=\"color: #A3BE8C\">Item found: <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9\">foundItem<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Name<\/span><span style=\"color: #ECEFF4\">}&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">Console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">WriteLine<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Item not found.<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/ Busca itens por categoria<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        List<\/span><span style=\"color: #ECEFF4\">&lt;<\/span><span style=\"color: #D8DEE9FF\">Item<\/span><span style=\"color: #ECEFF4\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> categoryItems <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">indexedSearch<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">GetItemsByCategory<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Category A<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">categoryItems<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Count<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">Console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">WriteLine<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Items in Category A:<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">foreach<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">Item item <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">categoryItems<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #D8DEE9\">Console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">WriteLine<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">item<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">Name<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">Console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">WriteLine<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">No items found in Category A.<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">\/\/ Fonte: ChatGPT<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Neste exemplo, a classe <code>Item<\/code> representa um item com propriedades como Id, Nome e Categoria. A classe <code>IndexedSearch<\/code> \u00e9 respons\u00e1vel por armazenar os \u00edndices adicionais e realizar as buscas.<\/p>\n\n\n\n<p>No m\u00e9todo <code>AddItem<\/code>, os itens s\u00e3o adicionados tanto ao \u00edndice por Id (<code>idIndex<\/code>) quanto ao \u00edndice por Categoria (<code>categoryIndex<\/code>). A busca por Id \u00e9 feita no m\u00e9todo <code>GetItemById<\/code>, onde o item correspondente ao Id \u00e9 retornado se existir no \u00edndice. A busca por Categoria \u00e9 feita no m\u00e9todo <code>GetItemsByCategory<\/code>, onde uma lista de itens correspondentes \u00e0 Categoria \u00e9 retornada se existir no \u00edndice.<\/p>\n\n\n\n<p>No m\u00e9todo <code>Main<\/code>, alguns itens s\u00e3o adicionados \u00e0 <code>IndexedSearch<\/code> e, em seguida, s\u00e3o realizadas buscas por Id e Categoria para demonstrar a acelera\u00e7\u00e3o proporcionada pelos \u00edndices adicionais.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Aplica\u00e7\u00f5es e Impacto da Busca Eficiente em Trie<\/h2>\n\n\n\n<p>As t\u00e9cnicas de busca eficiente em <em>Trie<\/em> t\u00eam grande impacto em v\u00e1rias \u00e1reas, como dicion\u00e1rios, bancos de dados e sistemas de indexa\u00e7\u00e3o. Com o desenvolvimento cont\u00ednuo de novas t\u00e9cnicas, a expectativa \u00e9 que a efici\u00eancia da busca em <em>Trie<\/em> continue a melhorar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p>A busca eficiente em <em>Trie<\/em> \u00e9 um t\u00f3pico de pesquisa em constante evolu\u00e7\u00e3o. Atrav\u00e9s das v\u00e1rias t\u00e9cnicas e algoritmos existentes, \u00e9 poss\u00edvel otimizar a busca e o armazenamento de dados, permitindo a r\u00e1pida recupera\u00e7\u00e3o de informa\u00e7\u00f5es, mesmo em cen\u00e1rios com grandes volumes de dados. A expectativa \u00e9 que, com a continuidade da pesquisa e inova\u00e7\u00e3o nesta \u00e1rea, mais avan\u00e7os sejam alcan\u00e7ados, levando a melhorias significativas na velocidade e efici\u00eancia das opera\u00e7\u00f5es de <em>Trie<\/em>.<\/p>\n\n\n\n<p><span style=\"color: rgb(51, 51, 51); font-family: Poppins, sans-serif; font-size: 17px; white-space-collapse: collapse;\">Esse conte\u00fado \u00e9 parte do material disponibilizado para os participantes do meu grupo de estudos de\u00a0<\/span><span style=\"box-sizing: border-box; font-weight: bolder; color: rgb(51, 51, 51); font-family: Poppins, sans-serif; font-size: 17px; white-space-collapse: collapse;\">Algoritmos e Estruturas de Dados<\/span><span style=\"color: rgb(51, 51, 51); font-family: Poppins, sans-serif; font-size: 17px; white-space-collapse: collapse;\">. Voc\u00ea quer participar desse grupo?\u00a0<\/span><span style=\"box-sizing: border-box; font-weight: bolder; color: rgb(51, 51, 51); font-family: Poppins, sans-serif; font-size: 17px; white-space-collapse: collapse;\"><a style=\"box-sizing: border-box; background-color: transparent; text-decoration-line: none; color: rgb(0, 118, 189); box-shadow: none;\" href=\"https:\/\/elemarjr.com\/clube-de-estudos\/algoritmos-e-estruturas-de-dados\/\">Clique aqui e veja como funciona<\/a><\/span><span style=\"color: rgb(51, 51, 51); font-family: Poppins, sans-serif; font-size: 17px; white-space-collapse: collapse;\">.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00favidas Frequentes<\/h2>\n\n\n\n<p><strong>O que \u00e9 uma estrutura de dados <em>Trie<\/em>?<\/strong><br>Uma <em>Trie<\/em> \u00e9 uma \u00e1rvore de pesquisa, utilizada para armazenar um conjunto de <em>strings<\/em>. Cada n\u00f3 de <em>Trie <\/em>corresponde ao conjunto de <em>strings <\/em>que compartilham um prefixo comum.<\/p>\n\n\n\n<p><strong>Quais s\u00e3o os principais desafios da busca em <em>Trie<\/em>?<\/strong><br>Os principais desafios s\u00e3o a complexidade e o volume de dados, que podem tornar a busca lenta, e o tempo de consulta, que aumenta conforme a complexidade dos dados.<\/p>\n\n\n\n<p><strong>Quais s\u00e3o as principais t\u00e9cnicas para otimizar a busca em <em>Trie<\/em>?<\/strong><br>Algumas das principais t\u00e9cnicas incluem a poda de ramos, a compacta\u00e7\u00e3o de <em>Trie <\/em>e o uso de \u00edndices adicionais.<\/p>\n\n\n\n<p><strong>O que \u00e9 a t\u00e9cnica de poda de ramos?<\/strong><br>\u00c9 um m\u00e9todo que busca remover ramos menos promissores da <em>Trie<\/em>, tornando a busca mais r\u00e1pida.<\/p>\n\n\n\n<p><strong>Como a compress\u00e3o e a compacta\u00e7\u00e3o de dados ajudam na busca em <em>Trie<\/em>?<\/strong><br>Essas t\u00e9cnicas aumentam a efici\u00eancia de armazenamento e recupera\u00e7\u00e3o de dados, acelerando as opera\u00e7\u00f5es de busca.<\/p>\n","protected":false},"featured_media":6111,"parent":0,"template":"","cursos":[5],"class_list":["post-6110","artigos","type-artigos","status-publish","has-post-thumbnail","hentry","cursos-algortimos"],"acf":[],"_links":{"self":[{"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/artigos\/6110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/artigos"}],"about":[{"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/types\/artigos"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/media\/6111"}],"wp:attachment":[{"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/media?parent=6110"}],"wp:term":[{"taxonomy":"cursos","embeddable":true,"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/cursos?post=6110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}