code: def register_search_algorithm_config(
      name: str,
      random_state_field: Optional[str] = None,
      dependencies: Optional[List[Tuple[str, str]]] = None,
  ) -> Callable:
      """Register a search algorithm config class by name.
  
      Args:
          name: the name to register the search algorithm class under, does not need to correspond to the value of `type`
          random_state_field: the name of the random state in this search algorithm
          dependencies: the list of search algorithm dependency package name/install name pairs, e.g.
                        `("sklearn", "scikit-learn")`
  
      Returns:
          Wrapper function to decorate a `BaseSearchAlgorithmConfig` subclass
      """
  
      def wrap(
          cls: Type["BaseSearchAlgorithmConfig"],
      ) -> Type["BaseSearchAlgorithmConfig"]:  # noqa: F821
          search_algorithm_config_registry[name] = cls
          search_algorithm_dependencies_registry[name] = (
              dependencies if dependencies is not None else []
          )
          search_algorithm_random_state_field_registry[
              name
          ] = random_state_field
          return cls
  
      return wrap
  
file_path: ludwig/ludwig/schema/hyperopt/utils.py
imports: from typing import Callable, List, Optional, Tuple, Type
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.utils.registry import Registry
label_desc: Use image node_id 9 for calling a global function with example usage: register_search_algorithm_config(name, random_state_field, dependencies) and returns: wrap, cls