class_docstr: Класс для поиска близких слов
  в соответствии с расстоянием Левенштейна
class_docstr_tok: ["\u041a\u043b\u0430\u0441\u0441","\u0434\u043b\u044f","\u043f\u043e\u0438\u0441\u043a\u0430","\u0431\u043b\u0438\u0437\u043a\u0438\u0445","\u0441\u043b\u043e\u0432","\u0432","\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438","\u0441","\u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c","\u041b\u0435\u0432\u0435\u043d\u0448\u0442\u0435\u0439\u043d\u0430"]
docstr: Предвычисляет будущие символы и стоимости операций с ними
  для h-эвристики
docstr_tok: ["\u041f\u0440\u0435\u0434\u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442","\u0431\u0443\u0434\u0443\u0449\u0438\u0435","\u0441\u0438\u043c\u0432\u043e\u043b\u044b","\u0438","\u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438","\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439","\u0441","\u043d\u0438\u043c\u0438","\u0434\u043b\u044f","h-\u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0438"]
code: def _precompute_euristics(self):
      """
      Предвычисляет будущие символы и стоимости операций с ними
      для h-эвристики
      """
      if self.euristics is None:
          return
      # вычисление минимальной стоимости операции,
      # приводящей к появлению ('+') или исчезновению ('-') данного символа
      removal_costs = {a: np.inf for a in self.alphabet}
      insertion_costs = {a: np.inf for a in self.alphabet}
      if self.allow_spaces:
          removal_costs[" "] = np.inf
          insertion_costs[" "] = np.inf
      for up, costs in self.transducer.operation_costs.items():
          for low, cost in costs.items():
              if up == low:
                  continue
              if up != "":
                  removal_cost = cost / len(up)
                  for a in up:
                      removal_costs[a] = min(
                          removal_costs[a], removal_cost
                      )
              if low != "":
                  insertion_cost = cost / len(low)
                  for a in low:
                      insertion_costs[a] = min(
                          insertion_costs[a], insertion_cost
                      )
      # предвычисление возможных будущих символов в узлах дерева
      # precompute_future_symbols(self.dictionary, self.euristics, self.allow_spaces)
      # предвычисление стоимостей потери символа в узлах дерева
      self._absense_costs_by_node = _precompute_absense_costs(
          self.dictionary,
          removal_costs,
          insertion_costs,
          self.euristics,
          self.allow_spaces,
      )
      # массив для сохранения эвристик
      self._temporary_euristics = [
          dict() for i in range(len(self.dictionary))
      ]
  
imports: import copy
  import itertools
  import numpy
  from sortedcontainers import SortedListWithKey
  from .tabled_trie import Trie, make_trie
label_desc: Use image node_id 5 for calling the LevenshteinSearcher obj's underlying member method code with example usage: obj._precompute_euristics() without return types