class_docstr: RNNT graph decoder with the `minimal` topology.
  If predictor_window_size is not provided, this decoder works as a Viterbi over regular RNNT lattice.
  With predictor_window_size provided, it applies uniform pruning when compiling Emission FSAs
  to reduce memory and compute consumption.
  
  Can only do forced alignment.
code: def __init__(
      self,
      num_classes: int,
      blank: int,
      cfg: Optional[DictConfig] = None,
      intersect_pruned: bool = False,
      intersect_conf: GraphIntersectDenseConfig = GraphIntersectDenseConfig(),
      topo_type: str = "default",
      topo_with_self_loops: bool = True,
      predictor_window_size: int = 0,
      predictor_step_size: int = 1,
      device: torch.device = torch.device("cpu"),
  ):
      if cfg is not None:
          topo_type = cfg.get("topo_type", topo_type)
          predictor_window_size = cfg.get(
              "predictor_window_size", predictor_window_size
          )
          predictor_step_size = cfg.get(
              "predictor_step_size", predictor_step_size
          )
      if topo_type != "minimal":
          raise NotImplementedError(
              f"Only topo_type=`minimal` is supported at the moment."
          )
      super().__init__(
          num_classes,
          blank,
          cfg,
          intersect_pruned,
          intersect_conf,
          topo_type,
          topo_with_self_loops,
          device,
      )
      self.predictor_window_size = predictor_window_size
      self.predictor_step_size = predictor_step_size
      from nemo.collections.asr.parts.k2.graph_compilers import (
          RnntTopologyCompiler,
      )
  
      self.graph_compiler = RnntTopologyCompiler(
          self.num_classes,
          self.blank,
          self.topo_type,
          self.topo_with_self_loops,
          self.device,
          max_adapter_length=self.predictor_window_size,
      )
      self.base_graph = self.graph_compiler.base_graph
  
imports: from abc import abstractmethod
  from typing import List, Optional, Tuple, Union
  import torch
  from omegaconf import DictConfig
  from nemo.collections.asr.parts.k2.classes import GraphIntersectDenseConfig
  from nemo.collections.asr.parts.k2.loss_mixins import CtcK2Mixin, RnntK2Mixin
  from nemo.collections.asr.parts.k2.utils import invert_permutation, load_graph
  from nemo.utils import logging
label_desc: Use image node_id 1 to create a new RnntAligner object from inherited base classes: BaseDecoder, RnntK2Mixin with example: obj = RnntAligner(num_classes, blank, cfg, intersect_pruned, intersect_conf, topo_type, topo_with__loops, predictor_window_size, predictor_step_size, device)